Example #1
0
 def __init__(self):
     super(CopyBot, self).__init__()
     self.wdir = niftycloud.config.get('Pyami', 'working_dir')
     self.log_file = '%s.log' % self.instance_id
     self.log_path = os.path.join(self.wdir, self.log_file)
     niftycloud.set_file_logger(self.name, self.log_path)
     self.src_name = niftycloud.config.get(self.name, 'src_bucket')
     self.dst_name = niftycloud.config.get(self.name, 'dst_bucket')
     self.replace = niftycloud.config.getbool(self.name, 'replace_dst', True)
     s3 = niftycloud.connect_s3()
     self.src = s3.lookup(self.src_name)
     if not self.src:
         niftycloud.log.error('Source bucket does not exist: %s' % self.src_name)
     dest_access_key = niftycloud.config.get(self.name, 'dest_aws_access_key_id', None)
     if dest_access_key:
         dest_secret_key = niftycloud.config.get(self.name, 'dest_aws_secret_access_key', None)
         s3 = niftycloud.connect(dest_access_key, dest_secret_key)
     self.dst = s3.lookup(self.dst_name)
     if not self.dst:
         self.dst = s3.create_bucket(self.dst_name)
Example #2
0
 def __init__(self, config_file=None):
     super(SonOfMMM, self).__init__(config_file)
     self.log_file = '%s.log' % self.instance_id
     self.log_path = os.path.join(self.working_dir, self.log_file)
     niftycloud.set_file_logger(self.name, self.log_path)
     if self.sd.has_option('ffmpeg_args'):
         self.command = '/usr/local/bin/ffmpeg ' + self.sd.get('ffmpeg_args')
     else:
         self.command = '/usr/local/bin/ffmpeg -y -i %s %s'
     self.output_mimetype = self.sd.get('output_mimetype')
     if self.sd.has_option('output_ext'):
         self.output_ext = self.sd.get('output_ext')
     else:
         self.output_ext = mimetypes.guess_extension(self.output_mimetype)
     self.output_bucket = self.sd.get_obj('output_bucket')
     self.input_bucket = self.sd.get_obj('input_bucket')
     # check to see if there are any messages queue
     # if not, create messages for all files in input_bucket
     m = self.input_queue.read(1)
     if not m:
         self.queue_files()
Example #3
0
    def run_scripts(self):
        scripts = config.get('Pyami', 'scripts')
        if scripts:
            for script in scripts.split(','):
                script = script.strip(" ")
                try:
                    pos = script.rfind('.')
                    if pos > 0:
                        mod_name = script[0:pos]
                        cls_name = script[pos + 1:]
                        cls = find_class(mod_name, cls_name)
                        niftycloud.log.info('Running Script: %s' % script)
                        s = cls()
                        s.main()
                    else:
                        niftycloud.log.warning('Trouble parsing script: %s' % script)
                except Exception as e:
                    niftycloud.log.exception('Problem Running Script: %s. Startup process halting.' % script)
                    raise e

    def main(self):
        self.run_scripts()
        self.notify('Startup Completed for %s' % config.get('Instance', 'instance-id'))

if __name__ == "__main__":
    if not config.has_section('loggers'):
        niftycloud.set_file_logger('startup', '/var/log/niftycloud.log')
    sys.path.append(config.get('Pyami', 'working_dir'))
    su = Startup()
    su.main()
Example #4
0
            niftycloud.log.exception('Problem Retrieving file: %s' % s3_file)
            path = None
        return path

    def load_packages(self):
        package_str = niftycloud.config.get('Pyami', 'packages')
        if package_str:
            packages = package_str.split(',')
            for package in packages:
                package = package.strip()
                if package.startswith('s3:'):
                    package = self.fetch_s3_file(package)
                if package:
                    # if the "package" is really a .py file, it doesn't have to
                    # be installed, just being in the working dir is enough
                    if not package.endswith('.py'):
                        self.run('easy_install -Z %s' % package, exit_on_error=False)

    def main(self):
        self.create_working_dir()
        self.load_niftycloud()
        self.load_packages()
        self.notify('Bootstrap Completed for %s' % niftycloud.config.get_instance('instance-id'))

if __name__ == "__main__":
    # because bootstrap starts before any logging configuration can be loaded from
    # the niftycloud config files, we will manually enable logging to /var/log/niftycloud.log
    niftycloud.set_file_logger('bootstrap', '/var/log/niftycloud.log')
    bs = Bootstrap()
    bs.main()