Files
manila-ui/manila_ui/dashboards/identity/projects/workflows.py
Gloria Gu c763ebe6cd Updated to get quotas data for Modify Quotas dialog Share tab
Current Modfiy Quotas action of a project in Identity->Projects
for manila ui does not get quotas data for the project. If user
updated quotas for manila ui, the saved data will not be shown
in the Modify Quotas dialog Share tab.

This commit includes:
1) Added a call to get quotas data and also maps the data
fields retuned to the UI data fields.
2) Added unit tests.
3) Added a release note.

Change-Id: I5fb9cef577b109530fde9a4bafe930ea05f3fed8
Closes-bug: #1842119
Depends-on: https://review.opendev.org/#/c/679513/
2019-09-13 15:15:57 -07:00

74 lines
2.7 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import logging
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms
from horizon import workflows
from openstack_dashboard.api import base
from openstack_dashboard.dashboards.identity.projects \
import workflows as project_workflows
from manila_ui.api import manila as api_manila
LOG = logging.getLogger(__name__)
class ShareQuotaAction(project_workflows.CommonQuotaAction):
shares = forms.IntegerField(min_value=-1, label=_("Shares"))
share_gigabytes = forms.IntegerField(
min_value=-1, label=_("Share gigabytes"))
share_snapshots = forms.IntegerField(
min_value=-1, label=_("Share snapshots"))
share_snapshot_gigabytes = forms.IntegerField(
min_value=-1, label=_("Share snapshot gigabytes"))
share_networks = forms.IntegerField(
min_value=-1, label=_("Share Networks"))
_quota_fields = api_manila.MANILA_QUOTA_FIELDS
def _tenant_quota_update(self, request, project_id, data):
api_manila.tenant_quota_update(request, project_id, **data)
class Meta(object):
name = _("Share")
slug = 'update_share_quotas'
help_text = _("Set maximum quotas for the project.")
permissions = ('openstack.roles.admin', 'openstack.services.share')
class UpdateShareQuota(workflows.Step):
action_class = ShareQuotaAction
depends_on = ("project_id", "disabled_quotas")
contributes = api_manila.MANILA_QUOTA_FIELDS
def prepare_action_context(self, request, context):
try:
quotas = api_manila.tenant_quota_get(
request, context['project_id'])
for field in api_manila.MANILA_QUOTA_FIELDS:
# Resolve mismatch UI field names and data field names.
data_field = api_manila.MANILA_QUOTA_FIELDS_DATA_MAP[field]
context[field] = quotas.get(data_field).limit
except Exception as ex:
LOG.exception(ex)
exceptions.handle(request,
_('Unable to retrieve share quotas.'))
return context
def allowed(self, request):
return base.is_service_enabled(request, 'share')