Source code for media_nommer.conf.utils
"""
Various configuration-related utility methods.
"""
import os
import boto
from media_nommer.conf import settings
from media_nommer.utils import logger
from media_nommer.core.storage_backends.s3 import S3Backend
[docs]def upload_settings(nomconf_module):
"""
Given a user-defined nomconf module (already imported), push said file
to the S3 conf bucket, as defined by settings.CONFIG_S3_BUCKET.
This is used by the nommers that require access to the config, like
FFmpegNommer.
:param module nomconf_module: The user's ``nomconf`` module. This may
be called something other than ``nomconf``, but the uploaded filename
will always be ``nomconf.py``, so the EC2 nodes can find it in your
settings.CONFIG_S3_BUCKET.
"""
logger.info("Uploading nomconf.py to S3.")
nomconf_py_path = nomconf_module.__file__
if nomconf_py_path.endswith('.pyc'):
# Don't want to upload the .pyc, looking for the .py.
nomconf_py_path = nomconf_py_path[:-1]
conn = boto.connect_s3(settings.AWS_ACCESS_KEY_ID,
settings.AWS_SECRET_ACCESS_KEY)
bucket = conn.create_bucket(settings.CONFIG_S3_BUCKET)
key = bucket.new_key('nomconf.py')
key.set_contents_from_filename(nomconf_py_path)
logger.info("nomconf.py uploaded successfully.")
[docs]def download_settings(nomconf_uri):
"""
Given the URI to a S3 location with a valid nomconf.py, download it to
the current user's home directory.
.. tip:: This is used on the media-nommer EC2 AMIs. This won't run on
local development machines.
:param str nomconf_uri: The URI to your setup's ``nomconf.py`` file. Make
Sure to specify AWS keys and IDs if using the S3 protocol.
"""
logger.info("Downloading nomconf.py from S3.")
nomconf_path = os.path.expanduser('~/nomconf.py')
fobj = open(nomconf_path, 'w')
S3Backend.download_file(nomconf_uri, fobj)
logger.info("nomconf.py downloaded from S3 successfully.")