factor 0.0.8 → 0.0.81
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.
- data/lib/cli/server_task.rb +10 -4
- data/lib/cli/workflow_task.rb +1 -1
- data/lib/client/client.rb +67 -51
- data/lib/runtime/engine.rb +5 -2
- metadata +5 -21
data/lib/cli/server_task.rb
CHANGED
@@ -9,18 +9,24 @@ module Factor
|
|
9
9
|
def start
|
10
10
|
engine = Factor::Runtime::Engine.new(get_config[:email],get_config[:token])
|
11
11
|
|
12
|
-
options.tags.each {|tag,value| engine.tag(tag,value)}
|
12
|
+
options.tags.each {|tag,value| engine.tag(tag,value)} if options.tags?
|
13
13
|
|
14
14
|
puts "loading channels"
|
15
|
-
engine = @client.load_channels(engine)
|
15
|
+
engine = @client.load_channels(engine) do |message|
|
16
|
+
puts " #{message}"
|
17
|
+
end
|
16
18
|
puts "loading channels complete"
|
17
19
|
|
18
20
|
puts "loading workflows"
|
19
|
-
engine = @client.load_workflows(engine)
|
21
|
+
engine = @client.load_workflows(engine) do |message|
|
22
|
+
puts " #{message}"
|
23
|
+
end
|
20
24
|
puts "loading workflows complete"
|
21
25
|
|
22
26
|
puts "loading credentials"
|
23
|
-
engine = @client.load_credentials(engine)
|
27
|
+
engine = @client.load_credentials(engine) do |message|
|
28
|
+
puts " #{message}"
|
29
|
+
end
|
24
30
|
puts "loading credentials complete"
|
25
31
|
|
26
32
|
puts "starting the server..."
|
data/lib/cli/workflow_task.rb
CHANGED
@@ -21,7 +21,7 @@ module Factor
|
|
21
21
|
desc "list", "list all the workflows"
|
22
22
|
#method_option :key, :alias=>"-k", :type=>:string, :desc=>"key reference"
|
23
23
|
def list
|
24
|
-
puts @client.
|
24
|
+
puts @client.get_workflows
|
25
25
|
end
|
26
26
|
|
27
27
|
desc "add NAME FILENAME", "add a key and value for the credential"
|
data/lib/client/client.rb
CHANGED
@@ -8,8 +8,12 @@ require 'open-uri'
|
|
8
8
|
module Factor
|
9
9
|
module Client
|
10
10
|
class Client
|
11
|
-
|
12
|
-
|
11
|
+
attr_accessor :host
|
12
|
+
|
13
|
+
def initialize(host="http://localhost:3000")
|
14
|
+
#def initialize(host="http://factor.io")
|
15
|
+
@host=host
|
16
|
+
end
|
13
17
|
|
14
18
|
def register(email,password)
|
15
19
|
end
|
@@ -21,23 +25,69 @@ module Factor
|
|
21
25
|
@token=token
|
22
26
|
end
|
23
27
|
|
24
|
-
def load_workflows(engine)
|
28
|
+
def load_workflows(engine,&code)
|
29
|
+
code.call("downloading workflow list")
|
25
30
|
workflows = rest_get("workflows")
|
26
|
-
workflows.
|
27
|
-
|
31
|
+
code.call("downloaded #{workflows.size} workflows")
|
32
|
+
workflows.each do |workflow_info|
|
33
|
+
code.call("parsing '#{workflow_info['name']}'")
|
34
|
+
workflow_definition = JSON.parse(workflow_info['definition'])
|
35
|
+
code.call("loading '#{workflow_info['name']}' into runtime")
|
28
36
|
workflow=Factor::Runtime::Workflow.new(workflow_definition)
|
29
37
|
engine.load_workflow(workflow)
|
38
|
+
code.call("loading complete for '#{workflow_info['name']}'")
|
30
39
|
end
|
31
40
|
engine
|
32
41
|
end
|
33
42
|
|
34
|
-
def load_credentials(engine)
|
43
|
+
def load_credentials(engine,&code)
|
44
|
+
code.call("downloading credential list")
|
35
45
|
credentials = rest_get("credentials")
|
46
|
+
code.call("loading credentials")
|
36
47
|
engine.load_credentials(credentials)
|
37
48
|
|
38
49
|
engine
|
39
50
|
end
|
40
51
|
|
52
|
+
def load_channels(engine,&code)
|
53
|
+
|
54
|
+
# get list of channels
|
55
|
+
code.call("downloading channels list")
|
56
|
+
channels = rest_get("channels")
|
57
|
+
|
58
|
+
#load each channel
|
59
|
+
channels.each do |channel|
|
60
|
+
code.call("downloading '#{channel['zip_url']}'")
|
61
|
+
# URI of the zip file containing the module
|
62
|
+
uri = URI.parse(channel['zip_url'])
|
63
|
+
|
64
|
+
# temp file to store the zip for download
|
65
|
+
temp_file = Tempfile.new([uri.to_s.gsub(/\W+/,'-'), '.zip'], :encoding => 'ascii-8bit')
|
66
|
+
|
67
|
+
# temp directory where zip will be decompressed
|
68
|
+
unzip_dir=temp_file.path[0..-5]
|
69
|
+
|
70
|
+
# download
|
71
|
+
open(uri.to_s,"rb") do |bin|
|
72
|
+
temp_file.print bin.read
|
73
|
+
end
|
74
|
+
temp_file.close
|
75
|
+
|
76
|
+
code.call("unzipping '#{channel['name']}'")
|
77
|
+
# unzip download zip into unzipped directory
|
78
|
+
unzip(temp_file.path,unzip_dir)
|
79
|
+
|
80
|
+
code.call("loading '#{channel['zip_url']}' into engine")
|
81
|
+
Dir.glob("#{unzip_dir}/**/*.rb").each do |file|
|
82
|
+
engine.load_channel(file)
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
engine
|
89
|
+
end
|
90
|
+
|
41
91
|
|
42
92
|
def set_credential(key,value)
|
43
93
|
# this is a PUT not POST because it is technically editing, not creating a new one
|
@@ -60,9 +110,9 @@ module Factor
|
|
60
110
|
rest_post("workflows",{:name=>key,:definition=>definition})
|
61
111
|
end
|
62
112
|
|
63
|
-
|
64
|
-
|
65
|
-
|
113
|
+
def get_workflows()
|
114
|
+
rest_get("workflows")
|
115
|
+
end
|
66
116
|
|
67
117
|
def remove_workflow(name="")
|
68
118
|
rest_delete("workflows",{:name=>name})
|
@@ -75,9 +125,9 @@ module Factor
|
|
75
125
|
rest_post("channels",{:name=>key,:zip=>file})
|
76
126
|
end
|
77
127
|
|
78
|
-
|
79
|
-
|
80
|
-
|
128
|
+
def get_channels()
|
129
|
+
rest_get("channels")
|
130
|
+
end
|
81
131
|
|
82
132
|
def remove_channel(name="")
|
83
133
|
rest_delete("channels",{:name=>name})
|
@@ -85,41 +135,7 @@ module Factor
|
|
85
135
|
|
86
136
|
|
87
137
|
|
88
|
-
|
89
|
-
|
90
|
-
# get list of channels
|
91
|
-
channels = rest_get("channels")
|
92
|
-
|
93
|
-
#load each channel
|
94
|
-
channels.each do |channel|
|
95
|
-
|
96
|
-
# URI of the zip file containing the module
|
97
|
-
uri = URI.parse(channel['zip_url'])
|
98
|
-
|
99
|
-
# temp file to store the zip for download
|
100
|
-
temp_file = Tempfile.new([uri.to_s.gsub(/\W+/,'-'), '.zip'], :encoding => 'ascii-8bit')
|
101
|
-
|
102
|
-
# temp directory where zip will be decompressed
|
103
|
-
unzip_dir=temp_file.path[0..-5]
|
104
|
-
|
105
|
-
# download
|
106
|
-
open(uri.to_s,"rb") do |bin|
|
107
|
-
temp_file.print bin.read
|
108
|
-
end
|
109
|
-
temp_file.close
|
110
|
-
|
111
|
-
# unzip download zip into unzipped directory
|
112
|
-
unzip(temp_file.path,unzip_dir)
|
113
|
-
|
114
|
-
Dir.glob("#{unzip_dir}/#{channel['name'].downcase}/*.rb").each do |file|
|
115
|
-
engine.load_channel(file)
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
119
|
-
|
120
|
-
|
121
|
-
engine
|
122
|
-
end
|
138
|
+
|
123
139
|
|
124
140
|
|
125
141
|
private
|
@@ -173,19 +189,19 @@ module Factor
|
|
173
189
|
|
174
190
|
param_string=params.map{|key,value| "#{key}=#{value}"}.join("&")
|
175
191
|
|
176
|
-
JSON.parse(RestClient.get("#{
|
192
|
+
JSON.parse(RestClient.get("#{@host}/#{path}.json?#{param_string}"))
|
177
193
|
end
|
178
194
|
|
179
195
|
def rest_put(path,params={})
|
180
196
|
params["auth_token"]=@token
|
181
197
|
|
182
|
-
JSON.parse(RestClient.put("#{
|
198
|
+
JSON.parse(RestClient.put("#{@host}/#{path}.json",params))
|
183
199
|
end
|
184
200
|
|
185
201
|
def rest_post(path,params={})
|
186
202
|
#params["auth_token"]=@token
|
187
203
|
|
188
|
-
JSON.parse(RestClient.post("#{
|
204
|
+
JSON.parse(RestClient.post("#{@host}/#{path}.json?auth_token=#{@token}",params))
|
189
205
|
end
|
190
206
|
|
191
207
|
def rest_delete(path,params={})
|
@@ -193,7 +209,7 @@ module Factor
|
|
193
209
|
|
194
210
|
param_string=params.map{|key,value| "#{key}=#{value}"}.join("&")
|
195
211
|
|
196
|
-
JSON.parse(RestClient.delete("#{
|
212
|
+
JSON.parse(RestClient.delete("#{@host}/#{path}.json?#{param_string}"))
|
197
213
|
end
|
198
214
|
|
199
215
|
end
|
data/lib/runtime/engine.rb
CHANGED
@@ -31,7 +31,8 @@ module Factor
|
|
31
31
|
require file
|
32
32
|
channel_module_name = File.basename(file).gsub('.rb','').split('_').map{|ea| ea.capitalize}.join('')
|
33
33
|
channel_module= self.class.const_get(channel_module_name)
|
34
|
-
|
34
|
+
puts "[channel_module.definition['module']] #{channel_module.definition["module"]}"
|
35
|
+
puts "[channel_module] #{channel_module.inspect}"
|
35
36
|
@channel_modules[channel_module.definition["module"]]=channel_module
|
36
37
|
end
|
37
38
|
|
@@ -117,7 +118,9 @@ module Factor
|
|
117
118
|
|
118
119
|
def match(target)
|
119
120
|
return true if target==nil || target==""
|
120
|
-
facts
|
121
|
+
facts={}
|
122
|
+
Facter.each {|k,v| facts[k]=v}
|
123
|
+
@tags.each {|k,v| facts[k]=v}
|
121
124
|
key,value=target.split("=")
|
122
125
|
facts[key]==value
|
123
126
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.81
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -123,38 +123,22 @@ dependencies:
|
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: 0.9.8
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: rubyzip
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
|
-
type: :runtime
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
126
|
- !ruby/object:Gem::Dependency
|
143
127
|
name: facter
|
144
128
|
requirement: !ruby/object:Gem::Requirement
|
145
129
|
none: false
|
146
130
|
requirements:
|
147
|
-
- -
|
131
|
+
- - '='
|
148
132
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
133
|
+
version: 1.6.16
|
150
134
|
type: :runtime
|
151
135
|
prerelease: false
|
152
136
|
version_requirements: !ruby/object:Gem::Requirement
|
153
137
|
none: false
|
154
138
|
requirements:
|
155
|
-
- -
|
139
|
+
- - '='
|
156
140
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
141
|
+
version: 1.6.16
|
158
142
|
description: Friendly command-line interface and library for Factor
|
159
143
|
email: maciej@skierkowski.com
|
160
144
|
executables:
|