forj 1.0.1 → 1.0.2

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -0
  3. data/.gitreview +4 -0
  4. data/Gemfile +21 -19
  5. data/Gemfile.lock +71 -0
  6. data/bin/forj +126 -83
  7. data/forj.gemspec +64 -0
  8. data/{lib → forj}/defaults.yaml +23 -1
  9. data/lib/appinit.rb +5 -5
  10. data/lib/build_tmpl/build-env.py +293 -0
  11. data/lib/cloud_test.rb +121 -0
  12. data/lib/forj-settings.rb +52 -39
  13. data/lib/forj/ForjCli.rb +11 -10
  14. data/lib/forj/ForjCore.rb +8 -6
  15. data/lib/forj/process/ForjProcess.rb +345 -82
  16. data/lib/ssh.rb +81 -20
  17. metadata +110 -80
  18. data/lib/compute.rb +0 -36
  19. data/lib/connection.rb +0 -144
  20. data/lib/down.rb +0 -60
  21. data/lib/forj-account.rb +0 -294
  22. data/lib/forj-config.rb +0 -522
  23. data/lib/helpers.rb +0 -56
  24. data/lib/lib-forj/lib/core/core.rb +0 -1740
  25. data/lib/lib-forj/lib/core/definition.rb +0 -441
  26. data/lib/lib-forj/lib/core/definition_internal.rb +0 -306
  27. data/lib/lib-forj/lib/core_process/CloudProcess.rb +0 -334
  28. data/lib/lib-forj/lib/core_process/global_process.rb +0 -406
  29. data/lib/lib-forj/lib/core_process/network_process.rb +0 -603
  30. data/lib/lib-forj/lib/lib-forj.rb +0 -37
  31. data/lib/lib-forj/lib/providers/hpcloud/Hpcloud.rb +0 -419
  32. data/lib/lib-forj/lib/providers/hpcloud/compute.rb +0 -108
  33. data/lib/lib-forj/lib/providers/hpcloud/network.rb +0 -117
  34. data/lib/lib-forj/lib/providers/hpcloud/security_groups.rb +0 -67
  35. data/lib/lib-forj/lib/providers/templates/compute.rb +0 -42
  36. data/lib/lib-forj/lib/providers/templates/core.rb +0 -61
  37. data/lib/lib-forj/lib/providers/templates/network.rb +0 -33
  38. data/lib/log.rb +0 -162
  39. data/lib/network.rb +0 -365
  40. data/lib/repositories.rb +0 -222
  41. data/lib/security.rb +0 -207
  42. data/lib/ssh.sh +0 -185
  43. data/spec/connection_spec.rb +0 -52
  44. data/spec/forj-config_spec.rb +0 -237
  45. data/spec/repositories_spec.rb +0 -50
data/lib/ssh.rb CHANGED
@@ -15,36 +15,97 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require 'rubygems'
18
+ #~ require 'rubygems'
19
+
20
+ require 'highline/import'
21
+
22
+ #~ require 'security.rb'
23
+ #~ include SecurityGroup
19
24
 
20
- require 'security.rb'
21
- include SecurityGroup
22
25
  #
23
26
  # ssh module
24
27
  #
25
- module Ssh
26
- def connect(name, server, oConfig)
27
- # Following line to remove as soon as ssh function is implemented with forj-lib framework
28
- Logging.warning("This function may not work appropriately. Currenty under development. Thank you for your understanding.")
28
+ module Forj
29
+ module Ssh
30
+
31
+ def Ssh.connect(name, oConfig)
32
+ oForjAccount = Lorj::Account.new(oConfig)
33
+
34
+ oForjAccount.ac_load()
35
+
36
+ aProcesses = []
37
+
38
+ # Defines how to manage Maestro and forges
39
+ # create a maestro box. Identify a forge instance, delete it,...
40
+ aProcesses << File.join($LIB_PATH, 'forj', 'ForjCore.rb')
41
+
42
+ # Defines how cli will control FORJ features
43
+ # boot/down/ssh/...
44
+ aProcesses << File.join($LIB_PATH, 'forj', 'ForjCli.rb')
45
+
46
+ oCloud = Lorj::CloudCore.new(oForjAccount, oConfig[:account_name], aProcesses)
47
+
48
+ PrcLib.state("Getting information about forge '%s'" % name)
49
+
50
+ oForge = oCloud.Get(:forge, name)
51
+
52
+ if oForge[:servers].count > 0
53
+ if oConfig[:box_ssh]
54
+ box_ssh = oConfig[:box_ssh]
55
+
56
+ oServer = nil
57
+ regex = Regexp.new('%s\.%s$' % [box_ssh, name])
58
+
59
+ oForge[:servers].each { |server|
60
+ oName = server[:name]
61
+ next if (regex =~ oName) == nil
62
+ oServer = server
63
+ break
64
+ }
65
+
66
+ if oServer != nil
67
+ #Property for :forge
68
+ oConfig.set(:instance_name, name)
69
+ #Property for :ssh
70
+ oConfig.set(:forge_server, oServer[:id])
71
+
72
+ oCloud.Create(:ssh)
73
+ else
74
+ PrcLib.debug("server '%s.%s' was not found" % [oConfig[:box_ssh], name] )
75
+ PrcLib.high_level_msg("server '%s.%s' was not found.\n" % [oConfig[:box_ssh], name] )
76
+ end
29
77
 
