Example #1
0
 def limits_usage(self):
     ret = {'running_apps': 0, 'workers': 0}
     for arp in ApplicationRunPlan.objects(
             application__in=Application.objects(owner=self)):
         ret['running_apps'] += 1
         ret['workers'] += arp.workers_max
     return ret
Example #2
0
    def obj_create(self, bundle, request=None, **kwargs):
        # FIXME handle reference field properly using mongoengine-tastypie
        log.debug(_("Going to create new run plan for user "
                    "'{name}'").format(name=bundle.request.user.username))
        app = Application.objects(id=bundle.data['application'],
                                  owner=bundle.request.user).first()
        if not app or not app.current_package:
            msg = _("Can't create new run plan, app not found, or no packages "
                    "built yet")
            log.warning(msg)
            raise exceptions.ValidationError(msg)

        kwargs['application'] = app
        kwargs['memory_per_worker'] = bundle.request.user.limits[
            'memory_per_worker']
        kwargs['max_log_size'] = bundle.request.user.limits['max_log_size']
        try:
            ret = super(MongoEngineResource, self).obj_create(bundle,
                                                              request=request,
                                                              **kwargs)
            app.update(set__run_plan=ret.obj)
            return ret
        except mongoengine.ValidationError as e:
            log.warning(_("Can't create new run plan, invalid data payload: "
                          "{msg}").format(msg=e.message))
            raise exceptions.ValidationError(e.message)
        except mongoengine.NotUniqueError:
            msg = str(_("Application is already running"))
            log.warning(msg)
            raise exceptions.ValidationError(msg)
Example #3
0
def create_user_list_with_apps(request):

    with open(os.path.join(os.path.dirname(__file__), 'meta/redmine.yml'),
              'rb') as meta:
        metadata = meta.read()

    users = []
    users_data = {}
    users_apps = {}
    for i in range(0, 10):
        data = {
            'login': '******' % i,
            'first_name': 'FirstName%d' % i,
            'last_name': 'LastName%d' % i,
            'email': 'email%d@domain%d.com' % (i, i),
            'password': '******' % i,
        }

        u = User.objects(username=data['login']).first()
        if u:
            u.delete()

        u = User(username=data['login'], first_name=data['first_name'],
                 last_name=data['last_name'], email=data['email'],
                 is_superuser=False)
        u.set_password(data['password'])
        u.save()
        users.append(u)
        users_data[u.safe_id] = u

        app = Application(name='userApp', owner=u, metadata=metadata)
        app.save()
        users_apps[u] = app

    def cleanup():
        for us in users:
            us.delete()
        for ap in users_apps.values():
            ap.delete()
    request.addfinalizer(cleanup)

    request.instance.user_list = users
    request.instance.user_list_data = users_data
    request.instance.user_list_apps = users_apps
Example #4
0
def create_buildable_app(request):
    data = {
        'name': 'redmine',
        'metadata_path': os.path.join(os.path.dirname(__file__),
                                      'meta/mock_app.yml')
    }

    with open(data['metadata_path'], 'rb') as metadata:
        data['metadata'] = metadata.read()

    data['metadata_html'] = escape(data['metadata'])

    app = Application.objects(name=data['name']).first()
    if app:
        app.delete()

    create_user(request)

    app = Application(name=data['name'], owner=request.instance.user,
                      metadata=data['metadata'])
    app.save()

    def cleanup():
        for domain in app.custom_domains:
            domain.delete()
        for pkg in app.packages:
            pkg.delete()
        for flag in app.flags:
            flag.delete()
        for task in app.tasks:
            task.delete()
        if app.run_plan:
            app.run_plan.delete()
        app.delete()
    request.addfinalizer(cleanup)

    request.instance.app = app
    request.instance.app_data = data
Example #5
0
 def migrate_domains(self):
     done = 0
     errors = 0
     for app in OldApplication.objects():
         new_app = Application.objects(id=app.id).first()
         for old_domain in app.old_domains:
             log.info("Migrating domain: %s / %s" % (app.name, old_domain.name))
             domain = ApplicationDomain(
                 application=new_app,
                 name=old_domain.name,
                 date_created=old_domain.date_created,
                 validated=old_domain.validated,
             )
             try:
                 domain.save()
             except NotUniqueError:
                 log.error("Domain %s already exists, it was NOT migrated")
                 errors += 1
             else:
                 done += 1
         app.update(unset__old_domains=True)
     if done or errors:
         log.info("%d domain(s) migrated, %d error(s)" % (done, errors))
Example #6
0
 def get_app(self, kwargs):
     try:
         return Application.objects(
             **self.remove_api_resource_names(kwargs)).first()
     except ValidationError:
         return None
Example #7
0
 def running_applications(self):
     return [arp.application for arp in ApplicationRunPlan.objects(
         application__in=Application.objects(owner=self))]
Example #8
0
 def applications(self):
     return Application.objects(owner=self)