[Debconf-video-commits] r412 - in package/branches/pycon09: conf src src/pyconvideo/pyconvideo
benh at alioth.debian.org
benh at alioth.debian.org
Sat Mar 28 18:10:31 UTC 2009
Author: benh
Date: 2009-03-28 18:10:31 +0000 (Sat, 28 Mar 2009)
New Revision: 412
Modified:
package/branches/pycon09/conf/permissions.sql
package/branches/pycon09/src/dc-do-transcoding
package/branches/pycon09/src/dc-video-schema.sql
package/branches/pycon09/src/pyconvideo/pyconvideo/admin.py
package/branches/pycon09/src/pyconvideo/pyconvideo/models.py
Log:
Move encoding host configuration into the database so we can change it dynamically.
Modified: package/branches/pycon09/conf/permissions.sql
===================================================================
--- package/branches/pycon09/conf/permissions.sql 2009-03-28 18:09:39 UTC (rev 411)
+++ package/branches/pycon09/conf/permissions.sql 2009-03-28 18:10:31 UTC (rev 412)
@@ -2,7 +2,7 @@
GRANT SELECT
ON conference, conference_room, event, video_event_recording,
- video_file_status, video_target_format
+ video_file_status, video_target_format, video_encoding_host
TO videoteam;
GRANT SELECT, INSERT, UPDATE, DELETE
Modified: package/branches/pycon09/src/dc-do-transcoding
===================================================================
--- package/branches/pycon09/src/dc-do-transcoding 2009-03-28 18:09:39 UTC (rev 411)
+++ package/branches/pycon09/src/dc-do-transcoding 2009-03-28 18:10:31 UTC (rev 412)
@@ -11,6 +11,15 @@
import debconfvideo
from debconfvideo import config, database
+def get_host_procs():
+ host_procs = []
+ cur = database.get_cursor()
+ cur.execute('SELECT hostname, nproc FROM video_encoding_host')
+ for host, nproc in cur.fetchall():
+ for proc in range(nproc):
+ host_procs.append((host, proc))
+ return host_procs
+
class Job(object):
pass
@@ -180,21 +189,14 @@
return ' '.join(escape(arg) for arg in argv)
def main(pretend=False):
- host_procs = []
- for host_nproc in config['ENCODING_HOSTS'].split(' '):
- if '*' in host_nproc:
- host, nproc = host_nproc.split('*', 1)
- nproc = int(nproc)
- else:
- host, nproc = host_nproc, 2
- for proc in range(nproc):
- host_procs.append((host, proc))
jobs_by_host_proc = {}
jobs_by_key = {}
cur = database.get_cursor()
while True:
+ host_procs = get_host_procs()
+
# Generate a queue of jobs. Remove the jobs we're running.
queue = [job
for job in get_job_queue()
@@ -213,6 +215,7 @@
break
# Assign jobs to idle processors.
+ some_idle = False
for host_proc in host_procs:
if not jobs_by_host_proc.has_key(host_proc):
host, proc = host_proc
@@ -232,6 +235,8 @@
else:
print ('INFO: skipping %s as no source file'
'available' % job.target_filename)
+ else:
+ some_idle = True
print 'INFO: running jobs:'
for host_proc, job in jobs_by_host_proc.items():
host, proc = host_proc
@@ -239,7 +244,7 @@
# If not all processors are busy, we should look for new jobs in
# 5 minutes. Otherwise we should wait for a job to finish.
- if len(jobs_by_host_proc) < len(host_procs):
+ if some_idle:
poll_time = time.time() + 300
else:
poll_time = None
Modified: package/branches/pycon09/src/dc-video-schema.sql
===================================================================
--- package/branches/pycon09/src/dc-video-schema.sql 2009-03-28 18:09:39 UTC (rev 411)
+++ package/branches/pycon09/src/dc-video-schema.sql 2009-03-28 18:10:31 UTC (rev 412)
@@ -111,6 +111,12 @@
UNIQUE (event_recording_id, target_format_id)
);
+CREATE TABLE video_encoding_host (
+ id serial PRIMARY KEY,
+ hostname character varying(32) NOT NULL,
+ nproc integer NOT NULL
+);
+
-- Subject of events. This is used for categorising events on DVDs
-- and maybe for normal web pages.
-- CREATE TABLE subject (
Modified: package/branches/pycon09/src/pyconvideo/pyconvideo/admin.py
===================================================================
--- package/branches/pycon09/src/pyconvideo/pyconvideo/admin.py 2009-03-28 18:09:39 UTC (rev 411)
+++ package/branches/pycon09/src/pyconvideo/pyconvideo/admin.py 2009-03-28 18:10:31 UTC (rev 412)
@@ -31,3 +31,4 @@
admin.site.register(models.VideoEventRecording)
admin.site.register(models.VideoTargetFormat)
admin.site.register(models.VideoTargetFile, VideoTargetFileAdmin)
+admin.site.register(models.VideoEncodingHost)
Modified: package/branches/pycon09/src/pyconvideo/pyconvideo/models.py
===================================================================
--- package/branches/pycon09/src/pyconvideo/pyconvideo/models.py 2009-03-28 18:09:39 UTC (rev 411)
+++ package/branches/pycon09/src/pyconvideo/pyconvideo/models.py 2009-03-28 18:10:31 UTC (rev 412)
@@ -146,3 +146,12 @@
return self.target_filename
class Meta:
db_table = u'video_target_file'
+
+class VideoEncodingHost(models.Model):
+ id = models.AutoField(primary_key=True)
+ hostname = models.CharField(max_length=32)
+ nproc = models.IntegerField()
+ def __unicode__(self):
+ return '%s * %d' % (self.hostname, self.nproc)
+ class Meta:
+ db_table = u'video_encoding_host'
More information about the Debconf-video-commits
mailing list