30
- msg = 'logging into %s : %s' % [name, server]
31
- Logging.info(msg)
78
+ else
79
+ #Ask the user to get server(s) to create ssh connection
80
+ serverList = []
81
+ index = 0
82
+ sDefault = nil
83
+ oForge[:servers].each{ |server|
84
+ serverList[index] = server[:name]
85
+ sDefault = server[:name] if server[:name].include? "maestro"
86
+ index = index + 1
87
+ }
32
88
 
33
- oForjAccount = ForjAccount.new(oConfig)
89
+ say("Select box for ssh connection %s" % ((sDefault.nil?)? "" : "Default: " + "|%s|\n" % sDefault))
90
+ value = choose { | q |
91
+ q.choices(*serverList)
92
+ q.default = sDefault if not sDefault.nil?
93
+ }
34
94
 
35
- oForjAccount.ac_load()
95
+ oServerNumber = serverList.index(value)
36
96
 
37
- oKey = SecurityGroup.keypair_detect(oForjAccount.get(:keypair_name), oForjAccount.get(:keypair_path))
97
+ #Property for :forge
98
+ oConfig.set(:instance_name, name)
99
+ #Property for :ssh
100
+ oConfig.set(:forge_server, oForge[:servers][oServerNumber][:id])
38
101
 
39
- update = '%s/ssh.sh -u %s' % [ $LIB_PATH, oConfig.get(:account_name)]
40
- connection = '%s/ssh.sh %s %s %s' % [$LIB_PATH, name, server, File.join(oKey[:keypair_path],oKey[:private_key_name]) ]
102
+ oCloud.Create(:ssh)
41
103
 
42
- # update the list of servers
43
- Logging.debug("Executing '%s'" % update)
44
- Kernel.system(update)
104
+ end
105
+ else
106
+ PrcLib.high_level_msg("No server(s) found for instance name '%s' \n" % name )
107
+ end
45
108
 
46
- # connect to the server
47
- Logging.debug("Executing '%s'" % connection)
48
- Kernel.system(connection)
109
+ end
49
110
  end
50
111
  end
metadata CHANGED
@@ -1,155 +1,197 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - forj team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-28 00:00:00.000000000 Z
11
+ date: 2014-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.16.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.16.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogiri
28
+ name: fog
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 1.5.11
33
+ version: 1.19.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 1.5.11
40
+ version: 1.19.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: fog
42
+ name: git
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: 1.19.0
47
+ version: 1.2.7
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.19.0
54
+ version: 1.2.7
55
55
  - !ruby/object:Gem::Dependency
56
- name: hpcloud
56
+ name: highline
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
- version: 2.0.9
61
+ version: 1.6.21
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
- version: 2.0.9
68
+ version: 1.6.21
69
69
  - !ruby/object:Gem::Dependency
70
- name: git
70
+ name: ansi
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '>='
74
74
  - !ruby/object:Gem::Version
75
- version: 1.2.7
75
+ version: 1.4.3
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
- version: 1.2.7
82
+ version: 1.4.3
83
83
  - !ruby/object:Gem::Dependency
84
- name: rbx-require-relative
84
+ name: encryptor
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.0.7
89
+ version: 1.3.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.0.7
96
+ version: 1.3.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: highline
98
+ name: json
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 1.6.21
103
+ version: 1.7.5
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 1.6.21
110
+ version: 1.7.5
111
111
  - !ruby/object:Gem::Dependency
112
- name: ansi
112
+ name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - '>='
116
116
  - !ruby/object:Gem::Version
117
- version: 1.4.3
117
+ version: '0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - '>='
123
123
  - !ruby/object:Gem::Version
124
- version: 1.4.3
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: encryptor
126
+ name: nokogiri
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 1.3.0
131
+ version: 1.5.11
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 1.3.0
138
+ version: 1.5.11
139
139
  - !ruby/object:Gem::Dependency
140
- name: json
140
+ name: lorj
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '='
143
+ - - ~>
144
144
  - !ruby/object:Gem::Version
145
- version: 1.7.5
145
+ version: 0.2.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '='
150
+ - - ~>
151
151
  - !ruby/object:Gem::Version
