From 403d89ccff7e6e30f12ffdcbabc384c407d749d8 Mon Sep 17 00:00:00 2001 From: Giorgos Korfiatis Date: Mon, 20 Jan 2014 14:57:57 +0200 Subject: [PATCH] astakos: Modify resource project default Add support in resource-modify for changing the project_default. --- .../im/management/commands/resource-modify.py | 12 +++++-- snf-astakos-app/astakos/im/register.py | 12 +++++++ snf-deploy/snfdeploy/components.py | 34 ++++++++++++------- 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/snf-astakos-app/astakos/im/management/commands/resource-modify.py b/snf-astakos-app/astakos/im/management/commands/resource-modify.py index 5d506d06b..91233a67b 100644 --- a/snf-astakos-app/astakos/im/management/commands/resource-modify.py +++ b/snf-astakos-app/astakos/im/management/commands/resource-modify.py @@ -42,12 +42,15 @@ from ._common import style_options, check_style, units class Command(BaseCommand): args = "" - help = "Modify a resource's default base quota and boolean flags." + help = "Modify a resource's quota defaults and boolean flags." option_list = BaseCommand.option_list + ( make_option('--base-default', metavar='', - help="Specify default base quota"), + help="Specify default quota for base projects"), + make_option('--project-default', + metavar='', + help="Specify default quota for non-base projects"), make_option('--unit-style', default='mb', help=("Specify display unit for resource values " @@ -68,6 +71,7 @@ class Command(BaseCommand): actions = { 'base_default': self.change_base_default, + 'project_default': self.change_project_default, 'api_visible': self.set_api_visible, 'ui_visible': self.set_ui_visible, } @@ -116,6 +120,10 @@ class Command(BaseCommand): limit = self.parse_limit(limit) register.update_base_default(resource, limit) + def change_project_default(self, resource, limit): + limit = self.parse_limit(limit) + register.update_project_default(resource, limit) + def parse_limit(self, limit): try: return units.parse(limit) diff --git a/snf-astakos-app/astakos/im/register.py b/snf-astakos-app/astakos/im/register.py index a4ab9138b..3eed90e7b 100644 --- a/snf-astakos-app/astakos/im/register.py +++ b/snf-astakos-app/astakos/im/register.py @@ -126,6 +126,18 @@ def update_base_default(resource, base_default): % (resource.name, base_default)) +def update_project_default(resource, project_default): + old_project_default = resource.project_default + if project_default == old_project_default: + logger.info("Resource %s has project default %s; no need to update." + % (resource.name, project_default)) + else: + resource.project_default = project_default + resource.save() + logger.info("Updated resource %s with project default %s." + % (resource.name, project_default)) + + def resources_to_dict(resources): resource_dict = {} for r in resources: diff --git a/snf-deploy/snfdeploy/components.py b/snf-deploy/snfdeploy/components.py index f96d742b1..45173776a 100644 --- a/snf-deploy/snfdeploy/components.py +++ b/snf-deploy/snfdeploy/components.py @@ -643,18 +643,28 @@ class Astakos(SynnefoComponent): ] def set_default_quota(self): - cmd = "snf-manage resource-modify --base-default" - return [ - "%s 40G pithos.diskspace" % cmd, - "%s 2 astakos.pending_app" % cmd, - "%s 4 cyclades.vm" % cmd, - "%s 40G cyclades.disk" % cmd, - "%s 16G cyclades.total_ram" % cmd, - "%s 8G cyclades.ram" % cmd, - "%s 32 cyclades.total_cpu" % cmd, - "%s 16 cyclades.cpu" % cmd, - "%s 4 cyclades.network.private" % cmd, - "%s 4 cyclades.floating_ip" % cmd, + cmd = "snf-manage resource-modify" + return [ + "%s --base-default 40G pithos.diskspace" % cmd, + "%s --base-default 2 astakos.pending_app" % cmd, + "%s --base-default 4 cyclades.vm" % cmd, + "%s --base-default 40G cyclades.disk" % cmd, + "%s --base-default 16G cyclades.total_ram" % cmd, + "%s --base-default 8G cyclades.ram" % cmd, + "%s --base-default 32 cyclades.total_cpu" % cmd, + "%s --base-default 16 cyclades.cpu" % cmd, + "%s --base-default 4 cyclades.network.private" % cmd, + "%s --base-default 4 cyclades.floating_ip" % cmd, + "%s --project-default 0 pithos.diskspace" % cmd, + "%s --project-default 0 astakos.pending_app" % cmd, + "%s --project-default 0 cyclades.vm" % cmd, + "%s --project-default 0 cyclades.disk" % cmd, + "%s --project-default inf cyclades.total_ram" % cmd, + "%s --project-default 0 cyclades.ram" % cmd, + "%s --project-default inf cyclades.total_cpu" % cmd, + "%s --project-default 0 cyclades.cpu" % cmd, + "%s --project-default 0 cyclades.network.private" % cmd, + "%s --project-default 0 cyclades.floating_ip" % cmd, ] def modify_all_quota(self): -- GitLab