hive-runner-ios 1.0.7 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0285bff2ed9063c843f3480c68f022e7238bff85
4
- data.tar.gz: 03740faa4ae4bd5ab2dc6fb807afe7582bd16852
3
+ metadata.gz: 7322752108ca0a24e22439273d2b832d65772393
4
+ data.tar.gz: b915a2528216af4bb9260f77f7e4dfe0f224379c
5
5
  SHA512:
6
- metadata.gz: 7dbb67b82be8d6c66348e70c925b54671fb35e076ac0097d64069e1bf8c212afaf6bd4d0fb0eeb7be857e2ba87e65b4ecbc929a00e329904a78e59fc6dfad51d
7
- data.tar.gz: 26cdc8ba29be46e88e7b4b34573117ce45a84353384492cef1619c14f172a72cd7a9d79d2e2f37fe2a71ec91432f62312f51e5734daf966977cbed4fa33ff5d0
6
+ metadata.gz: 55436f90a7ae13ddd0477779b76d0cb9e1d9196d39dff1cbc65002931f434f2ab27015f240baee84b49913bd3ca326c6a568a854e9225e6941b69c4e27ff790d
7
+ data.tar.gz: 568c53aff2d74fa00c3f3c1f9b2aa6ba1e8d70753edabd3c9946cbdc518d8ed41461aa402bde70be9b740982c7a08c979c55c8636afae59fa2dc2ac9ae42c949
@@ -6,70 +6,7 @@ module Hive
6
6
  class Controller
7
7
  class Ios < Controller
8
8
 
9
- def register_with_devicedb
10
- devices = DeviceAPI::IOS.devices
11
- Hive.logger.debug('DDB: No devices attached') if devices.empty?
12
-
13
- hive_details = Hive.devicedb('Hive').find(Hive.id)
14
-
15
- attached_devices = []
16
-
17
- if hive_details.key?('devices')
18
- @hive_details = hive_details
19
- else
20
- hive_details = @hive_details
21
- end
22
-
23
- if hive_details.is_a? Hash
24
- hive_details['devices'].select { |a| a['os'] == 'ios'}.each do |device|
25
- registered_device = devices.select { |a| a.serial == device['serial'] && a.trusted? }
26
- if registered_device.empty?
27
- # A previously registered device isn't attached
28
- Hive.devicedb('Device').hive_disconnect(device['id'])
29
- else
30
- Hive.devicedb('Device').poll(device['id'])
31
-
32
- devices = devices - registered_device
33
-
34
- begin
35
- attached_devices <<
36
- self.create_device(device.merge(
37
- 'os_version' => registered_device[0].version,
38
- 'model' => device['device_model'],
39
- 'device_range' => registered_device[0].device_class,
40
- 'queues' => device['device_queues'].map{ |d| d['name'] },
41
- 'queue_prefix' => @config['queue_prefix']
42
- ))
43
- rescue => e
44
- Hive.logger.warn("Error with connected device: #{e.message}")
45
- end
46
- end
47
- end
48
- devices.select {|a| a.trusted? }.each do |device|
49
- register_new_device(device)
50
- end
51
- else
52
- # DeviceDB isn't available, use DeviceAPI instead
53
- device_info = devices.select { |a| a.trusted? }.map do |device|
54
- {
55
- 'id' => device.serial,
56
- 'serial' => device.serial,
57
- 'status' => 'idle',
58
- 'model' => device.model,
59
- 'brand' => 'Apple',
60
- 'os_version' => device.version,
61
- 'queue_prefix' => @config['queue_prefix']
62
- }
63
- end
64
-
65
- attached_devices = device_info.collect do |physical_device|
66
- self.create_device(physical_device)
67
- end
68
- end
69
- attached_devices
70
- end
71
-
72
- def register_with_hivemind
9
+ def register
73
10
  devices = DeviceAPI::IOS.devices
74
11
  Hive.logger.debug('HM: No devices attached') if devices.empty?
75
12
 
@@ -138,7 +75,11 @@ module Hive
138
75
  end
139
76
 
140
77
  attached_devices = device_info.collect do |physical_device|
141
- self.create_device(physical_device)
78
+ begin
79
+ self.create_device(physical_device)
80
+ rescue => e
81
+ Hive.logger.info("HM: Could not created device: #{physical_device}");
82
+ end
142
83
  end
143
84
  end
144
85
 
@@ -147,8 +88,7 @@ module Hive
147
88
  end
148
89
 
149
90
  def detect
150
- register_with_hivemind
151
- register_with_devicedb
91
+ register
152
92
  end
153
93
 
154
94
  def display_untrusted
@@ -158,48 +98,6 @@ module Hive
158
98
  return if untrusted_devices.empty?
159
99
  puts Terminal::Table.new headings: ['Untrusted devices'], rows: [untrusted_devices]
160
100
  end