152
- version: 1.7.5
152
+ version: 0.2.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: bundler
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rake
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '10.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: '10.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rspec
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 3.1.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: 3.1.0
153
195
  description: forj cli - See https://www.forj.io for documentation/information
154
196
  email:
155
197
  - forj@forj.io
@@ -158,59 +200,41 @@ executables:
158
200
  extensions: []
159
201
  extra_rdoc_files: []
160
202
  files:
203
+ - .gitignore
204
+ - .gitreview
205
+ - Gemfile
206
+ - Gemfile.lock
207
+ - README.md
208
+ - Rakefile
161
209
  - bin/forj
162
- - lib/compute.rb
163
- - lib/connection.rb
164
- - lib/network.rb
165
- - lib/security.rb
166
- - lib/defaults.yaml
167
- - lib/down.rb
210
+ - forj.gemspec
211
+ - forj/defaults.yaml
168
212
  - lib/appinit.rb
169
- - lib/forj-settings.rb
170
- - lib/repositories.rb
171
- - lib/ssh.rb
172
- - lib/ssh.sh
173
- - lib/log.rb
174
- - lib/helpers.rb
175
- - lib/forj-config.rb
176
- - lib/forj-account.rb
177
213
  - lib/build_tmpl/bootstrap_build.sh
214
+ - lib/build_tmpl/build-env.py
178
215
  - lib/build_tmpl/write-mime-multipart.py
179
- - lib/forj/ForjCore.rb
216
+ - lib/cloud_test.rb
217
+ - lib/forj-settings.rb
180
218
  - lib/forj/ForjCli.rb
219
+ - lib/forj/ForjCore.rb
181
220
  - lib/forj/process/ForjProcess.rb
182
- - lib/lib-forj/lib/providers/templates/compute.rb
183
- - lib/lib-forj/lib/providers/templates/network.rb
184
- - lib/lib-forj/lib/providers/templates/core.rb
185
- - lib/lib-forj/lib/providers/hpcloud/security_groups.rb
186
- - lib/lib-forj/lib/providers/hpcloud/Hpcloud.rb
187
- - lib/lib-forj/lib/providers/hpcloud/compute.rb
188
- - lib/lib-forj/lib/providers/hpcloud/network.rb
189
- - lib/lib-forj/lib/core_process/global_process.rb
190
- - lib/lib-forj/lib/core_process/CloudProcess.rb
191
- - lib/lib-forj/lib/core_process/network_process.rb
192
- - lib/lib-forj/lib/core/definition.rb
193
- - lib/lib-forj/lib/core/core.rb
194
- - lib/lib-forj/lib/core/definition_internal.rb
195
- - lib/lib-forj/lib/lib-forj.rb
221
+ - lib/ssh.rb
196
222
  - spec/boot_spec.rb
197
- - spec/connection_spec.rb
198
223
  - spec/down_spec.rb
199
224
  - spec/network_spec.rb
200
- - spec/repositories_spec.rb
201
225
  - spec/setup_spec.rb
202
226
  - spec/spec_helper.rb
203
227
  - spec/ssh_spec.rb
204
- - spec/forj-config_spec.rb
205
- - Rakefile
206
- - Gemfile
207
- - README.md
208
228
  homepage: https://forj.io
209
229
  licenses:
210
230
  - Apache License, Version 2.0.
211
231
  metadata: {}
212
232
  post_install_message: Go to docs.forj.io for more information on how to use forj cli
213
- rdoc_options: []
233
+ rdoc_options:
234
+ - --title
235
+ - Lorj - The Process Controllers framework system
236
+ - --main
237
+ - README.md
214
238
  require_paths:
215
239
  - lib
216
240
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -229,4 +253,10 @@ rubygems_version: 2.1.11
229
253
  signing_key:
230
254
  specification_version: 4
231
255
  summary: forj command line
232
- test_files: []
256
+ test_files:
257
+ - spec/boot_spec.rb
258
+ - spec/down_spec.rb
259
+ - spec/network_spec.rb
260
+ - spec/setup_spec.rb
261
+ - spec/spec_helper.rb
262
+ - spec/ssh_spec.rb
data/lib/compute.rb DELETED
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- require 'rubygems'
19
-
20
- #
21
- # compute module
22
- #
23
- module Compute
24
- def delete_forge(oFC, name)
25
- instances = oFC.oCompute.servers.all(:name => name)
26
- iCount = 0
27
- instances.each do|instance|
28
- # make sure we don't delete another forge because fog filters
29
- # the name in a "like syntax" way
30
- Logging.debug("Removing '%s'" % [instance.id])
31
- oFC.oCompute.servers.get(instance.id).destroy
32
- iCount += 1
33
- end
34
- Logging.message("Forge: %s - %d servers removed" % [name, iCount])
35
- end
36
- end