staugaard-transcoding_machine 0.1.0 → 0.1.1
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/VERSION.yml
CHANGED
@@ -4,13 +4,12 @@ require 'transcoding_machine/server/s3_storage'
|
|
4
4
|
module TranscodingMachine
|
5
5
|
module Client
|
6
6
|
class JobQueue
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
@sqs.queue(queue_name).push(msg.to_yaml)
|
7
|
+
def self.push(queue_name, bucket, key, media_player_ids, result_queue_name, options = {})
|
8
|
+
options[:bucket] = bucket
|
9
|
+
options[:key] = key
|
10
|
+
options[:media_players] = media_player_ids
|
11
|
+
options[:result_queue] = result_queue_name
|
12
|
+
RightAws::SqsGen2.new.queue(queue_name).push(options.to_yaml)
|
14
13
|
end
|
15
14
|
end
|
16
15
|
end
|
@@ -21,7 +21,7 @@ module TranscodingMachine
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def analyzed_source_file(source_file_attributes, source_media_format)
|
24
|
-
push_status(:analyzed, :media_format => source_media_format, :media_attributes => source_file_attributes)
|
24
|
+
push_status(:analyzed, :media_format => source_media_format.id, :media_attributes => source_file_attributes)
|
25
25
|
end
|
26
26
|
|
27
27
|
def generating_thumbnail_file
|
@@ -29,23 +29,23 @@ module TranscodingMachine
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def generated_thumbnail_file
|
32
|
-
|
32
|
+
push_status(:created_thumbnail)
|
33
33
|
end
|
34
34
|
|
35
35
|
def transcoding(media_format)
|
36
|
-
push_status(:transcoding, :media_format => media_format)
|
36
|
+
push_status(:transcoding, :media_format => media_format.id)
|
37
37
|
end
|
38
38
|
|
39
39
|
def transcoded(media_format)
|
40
|
-
push_status(:transcoded, :media_format => media_format)
|
40
|
+
push_status(:transcoded, :media_format => media_format.id)
|
41
41
|
end
|
42
42
|
|
43
43
|
def putting_destination_file(file_path, media_format)
|
44
|
-
push_status(:uploading, :media_format => media_format, :destination_key => file_path)
|
44
|
+
push_status(:uploading, :media_format => media_format.id, :destination_key => file_path)
|
45
45
|
end
|
46
46
|
|
47
47
|
def put_destination_file(file_path, media_format)
|
48
|
-
push_status(:uploaded, :media_format => media_format, :destination_key => file_path)
|
48
|
+
push_status(:uploaded, :media_format => media_format.id, :destination_key => file_path)
|
49
49
|
end
|
50
50
|
|
51
51
|
def push_status(status, options = {})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: staugaard-transcoding_machine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mick Staugaard
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-04-
|
12
|
+
date: 2009-04-07 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
43
|
+
version: 1.9.0
|
44
44
|
version:
|
45
45
|
description: TODO
|
46
46
|
email: mick@staugaard.com
|
@@ -61,7 +61,6 @@ files:
|
|
61
61
|
- lib/transcoding_machine/client
|
62
62
|
- lib/transcoding_machine/client/job_queue.rb
|
63
63
|
- lib/transcoding_machine/client/result_queue.rb
|
64
|
-
- lib/transcoding_machine/client/server_manager.rb
|
65
64
|
- lib/transcoding_machine/media_format.rb
|
66
65
|
- lib/transcoding_machine/media_format_criterium.rb
|
67
66
|
- lib/transcoding_machine/media_player.rb
|
@@ -1,107 +0,0 @@
|
|
1
|
-
require 'right_aws'
|
2
|
-
|
3
|
-
module TranscodingMachine
|
4
|
-
module Client
|
5
|
-
class ServerManager
|
6
|
-
|
7
|
-
# Sets up a new ServerManager
|
8
|
-
# queue_settings are a in the following format:
|
9
|
-
# {'transcoding_job_queue' => {:ami => 'ami-e444444d',
|
10
|
-
# :location => 'us-east-1c',
|
11
|
-
# :key => 'my_awesome_key',
|
12
|
-
# :type => 'm1.large'}
|
13
|
-
# }
|
14
|
-
#
|
15
|
-
# options are:
|
16
|
-
# * <tt>:sleep_time</tt> the time to sleep between queue checks (default 30)
|
17
|
-
# * <tt>:transcoding_settings</tt> a string or lambda with the userdata to send to new transcoding servers
|
18
|
-
# * <tt>:server_count</tt> a lambda returning the needed number of transcoding servers for a given queue (defaults to the queue size)
|
19
|
-
def initialize(queue_settings, options)
|
20
|
-
@sqs = RightAws::SqsGen2.new
|
21
|
-
@ec2 = RightAws::Ec2.new
|
22
|
-
|
23
|
-
@queues = Hash.new
|
24
|
-
queue_settings.each do |queue_name, settings|
|
25
|
-
@queues[@sqs.queue(queue_name.to_s)] = settings
|
26
|
-
end
|
27
|
-
|
28
|
-
@server_count = options[:server_count] || lambda {|queue| queue.size}
|
29
|
-
|
30
|
-
@transcoding_settings = options[:transcoding_settings]
|
31
|
-
|
32
|
-
@sleep_time = options[:sleep_time] || 20
|
33
|
-
|
34
|
-
@running = false
|
35
|
-
end
|
36
|
-
|
37
|
-
def needed_server_count(queue)
|
38
|
-
@server_count.call(queue)
|
39
|
-
end
|
40
|
-
|
41
|
-
def transcoding_settings(queue)
|
42
|
-
"test"
|
43
|
-
#@transcoding_settings.respond_to?(:call) ? @transcoding_settings.call(queue) : @transcoding_settings
|
44
|
-
end
|
45
|
-
|
46
|
-
def running_server_count(queue)
|
47
|
-
@ec2.describe_instances.find_all do |instance|
|
48
|
-
state = instance[:aws_state_code].to_i
|
49
|
-
zone = instance[:aws_availability_zone]
|
50
|
-
ami = instance[:aws_image_id]
|
51
|
-
|
52
|
-
matches = state <= 16
|
53
|
-
matches &&= ami == ec2_ami(queue)
|
54
|
-
matches &&= zone == ec2_location(queue) if ec2_location(queue)
|
55
|
-
matches
|
56
|
-
end.size
|
57
|
-
end
|
58
|
-
|
59
|
-
def ec2_ami(queue)
|
60
|
-
@queues[queue][:ami]
|
61
|
-
end
|
62
|
-
|
63
|
-
def ec2_location(queue)
|
64
|
-
@queues[queue][:location]
|
65
|
-
end
|
66
|
-
|
67
|
-
def ec2_key(queue)
|
68
|
-
@queues[queue][:key]
|
69
|
-
end
|
70
|
-
|
71
|
-
def ec2_instance_type(queue)
|
72
|
-
@queues[queue][:type]
|
73
|
-
end
|
74
|
-
|
75
|
-
def ec2_security_groups(queue)
|
76
|
-
@queues[queue][:security_groups]
|
77
|
-
end
|
78
|
-
|
79
|
-
def manage_servers(options = {})
|
80
|
-
@running = true
|
81
|
-
|
82
|
-
while @running
|
83
|
-
@queues.keys.each do |queue|
|
84
|
-
needed = needed_server_count(queue)
|
85
|
-
running = running_server_count(queue)
|
86
|
-
|
87
|
-
#if needed > 0 || running > 0
|
88
|
-
puts "#{running} of #{needed} needed servers are running for queue #{queue.name}"
|
89
|
-
#end
|
90
|
-
|
91
|
-
if running < needed
|
92
|
-
puts "requesting #{needed - running} new servers for queue #{queue.name}"
|
93
|
-
puts [ec2_ami(queue), 1, needed - running, ec2_security_groups(queue),
|
94
|
-
ec2_key(queue), transcoding_settings(queue),
|
95
|
-
nil, ec2_instance_type(queue), nil, nil, ec2_location(queue)].inspect
|
96
|
-
|
97
|
-
new_servers = @ec2.run_instances(ec2_ami(queue), 1, needed - running, ec2_security_groups(queue),
|
98
|
-
ec2_key(queue), transcoding_settings(queue),
|
99
|
-
nil, ec2_instance_type(queue), nil, nil, ec2_location(queue))
|
100
|
-
end
|
101
|
-
end
|
102
|
-
sleep(@sleep_time)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|