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 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/backburner_object"
9
- require "backburner/remote_command"
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 :data, :client, :handler
5
+ attr_reader :handler
6
6
 
7
- def method_missing name, *args
8
- @data.search name
7
+ def method_missing name
8
+ @raw_data.try :search, name
9
9
  end
10
10
 
11
- def initialize handler, client
11
+ def initialize handler, connection
12
12
  @handler = handler
13
- @client = client
13
+ @connection = connection
14
14
  reload
15
15
  end
16
16
 
17
17
  def reload
18
- @data = reloader
18
+ @raw_data = load_raw_data if respond_to?(:load_raw_data)
19
19
  end
20
20
 
21
21
  end
@@ -1,8 +1,8 @@
1
1
  module Backburner
2
2
 
3
- class Client
3
+ class Client < BackburnerObject
4
4
 
5
- attr_reader :data
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
- job_handlers = @connection.get_jobhlist.jobh_list.job
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, self
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
- @data = DataObject.new
61
- @data.client_info = {
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 unless @data
81
- xml = @data.to_xml
82
- @connection.set_clientinfo xml.bytesize
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 = /\nbackburner(\(controller\))?>/i
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 data
53
- @session.cmd 'String' => data
52
+ def send_data
54
53
  end
55
54
 
56
- def send_text data
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
@@ -0,0 +1,4 @@
1
+ module Backburner
2
+ class ConnectionError < StandardError
3
+ end
4
+ end
@@ -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 reloader
8
- @client.job!(@handler)
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 create name, file_path, *parameters
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
@@ -0,0 +1,14 @@
1
+ module Backburner
2
+ class JobServer < BackburnerObject
3
+
4
+ def initialize raw_data, connection
5
+ @raw_data = raw_data
6
+ @connection = connection
7
+ end
8
+
9
+ def time
10
+ @raw_data.srv_task_time
11
+ end
12
+
13
+ end
14
+ end
@@ -22,8 +22,16 @@ module Backburner
22
22
  request_array = []
23
23
  request_array << method_name
24
24
  request_array << flatten
25
- request_array += args||[]
26
- @connection.send_text request_array.join(' ')
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
@@ -1,3 +1,3 @@
1
1
  module Backburner
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
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.2.2
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