Tabbity quota default update workflow
Part of blueprint horizon-plugin-tab-for-info-and-quotas Change-Id: Ieead15fe24cdc5cea94aea29d7fc0051ba33fb71
This commit is contained in:
parent
f5802ce28b
commit
2ad9f81483
@ -12,6 +12,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.utils.http import urlencode
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from horizon import tables
|
from horizon import tables
|
||||||
@ -37,6 +39,13 @@ class UpdateDefaultQuotas(tables.LinkAction):
|
|||||||
url = "horizon:admin:defaults:update_defaults"
|
url = "horizon:admin:defaults:update_defaults"
|
||||||
classes = ("ajax-modal",)
|
classes = ("ajax-modal",)
|
||||||
icon = "pencil"
|
icon = "pencil"
|
||||||
|
step = None
|
||||||
|
|
||||||
|
def get_link_url(self, datum=None):
|
||||||
|
url = [reverse(self.url)]
|
||||||
|
if self.step:
|
||||||
|
url.append(urlencode({'step': self.step}))
|
||||||
|
return '?'.join(url)
|
||||||
|
|
||||||
def allowed(self, request, _=None):
|
def allowed(self, request, _=None):
|
||||||
return quotas.enabled_quotas(request)
|
return quotas.enabled_quotas(request)
|
||||||
@ -119,7 +128,7 @@ class VolumeQuotasTable(tables.DataTable):
|
|||||||
class Meta(object):
|
class Meta(object):
|
||||||
name = "volume_quotas"
|
name = "volume_quotas"
|
||||||
verbose_name = _("Volume Quotas")
|
verbose_name = _("Volume Quotas")
|
||||||
table_actions = (QuotaFilterAction, UpdateDefaultQuotas)
|
table_actions = (QuotaFilterAction, UpdateDefaultVolumeQuotas)
|
||||||
multi_select = False
|
multi_select = False
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,9 +40,9 @@ class UpdateDefaultQuotasView(workflows.WorkflowView):
|
|||||||
quota_defaults = quotas.get_default_quota_data(self.request)
|
quota_defaults = quotas.get_default_quota_data(self.request)
|
||||||
for field in quotas.QUOTA_FIELDS:
|
for field in quotas.QUOTA_FIELDS:
|
||||||
initial[field] = quota_defaults.get(field).limit
|
initial[field] = quota_defaults.get(field).limit
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
error_msg = _('Unable to retrieve default quota values.')
|
error_msg = _('Unable to retrieve default quota values.')
|
||||||
self.add_error_to_step(error_msg, 'update_default_quotas')
|
self.add_error_to_step(error_msg, 'update_default_quotas')
|
||||||
|
initial['disabled_quotas'] = quotas.get_disabled_quotas(self.request)
|
||||||
|
|
||||||
return initial
|
return initial
|
||||||
|
@ -27,47 +27,71 @@ from openstack_dashboard.usage import quotas
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class UpdateDefaultQuotasAction(workflows.Action):
|
class UpdateDefaultComputeQuotasAction(workflows.Action):
|
||||||
ifcb_label = _("Injected File Content Bytes")
|
instances = forms.IntegerField(min_value=-1, label=_("Instances"))
|
||||||
ifpb_label = _("Length of Injected File Path")
|
cores = forms.IntegerField(min_value=-1, label=_("VCPUs"))
|
||||||
injected_file_content_bytes = forms.IntegerField(min_value=-1,
|
ram = forms.IntegerField(min_value=-1, label=_("RAM (MB)"))
|
||||||
label=ifcb_label)
|
|
||||||
metadata_items = forms.IntegerField(min_value=-1,
|
metadata_items = forms.IntegerField(min_value=-1,
|
||||||
label=_("Metadata Items"))
|
label=_("Metadata Items"))
|
||||||
ram = forms.IntegerField(min_value=-1, label=_("RAM (MB)"))
|
|
||||||
key_pairs = forms.IntegerField(min_value=-1, label=_("Key Pairs"))
|
key_pairs = forms.IntegerField(min_value=-1, label=_("Key Pairs"))
|
||||||
injected_file_path_bytes = forms.IntegerField(min_value=-1,
|
|
||||||
label=ifpb_label)
|
|
||||||
instances = forms.IntegerField(min_value=-1, label=_("Instances"))
|
|
||||||
injected_files = forms.IntegerField(min_value=-1,
|
injected_files = forms.IntegerField(min_value=-1,
|
||||||
label=_("Injected Files"))
|
label=_("Injected Files"))
|
||||||
cores = forms.IntegerField(min_value=-1, label=_("VCPUs"))
|
injected_file_content_bytes = forms.IntegerField(
|
||||||
gigabytes = forms.IntegerField(
|
|
||||||
min_value=-1,
|
min_value=-1,
|
||||||
label=_("Total Size of Volumes and Snapshots (GiB)"))
|
label=_("Injected File Content Bytes"))
|
||||||
snapshots = forms.IntegerField(min_value=-1, label=_("Volume Snapshots"))
|
injected_file_path_bytes = forms.IntegerField(
|
||||||
volumes = forms.IntegerField(min_value=-1, label=_("Volumes"))
|
min_value=-1,
|
||||||
|
label=_("Length of Injected File Path"))
|
||||||
|
|
||||||
def __init__(self, request, *args, **kwargs):
|
def __init__(self, request, context, *args, **kwargs):
|
||||||
super(UpdateDefaultQuotasAction, self).__init__(request,
|
super(UpdateDefaultComputeQuotasAction, self).__init__(
|
||||||
*args,
|
request, context, *args, **kwargs)
|
||||||
**kwargs)
|
disabled_quotas = context['disabled_quotas']
|
||||||
disabled_quotas = quotas.get_disabled_quotas(request)
|
|
||||||
for field in disabled_quotas:
|
for field in disabled_quotas:
|
||||||
if field in self.fields:
|
if field in self.fields:
|
||||||
self.fields[field].required = False
|
self.fields[field].required = False
|
||||||
self.fields[field].widget = forms.HiddenInput()
|
self.fields[field].widget = forms.HiddenInput()
|
||||||
|
|
||||||
class Meta(object):
|
class Meta(object):
|
||||||
name = _("Default Quotas")
|
name = _("Compute")
|
||||||
slug = 'update_default_quotas'
|
slug = 'update_default_compute_quotas'
|
||||||
help_text = _("From here you can update the default quotas "
|
help_text = _("From here you can update the default compute quotas "
|
||||||
"(max limits).")
|
"(max limits).")
|
||||||
|
|
||||||
|
|
||||||
class UpdateDefaultQuotasStep(workflows.Step):
|
class UpdateDefaultComputeQuotasStep(workflows.Step):
|
||||||
action_class = UpdateDefaultQuotasAction
|
action_class = UpdateDefaultComputeQuotasAction
|
||||||
contributes = quotas.QUOTA_FIELDS
|
contributes = quotas.NOVA_QUOTA_FIELDS
|
||||||
|
depends_on = ('disabled_quotas',)
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateDefaultVolumeQuotasAction(workflows.Action):
|
||||||
|
volumes = forms.IntegerField(min_value=-1, label=_("Volumes"))
|
||||||
|
gigabytes = forms.IntegerField(
|
||||||
|
min_value=-1,
|
||||||
|
label=_("Total Size of Volumes and Snapshots (GiB)"))
|
||||||
|
snapshots = forms.IntegerField(min_value=-1, label=_("Volume Snapshots"))
|
||||||
|
|
||||||
|
def __init__(self, request, context, *args, **kwargs):
|
||||||
|
super(UpdateDefaultVolumeQuotasAction, self).__init__(
|
||||||
|
request, context, *args, **kwargs)
|
||||||
|
disabled_quotas = context['disabled_quotas']
|
||||||
|
for field in disabled_quotas:
|
||||||
|
if field in self.fields:
|
||||||
|
self.fields[field].required = False
|
||||||
|
self.fields[field].widget = forms.HiddenInput()
|
||||||
|
|
||||||
|
class Meta(object):
|
||||||
|
name = _("Volume")
|
||||||
|
slug = 'update_default_volume_quotas'
|
||||||
|
help_text = _("From here you can update the default volume quotas "
|
||||||
|
"(max limits).")
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateDefaultVolumeQuotasStep(workflows.Step):
|
||||||
|
action_class = UpdateDefaultVolumeQuotasAction
|
||||||
|
contributes = quotas.CINDER_QUOTA_FIELDS
|
||||||
|
depends_on = ('disabled_quotas',)
|
||||||
|
|
||||||
|
|
||||||
class UpdateDefaultQuotas(workflows.Workflow):
|
class UpdateDefaultQuotas(workflows.Workflow):
|
||||||
@ -77,7 +101,8 @@ class UpdateDefaultQuotas(workflows.Workflow):
|
|||||||
success_message = _('Default quotas updated.')
|
success_message = _('Default quotas updated.')
|
||||||
failure_message = _('Unable to update default quotas.')
|
failure_message = _('Unable to update default quotas.')
|
||||||
success_url = "horizon:admin:defaults:index"
|
success_url = "horizon:admin:defaults:index"
|
||||||
default_steps = (UpdateDefaultQuotasStep,)
|
default_steps = (UpdateDefaultComputeQuotasStep,
|
||||||
|
UpdateDefaultVolumeQuotasStep)
|
||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
# Update the default quotas.
|
# Update the default quotas.
|
||||||
|
Loading…
Reference in New Issue
Block a user