161
-
162
- def register_new_device(device)
163
- Hive.logger.debug("Adding new iOS device: #{device.model}")
164
-
165
- attributes = {
166
- os: 'ios',
167
- os_version: device.version,
168
- serial: device.serial,
169
- device_type: 'mobile',
170
- device_model: device.model.to_s.gsub(',','_'),
171
- device_range: device.device_class,
172
- device_brand: 'Apple',
173
- hive: Hive.id
174
- }
175
-
176
- registration = Hive.devicedb('Device').register(attributes)
177
- Hive.devicedb('Device').hive_connect(registration['id'], Hive.id)
178
- end
179
-
180
- def populate_queues(device)
181
- queues = calculate_queue_names(device)
182
-
183
- devicedb_queues = device['device_queues'].map { |d| d['name'] }
184
- # Check to see if the queues have already been registered with this device
185
- missing_queues = (queues - devicedb_queues) + (devicedb_queues - queues)
186
- return if missing_queues.empty?
187
-
188
- queues << missing_queues
189
-
190
- queue_ids = queues.flatten.uniq.map { |queue| find_or_create_queue(queue) }
191
-
192
- values = {
193
- name: device['name'],
194
- hive_id: device['hive_id'],
195
- feature_list: device['features'],
196
- device_queue_ids: queue_ids
197
- }
198
-
199
- Hive.devicedb('Device').edit(device['id'], values)
200
- end
201
-
202
-
203
101
  end
204
102
  end
205
103
  end
@@ -12,45 +12,8 @@ module Hive
12
12
  @device_range = config['device_range'].downcase
13
13
  @os_version = config['os_version']
14
14
 
15
- new_queues = calculate_queue_names
16
- new_queues = new_queues | config['queues'] if config.has_key?('queues')
17
-
18
- devicedb_ids = new_queues.map { |queue| find_or_create_queue(queue) }
19
- Hive.devicedb('Device').edit(@identity, { device_queue_ids: devicedb_ids })
20
- config['queues'] = new_queues
21
15
  super
22
16
  end
23
-
24
- def calculate_queue_names
25
- [
26
- "#{@queue_prefix}#{self.model}",
27
- "#{@queue_prefix}ios",
28
- "#{@queue_prefix}ios-#{self.os_version}",
29
- "#{@queue_prefix}ios-#{self.os_version}-#{self.model}",
30
- "#{@queue_prefix}#{@device_range}",
31
- "#{@queue_prefix}#{@device_range}-#{self.os_version}"
32
- ]
33
- end
34
-
35
- private
36
-
37
- def find_or_create_queue(name)
38
-
39
- queue = Hive.devicedb('Queue').find_by_name(name)
40
- return queue.first['id'] unless queue.empty? || queue.is_a?(Hash)
41
-
42
- queue = create_queue(name, "#{name} queue created by Hive Runner")
43
- queue['id'] unless queue.empty?
44
- end
45
-
46
- def create_queue(name, description)
47
- queue_attributes = {
48
- name: name,
49
- description: description
50
- }
51
-
52
- Hive.devicedb('Queue').register(device_queue: queue_attributes )
53
- end
54
17
  end
55
18
  end
56
- end
19
+ end
@@ -21,6 +21,10 @@ module Hive
21
21
  attr_accessor :device
22
22
 
23
23
  def initialize(device)
24
+ @queue_prefix = device['queue_prefix'].to_s == '' ? '' : "#{device['queue_prefix']}-"
25
+ @model = device['model'].downcase.gsub(/\s/, '_')
26
+ @device_range = device['device_range'].downcase
27
+ @os_version = device['os_version']
24
28
  @worker_ports = PortReserver.new
25
29
  self.device = device
26
30
  super(device)
@@ -114,27 +118,30 @@ module Hive
114
118
  end
115
119
 
116
120
  def device_status
117
- details = Hive.devicedb('Device').find(@options['id'])
118
- if details.key?('status')
119
- @state = details['status']
120
- else
121
- @state
122
- end
121
+
123
122
  end
124
123
 
125
124
  def set_device_status(status)
126
- @state = status
127
- begin
128
- details = Hive.devicedb('Device').poll(@options['id'], status)
129
- if details.key?('status')
130
- @state = details['status']
131
- else
132
- @state
133
- end
134
- rescue
135
- @state
136
- end
125
+
126
+ end
127
+
128
+ def autogenerated_queues
129
+ [
130
+ "#{@queue_prefix}#{@model}",
131
+ "#{@queue_prefix}ios",
132
+ "#{@queue_prefix}ios-#{@os_version}",
133
+ "#{@queue_prefix}ios-#{@os_version}-#{@model}",
134
+ "#{@queue_prefix}#{@device_range}",
135
+ "#{@queue_prefix}#{@device_range}-#{@os_version}"
136
+ ]
137
+ end
138
+
139
+ def hive_mind_device_identifiers
140
+ {
141
+ serial: @device_id,
142
+ device_type: 'Mobile'
143
+ }
137
144
  end
138
145
  end
139
146
  end
140
- end
147
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hive-runner-ios
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Wilson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-19 00:00:00.000000000 Z
11
+ date: 2016-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hive-runner
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.5
19
+ version: '2.1'
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
- version: 2.0.5
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: device_api-ios
29
29
  requirement: !ruby/object:Gem::Requirement