Пример #1
0
 def __init__(self):
     self.app = None
     self.resources = {}
     load_resources(self)
     self.reset()
     self.scene_width = BLOCK_SIZE[0]*GAME_AREA_SIZE[0]
     self.scene_height = BLOCK_SIZE[1]*GAME_AREA_SIZE[1]
Пример #2
0
    def __init__(self, monitor_name, config=None):
        self.logger = logging.getLogger(self.__class__.__name__)
        self.apps = {}
        self.name = monitor_name
        self.available_resources = load_resources()

        self.config = config
        self.limits = dict(self.config.limits)

        # self.resources = [self.available_resources[0](self)] + \
        self.resources = \
                    [resource_class(self,
                       policy=self.config.policies.get(resource_class.name.lower(), None),\
                       usage=self.config.usage.get(resource_class.name.lower(), None),\
                       limit=self.config.limit.get(resource_class.name.lower(), None))
                     for resource_class in self.available_resources
                     if resource_class.name.lower() in self.config.resources]

        self.limits[self.DEFAULT_LIMIT_NAME] = self._get_default_limit()

        for tname in self.resources[0].list_apps():
            # TODO find a way to restore previous limits ? Perhaps keep a
            # runtime file somewhere and reload it ?
            limit = self._get_default_limit()
            t = App(tname, limit, self._get_init_usage())

            self.apps[tname] = t
Пример #3
0
def _run_squadron(squadron_dir, squadron_state_dir, node_name, dont_rollback,
        force, dry_run):
    """
    Runs apply to set up the temp directory, and then runs commit if
    dry_run is false.

    Keyword arguments:
        squadron_dir -- where the Squadron description dir is
        squadron_state_dir -- where Squadron should store its state between runs
        node_name -- what this node is called
        dont_rollback -- if true, doesn't automatically rollback to the previous version
        force -- treat all files as created, always deploy
        dry_run -- whether or not to apply changes
    """
    log.debug('entering _run_squadron')
    try:
        run_info = runinfo.get_last_run_info(squadron_state_dir, dry_run)
        last_run_dir = run_info['dir']
        last_run_sum = run_info['checksum']
        last_commit = run_info['commit']
    except KeyError:
        log.debug("Looks like info.json is empty or malformated") #Is this bad?
        last_run_dir = None
        last_run_sum = {}
        last_commit = None

    if not dry_run:
        prefix = 'sq-'
        tempdir = os.path.join(squadron_state_dir, 'tmp')
        makedirsp(tempdir)

        new_dir = make_temp(tempdir, prefix, last_run_dir)
    else:
        new_dir = make_temp(tempfile.gettempdir(), 'squadron')

    resources = load_resources(squadron_dir)

    log.info("Staging directory: %s", new_dir)
    result = commit.apply(squadron_dir, node_name, new_dir, resources,
            last_run_dir, dry_run)
    log.debug("commit.apply returned: %s", result)
    # Is this different from the last time we ran?
    this_run_sum = walk_hash(new_dir)

    log.debug("Last run sum: %s", last_run_sum)
    log.debug("This run sum: %s", this_run_sum)

    paths_changed, new_paths = _get_hash_diff(last_run_sum, this_run_sum, force)
    if this_run_sum != last_run_sum or force:
        if not dry_run:
            _deploy(squadron_dir, new_dir, last_run_dir, result,
                    this_run_sum, last_run_sum, last_commit, dont_rollback,
                    resources, force)
            info = {'dir': new_dir, 'commit':result, 'checksum': this_run_sum}
            log.debug("Writing run info to %s: %s", squadron_state_dir, info)

            runinfo.write_run_info(squadron_state_dir, info)

            log.info("Successfully deployed to %s", new_dir)
            return info
        else:
            log.info("Dry run changes")
            actions, reactions = _get_action_reaction(squadron_dir, result)
            log.info("%s actions, %s reactions", len(actions), len(reactions))
            log.debug("Actions are: %s", actions)
            log.debug("Reactions are: %s", reactions)

        log.info("===============")
        log.info("Paths changed:")
        for path in paths_changed:
            log.info("\t%s", path)
        log.info("\nNew paths:")
        for path in new_paths:
            log.info("\t%s", path)
    else:
        if not dry_run:
            _run_actions(squadron_dir, new_dir, result, resources,
                    paths_changed, new_paths)
            _run_tests(squadron_dir, result)
        log.info("Nothing changed.")
    return None
Пример #4
0
from flask import Flask
from flask_sslify import SSLify
from resources import load_resources


app = Flask(__name__,
            static_folder='static',
            static_url_path='',
            template_folder='templates')

sslify = SSLify(app)
app.config.from_object('conf.settings')

app.secret_key = app.config['APP_SECRET_KEY']

load_resources(app)

if '__main__' == __name__:
    app.run(
        host=app.config['HOST'],
        port=app.config['PORT'],
        debug=app.config['DEBUG']
    )