django.utils.translation.ugettext(), ugettext_lazy(), ugettext_noop(),
ungettext(), and ungettext_lazy() are deprecated in favor of the
functions that they’re aliases for: django.utils.translation.gettext(),
gettext_lazy(), gettext_noop(), ngettext(), and ngettext_lazy().
https://docs.djangoproject.com/en/4.0/releases/3.0/#id3
Change-Id: I77878f84e9d10cf6a136dada81eabf4e18676250
Most units (KB, MB, GB, TB, PB) are shown in an abbreviated format.
The exception were bytes, which where shown as "Bytes". This commit
resolves this inconsistency by showing "B" for byte units.
Change-Id: Ied94c777a70bf8955f5a328ffcb63d98a7a2befd
Closes-Bug: 1411595
Signed-off-by: Iago Estrela <hiagoestrelas@gmail.com>
This patch add try/except block for nova and neutron api calls
which are missing in 'openstack_dashboard/usage/quotas.py' file.
Change-Id: I6b880c69083154c77a14582d6fe23b42f988355e
Closes-Bug: #1383580
quota_details neutron API extension was implemented since Pike
and the enough migration period has passed. We have not received
any negative feedback on the removal of the legacy way since
its deprecation in Ussuri release.
Change-Id: Ia249e83a7d40af873d6509c932b11cb9bb7a9497
neutron 'quota_details' extension was added in Pike to provide
a convenient way to retrieve resource usage in neutron without listing
individual resources. It was added in Pike release and we will have
six releases since then once Ussuri release is shipped. Enough time has
passed to migrate it to the new mechanism, so it is time to deprecate
the legacy way for future cleanup.
Change-Id: Ie0b4613bf9fdcd96481b3bb1139b4fb153bfef83
- Fixes KeyErrors when accessing 'floatingip' values in usages, which
broken Floating IP allocation.
- The quota display in the bottom right of the Allocation dialog are
only displayed if 'enabled_quotas' is True
- Adds security group rule tallying for the usages overview page, which
fixes a KeyError crash for installations where Horizon 'enable_quotas'
is set to true, but the 'quota_details' extension is not installed on
in Neutron
- Adds a policy check to show and hide The plus/add button in
Instances->Associate Floating IP to match the Allocate IP To Project
button in Floating IPs
- Fixed the page title not being set for the non-modal version of the
modal allocation dialog/form
- Added an 'allowed' functionality for network usage overview charts to
allow for them to be dynamically disabled
- Added tests and mocks for the above
- Added tests for non-legacy quota tallying for networks
- Added test for disabled network quotas in overview
Change-Id: I47f73ff94664d315a2400feb8ce8a25f4e6beced
closes-bug: #1838522
The check causes external plugin's quotas fields unknown
exception because the quotas fields are not part of
QUOTA_FIELDS which only includes the fields for
cinder, neutron and nova.
Meanwhile the exception message throws TypeError.
This commit removes the uncessary check. It also helps
fix the manila-ui's bug #1842119
Change-Id: If093f4ecf1e344792b347c5c338b441b1ab42a04
Closes-bug: #1798048
Closes-bug: #1842119
Currently we can't set server groups and server group members quotas
in Horizon, they are still the back end definition of default.
In some cases, it will failed to create an instance when server group
members quota is insufficient. Therefore, it is necessary to specify
the quota of the server groups and server group members when creating
and editing the project. This patch allows the user to modify the
default values for the server groups and the server group members
quota.
Change-Id: Ifbd51bec3e775d8fecbf110da37309a443a3d1ba
Closes-Bug:#1732429
The response of tenant_quota_usages is now baesd on the limit API,
so tenant_limit_usages and tenant_quota_usages provide same information.
This commit changes all consumers of tenant_limit_usages to use
tenant_quota_usages and updates the corresponding templates.
blueprint make-quotas-great-again
Change-Id: I620e2946f2aca31bac134c247ceaf971498f9eeb
In addition, unnecessary API calls determined by 'targets'
are now removed.
blueprint make-quotas-great-again
Change-Id: I77b1335c25f2e2f3952e0d3c59f8c89a2bad3195
Neutron provides an API to retrieve default quotas since newton.
Unfortunately there is no corresponding neutron API extension
is not defined, so there is no way to detect it via API.
The API exists since newton, so this commit just switches to
the default quota API.
Closes-Bug: #1337473
blueprint make-quotas-great-again
Change-Id: Ia826b67f4cec7d95335c62ef98c3040feaa06117
identity.projects.views has a special logic related to neutron
quota, but it is time to merge this into usages.quotas.
This commit merges the logic into usages.quotas.
It is a preparation to use neutron default quotas API.
blueprint make-quotas-great-again
Change-Id: I35f0dede5d53ee6758996268cd1a6c2095565cc8
tenant_absolute_limits API wrapper converts -1 (unlimited)
to float('inf'), but tenant_quota_usages() cannot handle this
properly. This is a regression during the quota refactoring work.
This commit changes QuotaUsage.add_quota() to accept float('inf')
as one of unlimited quota value.
Closes-Bug: #1741493
Part of blueprint make-quotas-great-again
Change-Id: Ic6ed00761381d52ee04a15a43ee4fe2a30b9a106
Previously neutron quota names and nova-network quota names are
mixly used and this makes the readability terrible.
We no longer supports nova-network, so it looks simple to use
neutron quota names consistently.
Neutron quota names use singular form and it is different
from nova and cinder (which adopt plural form as quota names).
Although it might be confusing, the mixed usage is much worse.
Some wrapper layer may address singular vs plural form issue,
but it can be solved later. Let's use neutron quota names
directly now to simplify the code.
blueprint make-quotas-great-again
Change-Id: Ie31414ada34cbdbd046063b512d3cef0a6e68acf
Previously neutron did not provide a way to retrieve resource usage
in a single API, so we need to call list APIs and count the number of
resources. Since Pike release, quota details API is provided and
it returns both quota and usage (used + reserved).
blueprint make-quotas-great-again
Change-Id: I63d0e81654c18f0f235631922d64d1109233fcfa
Previously tenant_quota_usages() uses list API operations
to count usages. It is not efficient. This commit changes
the limit APIs from nova and cinder to retrieve usages.
blueprint make-quotas-great-again
Change-Id: I2c9a479758a1dfe134e5fabf16ab02831338718d
nova-network quotas are considered in usage/quotas.py previously.
This commit completely always disables nova-network quotas.
The nova API wrapper ensures nova-network quota fileds are not
included in responses from tenant_quota_get and default_quota_get.
Drop nova-network quota fields from the Admin Defaults panel and
the Identity Project quota form.
blueprint make-quotas-great-again
Change-Id: Ie69d3003f62d3a124d79a1fea003092f73372187
Previously, updating the quota value for instance on a project that
the user was not currently scoped to would validate the new quota
value by comparing with the usage of the currently scoped project.
The cause of this error was an incorrect use of the server list
parameters.
According to the comment in nova source:
d43d1d6734/nova/api/openstack/compute/servers.py (L277-L280)
and the comments in this bug:
https://bugs.launchpad.net/nova/+bug/1185290
indicate that the tenant_id or project_id flag cannot be used without
the --all-tenants flag.
The fix involves passing the --all-tenants flag when querying instance usage
for any project the user is not currently scoped to. It also removes the
passing of the tenant_id flag when querying the current project.
Tests were also updated to match the new behavior by not passing the
tenant_id to the API call to list servers where the target project is
the currently scoped project.
Change-Id: Iee06bc1c8ccd50f595f4cb274f956c13495c8494
Closes-Bug: #1713724
Ports has quota management in a project, if quota is exceeded,
will create failure and API returns
"Recoverable error: Quota exceeded for resources: ['port']".
So, it should be like creating a network and subnet to
perform quota checks on ports, and if the quota is exceeded,
add text descriptions to the create port button and disable it.
Change-Id: I31bd8f93c312179b86115544ba0fadc9a9ffec63
Closes-Bug:#1712556
Nova and cinder quotas data does not contain networks, subnets, and
routers. So, some judgments are not necessary when getting the neutron
quota.
Change-Id: Icad9fdf34199942a976def23905d586739ef25df
During executing tenant_limit_usages quotas function we get
information about cinder volumes/snapshots/gigabites usage
that we've already had after tenant_absolute_limits call.
Getting this information we make more api calls that slow down
our application.
This patch fixes this issue.
Closes-Bug: #1703584
Change-Id: Ia6d2dbb8f18ce93f71668d6ebd2689b851586ca9
This patch changes type of 'targets' input parameter in
tenant_quota_usages function from list -> tuple. It provides
possibility for @memoized decorator to cache function calls.
Change-Id: I3c32c3b65ae91e8487fda6148f259fe1931d7c9f
Closes-Bug: #1700578
tenant_quota_usage() is used to retrieve quota and usage
to determine if a resource can be created.
However, tenant_quota_usage retrieves quota and usage for
all resources and it can be a performance problem.
This commit allows to load quota and usage only for resources
which are actually required.
Closes-Bug: #1675504
Change-Id: Iab7322a337a451a1a040cc2f4b55cc319b1ffc4c
We no longer need to have SG and FIP API wrapper in api.network
as we only supports a single network back-end.
Completes blueprint drop-nova-network
Change-Id: I4e59d897508b497a3cd2ae2fda93b30b786610dc
Previously _get_tenant_(compute|network|volume)_usage are callled
regardless of resources are listed in enabled_quotas.
This commit retrives usage information only for resources listed
in eanbled_quotas.
floating_ips and security_groups were returned even when
they are included in disabled_quotas. They are not needed
and they are cleanup in this commit.
All (*_)QUOTA_FILEDS were previously a list but it is always used
after converting into a set, so this commit changes (*_)QUOTA_FIELDS
into a set in the initial definitions.
This is a preparation for fix of bug 1675504
Partial-Bug: #1675504
Change-Id: I41cdabde477d87aa8b35d1c908e18a69454286c3
When retrieving resource usage, the current code calls subnet_list
twice for shared=False/True, but 'shared' attribute of subnet is
not defined in the Networking API and actually there is no need to
use it (even though it works as expected accidentally).
What we need here is to specify tenant_id as a query parameter
with a single API to limit the scope to a given project.
The same way can be used for network_list() and router_list() calls
and it is more efficient. By doing so, we now need only one
network_list() call.
Change-Id: I40d61ed9cbae4b083e4f3cec9caa269e92daf306
Closes-Bug: #1663170
attribute-level imports are not checked by hacking module now.
most noqa is used to disable warnings on attribute-level imports.
This commit drops noqa for this purpose.
After this, there are only 3 noqa under openstack_dashboard/ :)
Change-Id: I4a449802f5dbd6e44e4b8b5c378a555d47d9a99f
There was an extra variable for the so called "missing"
quotas since 2013. This patch merges them with the
normal nova quotas, cleans up the tests, removes any
usage of that special var and as a side effect, adds
the missing keys to the project quota update page.
Change-Id: Icaac1ebb1749e13fdfc307e89dcc6bbd64bef922
Closes-Bug: 1655393
Since Horizon is going to be the first (or, one of the first)
OpenStack component using the new MongoDB driver, it won't be able to
retrieve traces made by other components using MongoDB driver (which
it should use because Ceilometer driver was too slow) for a
while. This means that Horizon itself is responsible for tracing the
rendering of its pages down to the layer where the flow of control
leaves Horizon domain. So, a lot of api wrappers in
openstack_dashboard.api are augmented with tracing decorator to
achieve this goal.
Co-Authored-By: Timur Sufiev <tsufiev@mirantis.com>
Implements-blueprint: openstack-profiler-at-developer-dashboard
Change-Id: Ib36692f0e9e68ed7fa0cd47919ba6581c9c8ab57
Currently Horizon unable to change quotas if routers extension is
disabled, fix this by adding router and floatingip quotas to
disabled_quotas when router extension is disabled.
Change-Id: I14d8a6e2e439ab48b62ce64c88ebb4643d11e49f
Closes-bug: #1457598
I don't really know what this was meant to do, but what it actually
does doesn't make any sense -- when checking a quota for project
'foo' we really don't care about how many instances are used
in the entire cloud, only in project 'foo'.
Until Liberty, the all_tenant flag was broken in the nova
api, which probably explains why this was harmless until
Liberty.
Change-Id: I9e12c10951e7518ab1c622a4daac962bad332da5
Closes-Bug: #1610693
Removing the usage of calling dynamic methods within the
quotas code. This makes it difficult to support and see
who is calling what code.
Change-Id: Ie2c6be3233dd2cff16eb2271e2ac3f4b04d6e2b5
Implements: blueprint make-quotas-great-again
When calculating the used volume storage value to compare against
"Total Size of Volumes and Snapshots", only the size of volumes
was being used while volume snapshots were ignored. This allows a
user to update the "Total Size of Volumes and Snapshots" quota to
a value that is below what was currently being used without the
expected error.
This patch updates _get_tenant_volume_usages to use both volumes
and volume snapshots. It also updates a test to reflect the correct
"used" value.
Change-Id: Ifb2586b048edbabfe9740a5c72b7abfbcf12576d
Closes-Bug: #1611027
Adds conditional block to nova quotas to exclude them if nova is not
enabled; adds 'permission' checks to the project overview and
access_and_security panels to only enable them if compute is enabled;
adds permission checks on compute and image to the admin overview
and metadef panels; disables 'modify quota' and 'view usage' project
actions; disables 'update defaults' if there are no quotas available.
The 'access and security' panel still appears (under Compute) but
tabs other than the keystone endpoint and RC download tab are hidden.
Closes-Bug: #1580116
Change-Id: I1b2ddee0395ad9f55692111604b31618c4eaf69e
Since Nova doesn't currently provide an API call to indicate whether
its quotas are disabled, we could use a parameter named
'enable_quotas' within 'OPENSTACK_HYPERVISOR_FEATURES' setting for
this purpose. This allows to avoid errors while trying to update
quotas which are disabled on service side. Also make disabled_quotas
collection to be a set instead of a list - this removes duplicate
fields that appear due to some possible quota overlaps between Nova
and Neutron.
Also, since we dropped out python2.6 support fancy set literals and
dict comprehensions can be used.
Co-Authored-By: Paul Karikh <pkarikh@mirantis.com>
Closes-Bug: #1286099
Change-Id: I10923f147e4c323aba8bbcc130d2016ad6725e86
Previously, shared subnets were ignored by collecting used
networks; the "Create subnet" button is still enabled, but
subnet creation is forbidden by neutron due to quota reached.
Change-Id: I20b3373ab86631922945285a12ca4810b707b0be
Closes-Bug: #1588764
When checking with nova for the absolute limits
we were not taking into account the reserved
quotas (i.e. instance in rebuilding will take
cpu and ram) so this could lead to wrongly
thinking that the user could launch more instances
that its quota allowed. It also made the overview
page display wrong quotas as it didnt took into
account those reserved resources.
Change-Id: If51470d185ddc122acbdf4cf0d0fd952f3f791a0
Closes-bug: 1561310
Volumes tabs should be enabled when volumev2 endpoint is registered.
Currently, Horizon considers no volume service is running if there
is no V1 endpoint, which doesn't make sense as Horizon no longer
supports the cinder V1 protocol.
Co-Authored-By: itxaka <itxaka@redhat.com>
Change-Id: I35d821eedb75f73f9330ed11f921694104eed0c6
Closes-Bug: 1415712
We were calling cinder.ClientException even when the import
had changed to be cinder.cinder_exception.ClientException
Adds 3 tests for the methods calling that exception so
failures will be tested as well.
Co-Authored-By: zhurong <aaronzhu1121@gmail.com>
Change-Id: I8c415eb8ef847f6dc34fa56fca3181560ead366b
Closes-Bug: #1537713
Closes-Bug: #1535215
* Fix division: replace a/b with a//b to get integers
* test_clean_file_upload_form_invalid_data(): use a byte string, not
an unicode string for the test. The test ensures that decoding from
UTF-8 fails.
* quotas: replace filter() with a list-comprehesion to get a list on
Python 3.
* tox.ini: add the following tests to Python 3.4
- openstack_dashboard.dashboards.project.instances.tests
- openstack_dashboard.test.tests.quotas
* tox.ini: add also
--exclude-dir=openstack_dashboard/test/integration_tests to
openstack_dashboard tests on Python 3.4
Partial-Implements: blueprint porting-python3
Change-Id: I7caed713222b50ffec431155e6f91b543f7df466
Previously, shared networks were ignored by collecting used
networks; the "Create network" button is still enabled, but
network creation is forbidden by neutron due to quota reached.
Change-Id: I97360e354ccb7c2aa58012f737a7e9c67f8d3ad6
Closes-Bug: #1513795
The cinder quota on gigabytes is the sum of both volumes and snapshots,
therefore in the horizon view we should be representing usage as the
combination of volumes and snapshots, otherwise users will be confused
when getting quota errors on volume or snapshot creation.
Closes-Bug: 1513179
Change-Id: Id23e0dd3a3f810e75f9013cecbf8a826c97e34c6
While browsing through the Horizon repository, I came across a
few spelling errors that need correction.
Change-Id: I593e9f04ea5d9f3985a14fb994b745243468387a
Closes-Bug: #1511532