forj 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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