autodesk_backburner_client 0.2.2 → 0.3.0
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/backburner.rb +4 -2
- data/lib/backburner/backburner_object.rb +6 -6
- data/lib/backburner/client.rb +12 -36
- data/lib/backburner/connection.rb +33 -4
- data/lib/backburner/data_object.rb +2 -2
- data/lib/backburner/errors/connection_error.rb +4 -0
- data/lib/backburner/job.rb +17 -5
- data/lib/backburner/job_server.rb +14 -0
- data/lib/backburner/remote_command.rb +10 -2
- data/lib/backburner/version.rb +1 -1
- metadata +3 -1
data/lib/backburner.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require "backburner/version"
|
2
2
|
require "backburner/connection"
|
3
|
+
require "backburner/backburner_object"
|
3
4
|
require "backburner/job"
|
5
|
+
require "backburner/job_server"
|
4
6
|
require "backburner/server"
|
5
7
|
require "backburner/client"
|
6
8
|
require "backburner/string/string_operations"
|
7
9
|
require "backburner/data_object"
|
8
|
-
require "backburner/
|
9
|
-
require "backburner/
|
10
|
+
require "backburner/remote_command"
|
11
|
+
require "backburner/errors/connection_error"
|
@@ -2,20 +2,20 @@ module Backburner
|
|
2
2
|
|
3
3
|
class BackburnerObject
|
4
4
|
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :handler
|
6
6
|
|
7
|
-
def method_missing name
|
8
|
-
@
|
7
|
+
def method_missing name
|
8
|
+
@raw_data.try :search, name
|
9
9
|
end
|
10
10
|
|
11
|
-
def initialize handler,
|
11
|
+
def initialize handler, connection
|
12
12
|
@handler = handler
|
13
|
-
@
|
13
|
+
@connection = connection
|
14
14
|
reload
|
15
15
|
end
|
16
16
|
|
17
17
|
def reload
|
18
|
-
@
|
18
|
+
@raw_data = load_raw_data if respond_to?(:load_raw_data)
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
data/lib/backburner/client.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Backburner
|
2
2
|
|
3
|
-
class Client
|
3
|
+
class Client < BackburnerObject
|
4
4
|
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :raw_data
|
6
6
|
|
7
7
|
def initialize host, port=3234
|
8
8
|
@host = host
|
@@ -21,44 +21,20 @@ module Backburner
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def jobs
|
24
|
-
|
24
|
+
response = @connection.jobhlist.get
|
25
|
+
return [] if @connection.empty?
|
26
|
+
job_handlers = response.jobh_list.job
|
25
27
|
job_handlers = [job_handlers] unless job_handlers.kind_of?(Array)
|
26
28
|
job_handlers.map do |job_data|
|
27
|
-
Job.new job_data.handle,
|
29
|
+
Job.new job_data.handle, @connection
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
|
-
def job handler
|
32
|
-
job_data = job! handler
|
33
|
-
Job.new job_data, self
|
34
|
-
end
|
35
|
-
|
36
|
-
def job! handler
|
37
|
-
@connection.get_job handler
|
38
|
-
end
|
39
|
-
|
40
|
-
def servers
|
41
|
-
server_handlers = @connection.get_srvlist.server_list.server
|
42
|
-
server_handlers = [server_handlers] unless server_handlers.kind_of?(Array)
|
43
|
-
server_handlers.map do |server_data|
|
44
|
-
Server.new server_data.handle, self
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def server handler
|
49
|
-
server_data = server! handler
|
50
|
-
Server.new server_data, self
|
51
|
-
end
|
52
|
-
|
53
|
-
def server! handler
|
54
|
-
@connection.get_server handler
|
55
|
-
end
|
56
|
-
|
57
33
|
private
|
58
34
|
|
59
35
|
def generate_client_info
|
60
|
-
@
|
61
|
-
@
|
36
|
+
@raw_data = DataObject.new
|
37
|
+
@raw_data.client_info = {
|
62
38
|
version: 300,
|
63
39
|
udp_port: 0,
|
64
40
|
controler: 0,
|
@@ -69,7 +45,7 @@ module Backburner
|
|
69
45
|
platform: platform,
|
70
46
|
user: user,
|
71
47
|
computer_name: computer_name,
|
72
|
-
mac: '00E052B9A2F20000',
|
48
|
+
mac: '00E052B9A2F20000', # TODO: change to dynamic
|
73
49
|
work_disk_space: 0,
|
74
50
|
i_p_address: '172.50.0.170'
|
75
51
|
}
|
@@ -77,9 +53,9 @@ module Backburner
|
|
77
53
|
end
|
78
54
|
|
79
55
|
def send_client_info
|
80
|
-
generate_client_info
|
81
|
-
xml = @
|
82
|
-
@connection.
|
56
|
+
generate_client_info
|
57
|
+
xml = @raw_data.to_xml
|
58
|
+
@connection.clientinfo.set xml
|
83
59
|
end
|
84
60
|
|
85
61
|
def total_memory
|
@@ -6,7 +6,7 @@ module Backburner
|
|
6
6
|
class Connection
|
7
7
|
|
8
8
|
STATUS_REGEXP = /(\d+) ([0-9A-z ]+)$/
|
9
|
-
PROMPT_REGEXP = /\
|
9
|
+
PROMPT_REGEXP = /\n?backburner(\(controller\))?>/i
|
10
10
|
XML_COMMENT_REGEXP = /<!--.+-->/
|
11
11
|
|
12
12
|
attr_reader :last_message, :last_size, :last_status, :last_body, :last_response
|
@@ -49,15 +49,34 @@ module Backburner
|
|
49
49
|
DataObject.new xml_string
|
50
50
|
end
|
51
51
|
|
52
|
-
def send_data
|
53
|
-
@session.cmd 'String' => data
|
52
|
+
def send_data
|
54
53
|
end
|
55
54
|
|
56
|
-
def
|
55
|
+
def cmd data
|
57
56
|
@last_response = @session.cmd data
|
58
57
|
parse_response
|
59
58
|
end
|
60
59
|
|
60
|
+
def send_text command_data, data=nil
|
61
|
+
request = "#{command_data}"
|
62
|
+
request_hash = {}
|
63
|
+
if data
|
64
|
+
request_hash['Match'] = STATUS_REGEXP
|
65
|
+
request += " #{data.bytesize+14}"
|
66
|
+
end
|
67
|
+
request_hash['String'] = request
|
68
|
+
@last_response = @session.cmd request_hash
|
69
|
+
parse_status
|
70
|
+
@last_response = @session.puts data
|
71
|
+
@last_response = @session.waitfor('Match' => STATUS_REGEXP)
|
72
|
+
@session.waitfor 'Match' => PROMPT_REGEXP
|
73
|
+
parse_status
|
74
|
+
end
|
75
|
+
|
76
|
+
def ready?
|
77
|
+
(@last_status||0) == 251
|
78
|
+
end
|
79
|
+
|
61
80
|
def proceed?
|
62
81
|
@last_status < 200 || @last_status > 299
|
63
82
|
end
|
@@ -66,6 +85,14 @@ module Backburner
|
|
66
85
|
@last_status == 250
|
67
86
|
end
|
68
87
|
|
88
|
+
def error?
|
89
|
+
(@last_status||0) > 399
|
90
|
+
end
|
91
|
+
|
92
|
+
def empty?
|
93
|
+
@last_size == 0
|
94
|
+
end
|
95
|
+
|
69
96
|
private
|
70
97
|
|
71
98
|
def parse_response
|
@@ -75,10 +102,12 @@ module Backburner
|
|
75
102
|
end
|
76
103
|
|
77
104
|
def parse_status
|
105
|
+
#TODO: add exception from wrong status codes
|
78
106
|
@last_response.scan STATUS_REGEXP
|
79
107
|
@last_status = $1.to_i
|
80
108
|
@last_size = $2.to_i
|
81
109
|
@last_message = $2
|
110
|
+
raise(ConnectionError.new, @last_message) if error?
|
82
111
|
end
|
83
112
|
|
84
113
|
def parse_body
|
@@ -7,7 +7,7 @@ module Backburner
|
|
7
7
|
|
8
8
|
TIME_REGEXP = /(^\d{4}\/\d{2}\/\d{2}-\d{2}:\d{2}:\d{2}:\d{4})(-\d{2})$/
|
9
9
|
|
10
|
-
def initialize h, args={recurse_over_arrays: true}
|
10
|
+
def initialize h={}, args={recurse_over_arrays: true}
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
@@ -75,7 +75,7 @@ module Backburner
|
|
75
75
|
document = builder.doc
|
76
76
|
root_element = document.children[0]
|
77
77
|
xml = xml_dig root_element, @table.values.first, document
|
78
|
-
document.to_xml
|
78
|
+
document.to_xml + "\n"
|
79
79
|
end
|
80
80
|
|
81
81
|
private
|
data/lib/backburner/job.rb
CHANGED
@@ -1,15 +1,27 @@
|
|
1
|
-
require 'backburner/backburner_object'
|
2
|
-
|
3
1
|
module Backburner
|
4
2
|
|
5
3
|
class Job < BackburnerObject
|
6
4
|
|
7
|
-
def
|
8
|
-
@
|
5
|
+
def load_raw_data
|
6
|
+
@connection.job.get(handler)
|
7
|
+
end
|
8
|
+
|
9
|
+
def servers
|
10
|
+
return [] if !@raw_data || !@raw_data.job.servers || !@raw_data.job.servers.server
|
11
|
+
servers = @raw_data.job.servers.server.is_a?(Array) ? @raw_data.job.servers.server : [@raw_data.job.servers.server]
|
12
|
+
servers.map do |server|
|
13
|
+
JobServer.new server, @connection
|
14
|
+
end
|
9
15
|
end
|
10
16
|
|
11
|
-
def
|
17
|
+
def server_time
|
18
|
+
servers.inject(0.0) do |sum, server|
|
19
|
+
sum += server.time
|
20
|
+
end
|
21
|
+
end
|
12
22
|
|
23
|
+
def name
|
24
|
+
@raw_data.job.job_info.name
|
13
25
|
end
|
14
26
|
|
15
27
|
end
|
@@ -22,8 +22,16 @@ module Backburner
|
|
22
22
|
request_array = []
|
23
23
|
request_array << method_name
|
24
24
|
request_array << flatten
|
25
|
-
|
26
|
-
|
25
|
+
case method_name
|
26
|
+
when 'get' then
|
27
|
+
request_array += args||[]
|
28
|
+
@connection.cmd request_array.join(' ')
|
29
|
+
when 'set' then
|
30
|
+
@connection.send_text request_array.join(' '), args[0]
|
31
|
+
when 'new' then
|
32
|
+
request_array += args||[]
|
33
|
+
@connection.cmd request_array.join(' ')
|
34
|
+
end
|
27
35
|
end
|
28
36
|
|
29
37
|
end
|
data/lib/backburner/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autodesk_backburner_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -94,7 +94,9 @@ files:
|
|
94
94
|
- lib/backburner/client.rb
|
95
95
|
- lib/backburner/connection.rb
|
96
96
|
- lib/backburner/data_object.rb
|
97
|
+
- lib/backburner/errors/connection_error.rb
|
97
98
|
- lib/backburner/job.rb
|
99
|
+
- lib/backburner/job_server.rb
|
98
100
|
- lib/backburner/open_struct_data.rb
|
99
101
|
- lib/backburner/remote_command.rb
|
100
102
|
- lib/backburner/server.rb
|