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 5d506d06b08ffd4021f39d960a82f7eba3c04091..91233a67bc47694b2edd72a11cc2333280b78e10 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 = "<resource name>" - 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='<limit>', - help="Specify default base quota"), + help="Specify default quota for base projects"), + make_option('--project-default', + metavar='<limit>', + 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 a4ab9138bb4ca6afbf89bbfc089514f57d1698cd..3eed90e7b07f310c6cbe3ef762c066805320d51b 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 f96d742b168f7702b50c6b1f99c423906d4995a0..45173776a805f95746246e504ade3955ab88b342 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):