././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.537434
trove-dashboard-13.1.0.dev21/ 0000755 0001750 0001750 00000000000 00000000000 016065 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/.zuul.yaml 0000644 0001750 0001750 00000000246 00000000000 020030 0 ustar 00corey corey 0000000 0000000 - project:
templates:
- check-requirements
- horizon-non-primary-django-jobs
- openstack-python3-ussuri-jobs
- release-notes-jobs-python3
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806756.0
trove-dashboard-13.1.0.dev21/AUTHORS 0000644 0001750 0001750 00000004643 00000000000 017144 0 ustar 00corey corey 0000000 0000000 Akihiro Motoki
Akihiro Motoki
Ali Adil
Ali Asgar Adil
Amrith Kumar
Amrith Kumar
Andreas Jaeger
Andrew Bramley
Charles Short
Corey Bryant
Craig Vyvial
David Lyle
Devin Carlen
Doug Hellmann
Duk Loi
Flavio Percoco
Gene Kuo
Ghanshyam Mann
He Yongli
Hirotaka Wakabayashi
Ian Wienand
Ishita Mandhan
Ivan Kolodyazhny
Marcin Piwowarczyk
Mark Giles
Masaki Matsushita
Masco Kaliyamoorthy
Matt Van Dijk
Matthias Runge
Michael Yu
Nguyen Hung Phuong
OpenStack Release Bot
Peter Stachowski
Rob Cresswell
Robert Myers
Samuel Matzek
Sean McGinnis
Steve Leon
Sushil Kumar
Swapnil Kulkarni (coolsvap)
Thomas Goirand
Tom Fifield
Victor Stinner
Vieri <15050873171@163.com>
Zhao Chao
caoyuan
chao liu
guotao
howardlee
huang.zhiping
jacky06
jiansong
kangyufei
lin-hua-cheng
lin-hua-cheng
lingyongxu
liyingjun
manchandavishal
melissaml
pengyuesheng
qiaomin
sharat.sharma
shu-mutou
skseeker
wangyao
woodm1979
yatinkarel
zhengwei6082
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/CONTRIBUTING.rst 0000644 0001750 0001750 00000001156 00000000000 020531 0 ustar 00corey corey 0000000 0000000 If you would like to contribute to the development of OpenStack,
you must follow the steps in this page:
https://docs.openstack.org/infra/manual/developers.html
You can find more trove specific info:
https://docs.openstack.org/trove/latest
Once those steps have been completed, changes to OpenStack
should be submitted for review via the Gerrit tool, following
the workflow documented at:
https://docs.openstack.org/infra/manual/developers.html#development-workflow
Pull requests submitted through GitHub will be ignored.
Bugs should be filed on Launchpad, not GitHub:
https://bugs.launchpad.net/trove
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806756.0
trove-dashboard-13.1.0.dev21/ChangeLog 0000644 0001750 0001750 00000022637 00000000000 017651 0 ustar 00corey corey 0000000 0000000 CHANGES
=======
* Imported Translations from Zanata
* Cleanup py27 support
* Calls manager.py by "$PYTHON" instead of "env python"
* Adds a full example of devstack local.conf
* s/assertItemsEqual/assertCountEqual/g
* Remove six usage
* Drop Django 1.11 support
* translation: drop babel extractor definitions
* Imported Translations from Zanata
* Drop python 2.7 support and testing
* Switch to Ussuri jobs
* Use Horizon project template for django jobs
* Imported Translations from Zanata
* Update master for stable/train
13.0.0
------
* Fix failed Unit tests
* Update tox.ini for Python 3 Train unit test goal
* Add python37 job
* Dropping the py35 testing
* Replace git.openstack.org URLs with opendev.org URLs
* OpenDev Migration Patch
* Replace openstack.org git:// URLs with https://
* Update master for stable/stein
12.0.0
------
* Removed older version of python added 3.5
* Imported Translations from Zanata
* Update hacking version
* fix tox python3 overrides
* Change openstack-dev to openstack-discuss
* Don't quote {posargs} in tox.ini
* Add Volume Size value in cluster instances details
* Remove object-store permission for Clusters panel
* Imported Translations from Zanata
* Imported Translations from Zanata
* Increment versioning with pbr instruction
* fix tox python3 overrides
* Cleanup zuul.yaml
* add python 3.6 unit test job
* switch documentation job to new PTI
* import zuul job settings from project-config
* Drop nose dependencies
* Update reno for stable/rocky
* Imported Translations from Zanata
11.0.0
------
* Fix README syntax to meet PyPI requirements
* Finish removal of mox
* Drop mox from database\_backups
* Mox removal for LogsTests
* Mox removal for ClustersTests
* Mox removal for DatabaseTests
* Mox removal for DatabaseConfigurationsTests
* Django 2.0 support
* Cleanup requirements
* Remove table UpdateAction and declare mox dependency
11.0.0.0b1
----------
* Imported Translations from Zanata
* Avoid using hasattr() on troveclient resources for py3 porting
* Use for loop instead of map to modify iterables
* Fix str and dict usages in unittests for Python3
* Avoid tox-install.sh
* Fix binascii hexlify under Python 3
* Imported Translations from Zanata
* Imported Translations from Zanata
* Update reno for stable/queens
* Imported Translations from Zanata
10.0.0
------
* Imported Translations from Zanata
* Imported Translations from Zanata
* Deprecated error method
* Imported Translations from Zanata
* Remove empty files
* Imported Translations from Zanata
10.0.0.0b3
----------
* Imported Translations from Zanata
* Fix the url of trove project
* Switch to oslo\_log
* Remove the redundant attributes
* Add "\*.swp" to ".gitignore" file
* Remove empty files
* Update the documentation link for doc migration
* Fix users page display error
* Add host to user access show title
* Fix incorrect example of mysql connection
* Fix import heat\_data error for tests
* Align tox\_install.sh with other projects
* Imported Translations from Zanata
* Imported Translations from Zanata
* Remove setting of version/release from releasenotes
* Drop django\_openstack\_auth from requirements.txt
* Imported Translations from Zanata
* Fix leak of password info in logs
* Fix unstable test case
* Switch from oslosphinx to openstackdocstheme
10.0.0.0b1
----------
* Imported Translations from Zanata
* Fix to use . to source script files
* Using assertIsNone() instead of assertEqual(None)
* Update reno for stable/pike
9.0.0
-----
* Imported Translations from Zanata
9.0.0.0b3
---------
* Imported Translations from Zanata
* Imported Translations from Zanata
* Add support for uppercase fieldname to cluster
* Restrict launch fields when restoring from backup
9.0.0.0b2
---------
* Failure to launch dashboard with error about missing class methods
* Imported Translations from Zanata
9.0.0.0b1
---------
* Imported Translations from Zanata
* Update launchpad link to trove-dashboard
* Imported Translations from Zanata
* Imported Translations from Zanata
* Update reno for stable/ocata
8.0.0.0rc1
----------
* Imported Translations from Zanata
8.0.0.0b3
---------
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Delete the unused LOG code
* Remove the redundant "required=True"
* Imported Translations from Zanata
* Use 'trimmed' for blocktrans in html page
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Enable pxc grow/shrink
* Fix grow cluster caching
8.0.0.0b2
---------
* Update home-page in setup.cfg
* Fix Django 1.10 Compatibility
* Add requirement for cross-process cache
* Imported Translations from Zanata
* Don't import ceilometer\_data
* Show team and repo badges on README
8.0.0.0b1
---------
* Imported Translations from Zanata
* Imported Translations from Zanata
* Trove user page doesn't show allowed hosts AND databases
* make trove-dashboard use upper-constraints
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Enable release notes translation
* Remove double closing tag in a template
* Imported Translations from Zanata
* Update release notes
* Update reno for stable/newton
7.0.0.0rc1
----------
* Imported Translations from Zanata
* Add cluster support for affinity/anti-affinity
* Imported Translations from Zanata
* Add availability zone to launch instance
* Add support for affinity/anti-affinity
* Add support for Trove configuration groups
* Update release note page ordering
* Imported Translations from Zanata
* Use proper check for inactive datastore version
* Imported Translations from Zanata
7.0.0.0b3
---------
* Imported Translations from Zanata
* Flake8 update
* Add nic to cluster grow
* Show confirm window before instance delete
* Don't include openstack/common in flake8
* Add support to display instance fault messages
* Imported Translations from Zanata
* Properly populate cluster id in instance grow
* Add support for instance datastore-flavors
* Fix gate test failures
* Remove discover from test-requirements
* Imported Translations from Zanata
7.0.0.0b2
---------
* Fix unit tests - policy file failure
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Add backups table to ng-backups panel
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Get all instances to populate master pulldown
* Trove add support for log retrieval
* Delegate network panel to instance network panel
* Add missing mocks to tests
* Imported Translations from Zanata
* Database instance status message changed
* Fix periodic translation job
* Fix the active attribute check
* Enable cluster support for mariadb and cassandra
* Install horizon in runtest.sh
* Imported Translations from Zanata
* Add reno for release notes management
* Use new style form templates
* Cluster details page should list all endpoints
* Remove install of horizon from test-requirements
* Improved handling of Swift panel detection
* Re-enable failing test
* [Django 1.9] Remove load url from future
* Temporarily disable failing test
* Add missing replication functionality
6.0.0.0rc1
----------
* Imported Translations from Zanata
* Imported Translations from Zanata
* Fixed Missed Traslations
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
* Add maria, percona, postgresql to details view
* Add volume type field to launch instance dialog
* Add support for root-disable
6.0.0.0b3
---------
* Trove add cluster grow and shrink support
* update readme with how to test changes
* Ensure to compile translation catalogs
* Adding support for trove new clustering datastore - percona cluster
* Add support for root enable and show
* devstack: compile translation message catalogs
* Enable Redis database cluster support
* Add support for Trove create database
* Imported Translations from Zanata
* Support operations on a trove instance user
* LOG.warn is deprecated in python3
* Adding angular database backups panel
* Update devstack plugin
* Setup for translations
* Use "Connection Information" everywhere
* Fix cluster launch datastore version handling
6.0.0.0b2
---------
* Fix cluster connection information formatting
* Add missing .gitreview file
* Fix unit tests
* Completing the plugin
* Restructuring tree to be plugin
* Replace "Terminate Instance" with "Delete Instance"
* Drop Django 1.7 support
* Remove unnecessary ugettext\_lazy
* Add breadcrumb to more details pages
* py3: Replace unicode with six.text\_type
* Fix TypeError on comparison on Python 3
* Typo fix in Trove panel
* Initial support for database clustering in Horizon
* Replace SortedDict with OrderedDict
* py3: Replace unicode with six.text\_type
* Updated cassandra database details overview port
* Fixes align issue for database networking workflow
* Moving Trove to contrib
* Move Horizon to pure plugin loading only
* Support for resizing a trove instance
* Fix E127 errors in remaining openstack\_dashboard/
* Add support for trove incremental backups
* Initial support for datastore in Horizon
* Users can now be deleted within trove
* Remove extraneous vim configuration comments
* Display trove instance hostname if available
* Update troveclient to 1.0.0
* Importing from trove-client compat first
* Importing from trove-client compat
* Make troveclient optional
* Adding panels for trove
* Initial commit
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/HACKING.rst 0000644 0001750 0001750 00000000350 00000000000 017661 0 ustar 00corey corey 0000000 0000000 Trove Style Commandments
========================
- Step 1: Read the OpenStack Style Commandments
https://docs.openstack.org/hacking/latest
- Step 2: Read on
Trove Specific Commandments
---------------------------
None so far
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/LICENSE 0000644 0001750 0001750 00000023637 00000000000 017105 0 ustar 00corey corey 0000000 0000000
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/MANIFEST.in 0000644 0001750 0001750 00000000130 00000000000 017615 0 ustar 00corey corey 0000000 0000000 recursive-include trove_dashboard *.html *.scss *.js
include AUTHORS
include ChangeLog
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.537434
trove-dashboard-13.1.0.dev21/PKG-INFO 0000644 0001750 0001750 00000014465 00000000000 017174 0 ustar 00corey corey 0000000 0000000 Metadata-Version: 1.2
Name: trove-dashboard
Version: 13.1.0.dev21
Summary: Trove Management Dashboard
Home-page: https://docs.openstack.org/trove/latest
Author: OpenStack
Author-email: openstack-discuss@lists.openstack.org
License: UNKNOWN
Description: OpenStack Dashboard plugin for Trove project
============================================
.. image:: https://governance.openstack.org/tc/badges/trove-dashboard.svg
:target: https://governance.openstack.org/tc/reference/tags/index.html
How to use with Horizon on server:
----------------------------------
Use pip to install the package on the server running Horizon. Then either copy
or link the files in trove_dashboard/enabled to
openstack_dashboard/local/enabled. This step will cause the Horizon service to
pick up the trove plugin when it starts.
How to use with devstack:
-------------------------
Add the following to your devstack ``local.conf`` file::
enable_plugin trove-dashboard https://opendev.org/openstack/trove-dashboard
Here is a full example of devstack ``local.conf`` file that includes the trove plugin::
[[local|localrc]]
RECLONE=False
HOST_IP=
enable_plugin trove https://opendev.org/openstack/trove
enable_plugin trove-dashboard https://opendev.org/openstack/trove-dashboard
LIBS_FROM_GIT+=,python-troveclient
DATABASE_PASSWORD=password
ADMIN_PASSWORD=password
SERVICE_PASSWORD=password
SERVICE_TOKEN=password
RABBIT_PASSWORD=password
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
LOGDAYS=1
IPV4_ADDRS_SAFE_TO_USE=10.111.0.0/26
FIXED_RANGE=10.111.0.0/26
NETWORK_GATEWAY=10.111.0.1
FLOATING_RANGE=172.30.5.0/24
PUBLIC_NETWORK_GATEWAY=172.30.5.1
# Pre-requisites
ENABLED_SERVICES=rabbit,mysql,key
# Horizon
enable_service horizon
# Nova
enable_service n-api
enable_service n-cpu
enable_service n-cond
enable_service n-sch
enable_service n-api-meta
enable_service placement-api
enable_service placement-client
# Glance
enable_service g-api
enable_service g-reg
# Cinder
enable_service cinder
enable_service c-api
enable_service c-vol
enable_service c-sch
# Neutron
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
# enable DVR
Q_PLUGIN=ml2
Q_ML2_TENANT_NETWORK_TYPE=vxlan
Q_DVR_MODE=legacy
# Swift
ENABLED_SERVICES+=,swift
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS=1
To run unit tests:
------------------
::
./run_tests.sh
Editing Code
------------
Apache
~~~~~~
Make a change to trove-dashboard then goto to the horizon directory and
compress the code with django and then restart apache.::
# rsync code to /opt/stack/trove-dashboard
# copy or link files from trove-dashboard/enabled/* to horizon/openstack_dashboard/local/enabled/
cd /opt/stack/horizon
python manage.py compress
python manage.py collectstatic --noinput
sudo service apache2 restart
Django
~~~~~~
You can also speed up development time using the django test server instead of
apache.::
/opt/stack/horizon/run_tests.sh --runserver
If you set COMPRESS_ENABLED and COMPRESS_OFFLINE to False in local_settings.py
that allows you to bypass the compress and collectstatic as well.
Settings
~~~~~~~~
The use of a cross-process cache such as Memcached is required.
Install Memcached itself and a Memcached binding such as python-memcached.
For a single horizon instance use the CACHES setting like the example below.::
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
},
}
For multiple horizon instances behind a load balancer configure each instance
to use the same cache like the example below.::
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': [u'10.2.100.133:11211', u'10.2.100.134:11211'']
},
}
NOTE:
=====
As of the Mitaka release, the dashboard for trove is now maintained outside of
the Horizon codebase, in this repository.
Links:
------
Trove project: https://opendev.org/openstack/trove/
Trove at wiki.openstack.org: https://wiki.openstack.org/wiki/Trove
Launchpad project: https://launchpad.net/trove-dashboard
Platform: UNKNOWN
Classifier: Environment :: OpenStack
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Python: >=3.6
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/README.rst 0000644 0001750 0001750 00000010214 00000000000 017552 0 ustar 00corey corey 0000000 0000000 OpenStack Dashboard plugin for Trove project
============================================
.. image:: https://governance.openstack.org/tc/badges/trove-dashboard.svg
:target: https://governance.openstack.org/tc/reference/tags/index.html
How to use with Horizon on server:
----------------------------------
Use pip to install the package on the server running Horizon. Then either copy
or link the files in trove_dashboard/enabled to
openstack_dashboard/local/enabled. This step will cause the Horizon service to
pick up the trove plugin when it starts.
How to use with devstack:
-------------------------
Add the following to your devstack ``local.conf`` file::
enable_plugin trove-dashboard https://opendev.org/openstack/trove-dashboard
Here is a full example of devstack ``local.conf`` file that includes the trove plugin::
[[local|localrc]]
RECLONE=False
HOST_IP=
enable_plugin trove https://opendev.org/openstack/trove
enable_plugin trove-dashboard https://opendev.org/openstack/trove-dashboard
LIBS_FROM_GIT+=,python-troveclient
DATABASE_PASSWORD=password
ADMIN_PASSWORD=password
SERVICE_PASSWORD=password
SERVICE_TOKEN=password
RABBIT_PASSWORD=password
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
LOGDAYS=1
IPV4_ADDRS_SAFE_TO_USE=10.111.0.0/26
FIXED_RANGE=10.111.0.0/26
NETWORK_GATEWAY=10.111.0.1
FLOATING_RANGE=172.30.5.0/24
PUBLIC_NETWORK_GATEWAY=172.30.5.1
# Pre-requisites
ENABLED_SERVICES=rabbit,mysql,key
# Horizon
enable_service horizon
# Nova
enable_service n-api
enable_service n-cpu
enable_service n-cond
enable_service n-sch
enable_service n-api-meta
enable_service placement-api
enable_service placement-client
# Glance
enable_service g-api
enable_service g-reg
# Cinder
enable_service cinder
enable_service c-api
enable_service c-vol
enable_service c-sch
# Neutron
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
# enable DVR
Q_PLUGIN=ml2
Q_ML2_TENANT_NETWORK_TYPE=vxlan
Q_DVR_MODE=legacy
# Swift
ENABLED_SERVICES+=,swift
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS=1
To run unit tests:
------------------
::
./run_tests.sh
Editing Code
------------
Apache
~~~~~~
Make a change to trove-dashboard then goto to the horizon directory and
compress the code with django and then restart apache.::
# rsync code to /opt/stack/trove-dashboard
# copy or link files from trove-dashboard/enabled/* to horizon/openstack_dashboard/local/enabled/
cd /opt/stack/horizon
python manage.py compress
python manage.py collectstatic --noinput
sudo service apache2 restart
Django
~~~~~~
You can also speed up development time using the django test server instead of
apache.::
/opt/stack/horizon/run_tests.sh --runserver
If you set COMPRESS_ENABLED and COMPRESS_OFFLINE to False in local_settings.py
that allows you to bypass the compress and collectstatic as well.
Settings
~~~~~~~~
The use of a cross-process cache such as Memcached is required.
Install Memcached itself and a Memcached binding such as python-memcached.
For a single horizon instance use the CACHES setting like the example below.::
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
},
}
For multiple horizon instances behind a load balancer configure each instance
to use the same cache like the example below.::
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': [u'10.2.100.133:11211', u'10.2.100.134:11211'']
},
}
NOTE:
=====
As of the Mitaka release, the dashboard for trove is now maintained outside of
the Horizon codebase, in this repository.
Links:
------
Trove project: https://opendev.org/openstack/trove/
Trove at wiki.openstack.org: https://wiki.openstack.org/wiki/Trove
Launchpad project: https://launchpad.net/trove-dashboard
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/babel-django.cfg 0000644 0001750 0001750 00000000057 00000000000 021055 0 ustar 00corey corey 0000000 0000000 [python: **.py]
[django: **/templates/**.html]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/babel-djangojs.cfg 0000644 0001750 0001750 00000000061 00000000000 021405 0 ustar 00corey corey 0000000 0000000 [javascript: **.js]
[angular: **/static/**.html]
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4934366
trove-dashboard-13.1.0.dev21/devstack/ 0000755 0001750 0001750 00000000000 00000000000 017671 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/devstack/plugin.sh 0000644 0001750 0001750 00000003146 00000000000 021527 0 ustar 00corey corey 0000000 0000000 # plugin.sh - DevStack plugin.sh dispatch script trove-dashboard
TROVE_DASHBOARD_DIR=$(cd $(dirname $BASH_SOURCE)/.. && pwd)
function install_trove_dashboard {
setup_develop ${TROVE_DASHBOARD_DIR}
}
function configure_trove_dashboard {
cp -a ${TROVE_DASHBOARD_DIR}/trove_dashboard/enabled/* ${DEST}/horizon/openstack_dashboard/local/enabled/
# NOTE: If locale directory does not exist, compilemessages will fail,
# so check for an existence of locale directory is required.
if [ -d ${TROVE_DASHBOARD_DIR}/trove_dashboard/locale ]; then
(cd ${TROVE_DASHBOARD_DIR}/trove_dashboard; DJANGO_SETTINGS_MODULE=openstack_dashboard.settings $PYTHON ../manage.py compilemessages)
fi
}
# check for service enabled
if is_service_enabled trove-dashboard; then
if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
# Set up system services
# no-op
:
elif [[ "$1" == "stack" && "$2" == "install" ]]; then
# Perform installation of service source
echo_summary "Installing Trove UI"
install_trove_dashboard
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
# Configure after the other layer 1 and 2 services have been configured
echo_summary "Configurng Trove UI"
configure_trove_dashboard
elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
# no-op
:
fi
if [[ "$1" == "unstack" ]]; then
# no-op
:
fi
if [[ "$1" == "clean" ]]; then
# Remove state and transient data
# Remember clean.sh first calls unstack.sh
# no-op
:
fi
fi
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/devstack/settings 0000644 0001750 0001750 00000000112 00000000000 021446 0 ustar 00corey corey 0000000 0000000 # settings file for trove-dashboard plugin
enable_service trove-dashboard
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/manage.py 0000755 0001750 0001750 00000001477 00000000000 017703 0 ustar 00corey corey 0000000 0000000 #!/usr/bin/env 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 os
import sys
from django.core.management import execute_from_command_line
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"trove_dashboard.test.settings")
execute_from_command_line(sys.argv)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4774375
trove-dashboard-13.1.0.dev21/releasenotes/ 0000755 0001750 0001750 00000000000 00000000000 020556 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4934366
trove-dashboard-13.1.0.dev21/releasenotes/notes/ 0000755 0001750 0001750 00000000000 00000000000 021706 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/.placeholder 0000644 0001750 0001750 00000000000 00000000000 024157 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/cluster-endpoints-52bbb9f1c146ae97.yaml 0000644 0001750 0001750 00000000133 00000000000 030547 0 ustar 00corey corey 0000000 0000000 ---
fixes:
- Display all endpoints in the dashboard's cluster
details endpoint list.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/conf-groups-7bc8115f8d0bcd14.yaml 0000644 0001750 0001750 00000000414 00000000000 027323 0 ustar 00corey corey 0000000 0000000 ---
features:
- Support configuration groups in the dashboard. This
includes creating and deleting groups; adding,
editing and removing parameters; attaching and
detaching groups to running instances; and specifying
a group during instance creation.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/django20-support-fd32553ded354e56.yaml 0000644 0001750 0001750 00000000416 00000000000 030133 0 ustar 00corey corey 0000000 0000000 ---
upgrade:
- |
Django 2.0 is now supported and Django versions older than 1.11 are no
longer supported aligning with Django versions supported by horizon.
Note that Django 1.11 is still supported and this is the only version
when you use python 2.7.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/drop-py-2-7-ee223d109e3bd38e.yaml 0000644 0001750 0001750 00000000327 00000000000 026763 0 ustar 00corey corey 0000000 0000000 ---
upgrade:
- |
Python 2.7 support has been dropped. Last release of trove-dashboard
to support py2.7 is OpenStack Train. The minimum version of Python now
supported by trove-dashboard is Python 3.6.
././@PaxHeader 0000000 0000000 0000000 00000000207 00000000000 011454 x ustar 00 0000000 0000000 113 path=trove-dashboard-13.1.0.dev21/releasenotes/notes/enable-cluster-mariabdb-cassandra-11f3f7f6badfc211.yaml
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/enable-cluster-mariabdb-cassandra-11f3f7f6badfc211.y0000644 0001750 0001750 00000000104 00000000000 033041 0 ustar 00corey corey 0000000 0000000 ---
features:
- Enable cluster support for MariaDB and Cassandra.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/enable-pxc-grow-shrink-17568a1c280f1c42.yaml 0000644 0001750 0001750 00000000076 00000000000 031132 0 ustar 00corey corey 0000000 0000000 ---
fixes:
- Enable cluster grow and shrink panels for pxc.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/fix-grow-cluster-cache-5625d1a519a4ee01.yaml 0000644 0001750 0001750 00000000321 00000000000 031174 0 ustar 00corey corey 0000000 0000000 ---
fixes:
- The current caching initializes the instance list for the grow
cluster manager each time a new process would instantiate the
manager. Changed to manager to only initialize on creation.
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/logging-support-f999a1b1b342eb4d.yaml 0000644 0001750 0001750 00000000275 00000000000 030233 0 ustar 00corey corey 0000000 0000000 ---
features:
- Added support for logging features in the dashboard.
This includes listing logs that can be retrieved and
viewing, publishing and stop collection of log contents.
././@PaxHeader 0000000 0000000 0000000 00000000223 00000000000 011452 x ustar 00 0000000 0000000 125 path=trove-dashboard-13.1.0.dev21/releasenotes/notes/restrict-launch-fields-on-restore-from-backup-8a32174e27f185dc.yaml
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/notes/restrict-launch-fields-on-restore-from-backup-8a32170000644 0001750 0001750 00000000403 00000000000 033323 0 ustar 00corey corey 0000000 0000000 ---
fixes:
- Adds support for restricting the launch instance datastore field
to the datastore and datastore version that the backup is
relevant to. It also populates the restored backup as the only
option in the advanced step backup field.
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/ 0000755 0001750 0001750 00000000000 00000000000 022056 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/_static/ 0000755 0001750 0001750 00000000000 00000000000 023504 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/_static/.placeholder 0000644 0001750 0001750 00000000000 00000000000 025755 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/_templates/ 0000755 0001750 0001750 00000000000 00000000000 024213 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/_templates/.placeholder 0000644 0001750 0001750 00000000000 00000000000 026464 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/conf.py 0000644 0001750 0001750 00000023123 00000000000 023356 0 ustar 00corey corey 0000000 0000000 # -*- coding: utf-8 -*-
#
# Trove Dashboard Release Notes documentation build configuration file, created by
# sphinx-quickstart on Thu Apr 14 18:07:45 2016.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys
import os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'openstackdocstheme',
'reno.sphinxext',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# openstackdocstheme options
repository_name = 'openstack/trove-dashboard'
bug_project = 'trove-dashboard'
bug_tag = ''
# Must set this variable to include year, month, day, hours, and minutes.
html_last_updated_fmt = '%Y-%m-%d %H:%M'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Trove Dashboard Release Notes'
copyright = u'2016, Trove developers'
author = u'Trove developers'
# Release notes are version independent.
# The short X.Y version.
version = ''
# The full version, including alpha/beta/rc tags.
release = ''
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents.
# " v documentation" by default.
#html_title = u'Trove Dashboard Release Notes vblah'
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (relative to this directory) to use as a favicon of
# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not None, a 'Last updated on:' timestamp is inserted at every page
# bottom, using the given strftime format.
# The empty string is equivalent to '%b %d, %Y'.
#html_last_updated_fmt = None
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh'
#html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# 'ja' uses this config value.
# 'zh' user can custom change `jieba` dictionary path.
#html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = 'TroveDashboardReleaseNotesdoc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
# Latex figure (float) alignment
#'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'TroveDashboardReleaseNotes.tex', u'Trove Dashboard Release Notes Documentation',
u'Trove developers', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'trovedashboardreleasenotes', u'Trove Dashboard Release Notes Documentation',
[author], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'TroveDashboardReleaseNotes', u'Trove Dashboard Release Notes Documentation',
author, 'TroveDashboardReleaseNotes', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
# -- Options for Internationalization output ------------------------------
locale_dirs = ['locale/']
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/index.rst 0000644 0001750 0001750 00000000363 00000000000 023721 0 ustar 00corey corey 0000000 0000000 =============================
Trove Dashboard Release Notes
=============================
Contents:
.. toctree::
:maxdepth: 2
unreleased
train
stein
rocky
queens
pike
ocata
newton
Search
======
* :ref:`search`
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ 0000755 0001750 0001750 00000000000 00000000000 023315 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4774375
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/de/ 0000755 0001750 0001750 00000000000 00000000000 023705 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/de/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025472 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/de/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000006543 00000000000 030533 0 ustar 00corey corey 0000000 0000000 # Frank Kloeker , 2017. #zanata
# Robert Simai , 2018. #zanata
# Andreas Jaeger , 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-18 07:47+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-09-25 07:01+0000\n"
"Last-Translator: Andreas Jaeger \n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "10.0.0"
msgstr "10.0.0"
msgid "11.0.0"
msgstr "11.0.0"
msgid "7.0.0"
msgstr "7.0.0"
msgid "8.0.0"
msgstr "8.0.0"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"Unterstützung für Loggingfunktionen im Dashboard hinzugefügt. Dies "
"beinhaltet die Auflistung abrufbarer Logdateien, sowie betrachten, "
"publizieren und stoppen der Aufzeichnung von Loginhalten."
msgid "Bug Fixes"
msgstr "Fehlerkorrekturen"
msgid "Contents:"
msgstr "Inhalt:"
msgid "Current Series Release Notes"
msgstr "Aktuelle Serie Releasenotes"
msgid "Display all endpoints in the dashboard's cluster details endpoint list."
msgstr ""
"Zeige alle Endpunkte in der Endpunktliste in den Clusterdetails im "
"Dashboard ."
msgid "Enable cluster grow and shrink panels for pxc."
msgstr "Aktivieren von Panels für pxc zum wachsen und schrumpfen von Clustern"
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "Clusterunterstützung für MariaDB und Cassandra aktiviert."
msgid "New Features"
msgstr "Neue Funktionen"
msgid "Newton Series Release Notes"
msgstr "Newton Serie Releasenotes"
msgid "Ocata Series Release Notes"
msgstr "Ocata Serie Releasenotes"
msgid "Pike Series Release Notes"
msgstr "Pike Serie Releasenotes"
msgid "Queens Series Release Notes"
msgstr "Queens Serie Releasenotes"
msgid "Rocky Series Release Notes"
msgstr "Rocky Serie Releasenotes"
msgid "Search"
msgstr "Suche"
msgid "Stein Series Release Notes"
msgstr "Stein Serie Releasenotes"
msgid ""
"Support configuration groups in the dashboard. This includes creating and "
"deleting groups; adding, editing and removing parameters; attaching and "
"detaching groups to running instances; and specifying a group during "
"instance creation."
msgstr ""
"Unterstützung für Konfigurationsgruppen im Dashboard. Dies schließt anlegen "
"und löschen von Gruppen ein, sowie hinzufügen, bearbeiten und entfernen von "
"Parametern, zuweisen und entfernen von Gruppen zu laufenden Instanzen und "
"die Angabe einer Gruppe während der Instanzerzeugung."
msgid ""
"The current caching initializes the instance list for the grow cluster "
"manager each time a new process would instantiate the manager. Changed to "
"manager to only initialize on creation."
msgstr ""
"Das aktuelle Caching initialisiert die Instanzliste für den für das Wachsen "
"zuständigen Cluster Manager jedes Mal, wenn ein neuer Prozess den Cluster "
"Manager instanzieren würde. Geändert auf Initialisierung nur bei der "
"Erstellung."
msgid "Trove Dashboard Release Notes"
msgstr "Trove Dashboard Releasenotes"
msgid "Upgrade Notes"
msgstr "Aktualisierungsnotizen"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/en_GB/ 0000755 0001750 0001750 00000000000 00000000000 024267 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/en_GB/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 026054 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000011350 00000000000 031105 0 ustar 00corey corey 0000000 0000000 # Andi Chandler , 2016. #zanata
# Andi Chandler , 2017. #zanata
# Andi Chandler , 2018. #zanata
# Andi Chandler , 2019. #zanata
# Andi Chandler , 2020. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-04-07 20:44+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2020-04-07 08:37+0000\n"
"Last-Translator: Andi Chandler \n"
"Language-Team: English (United Kingdom)\n"
"Language: en_GB\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "10.0.0"
msgstr "10.0.0"
msgid "11.0.0"
msgstr "11.0.0"
msgid "7.0.0"
msgstr "7.0.0"
msgid "8.0.0"
msgstr "8.0.0"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgid ""
"Adds support for restricting the launch instance datastore field to the "
"datastore and datastore version that the backup is relevant to. It also "
"populates the restored backup as the only option in the advanced step backup "
"field."
msgstr ""
"Adds support for restricting the launch instance datastore field to the "
"datastore and datastore version that the backup is relevant to. It also "
"populates the restored backup as the only option in the advanced step backup "
"field."
msgid "Bug Fixes"
msgstr "Bug Fixes"
msgid "Contents:"
msgstr "Contents:"
msgid "Current Series Release Notes"
msgstr "Current Series Release Notes"
msgid "Display all endpoints in the dashboard's cluster details endpoint list."
msgstr ""
"Display all endpoints in the dashboard's cluster details endpoint list."
msgid ""
"Django 2.0 is now supported and Django versions older than 1.11 are no "
"longer supported aligning with Django versions supported by horizon. Note "
"that Django 1.11 is still supported and this is the only version when you "
"use python 2.7."
msgstr ""
"Django 2.0 is now supported and Django versions older than 1.11 are no "
"longer supported aligning with Django versions supported by Horizon. Note "
"that Django 1.11 is still supported and this is the only version when you "
"use Python 2.7."
msgid "Enable cluster grow and shrink panels for pxc."
msgstr "Enable cluster grow and shrink panels for pxc."
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "Enable cluster support for MariaDB and Cassandra."
msgid "New Features"
msgstr "New Features"
msgid "Newton Series Release Notes"
msgstr "Newton Series Release Notes"
msgid "Ocata Series Release Notes"
msgstr "Ocata Series Release Notes"
msgid "Pike Series Release Notes"
msgstr "Pike Series Release Notes"
msgid ""
"Python 2.7 support has been dropped. Last release of trove-dashboard to "
"support py2.7 is OpenStack Train. The minimum version of Python now "
"supported by trove-dashboard is Python 3.6."
msgstr ""
"Python 2.7 support has been dropped. Last release of trove-dashboard to "
"support py2.7 is OpenStack Train. The minimum version of Python now "
"supported by trove-dashboard is Python 3.6."
msgid "Queens Series Release Notes"
msgstr "Queens Series Release Notes"
msgid "Rocky Series Release Notes"
msgstr "Rocky Series Release Notes"
msgid "Search"
msgstr "Search"
msgid "Stein Series Release Notes"
msgstr "Stein Series Release Notes"
msgid ""
"Support configuration groups in the dashboard. This includes creating and "
"deleting groups; adding, editing and removing parameters; attaching and "
"detaching groups to running instances; and specifying a group during "
"instance creation."
msgstr ""
"Support configuration groups in the dashboard. This includes creating and "
"deleting groups; adding, editing and removing parameters; attaching and "
"detaching groups to running instances; and specifying a group during "
"instance creation."
msgid ""
"The current caching initializes the instance list for the grow cluster "
"manager each time a new process would instantiate the manager. Changed to "
"manager to only initialize on creation."
msgstr ""
"The current caching initialises the instance list for the grow cluster "
"manager each time a new process would instantiate the manager. Changed to "
"manager to only initialise on creation."
msgid "Train Series Release Notes"
msgstr "Train Series Release Notes"
msgid "Trove Dashboard Release Notes"
msgstr "Trove Dashboard Release Notes"
msgid "Upgrade Notes"
msgstr "Upgrade Notes"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/fr/ 0000755 0001750 0001750 00000000000 00000000000 023724 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/fr/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025511 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000003345 00000000000 030547 0 ustar 00corey corey 0000000 0000000 # Gérald LONLAS , 2016. #zanata
# Loic Nicolle , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Trove Dashboard Release Notes 9.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-11 19:27+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-09-14 01:04+0000\n"
"Last-Translator: Loic Nicolle \n"
"Language-Team: French\n"
"Language: fr\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
msgid "7.0.0"
msgstr "7.0.0"
msgid "8.0.0"
msgstr "8.0.0"
msgid ":ref:`search`"
msgstr ":ref:`search`"
#, fuzzy
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"Ajout du support pour logger les fonctionnalités dans le tableau de bord. "
"Added support for logging features in the dashboard. Cela inclut la liste de "
"logs qui sont récupérés affichés et publiés ainsi que l'arrêt de la "
"collecte de logs."
msgid "Bug Fixes"
msgstr "Corrections de bugs"
msgid "Contents:"
msgstr "Contenu :"
msgid "Current Series Release Notes"
msgstr "Note de la release actuelle"
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "Activer le support de Cluster pour MariaDB et Cassandra."
msgid "New Features"
msgstr "Nouvelles fonctionnalités"
msgid "Newton Series Release Notes"
msgstr "Note de release pour Newton"
msgid "Ocata Series Release Notes"
msgstr "Note de release pour Ocata"
msgid "Search"
msgstr "Recherche"
msgid "Trove Dashboard Release Notes"
msgstr "Note de release pour le Tableau de bord Trove"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/id/ 0000755 0001750 0001750 00000000000 00000000000 023711 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/id/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025476 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/id/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000010437 00000000000 030534 0 ustar 00corey corey 0000000 0000000 # suhartono , 2016. #zanata
# suhartono , 2017. #zanata
# suhartono , 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-14 14:47+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-01-21 05:01+0000\n"
"Last-Translator: suhartono \n"
"Language-Team: Indonesian\n"
"Language: id\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "10.0.0"
msgstr "10.0.0"
msgid "11.0.0"
msgstr "11.0.0"
msgid "7.0.0"
msgstr "7.0.0"
msgid "8.0.0"
msgstr "8.0.0"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"Dukungan diitambahkan untuk fitur login di dashboard. Ini termasuk log "
"daftar yang dapat diambil dan dilihat, penerbitan dan menghentikan koleksi "
"isi log."
msgid ""
"Adds support for restricting the launch instance datastore field to the "
"datastore and datastore version that the backup is relevant to. It also "
"populates the restored backup as the only option in the advanced step backup "
"field."
msgstr ""
"Menambahkan dukungan untuk membatasi launch instance datastore field ke "
"datastore dan versi datastore yang sesuai dengan backup. Ini juga mengisi "
"backup yang dipulihkan sebagai satu-satunya pilihan di backup field langkah "
"lanjutan."
msgid "Bug Fixes"
msgstr "Bug Fixes (perbaikan kesalahan)"
msgid "Contents:"
msgstr "Contents:"
msgid "Current Series Release Notes"
msgstr "Current Series Release Notes (catatan rilis Current Series)"
msgid "Display all endpoints in the dashboard's cluster details endpoint list."
msgstr ""
"Menampilkan semua endpoint dalam daftar rincian endpoint klaster dashboard."
msgid ""
"Django 2.0 is now supported and Django versions older than 1.11 are no "
"longer supported aligning with Django versions supported by horizon. Note "
"that Django 1.11 is still supported and this is the only version when you "
"use python 2.7."
msgstr ""
"Django 2.0 sekarang didukung dan versi Django yang lebih tua dari 1.11 tidak "
"lagi didukung menyelaraskan dengan versi Django yang didukung oleh horizon. "
"Perhatikan bahwa Django 1.11 masih didukung dan ini adalah satu-satunya "
"versi ketika Anda menggunakan python 2.7."
msgid "Enable cluster grow and shrink panels for pxc."
msgstr "Aktifkan klaster tumbuh dan ciutkan panel untuk PXC."
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "Aktifkan dukungan klaster MariaDB dan Cassandra."
msgid "New Features"
msgstr "New Features (fitur baru)"
msgid "Newton Series Release Notes"
msgstr "Newton Series Release Notes (catatan rilis Newton Series)"
msgid "Ocata Series Release Notes"
msgstr "Ocata Series Release Notes"
msgid "Pike Series Release Notes"
msgstr "Catatan Rilis Seri Pike"
msgid "Queens Series Release Notes"
msgstr "Catatan Rilis Seri Queens"
msgid "Rocky Series Release Notes"
msgstr "Rocky Series Release Notes"
msgid "Search"
msgstr "Search (mencari)"
msgid ""
"Support configuration groups in the dashboard. This includes creating and "
"deleting groups; adding, editing and removing parameters; attaching and "
"detaching groups to running instances; and specifying a group during "
"instance creation."
msgstr ""
"Mendukung kelompok konfigurasi di dashboard. Ini termasuk membuat dan "
"menghapus kelompok; menambahkan, mengedit dan menghapus parameter; "
"menghbungkan dan memisahkan kelompok untuk menjalankan instance; dan "
"menentukan kelompok selama pembuatan instance."
msgid ""
"The current caching initializes the instance list for the grow cluster "
"manager each time a new process would instantiate the manager. Changed to "
"manager to only initialize on creation."
msgstr ""
"Caching saat ini menginisialisasi daftar instance bagi manajer klaster "
"tumbuh setiap kali proses baru akan menginstantiate manajer. Diubah menjadi "
"manajer hanya menginisialisasi pada pembuatan."
msgid "Trove Dashboard Release Notes"
msgstr "Trove Dashboard Release Notes (catatan rilis Trove Dashboard)"
msgid "Upgrade Notes"
msgstr "Catatan Upgrade"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ja/ 0000755 0001750 0001750 00000000000 00000000000 023707 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ja/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025474 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000003132 00000000000 030524 0 ustar 00corey corey 0000000 0000000 # Shu Muto , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Trove Dashboard Release Notes 8.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-09 20:48+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-05-23 01:11+0000\n"
"Last-Translator: Shu Muto \n"
"Language-Team: Japanese\n"
"Language: ja\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"ダッシュボードでのロギング機能のサポートを追加しました。これは、取得可能なロ"
"グの一覧、表示、公開、ログ内容の収集の停止を含みます。"
msgid "Bug Fixes"
msgstr "バグ修正"
msgid "Contents:"
msgstr "内容:"
msgid "Current Series Release Notes"
msgstr "開発中バージョンのリリースノート"
msgid "Display all endpoints in the dashboard's cluster details endpoint list."
msgstr ""
"ダッシュボードのクラスター詳細のエンドポイント一覧にすべてのエンドポイントを"
"表示します。"
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "MariaDB と Cassandora のクラスターをサポートしました。"
msgid "New Features"
msgstr "新機能"
msgid "Trove Dashboard Release Notes"
msgstr "Trove Dashboard リリースノート"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ko_KR/ 0000755 0001750 0001750 00000000000 00000000000 024322 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ko_KR/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 026107 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ko_KR/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000011005 00000000000 031135 0 ustar 00corey corey 0000000 0000000 # Ian Y. Choi , 2016. #zanata
# Ian Y. Choi , 2017. #zanata
# Sungjin Kang , 2017. #zanata
# Soonyeul Park , 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-19 14:09+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-09-23 09:42+0000\n"
"Last-Translator: Soonyeul Park \n"
"Language-Team: Korean (South Korea)\n"
"Language: ko_KR\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "10.0.0"
msgstr "10.0.0"
msgid "11.0.0"
msgstr "11.0.0"
msgid "7.0.0"
msgstr "7.0.0"
msgid "8.0.0"
msgstr "8.0.0"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"대시보드 내 로깅 기능에 대한 지원을 추가하였습니다. 가져올 수 있는 로그 목록 "
"나열 및 로그 내용 집합을 퍼블리싱 및 중지를 포함합니다."
msgid ""
"Adds support for restricting the launch instance datastore field to the "
"datastore and datastore version that the backup is relevant to. It also "
"populates the restored backup as the only option in the advanced step backup "
"field."
msgstr ""
"실행 인스턴스 데이터 저장소 필드를 백업과 관련된 데이터 저장소와 데이터 저장"
"소 버전으로 제한하기 위한 지원을 추가합니다. 또한 고급 단계의 백업 필드의 유"
"일한 옵션으로 복원된 백업을 넣어줍니다."
msgid "Bug Fixes"
msgstr "버그 수정"
msgid "Contents:"
msgstr "내용:"
msgid "Current Series Release Notes"
msgstr "현재 시리즈에 대한 릴리즈 노트"
msgid "Display all endpoints in the dashboard's cluster details endpoint list."
msgstr ""
"대시보드의 클러스터 세부 엔드 포인트 목록 내에 모든 엔드 포인트를 보여줍니다."
msgid ""
"Django 2.0 is now supported and Django versions older than 1.11 are no "
"longer supported aligning with Django versions supported by horizon. Note "
"that Django 1.11 is still supported and this is the only version when you "
"use python 2.7."
msgstr ""
"Django 2.0은 이제 지원되며 1.11 이전의 Django 버전은 더 이상 horizon에 의해 "
"지원되는 Django 버전들에 맞춰 지원되지 않습니다. Django 1.11은 여전히 지원되"
"며 이는 Python 2.7을 사용할 때 유일한 버전임을 참고하십시오."
msgid "Enable cluster grow and shrink panels for pxc."
msgstr "pxc를 위한 패널에 대해 클러스터 확장 및 축소를 활성화합니다."
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "MariaDB 및 Cassandra에 대한 클러스터 지원을 활성화합니다."
msgid "New Features"
msgstr "새로운 기능"
msgid "Newton Series Release Notes"
msgstr "Newton 시리즈에 대한 릴리즈 노트"
msgid "Ocata Series Release Notes"
msgstr "Ocata 시리즈에 대한 릴리즈 노트"
msgid "Pike Series Release Notes"
msgstr "Pike 시리즈 릴리즈 노트"
msgid "Queens Series Release Notes"
msgstr "Queens 시리즈 릴리즈 노트"
msgid "Rocky Series Release Notes"
msgstr "Rocky 시리즈 릴리즈 노트"
msgid "Search"
msgstr "검색"
msgid ""
"Support configuration groups in the dashboard. This includes creating and "
"deleting groups; adding, editing and removing parameters; attaching and "
"detaching groups to running instances; and specifying a group during "
"instance creation."
msgstr ""
"구성 그룹을 대시보드에서 지원합니다. 그룹 생성 및 삭제; 매개 변수 추가, 편집 "
"및 제거; 그룹을 실행 중인 인스턴스에 연결 및 연결 해제; 그리고 인스턴스 생성 "
"중 그룹 지정을 포함합니다."
msgid ""
"The current caching initializes the instance list for the grow cluster "
"manager each time a new process would instantiate the manager. Changed to "
"manager to only initialize on creation."
msgstr ""
"현재 캐싱은 새로운 프로세스가 클러스터 확장 관리자를 초기화할 때마다 해당 관"
"리자에 대한 인스턴스 목록을 초기화합니다. 생성할 때에만 관리자를 초기화하도"
"록 변경하였습니다."
msgid "Trove Dashboard Release Notes"
msgstr "Trove 대시보드 릴리즈 노트"
msgid "Upgrade Notes"
msgstr "업그레이드 노트"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ru/ 0000755 0001750 0001750 00000000000 00000000000 023743 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ru/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025530 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/ru/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000002415 00000000000 030563 0 ustar 00corey corey 0000000 0000000 # Alexander , 2016. #zanata
# Artem , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Trove Dashboard Release Notes 8.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-09 20:48+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-01-23 12:49+0000\n"
"Last-Translator: Artem \n"
"Language-Team: Russian\n"
"Language: ru\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
msgid "7.0.0"
msgstr "7.0.0"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Bug Fixes"
msgstr "Исправления ошибок"
msgid "Contents:"
msgstr "Содержание:"
msgid "Current Series Release Notes"
msgstr "Примечания к выпуску Current Series "
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "Включить поддержку кластеризации в MariaDB и Cassandra."
msgid "New Features"
msgstr "Новые особенности"
msgid "Newton Series Release Notes"
msgstr "Примечания к выпуску Newton Series "
msgid "Search"
msgstr "Поиск"
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/zh_CN/ 0000755 0001750 0001750 00000000000 00000000000 024316 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4974363
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/zh_CN/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 026103 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/locale/zh_CN/LC_MESSAGES/releasenotes.po 0000644 0001750 0001750 00000005375 00000000000 031146 0 ustar 00corey corey 0000000 0000000 # sunanchen , 2016. #zanata
# zzxwill , 2016. #zanata
# Bin , 2017. #zanata
# TigerFang , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Trove Dashboard Release Notes\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-28 02:43+0000\n"
"Last-Translator: TigerFang \n"
"Language-Team: Chinese (China)\n"
"Language: zh_CN\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "7.0.0"
msgstr "7.0.0版本"
msgid "8.0.0"
msgstr "8.0.0版本"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid ""
"Added support for logging features in the dashboard. This includes listing "
"logs that can be retrieved and viewing, publishing and stop collection of "
"log contents."
msgstr ""
"在dashboard中增加对日志特性的支持。这包含了列出可检索和查看的日志,正在发布的"
"日志以及停止日志内容的收集。"
msgid "Bug Fixes"
msgstr "Bug修复"
msgid "Contents:"
msgstr "内容"
msgid "Current Series Release Notes"
msgstr "当前版本发布说明"
msgid "Display all endpoints in the dashboard's cluster details endpoint list."
msgstr "在dashboard的集群详情endpoint列表中展示所有的endpoints"
msgid "Enable cluster grow and shrink panels for pxc."
msgstr "为pxc启用集群增长和收缩面板。"
msgid "Enable cluster support for MariaDB and Cassandra."
msgstr "启动MariaDB和Cassandra的集群支持。"
msgid "New Features"
msgstr "新特性"
msgid "Newton Series Release Notes"
msgstr "Newton版本发布说明"
msgid "Ocata Series Release Notes"
msgstr "Ocata版本发布说明"
msgid "Pike Series Release Notes"
msgstr "Pike版本发布声明"
msgid "Search"
msgstr "搜索"
msgid ""
"Support configuration groups in the dashboard. This includes creating and "
"deleting groups; adding, editing and removing parameters; attaching and "
"detaching groups to running instances; and specifying a group during "
"instance creation."
msgstr ""
"在仪表板中支持配置组。这包括创建和删除组;添加、编辑和删除参数;附加和分离组"
"到运行实例;并在实例创建期间指定组。"
msgid ""
"The current caching initializes the instance list for the grow cluster "
"manager each time a new process would instantiate the manager. Changed to "
"manager to only initialize on creation."
msgstr ""
"当每个新进程将实例化管理器时,当前的缓存将初始化增长集群管理器的实例列表。改"
"变为管理器只能在创作时去初始化。"
msgid "Trove Dashboard Release Notes"
msgstr "Trove Dashboard发布说明"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/newton.rst 0000644 0001750 0001750 00000000232 00000000000 024117 0 ustar 00corey corey 0000000 0000000 ===================================
Newton Series Release Notes
===================================
.. release-notes::
:branch: origin/stable/newton
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/ocata.rst 0000644 0001750 0001750 00000000230 00000000000 023672 0 ustar 00corey corey 0000000 0000000 ===================================
Ocata Series Release Notes
===================================
.. release-notes::
:branch: origin/stable/ocata
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/pike.rst 0000644 0001750 0001750 00000000217 00000000000 023540 0 ustar 00corey corey 0000000 0000000 ===================================
Pike Series Release Notes
===================================
.. release-notes::
:branch: stable/pike
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/queens.rst 0000644 0001750 0001750 00000000223 00000000000 024105 0 ustar 00corey corey 0000000 0000000 ===================================
Queens Series Release Notes
===================================
.. release-notes::
:branch: stable/queens
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/rocky.rst 0000644 0001750 0001750 00000000221 00000000000 023732 0 ustar 00corey corey 0000000 0000000 ===================================
Rocky Series Release Notes
===================================
.. release-notes::
:branch: stable/rocky
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/stein.rst 0000644 0001750 0001750 00000000221 00000000000 023725 0 ustar 00corey corey 0000000 0000000 ===================================
Stein Series Release Notes
===================================
.. release-notes::
:branch: stable/stein
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/train.rst 0000644 0001750 0001750 00000000176 00000000000 023731 0 ustar 00corey corey 0000000 0000000 ==========================
Train Series Release Notes
==========================
.. release-notes::
:branch: stable/train
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/releasenotes/source/unreleased.rst 0000644 0001750 0001750 00000000153 00000000000 024736 0 ustar 00corey corey 0000000 0000000 ============================
Current Series Release Notes
============================
.. release-notes::
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/requirements.txt 0000644 0001750 0001750 00000000514 00000000000 021351 0 ustar 00corey corey 0000000 0000000 # The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr>=1.6
oslo.log>=3.30.0 # Apache-2.0
python-swiftclient>=2.2.0
python-troveclient>=1.2.0
horizon>=17.1.0 # Apache-2.0
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/run_tests.sh 0000755 0001750 0001750 00000040436 00000000000 020461 0 ustar 00corey corey 0000000 0000000 #!/bin/bash
set -o errexit
function usage {
echo "Usage: $0 [OPTION]..."
echo "Run Horizon's test suite(s)"
echo ""
echo " -V, --virtual-env Always use virtualenv. Install automatically"
echo " if not present"
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local"
echo " environment"
echo " -c, --coverage Generate reports using Coverage"
echo " -f, --force Force a clean re-build of the virtual"
echo " environment. Useful when dependencies have"
echo " been added."
echo " -m, --manage Run a Django management command."
echo " --makemessages Create/Update English translation files."
echo " --compilemessages Compile all translation files."
echo " --check-only Do not update translation files (--makemessages only)."
echo " --pseudo Pseudo translate a language."
echo " -p, --pep8 Just run pep8"
echo " -8, --pep8-changed []"
echo " Just run PEP8 and HACKING compliance check"
echo " on files changed since HEAD~1 (or )"
echo " -P, --no-pep8 Don't run pep8 by default"
echo " -t, --tabs Check for tab characters in files."
echo " -y, --pylint Just run pylint"
echo " -q, --quiet Run non-interactively. (Relatively) quiet."
echo " Implies -V if -N is not set."
echo " --only-selenium Run only the Selenium unit tests"
echo " --with-selenium Run unit tests including Selenium tests"
echo " --selenium-headless Run Selenium tests headless"
echo " --integration Run the integration tests (requires a running "
echo " OpenStack environment)"
echo " --runserver Run the Django development server for"
echo " openstack_dashboard in the virtual"
echo " environment."
echo " --docs Just build the documentation"
echo " --backup-environment Make a backup of the environment on exit"
echo " --restore-environment Restore the environment before running"
echo " --destroy-environment Destroy the environment and exit"
echo " -h, --help Print this usage message"
echo ""
echo "Note: with no options specified, the script will try to run the tests in"
echo " a virtual environment, If no virtualenv is found, the script will ask"
echo " if you would like to create one. If you prefer to run tests NOT in a"
echo " virtual environment, simply pass the -N option."
exit
}
# DEFAULTS FOR RUN_TESTS.SH
#
root=`pwd -P`
venv=$root/.venv
venv_env_version=$venv/environments
with_venv=tools/with_venv.sh
included_dirs="trove_dashboard"
always_venv=0
backup_env=0
command_wrapper=""
destroy=0
force=0
just_pep8=0
just_pep8_changed=0
no_pep8=0
just_pylint=0
just_docs=0
just_tabs=0
never_venv=0
quiet=0
restore_env=0
runserver=0
only_selenium=0
with_selenium=0
selenium_headless=0
integration=0
testopts=""
testargs=""
with_coverage=0
makemessages=0
compilemessages=0
check_only=0
pseudo=0
manage=0
# Jenkins sets a "JOB_NAME" variable, if it's not set, we'll make it "default"
[ "$JOB_NAME" ] || JOB_NAME="default"
function process_option {
# If running manage command, treat the rest of options as arguments.
if [ $manage -eq 1 ]; then
testargs="$testargs $1"
return 0
fi
case "$1" in
-h|--help) usage;;
-V|--virtual-env) always_venv=1; never_venv=0;;
-N|--no-virtual-env) always_venv=0; never_venv=1;;
-p|--pep8) just_pep8=1;;
-8|--pep8-changed) just_pep8_changed=1;;
-P|--no-pep8) no_pep8=1;;
-y|--pylint) just_pylint=1;;
-f|--force) force=1;;
-t|--tabs) just_tabs=1;;
-q|--quiet) quiet=1;;
-c|--coverage) with_coverage=1;;
-m|--manage) manage=1;;
--makemessages) makemessages=1;;
--compilemessages) compilemessages=1;;
--check-only) check_only=1;;
--pseudo) pseudo=1;;
--only-selenium) only_selenium=1;;
--with-selenium) with_selenium=1;;
--selenium-headless) selenium_headless=1;;
--integration) integration=1;;
--docs) just_docs=1;;
--runserver) runserver=1;;
--backup-environment) backup_env=1;;
--restore-environment) restore_env=1;;
--destroy-environment) destroy=1;;
-*) testopts="$testopts $1";;
*) testargs="$testargs $1"
esac
}
function run_management_command {
${command_wrapper} python $root/manage.py $testopts $testargs
}
function run_server {
echo "Starting Django development server..."
${command_wrapper} python $root/manage.py runserver $testopts $testargs
echo "Server stopped."
}
function run_pylint {
echo "Running pylint ..."
PYTHONPATH=$root ${command_wrapper} pylint --rcfile=.pylintrc -f parseable $included_dirs > pylint.txt || true
CODE=$?
grep Global -A2 pylint.txt
if [ $CODE -lt 32 ]; then
echo "Completed successfully."
exit 0
else
echo "Completed with problems."
exit $CODE
fi
}
function warn_on_flake8_without_venv {
set +o errexit
${command_wrapper} python -c "import hacking" 2>/dev/null
no_hacking=$?
set -o errexit
if [ $never_venv -eq 1 -a $no_hacking -eq 1 ]; then
echo "**WARNING**:" >&2
echo "OpenStack hacking is not installed on your host. Its detection will be missed." >&2
echo "Please install or use virtual env if you need OpenStack hacking detection." >&2
fi
}
function run_pep8 {
echo "Running flake8 ..."
warn_on_flake8_without_venv
DJANGO_SETTINGS_MODULE=trove_dashboard.test.settings ${command_wrapper} flake8
}
function run_pep8_changed {
# NOTE(gilliard) We want use flake8 to check the entirety of every file that has
# a change in it. Unfortunately the --filenames argument to flake8 only accepts
# file *names* and there are no files named (eg) "nova/compute/manager.py". The
# --diff argument behaves surprisingly as well, because although you feed it a
# diff, it actually checks the file on disk anyway.
local base_commit=${testargs:-HEAD~1}
files=$(git diff --name-only $base_commit | tr '\n' ' ')
echo "Running flake8 on ${files}"
warn_on_flake8_without_venv
diff -u --from-file /dev/null ${files} | DJANGO_SETTINGS_MODULE=trove_dashboard.test.settings ${command_wrapper} flake8 --diff
exit
}
function run_sphinx {
echo "Building sphinx..."
DJANGO_SETTINGS_MODULE=trove_dashboard.test.settings ${command_wrapper} python setup.py build_sphinx
echo "Build complete."
}
function tab_check {
TAB_VIOLATIONS=`find $included_dirs -type f -regex ".*\.\(css\|js\|py\|html\)" -print0 | xargs -0 awk '/\t/' | wc -l`
if [ $TAB_VIOLATIONS -gt 0 ]; then
echo "TABS! $TAB_VIOLATIONS of them! Oh no!"
HORIZON_FILES=`find $included_dirs -type f -regex ".*\.\(css\|js\|py|\html\)"`
for TABBED_FILE in $HORIZON_FILES
do
TAB_COUNT=`awk '/\t/' $TABBED_FILE | wc -l`
if [ $TAB_COUNT -gt 0 ]; then
echo "$TABBED_FILE: $TAB_COUNT"
fi
done
fi
return $TAB_VIOLATIONS;
}
function destroy_venv {
echo "Cleaning environment..."
echo "Removing virtualenv..."
rm -rf $venv
echo "Virtualenv removed."
}
function environment_check {
echo "Checking environment."
if [ -f $venv_env_version ]; then
set +o errexit
cat requirements.txt test-requirements.txt | cmp $venv_env_version - > /dev/null
local env_check_result=$?
set -o errexit
if [ $env_check_result -eq 0 ]; then
# If the environment exists and is up-to-date then set our variables
command_wrapper="${root}/${with_venv}"
echo "Environment is up to date."
return 0
fi
fi
if [ $always_venv -eq 1 ]; then
install_venv
else
if [ ! -e ${venv} ]; then
echo -e "Environment not found. Install? (Y/n) \c"
else
echo -e "Your environment appears to be out of date. Update? (Y/n) \c"
fi
read update_env
if [ "x$update_env" = "xY" -o "x$update_env" = "x" -o "x$update_env" = "xy" ]; then
install_venv
else
# Set our command wrapper anyway.
command_wrapper="${root}/${with_venv}"
fi
fi
}
function sanity_check {
# Anything that should be determined prior to running the tests, server, etc.
# Don't sanity-check anything environment-related in -N flag is set
if [ $never_venv -eq 0 ]; then
if [ ! -e ${venv} ]; then
echo "Virtualenv not found at $venv. Did install_venv.py succeed?"
exit 1
fi
fi
# Remove .pyc files. This is sanity checking because they can linger
# after old files are deleted.
find . -name "*.pyc" -exec rm -rf {} \;
}
function backup_environment {
if [ $backup_env -eq 1 ]; then
echo "Backing up environment \"$JOB_NAME\"..."
if [ ! -e ${venv} ]; then
echo "Environment not installed. Cannot back up."
return 0
fi
if [ -d /tmp/.horizon_environment/$JOB_NAME ]; then
mv /tmp/.horizon_environment/$JOB_NAME /tmp/.horizon_environment/$JOB_NAME.old
rm -rf /tmp/.horizon_environment/$JOB_NAME
fi
mkdir -p /tmp/.horizon_environment/$JOB_NAME
cp -r $venv /tmp/.horizon_environment/$JOB_NAME/
# Remove the backup now that we've completed successfully
rm -rf /tmp/.horizon_environment/$JOB_NAME.old
echo "Backup completed"
fi
}
function restore_environment {
if [ $restore_env -eq 1 ]; then
echo "Restoring environment from backup..."
if [ ! -d /tmp/.horizon_environment/$JOB_NAME ]; then
echo "No backup to restore from."
return 0
fi
cp -r /tmp/.horizon_environment/$JOB_NAME/.venv ./ || true
echo "Environment restored successfully."
fi
}
function install_venv {
# Install with install_venv.py
export PIP_DOWNLOAD_CACHE=${PIP_DOWNLOAD_CACHE-/tmp/.pip_download_cache}
export PIP_USE_MIRRORS=true
if [ $quiet -eq 1 ]; then
export PIP_NO_INPUT=true
fi
echo "Fetching new src packages..."
rm -rf $venv/src
python tools/install_venv.py
command_wrapper="$root/${with_venv}"
# Make sure it worked and record the environment version
sanity_check
chmod -R 754 $venv
cat requirements.txt test-requirements.txt > $venv_env_version
}
function run_tests {
sanity_check
if [ $with_selenium -eq 1 ]; then
export WITH_SELENIUM=1
elif [ $only_selenium -eq 1 ]; then
export WITH_SELENIUM=1
export SKIP_UNITTESTS=1
fi
if [ $selenium_headless -eq 1 ]; then
export SELENIUM_HEADLESS=1
fi
# TODO(david-lyle) remove when configuration files for Trove are not loaded
# by default in Horizon
${command_wrapper} python tools/clean_enabled_files.py
if [ -z "$testargs" ]; then
run_tests_all
else
run_tests_subset
fi
}
function run_tests_subset {
project=`echo $testargs | awk -F. '{print $1}'`
${command_wrapper} python $root/manage.py test --settings=$project.test.settings $testopts $testargs
}
function run_tests_all {
echo "Running trove_dashboard application tests"
export NOSE_XUNIT_FILE=trove_dashboard/nosetests.xml
if [ "$NOSE_WITH_HTML_OUTPUT" = '1' ]; then
export NOSE_HTML_OUT_FILE='trove_dashboard_nose_results.html'
fi
if [ $with_coverage -eq 1 ]; then
${command_wrapper} python -m coverage.__main__ erase
coverage_run="python -m coverage.__main__ run -p"
fi
${command_wrapper} ${coverage_run} $root/manage.py test trove_dashboard --settings=trove_dashboard.test.settings $testopts
# get results of the Horizon tests
trove_dashboard_RESULT=$?
if [ $with_coverage -eq 1 ]; then
echo "Generating coverage reports"
${command_wrapper} python -m coverage.__main__ combine
${command_wrapper} python -m coverage.__main__ xml -i --omit='/usr*,setup.py,*egg*,.venv/*'
${command_wrapper} python -m coverage.__main__ html -i --omit='/usr*,setup.py,*egg*,.venv/*' -d reports
fi
# Remove the leftover coverage files from the -p flag earlier.
rm -f .coverage.*
PEP8_RESULT=0
if [ $no_pep8 -eq 0 ] && [ $only_selenium -eq 0 ]; then
run_pep8
PEP8_RESULT=$?
fi
TEST_RESULT=$(($trove_dashboard_RESULT || $PEP8_RESULT))
if [ $TEST_RESULT -eq 0 ]; then
echo "Tests completed successfully."
else
echo "Tests failed."
fi
exit $TEST_RESULT
}
function run_integration_tests {
export INTEGRATION_TESTS=1
if [ $selenium_headless -eq 1 ]; then
export SELENIUM_HEADLESS=1
fi
export HORIZON_INTEGRATION_TESTS_CONFIG_FILE="trove_dashboard/test/integration_tests/horizon.conf"
echo "Running Horizon integration tests..."
if [ -z "$testargs" ]; then
${command_wrapper} nosetests trove_dashboard/test/integration_tests/tests
else
${command_wrapper} nosetests $testargs
fi
exit 0
}
function run_makemessages {
OPTS="-l en --no-obsolete --settings=openstack_dashboard.test.settings"
DASHBOARD_OPTS="--extension=html,txt,csv --ignore=openstack"
echo -n "horizon: "
cd horizon
${command_wrapper} $root/manage.py makemessages $OPTS
HORIZON_PY_RESULT=$?
echo -n "horizon javascript: "
${command_wrapper} $root/manage.py makemessages -d djangojs $OPTS
HORIZON_JS_RESULT=$?
echo -n "openstack_dashboard: "
cd ../openstack_dashboard
${command_wrapper} $root/manage.py makemessages $DASHBOARD_OPTS $OPTS
DASHBOARD_RESULT=$?
cd ..
if [ $check_only -eq 1 ]; then
git checkout -- horizon/locale/en/LC_MESSAGES/django*.po
git checkout -- openstack_dashboard/locale/en/LC_MESSAGES/django.po
fi
exit $(($HORIZON_PY_RESULT || $HORIZON_JS_RESULT || $DASHBOARD_RESULT))
}
function run_compilemessages {
OPTS="--settings=openstack_dashboard.test.settings"
cd horizon
${command_wrapper} $root/manage.py compilemessages $OPTS
HORIZON_PY_RESULT=$?
cd ../openstack_dashboard
${command_wrapper} $root/manage.py compilemessages $OPTS
DASHBOARD_RESULT=$?
cd ..
# English is the source language, so compiled catalogs are unnecessary.
rm -vf horizon/locale/en/LC_MESSAGES/django*.mo
rm -vf openstack_dashboard/locale/en/LC_MESSAGES/django.mo
exit $(($HORIZON_PY_RESULT || $DASHBOARD_RESULT))
}
function run_pseudo {
for lang in $testargs
# Use English po file as the source file/pot file just like real Horizon translations
do
${command_wrapper} $root/tools/pseudo.py openstack_dashboard/locale/en/LC_MESSAGES/django.po openstack_dashboard/locale/$lang/LC_MESSAGES/django.po $lang
${command_wrapper} $root/tools/pseudo.py horizon/locale/en/LC_MESSAGES/django.po horizon/locale/$lang/LC_MESSAGES/django.po $lang
${command_wrapper} $root/tools/pseudo.py horizon/locale/en/LC_MESSAGES/djangojs.po horizon/locale/$lang/LC_MESSAGES/djangojs.po $lang
done
exit $?
}
# ---------PREPARE THE ENVIRONMENT------------ #
# PROCESS ARGUMENTS, OVERRIDE DEFAULTS
for arg in "$@"; do
process_option $arg
done
if [ $quiet -eq 1 ] && [ $never_venv -eq 0 ] && [ $always_venv -eq 0 ]
then
always_venv=1
fi
# If destroy is set, just blow it away and exit.
if [ $destroy -eq 1 ]; then
destroy_venv
exit 0
fi
# Ignore all of this if the -N flag was set
if [ $never_venv -eq 0 ]; then
# Restore previous environment if desired
if [ $restore_env -eq 1 ]; then
restore_environment
fi
# Remove the virtual environment if --force used
if [ $force -eq 1 ]; then
destroy_venv
fi
# Then check if it's up-to-date
environment_check
# Create a backup of the up-to-date environment if desired
if [ $backup_env -eq 1 ]; then
backup_environment
fi
fi
# ---------EXERCISE THE CODE------------ #
# Run management commands
if [ $manage -eq 1 ]; then
run_management_command
exit $?
fi
# Build the docs
if [ $just_docs -eq 1 ]; then
run_sphinx
exit $?
fi
# Update translation files
if [ $makemessages -eq 1 ]; then
run_makemessages
exit $?
fi
# Compile translation files
if [ $compilemessages -eq 1 ]; then
run_compilemessages
exit $?
fi
# Generate Pseudo translation
if [ $pseudo -eq 1 ]; then
run_pseudo
exit $?
fi
# PEP8
if [ $just_pep8 -eq 1 ]; then
run_pep8
exit $?
fi
if [ $just_pep8_changed -eq 1 ]; then
run_pep8_changed
exit $?
fi
# Pylint
if [ $just_pylint -eq 1 ]; then
run_pylint
exit $?
fi
# Tab checker
if [ $just_tabs -eq 1 ]; then
tab_check
exit $?
fi
# Integration tests
if [ $integration -eq 1 ]; then
run_integration_tests
exit $?
fi
# Django development server
if [ $runserver -eq 1 ]; then
run_server
exit $?
fi
# Full test suite
run_tests || exit
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5414338
trove-dashboard-13.1.0.dev21/setup.cfg 0000644 0001750 0001750 00000001436 00000000000 017712 0 ustar 00corey corey 0000000 0000000 [metadata]
name = trove-dashboard
summary = Trove Management Dashboard
description-file =
README.rst
author = OpenStack
author-email = openstack-discuss@lists.openstack.org
home-page = https://docs.openstack.org/trove/latest
python-requires = >=3.6
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
Intended Audience :: System Administrators
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
[files]
packages =
trove_dashboard
[egg_info]
tag_build =
tag_date = 0
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/setup.py 0000644 0001750 0001750 00000001267 00000000000 017605 0 ustar 00corey corey 0000000 0000000 # Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# 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 setuptools
setuptools.setup(
setup_requires=['pbr>=1.8'],
pbr=True)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/test-requirements.txt 0000644 0001750 0001750 00000001060 00000000000 022323 0 ustar 00corey corey 0000000 0000000 # The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
hacking>=1.1.0,<1.2.0 # Apache-2.0
coverage>=3.6
ddt>=0.7.0
mock>=1.2
python-subunit>=0.0.18
selenium>=2.50.1 # Apache-2.0
sphinx>=1.6.2 # BSD
openstackdocstheme>=1.17.0 # Apache-2.0
testrepository>=0.0.18
testscenarios>=0.4
testtools>=1.4.0
# This also needs xvfb library installed on your OS
xvfbwrapper>=0.1.3 #license: MIT
reno>=1.6.2 # Apache2
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.501436
trove-dashboard-13.1.0.dev21/tools/ 0000755 0001750 0001750 00000000000 00000000000 017225 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/tools/clean_enabled_files.py 0000644 0001750 0001750 00000003222 00000000000 023514 0 ustar 00corey corey 0000000 0000000 # 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.
# This file is temporarily needed to allow the conversion from integrated
# Sahara content in Horizon to plugin based content. Horizon currently defines
# the same module name data_processing and imports it by default. This utility
# removes the configuration files that are responsible for importing the old
# version of the module. Only Sahara content configuration files are effected
# in Horizon.
import os
from openstack_dashboard import enabled as local_enabled
from trove_dashboard import enabled
ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
WITH_VENV = os.path.join(ROOT, 'tools', 'with_venv.sh')
def main():
src_path = os.path.dirname(enabled.__file__)
dest_path = os.path.dirname(local_enabled.__file__)
src_files = os.listdir(src_path)
for file in src_files:
# skip the __init__.py or bad things happen
if file == "__init__.py":
continue
file_path = os.path.join(dest_path, file)
if os.path.isfile(file_path):
print ("removing ", file_path)
os.remove(file_path)
if __name__ == '__main__':
main()
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/tools/install_venv.py 0000644 0001750 0001750 00000012307 00000000000 022306 0 ustar 00corey corey 0000000 0000000 # Copyright 2012 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# All Rights Reserved.
#
# Copyright 2012 OpenStack, LLC
#
# Copyright 2012 Nebula, Inc.
#
# 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.
"""
Installation script for the OpenStack Dashboard development virtualenv.
"""
import os
import subprocess
import sys
ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
VENV = os.path.join(ROOT, '.venv')
WITH_VENV = os.path.join(ROOT, 'tools', 'with_venv.sh')
PIP_REQUIRES = os.path.join(ROOT, 'requirements.txt')
TEST_REQUIRES = os.path.join(ROOT, 'test-requirements.txt')
PIP_INSTALL_WRAPPER = os.path.join(ROOT, 'tools', 'pip_install.sh')
def die(message, *args):
print >> sys.stderr, message % args
sys.exit(1)
def run_command(cmd, redirect_output=True, check_exit_code=True, cwd=ROOT,
die_message=None):
"""
Runs a command in an out-of-process shell, returning the
output of that command. Working directory is ROOT.
"""
if redirect_output:
stdout = subprocess.PIPE
else:
stdout = None
proc = subprocess.Popen(cmd, cwd=cwd, stdout=stdout)
output = proc.communicate()[0]
if check_exit_code and proc.returncode != 0:
if die_message is None:
die('Command "%s" failed.\n%s', ' '.join(cmd), output)
else:
die(die_message)
return output
HAS_EASY_INSTALL = bool(run_command(['which', 'easy_install'],
check_exit_code=False).strip())
HAS_VIRTUALENV = bool(run_command(['which', 'virtualenv'],
check_exit_code=False).strip())
def check_dependencies():
"""Make sure virtualenv is in the path."""
print 'Checking dependencies...'
if not HAS_VIRTUALENV:
print 'Virtual environment not found.'
# Try installing it via easy_install...
if HAS_EASY_INSTALL:
print 'Installing virtualenv via easy_install...',
run_command(['easy_install', 'virtualenv'],
die_message='easy_install failed to install virtualenv'
'\ndevelopment requires virtualenv, please'
' install it using your favorite tool')
if not run_command(['which', 'virtualenv']):
die('ERROR: virtualenv not found in path.\n\ndevelopment '
' requires virtualenv, please install it using your'
' favorite package management tool and ensure'
' virtualenv is in your path')
print 'virtualenv installation done.'
else:
die('easy_install not found.\n\nInstall easy_install'
' (python-setuptools in ubuntu) or virtualenv by hand,'
' then rerun.')
print 'dependency check done.'
def create_virtualenv(venv=VENV):
"""Creates the virtual environment and installs PIP only into the
virtual environment
"""
print 'Creating venv...',
run_command(['virtualenv', '-q', '--no-site-packages', VENV])
print 'done.'
print 'Installing pip in virtualenv...',
if not run_command([WITH_VENV, 'easy_install', 'pip']).strip():
die("Failed to install pip.")
print 'done.'
print 'Installing distribute in virtualenv...'
pip_install('distribute>=0.6.24')
print 'done.'
def pip_install(*args):
args = [WITH_VENV, 'pip', 'install', '--upgrade'] + list(args)
run_command(args, redirect_output=False)
def pip_install_with_horizon(*args):
args = [WITH_VENV, PIP_INSTALL_WRAPPER, 'unconstrained'] + list(args)
run_command(args, redirect_output=False)
def install_dependencies(venv=VENV):
print "Installing dependencies..."
print "(This may take several minutes, don't panic)"
pip_install_with_horizon('-r', TEST_REQUIRES)
pip_install_with_horizon('-r', PIP_REQUIRES)
# Tell the virtual env how to "import dashboard"
py = 'python%d.%d' % (sys.version_info[0], sys.version_info[1])
pthfile = os.path.join(venv, "lib", py, "site-packages", "dashboard.pth")
f = open(pthfile, 'w')
f.write("%s\n" % ROOT)
def install_horizon():
print 'Installing horizon module in development mode...'
run_command([WITH_VENV, 'python', 'setup.py', 'develop'], cwd=ROOT)
def print_summary():
summary = """
Horizon development environment setup is complete.
To activate the virtualenv for the extent of your current shell session you
can run:
$ source .venv/bin/activate
"""
print summary
def main():
check_dependencies()
create_virtualenv()
install_dependencies()
install_horizon()
print_summary()
if __name__ == '__main__':
main()
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/tools/with_venv.sh 0000755 0001750 0001750 00000000325 00000000000 021575 0 ustar 00corey corey 0000000 0000000 #!/bin/bash
TOOLS_PATH=${TOOLS_PATH:-$(dirname $0)}
VENV_PATH=${VENV_PATH:-${TOOLS_PATH}}
VENV_DIR=${VENV_NAME:-/../.venv}
TOOLS=${TOOLS_PATH}
VENV=${VENV:-${VENV_PATH}/${VENV_DIR}}
. ${VENV}/bin/activate && "$@"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/tox.ini 0000644 0001750 0001750 00000002527 00000000000 017406 0 ustar 00corey corey 0000000 0000000 [tox]
minversion = 3.1.1
envlist = py37,pep8
skipsdist = True
ignore_basepython_conflict = True
[testenv]
usedevelop = True
basepython = python3
install_command = pip install {opts} {packages}
setenv =
VIRTUAL_ENV={envdir}
deps = -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands =
/bin/bash run_tests.sh -N --no-pep8 {posargs}
[testenv:pep8]
commands = flake8
[testenv:venv]
commands = {posargs}
[testenv:integration]
commands = /bin/bash run_tests.sh -N --integration --selenium-headless {posargs}
[testenv:cover]
commands = python setup.py testr --coverage --testr-args={posargs}
[testenv:docs]
commands =
sphinx-build -a -E -W -b html doc/source doc/build/html
[testenv:debug]
commands = oslo_debug_helper {posargs}
[testenv:releasenotes]
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[flake8]
show-source = True
# F405 TEMPLATES may be undefined, or defined from star imports
# (because it is not easy to avoid this in openstack_dashboard.test.settings)
# H405 multi line docstring summary not separated with an empty line
ignore = F405,H405
builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,.ropeproject,tools,releasenotes,.tmp
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.501436
trove-dashboard-13.1.0.dev21/trove_dashboard/ 0000755 0001750 0001750 00000000000 00000000000 021233 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/__init__.py 0000644 0001750 0001750 00000000000 00000000000 023332 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.501436
trove-dashboard-13.1.0.dev21/trove_dashboard/api/ 0000755 0001750 0001750 00000000000 00000000000 022004 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/api/__init__.py 0000644 0001750 0001750 00000000101 00000000000 024105 0 ustar 00corey corey 0000000 0000000 from trove_dashboard.api import trove
__all__ = [
"trove"
]
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.501436
trove-dashboard-13.1.0.dev21/trove_dashboard/api/rest/ 0000755 0001750 0001750 00000000000 00000000000 022761 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/api/rest/__init__.py 0000644 0001750 0001750 00000001217 00000000000 025073 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 IBM Corp.
#
# 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 REST API modules here
from trove_dashboard.api.rest import trove # noqa
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/api/rest/trove.py 0000644 0001750 0001750 00000005257 00000000000 024503 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 IBM Corp.
#
# 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.
from django.views import generic
from trove_dashboard.api import trove
from openstack_dashboard.api.rest import urls
from openstack_dashboard.api.rest import utils as rest_utils
@urls.register
class Backup(generic.View):
"""API for retrieving information about a single backup.
"""
url_regex = r'trove_dashboard/backups/(?P[^/]+)$'
@rest_utils.ajax()
def get(self, request, backup_id):
"""Get a specific backup.
"""
return trove.backup_get(request, backup_id).to_dict()
@urls.register
class Backups(generic.View):
"""API for backups.
"""
url_regex = r'trove/backups/$'
@rest_utils.ajax()
def get(self, request):
"""Get a list of the Backups.
The returned result is an object with property 'items' and each
item under this is a backup.
"""
result = trove.backup_list(request)
backups = []
for b in result:
instance = trove.instance_get(request, b.instance_id)
backups.append({'id': b.id,
'name': b.name,
'datastore': b.datastore.get('type'),
'datastoreversion': b.datastore.get('version'),
'created': b.created,
'database': instance.name,
'incremental': bool(b.parent_id),
'status': b.status
})
return backups
@rest_utils.ajax(data_required=True)
def delete(self, request):
"""Delete one or more backup by name.
Returns HTTP 204 (no content) on successful deletion.
"""
for backup_id in request.DATA:
trove.backup_delete(request, backup_id)
@rest_utils.ajax(data_required=True)
def create(self, request):
"""Create a new backup.
Returns the new backup object on success.
"""
new_backup = trove.backup_create(request, **request.DATA)
return rest_utils.CreatedResponse(
'/api/messaging/backups/%s' % new_backup.name,
new_backup.to_dict())
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/api/trove.py 0000644 0001750 0001750 00000032406 00000000000 023522 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting.
#
# 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.
from django.conf import settings
from troveclient.v1 import client
from openstack_dashboard.api import base
from oslo_log import log as logging
from horizon.utils import functions as utils
from horizon.utils.memoized import memoized # noqa
LOG = logging.getLogger(__name__)
@memoized
def troveclient(request):
insecure = getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False)
cacert = getattr(settings, 'OPENSTACK_SSL_CACERT', None)
trove_url = base.url_for(request, 'database')
c = client.Client(request.user.username,
request.user.token.id,
project_id=request.user.project_id,
auth_url=trove_url,
insecure=insecure,
cacert=cacert,
http_log_debug=settings.DEBUG)
c.client.auth_token = request.user.token.id
c.client.management_url = trove_url
return c
def cluster_list(request, marker=None):
page_size = utils.get_page_size(request)
return troveclient(request).clusters.list(limit=page_size, marker=marker)
def cluster_get(request, cluster_id):
return troveclient(request).clusters.get(cluster_id)
def cluster_delete(request, cluster_id):
return troveclient(request).clusters.delete(cluster_id)
def cluster_create(request, name, volume, flavor, num_instances,
datastore, datastore_version,
nics=None, root_password=None, locality=None):
instances = []
for i in range(num_instances):
instance = {}
instance["flavorRef"] = flavor
if volume > 0:
instance["volume"] = {'size': volume}
if nics:
instance["nics"] = [{"net-id": nics}]
instances.append(instance)
# TODO(saurabhs): vertica needs root password on cluster create
return troveclient(request).clusters.create(
name,
datastore,
datastore_version,
instances=instances,
locality=locality)
def cluster_grow(request, cluster_id, new_instances):
instances = []
for new_instance in new_instances:
instance = {}
instance["flavorRef"] = new_instance.flavor_id
if new_instance.volume > 0:
instance["volume"] = {'size': new_instance.volume}
if new_instance.name:
instance["name"] = new_instance.name
if new_instance.type:
instance["type"] = new_instance.type
if new_instance.related_to:
instance["related_to"] = new_instance.related_to
if new_instance.nics:
instance["nics"] = [{'net-id': new_instance.nics}]
instances.append(instance)
return troveclient(request).clusters.grow(cluster_id, instances)
def cluster_shrink(request, cluster_id, instances):
return troveclient(request).clusters.shrink(cluster_id, instances)
def create_cluster_root(request, cluster_id, password):
# It appears the code below depends on this trove change
# https://review.opendev.org/#/c/166954/. Comment out when that
# change merges.
# return troveclient(request).cluster.reset_root_password(cluster_id)
troveclient(request).root.create_cluster_root(cluster_id, password)
def instance_list(request, marker=None):
page_size = utils.get_page_size(request)
return troveclient(request).instances.list(limit=page_size, marker=marker)
def instance_list_all(request):
instances = instance_list(request)
marker = instances.next
while marker:
temp_instances = instance_list(request, marker=marker)
marker = temp_instances.next
for instance in temp_instances:
instances.append(instance)
instances.links = temp_instances.links
instances.next = None
return instances
def instance_get(request, instance_id):
return troveclient(request).instances.get(instance_id)
def instance_delete(request, instance_id):
return troveclient(request).instances.delete(instance_id)
def instance_create(request, name, volume, flavor, databases=None,
users=None, restore_point=None, nics=None,
datastore=None, datastore_version=None,
replica_of=None, replica_count=None,
volume_type=None, configuration=None, locality=None,
availability_zone=None):
# TODO(dklyle): adding conditional to support trove without volume
# support for now until API supports checking for volume support
if volume > 0:
volume_params = {'size': volume}
if volume_type:
volume_params['type'] = volume_type
else:
volume_params = None
return troveclient(request).instances.create(
name,
flavor,
volume=volume_params,
databases=databases,
users=users,
restorePoint=restore_point,
nics=nics,
datastore=datastore,
datastore_version=datastore_version,
replica_of=replica_of,
replica_count=replica_count,
configuration=configuration,
locality=locality,
availability_zone=availability_zone)
def instance_resize_volume(request, instance_id, size):
return troveclient(request).instances.resize_volume(instance_id, size)
def instance_resize(request, instance_id, flavor_id):
return troveclient(request).instances.resize_instance(instance_id,
flavor_id)
def instance_backups(request, instance_id):
return troveclient(request).instances.backups(instance_id)
def instance_restart(request, instance_id):
return troveclient(request).instances.restart(instance_id)
def instance_detach_replica(request, instance_id):
return troveclient(request).instances.edit(instance_id,
detach_replica_source=True)
def promote_to_replica_source(request, instance_id):
return troveclient(request).instances.promote_to_replica_source(
instance_id)
def eject_replica_source(request, instance_id):
return troveclient(request).instances.eject_replica_source(instance_id)
def instance_attach_configuration(request, instance_id, configuration):
return troveclient(request).instances.modify(instance_id,
configuration=configuration)
def instance_detach_configuration(request, instance_id):
return troveclient(request).instances.modify(instance_id)
def database_list(request, instance_id):
return troveclient(request).databases.list(instance_id)
def database_create(request, instance_id, db_name, character_set=None,
collation=None):
database = {'name': db_name}
if collation:
database['collate'] = collation
if character_set:
database['character_set'] = character_set
return troveclient(request).databases.create(instance_id, [database])
def database_delete(request, instance_id, db_name):
return troveclient(request).databases.delete(instance_id, db_name)
def backup_list(request):
return troveclient(request).backups.list()
def backup_get(request, backup_id):
return troveclient(request).backups.get(backup_id)
def backup_delete(request, backup_id):
return troveclient(request).backups.delete(backup_id)
def backup_create(request, name, instance_id, description=None,
parent_id=None):
return troveclient(request).backups.create(name, instance_id,
description, parent_id)
def flavor_list(request):
return troveclient(request).flavors.list()
def datastore_flavors(request, datastore_name=None,
datastore_version=None):
# if datastore info is available then get datastore specific flavors
if datastore_name and datastore_version:
try:
return troveclient(request).flavors.\
list_datastore_version_associated_flavors(datastore_name,
datastore_version)
except Exception:
LOG.warning("Failed to retrieve datastore specific flavors")
return flavor_list(request)
def flavor_get(request, flavor_id):
return troveclient(request).flavors.get(flavor_id)
def root_enable(request, instance_ids):
username, password = troveclient(request).root.create(instance_ids[0])
return username, password
def root_show(request, instance_id):
return troveclient(request).root.is_root_enabled(instance_id)
def root_disable(request, instance_id):
return troveclient(request).root.delete(instance_id)
def users_list(request, instance_id):
return troveclient(request).users.list(instance_id)
def user_create(request, instance_id, username, password,
host=None, databases=[]):
user = {'name': username, 'password': password, 'databases': databases}
if host:
user['host'] = host
return troveclient(request).users.create(instance_id, [user])
def user_delete(request, instance_id, user, host=None):
return troveclient(request).users.delete(instance_id, user, hostname=host)
def user_update_attributes(request, instance_id, name, host=None,
new_name=None, new_password=None, new_host=None):
new_attributes = {}
if new_name:
new_attributes['name'] = new_name
if new_password:
new_attributes['password'] = new_password
if new_host:
new_attributes['host'] = new_host
return troveclient(request).users.update_attributes(
instance_id, name, newuserattr=new_attributes, hostname=host)
def user_list_access(request, instance_id, username, host=None):
return troveclient(request).users.list_access(
instance_id, username, hostname=host)
def user_grant_access(request, instance_id, username, databases, host=None):
return troveclient(request).users.grant(
instance_id, username, databases, hostname=host)
def user_revoke_access(request, instance_id, username, database, host=None):
return troveclient(request).users.revoke(
instance_id, username, database, hostname=host)
def user_show_access(request, instance_id, username, host=None):
return troveclient(request).users.list_access(
instance_id, username, hostname=host)
def datastore_list(request):
return troveclient(request).datastores.list()
def datastore_version_list(request, datastore):
return troveclient(request).datastore_versions.list(datastore)
def log_list(request, instance_id):
return troveclient(request).instances.log_list(instance_id)
def log_enable(request, instance_id, log_name):
return troveclient(request).instances.log_enable(instance_id, log_name)
def log_disable(request, instance_id, log_name):
return troveclient(request).instances.log_disable(instance_id, log_name)
def log_publish(request, instance_id, log_name):
return troveclient(request).instances.log_publish(instance_id, log_name)
def log_discard(request, instance_id, log_name):
return troveclient(request).instances.log_discard(instance_id, log_name)
def log_tail(request, instance_id, log_name, publish, lines, swift=None):
return troveclient(request).instances.log_generator(instance_id,
log_name,
publish=publish,
lines=lines,
swift=swift)
def configuration_list(request):
return troveclient(request).configurations.list()
def configuration_get(request, group_id):
return troveclient(request).configurations.get(group_id)
def configuration_parameters_list(request, datastore, datastore_version):
return troveclient(request).configuration_parameters.parameters(
datastore, datastore_version)
def configuration_create(request,
name,
values,
description=None,
datastore=None,
datastore_version=None):
return troveclient(request).configurations.create(name,
values,
description,
datastore,
datastore_version)
def configuration_delete(request, group_id):
return troveclient(request).configurations.delete(group_id)
def configuration_instances(request, group_id):
return troveclient(request).configurations.instances(group_id)
def configuration_update(request, group_id, values):
return troveclient(request).configurations.update(group_id, values)
def configuration_default(request, instance_id):
return troveclient(request).instances.configuration(instance_id)
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.501436
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ 0000755 0001750 0001750 00000000000 00000000000 022705 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/__init__.py 0000644 0001750 0001750 00000000000 00000000000 025004 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.505436
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/ 0000755 0001750 0001750 00000000000 00000000000 026161 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/__init__.py 0000644 0001750 0001750 00000000000 00000000000 030260 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/panel.py 0000644 0001750 0001750 00000001714 00000000000 027635 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
from django.utils.translation import ugettext_lazy as _
import horizon
from openstack_dashboard.dashboards.project import dashboard
class Backups(horizon.Panel):
name = _("Backups")
slug = 'database_backups'
permissions = ('openstack.services.database',
'openstack.services.object-store',)
dashboard.Project.register(Backups)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/tables.py 0000644 0001750 0001750 00000014300 00000000000 030003 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
from django.conf import settings
from django.template import defaultfilters as d_filters
from django.urls import reverse
from django.utils.translation import pgettext_lazy
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
from horizon import tables
from horizon.utils import filters
from trove_dashboard import api
STATUS_CHOICES = (
("BUILDING", None),
("COMPLETED", True),
("DELETE_FAILED", False),
("FAILED", False),
("NEW", None),
("SAVING", None),
)
STATUS_DISPLAY_CHOICES = (
("BUILDING", pgettext_lazy("Current status of a Database Backup",
u"Building")),
("COMPLETED", pgettext_lazy("Current status of a Database Backup",
u"Completed")),
("DELETE_FAILED", pgettext_lazy("Current status of a Database Backup",
u"Delete Failed")),
("FAILED", pgettext_lazy("Current status of a Database Backup",
u"Failed")),
("NEW", pgettext_lazy("Current status of a Database Backup",
u"New")),
("SAVING", pgettext_lazy("Current status of a Database Backup",
u"Saving")),
)
class LaunchLink(tables.LinkAction):
name = "create"
verbose_name = _("Create Backup")
url = "horizon:project:database_backups:create"
classes = ("ajax-modal", "btn-create")
icon = "camera"
class RestoreLink(tables.LinkAction):
name = "restore"
verbose_name = _("Restore Backup")
url = "horizon:project:databases:launch"
classes = ("ajax-modal",)
icon = "cloud-upload"
def allowed(self, request, backup=None):
return backup.status == 'COMPLETED'
def get_link_url(self, datum):
url = reverse(self.url)
return url + '?backup=%s' % datum.id
class DownloadBackup(tables.LinkAction):
name = "download"
verbose_name = _("Download Backup")
url = 'horizon:project:containers:object_download'
classes = ("btn-download",)
def get_link_url(self, datum):
ref = datum.locationRef.split('/')
container_name = ref[5]
object_path = '/'.join(ref[6:])
return reverse(self.url,
kwargs={'container_name': container_name,
'object_path': object_path})
def allowed(self, request, datum):
legacy_swift_panel_enabled = False
if ('swift_panel' in settings.HORIZON_CONFIG and
settings.HORIZON_CONFIG['swift_panel'] == 'legacy' and
datum.status == 'COMPLETED'):
legacy_swift_panel_enabled = True
return legacy_swift_panel_enabled
class DeleteBackup(tables.DeleteAction):
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Delete Backup",
u"Delete Backups",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Deleted Backup",
u"Deleted Backups",
count
)
def delete(self, request, obj_id):
api.trove.backup_delete(request, obj_id)
class UpdateRow(tables.Row):
ajax = True
def get_data(self, request, backup_id):
backup = api.trove.backup_get(request, backup_id)
try:
backup.instance = api.trove.instance_get(request,
backup.instance_id)
except Exception:
pass
return backup
def db_link(obj):
if not hasattr(obj, 'instance'):
return
if hasattr(obj.instance, 'name'):
return reverse(
'horizon:project:databases:detail',
kwargs={'instance_id': obj.instance_id})
def db_name(obj):
if not hasattr(obj, 'instance') or not hasattr(obj.instance, 'name'):
return obj.instance_id
return obj.instance.name
def get_datastore(obj):
if hasattr(obj, "datastore"):
return obj.datastore["type"]
return _("Not available")
def get_datastore_version(obj):
if hasattr(obj, "datastore"):
return obj.datastore["version"]
return _("Not available")
def is_incremental(obj):
return hasattr(obj, 'parent_id') and obj.parent_id is not None
class BackupsTable(tables.DataTable):
name = tables.Column("name",
link="horizon:project:database_backups:detail",
verbose_name=_("Name"))
datastore = tables.Column(get_datastore,
verbose_name=_("Datastore"))
datastore_version = tables.Column(get_datastore_version,
verbose_name=_("Datastore Version"))
created = tables.Column("created", verbose_name=_("Created"),
filters=[filters.parse_isotime])
instance = tables.Column(db_name, link=db_link,
verbose_name=_("Database"))
incremental = tables.Column(is_incremental,
verbose_name=_("Incremental"),
filters=(d_filters.yesno,
d_filters.capfirst))
status = tables.Column("status",
verbose_name=_("Status"),
status=True,
status_choices=STATUS_CHOICES,
display_choices=STATUS_DISPLAY_CHOICES)
class Meta(object):
name = "backups"
verbose_name = _("Backups")
status_columns = ["status"]
row_class = UpdateRow
table_actions = (LaunchLink, DeleteBackup)
row_actions = (RestoreLink, DownloadBackup, DeleteBackup)
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/templates/ 0000755 0001750 0001750 00000000000 00000000000 030157 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.505436
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/templates/database_backups/ 0000755 0001750 0001750 00000000000 00000000000 033433 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000232 00000000000 011452 x ustar 00 0000000 0000000 132 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/templates/database_backups/_backup_details_help.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/templates/database_backups/_ba0000644 0001750 0001750 00000000545 00000000000 034103 0 ustar 00corey corey 0000000 0000000 {% load i18n %}
{% blocktrans trimmed %}Specify the details for the database backup.{% endblocktrans %}
{% blocktrans trimmed %}You can perform an incremental backup by specifying a parent backup. However, not all databases support incremental backups in which case this operation will result in an error.{% endblocktrans %}
{% url 'horizon:project:database_backups:detail' backup.parent.id as parent_url %}
{{ backup.parent.name }}
{% endif %}
{% if instance %}
{% trans "Database Info" %}
{% trans "Name" %}
{{ instance.name }}
{% trans "ID" %}
{% url 'horizon:project:databases:detail' instance.id as instance_url %}
{{ instance.id }}
{% trans "Status" %}
{{ instance.status|title }}
{% endif %}
{% endblock %}
././@PaxHeader 0000000 0000000 0000000 00000000213 00000000000 011451 x ustar 00 0000000 0000000 117 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/templates/database_backups/index.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/templates/database_backups/ind0000644 0001750 0001750 00000000236 00000000000 034131 0 ustar 00corey corey 0000000 0000000 {% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Database Backups" %}{% endblock %}
{% block main %}
{{ table.render }}
{% endblock %}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/tests.py 0000644 0001750 0001750 00000025422 00000000000 027702 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Mirantis Inc.
#
# 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.
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
import mock
from openstack_auth import policy
from openstack_dashboard import api as dash_api
from troveclient import common
from trove_dashboard import api
from trove_dashboard.content.databases.workflows import create_instance
from trove_dashboard.test import helpers as test
from trove_dashboard.utils import common as common_utils
INDEX_URL = reverse('horizon:project:database_backups:index')
BACKUP_URL = reverse('horizon:project:database_backups:create')
DETAILS_URL = reverse('horizon:project:database_backups:detail', args=['id'])
RESTORE_URL = reverse('horizon:project:databases:launch')
class DatabasesBackupsTests(test.TestCase):
@test.create_mocks({api.trove: ('backup_list', 'instance_get')})
def test_index(self):
self.mock_backup_list.return_value = self.database_backups.list()
self.mock_instance_get.return_value = self.databases.first()
res = self.client.get(INDEX_URL)
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_instance_get, 3,
mock.call(test.IsHttpRequest(), test.IsA(str)))
self.assertTemplateUsed(res, 'project/database_backups/index.html')
@test.create_mocks({api.trove: ('backup_list',)})
def test_index_exception(self):
self.mock_backup_list.side_effect = self.exceptions.trove
res = self.client.get(INDEX_URL)
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.assertTemplateUsed(
res, 'project/database_backups/index.html')
self.assertEqual(res.status_code, 200)
self.assertMessageCount(res, error=1)
@test.create_mocks({
api.trove: ('instance_list', 'backup_list', 'backup_create'),
policy: ('check',),
})
def test_launch_backup(self):
self.mock_check.return_value = True
self.mock_instance_list.return_value = self.databases.list()
self.mock_backup_list.return_value = self.database_backups.list()
database = self.databases.first()
backupName = "NewBackup"
backupDesc = "Backup Description"
post = {
'name': backupName,
'instance': database.id,
'description': backupDesc,
'parent': ""
}
res = self.client.post(BACKUP_URL, post)
self.mock_check.assert_called_once_with((), test.IsHttpRequest())
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_backup_create.assert_called_once_with(
test.IsHttpRequest(),
backupName,
database.id,
backupDesc,
"")
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('instance_list', 'backup_list'),
policy: ('check',),
})
def test_launch_backup_exception(self):
self.mock_check.return_value = True
self.mock_instance_list.side_effect = self.exceptions.trove
self.mock_backup_list.return_value = self.database_backups.list()
res = self.client.get(BACKUP_URL)
self.mock_check.assert_called_once_with((), test.IsHttpRequest())
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.assertMessageCount(res, error=1)
self.assertTemplateUsed(res,
'project/database_backups/backup.html')
@test.create_mocks({
api.trove: ('instance_list', 'backup_list', 'backup_create'),
policy: ('check',),
})
def test_launch_backup_incr(self):
self.mock_check.return_value = True
self.mock_instance_list.return_value = self.databases.list()
self.mock_backup_list.return_value = self.database_backups.list()
database = self.databases.first()
backupName = "NewBackup"
backupDesc = "Backup Description"
backupParent = self.database_backups.first()
post = {
'name': backupName,
'instance': database.id,
'description': backupDesc,
'parent': backupParent.id,
}
res = self.client.post(BACKUP_URL, post)
self.mock_check.assert_called_once_with((), test.IsHttpRequest())
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_backup_create.assert_called_once_with(
test.IsHttpRequest(),
backupName,
database.id,
backupDesc,
backupParent.id)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({api.trove: ('backup_get', 'instance_get')})
def test_detail_backup(self):
self.mock_backup_get.return_value = self.database_backups.first()
self.mock_instance_get.return_value = self.databases.first()
res = self.client.get(DETAILS_URL)
self.mock_backup_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.assertTemplateUsed(res,
'project/database_backups/details.html')
@test.create_mocks({api.trove: ('backup_get',)})
def test_detail_backup_notfound(self):
self.mock_backup_get.side_effect = self.exceptions.trove
res = self.client.get(DETAILS_URL)
self.mock_backup_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({api.trove: ('backup_get', 'instance_get')})
def test_detail_backup_incr(self):
incr_backup = self.database_backups.list()[2]
parent_backup = self.database_backups.list()[1]
self.mock_backup_get.side_effect = [incr_backup, parent_backup]
self.mock_instance_get.return_value = self.databases.list()[1]
url = reverse('horizon:project:database_backups:detail',
args=[incr_backup.id])
res = self.client.get(url)
self.assertEqual(
[mock.call(test.IsHttpRequest(), test.IsA(str)),
mock.call(test.IsHttpRequest(), incr_backup.parent_id)],
self.mock_backup_get.call_args_list)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.assertTemplateUsed(res, 'project/database_backups/details.html')
@test.create_mocks({
api.trove: ('backup_get', 'backup_list', 'configuration_list',
'datastore_flavors', 'datastore_list',
'datastore_version_list', 'instance_list'),
dash_api.cinder: ('volume_type_list',),
dash_api.neutron: ('network_list',),
dash_api.nova: ('availability_zone_list',),
policy: ('check',),
})
def test_restore_backup(self):
backup = self.database_backups.first()
self.mock_check.return_value = True
self.mock_backup_get.return_value = self.database_backups.first()
self.mock_backup_list.return_value = self.database_backups.list()
self.mock_configuration_list.return_value = (
self.database_configurations.list())
self.mock_datastore_flavors.return_value = self.flavors.list()
self.mock_datastore_list.return_value = self.datastores.list()
self.mock_datastore_version_list.return_value = (
self.datastore_versions.list())
self.mock_instance_list.return_value = (
common.Paginated(self.databases.list()))
self.mock_volume_type_list.return_vlue = []
self.mock_network_list.return_value = self.networks.list()[:1]
self.mock_availability_zone_list.return_value = (
self.availability_zones.list())
url = RESTORE_URL + '?backup=%s' % self.database_backups.first().id
res = self.client.get(url)
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_check, 4, mock.call((), test.IsHttpRequest()))
self.mock_backup_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_configuration_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_datastore_flavors.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str), test.IsA(str))
self.mock_datastore_list.assert_called_once_with(test.IsHttpRequest())
self.mock_datastore_version_list.assert_called_once_with(
test.IsHttpRequest(), backup.datastore['type'])
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_volume_type_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_network_list.assert_any_call(
test.IsHttpRequest(), tenant_id=self.tenant.id, shared=False)
self.mock_availability_zone_list.assert_called_once_with(
test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/launch.html')
set_instance_detail_step = \
[step for step in res.context_data['workflow'].steps
if isinstance(step, create_instance.SetInstanceDetails)][0]
fields = set_instance_detail_step.action.fields
self.assertTrue(len(fields['datastore'].choices), 1)
text = 'mysql - 5.6'
choice = fields['datastore'].choices[0]
self.assertTrue(choice[0], common_utils.hexlify(text))
self.assertTrue(choice[1], text)
advanced_step = [step for step in res.context_data['workflow'].steps
if isinstance(step, create_instance.Advanced)][0]
fields = advanced_step.action.fields
self.assertTrue(len(fields['initial_state'].choices), 1)
choice = fields['initial_state'].choices[0]
self.assertTrue(choice[0], 'backup')
self.assertTrue(choice[1], _('Restore from Backup'))
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/urls.py 0000644 0001750 0001750 00000001644 00000000000 027525 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
from django.conf.urls import url
from trove_dashboard.content.database_backups import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create$', views.BackupView.as_view(), name='create'),
url(r'^(?P[^/]+)/$', views.DetailView.as_view(),
name='detail'),
]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/views.py 0000644 0001750 0001750 00000010334 00000000000 027671 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
"""
Views for displaying database backups.
"""
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import tables as horizon_tables
from horizon.utils import filters
from horizon import views as horizon_views
from horizon import workflows as horizon_workflows
from trove_dashboard import api
from trove_dashboard.content.database_backups import tables
from trove_dashboard.content.database_backups \
import workflows
class IndexView(horizon_tables.DataTableView):
table_class = tables.BackupsTable
template_name = 'project/database_backups/index.html'
page_title = _("Backups")
def _get_extra_data(self, backup):
"""Apply extra info to the backup."""
instance_id = backup.instance_id
# TODO(rdopieralski) It's not clear where this attribute is supposed
# to come from. At first glance it looks like it will always be {}.
if not hasattr(self, '_instances'):
self._instances = {}
instance = self._instances.get(instance_id)
if instance is None:
try:
instance = api.trove.instance_get(self.request, instance_id)
except Exception:
instance = _('Not Found')
backup.instance = instance
return backup
def get_data(self):
# TODO(rmyers) Add pagination support after it is available
# https://blueprints.launchpad.net/trove/+spec/paginate-backup-list
try:
backups = api.trove.backup_list(self.request)
backups = map(self._get_extra_data, backups)
except Exception:
backups = []
msg = _('Error getting database backup list.')
exceptions.handle(self.request, msg)
return backups
class BackupView(horizon_workflows.WorkflowView):
workflow_class = workflows.CreateBackup
template_name = "project/database_backups/backup.html"
page_title = _("Backup Database")
def get_context_data(self, **kwargs):
context = super(BackupView, self).get_context_data(**kwargs)
context["instance_id"] = kwargs.get("instance_id")
self._instance = context['instance_id']
return context
class DetailView(horizon_views.APIView):
template_name = "project/database_backups/details.html"
page_title = _("Backup Details: {{ backup.name }}")
def get_data(self, request, context, *args, **kwargs):
backup_id = kwargs.get("backup_id")
try:
backup = api.trove.backup_get(request, backup_id)
created_at = filters.parse_isotime(backup.created)
updated_at = filters.parse_isotime(backup.updated)
backup.duration = updated_at - created_at
except Exception:
redirect = reverse('horizon:project:database_backups:index')
msg = _('Unable to retrieve details for backup: %s') % backup_id
exceptions.handle(self.request, msg, redirect=redirect)
try:
if(hasattr(backup, 'parent_id') and backup.parent_id is not None):
backup.parent = api.trove.backup_get(request, backup.parent_id)
except Exception:
redirect = reverse('horizon:project:database_backups:index')
msg = (_('Unable to retrieve details for parent backup: %s')
% backup.parent_id)
exceptions.handle(self.request, msg, redirect=redirect)
try:
instance = api.trove.instance_get(request, backup.instance_id)
except Exception:
instance = None
context['backup'] = backup
context['instance'] = instance
return context
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.505436
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/workflows/ 0000755 0001750 0001750 00000000000 00000000000 030216 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/workflows/__init__.py 0000644 0001750 0001750 00000000146 00000000000 032330 0 ustar 00corey corey 0000000 0000000 # Importing non-modules that are not used explicitly
from .create_backup import CreateBackup # noqa
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_backups/workflows/create_backup.py 0000644 0001750 0001750 00000010027 00000000000 033360 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms
from horizon import workflows
from oslo_log import log as logging
from trove_dashboard import api
from trove_dashboard.content.databases \
import tables as project_tables
LOG = logging.getLogger(__name__)
class BackupDetailsAction(workflows.Action):
name = forms.CharField(max_length=80, label=_("Name"))
instance = forms.ChoiceField(label=_("Database Instance"))
description = forms.CharField(max_length=512, label=_("Description"),
widget=forms.TextInput(),
required=False,
help_text=_("Optional Backup Description"))
parent = forms.ChoiceField(label=_("Parent Backup"),
required=False,
help_text=_("Optional parent backup"))
class Meta(object):
name = _("Details")
help_text_template = \
"project/database_backups/_backup_details_help.html"
def populate_instance_choices(self, request, context):
LOG.info("Obtaining list of instances.")
try:
instances = api.trove.instance_list(request)
except Exception:
instances = []
msg = _("Unable to list database instances to backup.")
exceptions.handle(request, msg)
return [(i.id, i.name) for i in instances
if i.status in project_tables.ACTIVE_STATES]
def populate_parent_choices(self, request, context):
try:
backups = api.trove.backup_list(request)
choices = [(b.id, b.name) for b in backups
if b.status == 'COMPLETED']
except Exception:
choices = []
msg = _("Unable to list database backups for parent.")
exceptions.handle(request, msg)
if choices:
choices.insert(0, ("", _("Select parent backup")))
else:
choices.insert(0, ("", _("No backups available")))
return choices
class SetBackupDetails(workflows.Step):
action_class = BackupDetailsAction
contributes = ["name", "description", "instance", "parent"]
class CreateBackup(workflows.Workflow):
slug = "create_backup"
name = _("Backup Database")
finalize_button_name = _("Backup")
success_message = _('Scheduled backup "%(name)s".')
failure_message = _('Unable to launch %(count)s named "%(name)s".')
success_url = "horizon:project:database_backups:index"
default_steps = [SetBackupDetails]
def get_initial(self):
initial = super(CreateBackup, self).get_initial()
initial['instance_id']
def format_status_message(self, message):
name = self.context.get('name', 'unknown instance')
return message % {"count": _("instance"), "name": name}
def handle(self, request, context):
try:
LOG.info("Creating backup")
api.trove.backup_create(request,
context['name'],
context['instance'],
context['description'],
context['parent'])
return True
except Exception:
LOG.exception("Exception while creating backup")
msg = _('Error creating database backup.')
exceptions.handle(request, msg)
return False
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5094357
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/ 0000755 0001750 0001750 00000000000 00000000000 026375 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/__init__.py 0000644 0001750 0001750 00000000000 00000000000 030474 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/cluster_manager.py 0000644 0001750 0001750 00000005033 00000000000 032123 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 Tesora Inc.
#
# 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.
from django.core import cache
def get(cluster_id):
if not has_cluster(cluster_id):
manager = ClusterInstanceManager(cluster_id)
cache.cache.set(cluster_id, manager)
return cache.cache.get(cluster_id)
def delete(cluster_id):
manager = get(cluster_id)
manager.clear_instances()
cache.cache.delete(cluster_id)
def update(cluster_id, manager):
cache.cache.set(cluster_id, manager)
def has_cluster(cluster_id):
if cache.cache.get(cluster_id):
return True
else:
return False
class ClusterInstanceManager(object):
def __init__(self, cluster_id):
self.cluster_id = cluster_id
self.instances = []
def get_instances(self):
if not hasattr(self, 'instances'):
self.instances = []
return self.instances
def get_instance(self, id):
for instance in self.get_instances():
if instance.id == id:
return instance
return None
def add_instance(self, id, name, flavor_id,
flavor, volume, type, related_to, nics):
instance = ClusterInstance(id, name, flavor_id, flavor,
volume, type, related_to, nics)
self.instances.append(instance)
update(self.cluster_id, self)
return self.get_instances()
def delete_instance(self, id):
instance = self.get_instance(id)
if instance:
self.instances.remove(instance)
update(self.cluster_id, self)
def clear_instances(self):
self.instances = []
update(self.cluster_id, self)
class ClusterInstance(object):
def __init__(self, id, name, flavor_id, flavor, volume, type,
related_to, nics):
self.id = id
self.name = name
self.flavor_id = flavor_id
self.flavor = flavor
self.volume = volume
self.type = type
self.related_to = related_to
self.nics = nics
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/forms.py 0000644 0001750 0001750 00000052004 00000000000 030076 0 ustar 00corey corey 0000000 0000000 # Copyright 2015 HP Software, LLC
# All Rights Reserved.
#
# 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 collections
import uuid
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.debug import sensitive_variables # noqa
from horizon import exceptions
from horizon import forms
from horizon import messages
from horizon.utils import memoized
from openstack_dashboard import api
from oslo_log import log as logging
from openstack_dashboard.dashboards.project.instances \
import utils as instance_utils
from trove_dashboard import api as trove_api
from trove_dashboard.content.database_clusters \
import cluster_manager
from trove_dashboard.content.databases import db_capability
from trove_dashboard.content.databases.workflows \
import create_instance
from trove_dashboard.utils import common as common_utils
LOG = logging.getLogger(__name__)
class LaunchForm(forms.SelfHandlingForm):
name = forms.CharField(label=_("Cluster Name"),
max_length=80)
datastore = forms.ChoiceField(
label=_("Datastore"),
help_text=_("Type and version of datastore."),
widget=forms.Select(attrs={
'class': 'switchable',
'data-slug': 'datastore'
}))
network = forms.ChoiceField(
label=_("Network"),
help_text=_("Network attached to instance."),
required=False)
volume = forms.IntegerField(
label=_("Volume Size"),
min_value=0,
initial=1,
help_text=_("Size of the volume in GB."))
locality = forms.ChoiceField(
label=_("Locality"),
choices=[("", "None"),
("affinity", "affinity"),
("anti-affinity", "anti-affinity")],
required=False,
help_text=_("Specify whether instances in the cluster will "
"be created on the same hypervisor (affinity) or on "
"different hypervisors (anti-affinity)."))
root_password = forms.CharField(
label=_("Root Password"),
required=False,
help_text=_("Password for root user."),
widget=forms.PasswordInput(attrs={
'class': 'switched',
'data-switch-on': 'datastore',
}))
num_instances_vertica = forms.IntegerField(
label=_("Number of Instances"),
min_value=3,
initial=3,
required=False,
help_text=_("Number of instances in the cluster. (Read only)"),
widget=forms.TextInput(attrs={
'readonly': 'readonly',
'class': 'switched',
'data-switch-on': 'datastore',
}))
num_shards = forms.IntegerField(
label=_("Number of Shards"),
min_value=1,
initial=1,
required=False,
help_text=_("Number of shards. (Read only)"),
widget=forms.TextInput(attrs={
'readonly': 'readonly',
'class': 'switched',
'data-switch-on': 'datastore',
}))
num_instances = forms.IntegerField(
label=_("Number of Instances"),
initial=3,
required=False,
help_text=_("Number of instances in the cluster."),
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'datastore',
}))
# (name of field variable, label)
default_fields = [
('num_instances', _('Number of Instances'))
]
mongodb_fields = default_fields + [
('num_shards', _('Number of Shards')),
]
vertica_fields = [
('num_instances_vertica', ('Number of Instances')),
('root_password', _('Root Password')),
]
def __init__(self, request, *args, **kwargs):
super(LaunchForm, self).__init__(request, *args, **kwargs)
self.fields['datastore'].choices = self.populate_datastore_choices(
request)
self.fields['network'].choices = self.populate_network_choices(
request)
def clean(self):
datastore_field_value = self.data.get("datastore", None)
if datastore_field_value:
datastore, datastore_version = (
create_instance.parse_datastore_and_version_text(
common_utils.unhexlify(datastore_field_value)))
flavor_field_name = self._build_widget_field_name(
datastore, datastore_version)
if not self.data.get(flavor_field_name, None):
msg = _("The flavor must be specified.")
self._errors[flavor_field_name] = self.error_class([msg])
if db_capability.is_vertica_datastore(datastore):
if not self.data.get("root_password", None):
msg = _("Password for root user must be specified.")
self._errors["root_password"] = self.error_class([msg])
else:
if int(self.data.get("num_instances", 0)) < 1:
msg = _("The number of instances must be greater than 1.")
self._errors["num_instances"] = self.error_class([msg])
if db_capability.is_mongodb_datastore(datastore):
if int(self.data.get("num_shards", 0)) < 1:
msg = _("The number of shards must be greater than 1.")
self._errors["num_shards"] = self.error_class([msg])
if not self.data.get("locality", None):
self.cleaned_data["locality"] = None
return self.cleaned_data
@memoized.memoized_method
def datastore_flavors(self, request, datastore_name, datastore_version):
try:
return trove_api.trove.datastore_flavors(
request, datastore_name, datastore_version)
except Exception:
LOG.exception("Exception while obtaining flavors list")
self._flavors = []
redirect = reverse('horizon:project:database_clusters:index')
exceptions.handle(request,
_('Unable to obtain flavors.'),
redirect=redirect)
@memoized.memoized_method
def populate_network_choices(self, request):
network_list = []
try:
if api.base.is_service_enabled(request, 'network'):
tenant_id = self.request.user.tenant_id
networks = api.neutron.network_list_for_tenant(request,
tenant_id)
network_list = [(network.id, network.name_or_id)
for network in networks]
else:
self.fields['network'].widget = forms.HiddenInput()
except exceptions.ServiceCatalogException:
network_list = []
redirect = reverse('horizon:project:database_clusters:index')
exceptions.handle(request,
_('Unable to retrieve networks.'),
redirect=redirect)
return network_list
@memoized.memoized_method
def datastores(self, request):
try:
return trove_api.trove.datastore_list(request)
except Exception:
LOG.exception("Exception while obtaining datastores list")
self._datastores = []
redirect = reverse('horizon:project:database_clusters:index')
exceptions.handle(request,
_('Unable to obtain datastores.'),
redirect=redirect)
def filter_cluster_datastores(self, request):
datastores = []
for ds in self.datastores(request):
# TODO(michayu): until capabilities lands
if db_capability.is_cluster_capable_datastore(ds.name):
datastores.append(ds)
return datastores
@memoized.memoized_method
def datastore_versions(self, request, datastore):
try:
return trove_api.trove.datastore_version_list(request, datastore)
except Exception:
LOG.exception("Exception while obtaining datastore version list")
self._datastore_versions = []
redirect = reverse('horizon:project:database_clusters:index')
exceptions.handle(request,
_('Unable to obtain datastore versions.'),
redirect=redirect)
def populate_datastore_choices(self, request):
choices = ()
datastores = self.filter_cluster_datastores(request)
if datastores is not None:
datastore_flavor_fields = {}
for ds in datastores:
versions = self.datastore_versions(request, ds.name)
if versions:
# only add to choices if datastore has at least one version
version_choices = ()
for v in versions:
# NOTE(zhaochao): troveclient API resources are lazy
# loading objects. When an attribute is not found, the
# get() method of the Manager object will be called
# with the ID of the resource. However for
# datastore_versions, the get() method is expecting two
# arguments: datastore and datastore_version(name), so
# TypeError will be raised as not enough arguments are
# passed. In Python 2.x, hasattr() won't reraise the
# exception(which is not correct), but reraise under
# Python 3(which should be correct).
# Use v.to_dict() to verify the 'active' info instead.
if not v.to_dict().get('active', True):
continue
selection_text = self._build_datastore_display_text(
ds.name, v.name)
widget_text = self._build_widget_field_name(
ds.name, v.name)
version_choices = (version_choices +
((widget_text, selection_text),))
k, v = self._add_datastore_flavor_field(request,
ds.name,
v.name)
datastore_flavor_fields[k] = v
self._add_attr_to_optional_fields(ds.name,
widget_text)
choices = choices + version_choices
self._insert_datastore_version_fields(datastore_flavor_fields)
return choices
def _add_datastore_flavor_field(self,
request,
datastore,
datastore_version):
name = self._build_widget_field_name(datastore, datastore_version)
attr_key = 'data-datastore-' + name
field = forms.ChoiceField(
label=_("Flavor"),
help_text=_("Size of image to launch."),
required=False,
widget=forms.Select(attrs={
'class': 'switched',
'data-switch-on': 'datastore',
attr_key: _("Flavor")
}))
valid_flavors = self.datastore_flavors(request,
datastore,
datastore_version)
if valid_flavors:
field.choices = instance_utils.sort_flavor_list(
request, valid_flavors)
return name, field
def _build_datastore_display_text(self, datastore, datastore_version):
return datastore + ' - ' + datastore_version
def _build_widget_field_name(self, datastore, datastore_version):
# Since the fieldnames cannot contain an uppercase character
# we generate a hex encoded string representation of the
# datastore and version as the fieldname
return common_utils.hexlify(
self._build_datastore_display_text(datastore, datastore_version))
def _insert_datastore_version_fields(self, datastore_flavor_fields):
fields_to_restore_at_the_end = collections.OrderedDict()
while True:
k, v = self.fields.popitem()
if k == 'datastore':
self.fields[k] = v
break
else:
fields_to_restore_at_the_end[k] = v
for k, v in datastore_flavor_fields.items():
self.fields[k] = v
for k in reversed(list(fields_to_restore_at_the_end.keys())):
self.fields[k] = fields_to_restore_at_the_end[k]
def _add_attr_to_optional_fields(self, datastore, selection_text):
if db_capability.is_mongodb_datastore(datastore):
fields = self.mongodb_fields
elif db_capability.is_vertica_datastore(datastore):
fields = self.vertica_fields
else:
fields = self.default_fields
for field in fields:
attr_key = 'data-datastore-' + selection_text
widget = self.fields[field[0]].widget
if attr_key not in widget.attrs:
widget.attrs[attr_key] = field[1]
def _get_locality(self, data):
locality = None
if data.get('locality'):
locality = data['locality']
return locality
@sensitive_variables('data')
def handle(self, request, data):
try:
datastore, datastore_version = (
create_instance.parse_datastore_and_version_text(
common_utils.unhexlify(data['datastore'])))
flavor_field_name = self._build_widget_field_name(
datastore, datastore_version)
flavor = data[flavor_field_name]
num_instances = data['num_instances']
root_password = None
if db_capability.is_vertica_datastore(datastore):
root_password = data['root_password']
num_instances = data['num_instances_vertica']
LOG.info("Launching cluster with parameters "
"{name=%s, volume=%s, flavor=%s, "
"datastore=%s, datastore_version=%s",
"locality=%s",
data['name'], data['volume'], flavor,
datastore, datastore_version, self._get_locality(data))
trove_api.trove.cluster_create(request,
data['name'],
data['volume'],
flavor,
num_instances,
datastore=datastore,
datastore_version=datastore_version,
nics=data['network'],
root_password=root_password,
locality=self._get_locality(data))
messages.success(request,
_('Launched cluster "%s"') % data['name'])
return True
except Exception as e:
redirect = reverse("horizon:project:database_clusters:index")
exceptions.handle(request,
_('Unable to launch cluster. %s') % e,
redirect=redirect)
class ClusterAddInstanceForm(forms.SelfHandlingForm):
cluster_id = forms.CharField(
required=False,
widget=forms.HiddenInput())
flavor = forms.ChoiceField(
label=_("Flavor"),
help_text=_("Size of image to launch."))
volume = forms.IntegerField(
label=_("Volume Size"),
min_value=0,
initial=1,
help_text=_("Size of the volume in GB."))
name = forms.CharField(
label=_("Name"),
required=False,
help_text=_("Optional name of the instance."))
type = forms.CharField(
label=_("Instance Type"),
required=False,
help_text=_("Optional datastore specific type of the instance."))
related_to = forms.CharField(
label=_("Related To"),
required=False,
help_text=_("Optional datastore specific value that defines the "
"relationship from one instance in the cluster to "
"another."))
network = forms.ChoiceField(
label=_("Network"),
help_text=_("Network attached to instance."),
required=False)
def __init__(self, request, *args, **kwargs):
super(ClusterAddInstanceForm, self).__init__(request, *args, **kwargs)
self.fields['cluster_id'].initial = kwargs['initial']['cluster_id']
self.fields['flavor'].choices = self.populate_flavor_choices(request)
self.fields['network'].choices = self.populate_network_choices(
request)
@memoized.memoized_method
def flavors(self, request):
try:
datastore = None
datastore_version = None
datastore_dict = self.initial.get('datastore', None)
if datastore_dict:
datastore = datastore_dict.get('type', None)
datastore_version = datastore_dict.get('version', None)
return trove_api.trove.datastore_flavors(
request,
datastore_name=datastore,
datastore_version=datastore_version)
except Exception:
LOG.exception("Exception while obtaining flavors list")
self._flavors = []
redirect = reverse('horizon:project:database_clusters:index')
exceptions.handle(request,
_('Unable to obtain flavors.'),
redirect=redirect)
def populate_flavor_choices(self, request):
flavor_list = [(f.id, "%s" % f.name) for f in self.flavors(request)]
return sorted(flavor_list)
@memoized.memoized_method
def populate_network_choices(self, request):
network_list = []
try:
if api.base.is_service_enabled(request, 'network'):
tenant_id = self.request.user.tenant_id
networks = api.neutron.network_list_for_tenant(request,
tenant_id)
network_list = [(network.id, network.name_or_id)
for network in networks]
else:
self.fields['network'].widget = forms.HiddenInput()
except exceptions.ServiceCatalogException:
network_list = []
redirect = reverse('horizon:project:database_clusters:index')
exceptions.handle(request,
_('Unable to retrieve networks.'),
redirect=redirect)
return network_list
def handle(self, request, data):
try:
flavor = trove_api.trove.flavor_get(request, data['flavor'])
manager = cluster_manager.get(data['cluster_id'])
manager.add_instance(str(uuid.uuid4()),
data.get('name', None),
data['flavor'],
flavor.name,
data['volume'],
data.get('type', None),
data.get('related_to', None),
data.get('network', None))
except Exception as e:
redirect = reverse("horizon:project:database_clusters:index")
exceptions.handle(request,
_('Unable to grow cluster. %s') % e,
redirect=redirect)
return True
class ResetPasswordForm(forms.SelfHandlingForm):
cluster_id = forms.CharField(widget=forms.HiddenInput())
password = forms.CharField(widget=forms.PasswordInput(),
label=_("New Password"),
help_text=_("New password for cluster access."))
@sensitive_variables('data')
def handle(self, request, data):
password = data.get("password")
cluster_id = data.get("cluster_id")
try:
trove_api.trove.create_cluster_root(request,
cluster_id,
password)
messages.success(request, _('Root password updated for '
'cluster "%s"') % cluster_id)
except Exception as e:
redirect = reverse("horizon:project:database_clusters:index")
exceptions.handle(request, _('Unable to reset password. %s') % e,
redirect=redirect)
return True
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/panel.py 0000644 0001750 0001750 00000001736 00000000000 030055 0 ustar 00corey corey 0000000 0000000 # Copyright (c) 2014 eBay Software Foundation
# Copyright 2015 HP Software, LLC
# All Rights Reserved.
#
# 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.
from django.utils.translation import ugettext_lazy as _
import horizon
from openstack_dashboard.dashboards.project import dashboard
class Clusters(horizon.Panel):
name = _("Clusters")
slug = 'database_clusters'
permissions = ('openstack.services.database',)
dashboard.Project.register(Clusters)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/tables.py 0000644 0001750 0001750 00000037015 00000000000 030227 0 ustar 00corey corey 0000000 0000000 # Copyright (c) 2014 eBay Software Foundation
# Copyright 2015 HP Software, LLC
# All Rights Reserved.
#
# 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.
from django import shortcuts
from django.template.defaultfilters import title # noqa
from django import urls
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
from horizon import messages
from horizon import tables
from horizon.templatetags import sizeformat
from horizon.utils import filters
from horizon.utils import functions
from horizon.utils import memoized
from oslo_log import log as logging
from trove_dashboard import api
from trove_dashboard.content.database_clusters import cluster_manager
from trove_dashboard.content.databases import db_capability
LOG = logging.getLogger(__name__)
ACTIVE_STATES = ("ACTIVE",)
class DeleteCluster(tables.BatchAction):
name = "delete"
icon = "remove"
classes = ('btn-danger',)
help_text = _("Deleted cluster is not recoverable.")
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Delete Cluster",
u"Delete Clusters",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Scheduled deletion of Cluster",
u"Scheduled deletion of Clusters",
count
)
def action(self, request, obj_id):
api.trove.cluster_delete(request, obj_id)
class LaunchLink(tables.LinkAction):
name = "launch"
verbose_name = _("Launch Cluster")
url = "horizon:project:database_clusters:launch"
classes = ("btn-launch", "ajax-modal")
icon = "cloud-upload"
class ClusterGrow(tables.LinkAction):
name = "cluster_grow"
verbose_name = _("Grow Cluster")
url = "horizon:project:database_clusters:cluster_grow_details"
def allowed(self, request, cluster=None):
if (cluster and cluster.task["name"] == 'NONE' and
db_capability.can_modify_cluster(cluster.datastore['type'])):
return True
return False
class ClusterShrink(tables.LinkAction):
name = "cluster_shrink"
verbose_name = _("Shrink Cluster")
url = "horizon:project:database_clusters:cluster_shrink_details"
def allowed(self, request, cluster=None):
if (cluster and cluster.task["name"] == 'NONE' and
db_capability.can_modify_cluster(cluster.datastore['type'])):
return True
return False
class ResetPassword(tables.LinkAction):
name = "reset_password"
verbose_name = _("Reset Root Password")
url = "horizon:project:database_clusters:reset_password"
classes = ("ajax-modal",)
def allowed(self, request, cluster=None):
if (cluster and cluster.task["name"] == 'NONE' and
db_capability.is_vertica_datastore(cluster.datastore['type'])):
return True
return False
def get_link_url(self, datum):
cluster_id = self.table.get_object_id(datum)
return urls.reverse(self.url, args=[cluster_id])
class UpdateRow(tables.Row):
ajax = True
@memoized.memoized_method
def get_data(self, request, cluster_id):
cluster = api.trove.cluster_get(request, cluster_id)
try:
# TODO(michayu): assumption that cluster is homogeneous
flavor_id = cluster.instances[0]['flavor']['id']
cluster.full_flavor = api.trove.flavor_get(request, flavor_id)
except Exception:
pass
return cluster
def get_datastore(cluster):
return cluster.datastore["type"]
def get_datastore_version(cluster):
return cluster.datastore["version"]
def get_size(cluster):
if db_capability.is_vertica_datastore(cluster.datastore['type']):
return "3"
if hasattr(cluster, "full_flavor"):
size_string = _("%(name)s | %(RAM)s RAM | %(instances)s instances")
vals = {'name': cluster.full_flavor.name,
'RAM': sizeformat.mbformat(cluster.full_flavor.ram),
'instances': len(cluster.instances)}
return size_string % vals
elif hasattr(cluster, "instances"):
return "%s instances" % len(cluster.instances)
return _("Not available")
def get_task(cluster):
return cluster.task["name"]
class ClustersTable(tables.DataTable):
TASK_CHOICES = (
("none", True),
)
name = tables.Column("name",
link=("horizon:project:database_clusters:detail"),
verbose_name=_("Cluster Name"))
datastore = tables.Column(get_datastore,
verbose_name=_("Datastore"))
datastore_version = tables.Column(get_datastore_version,
verbose_name=_("Datastore Version"))
size = tables.Column(get_size,
verbose_name=_("Cluster Size"),
attrs={'data-type': 'size'})
task = tables.Column(get_task,
filters=(title, filters.replace_underscores),
verbose_name=_("Current Task"),
status=True,
status_choices=TASK_CHOICES)
class Meta(object):
name = "clusters"
verbose_name = _("Clusters")
status_columns = ["task"]
row_class = UpdateRow
table_actions = (LaunchLink, DeleteCluster)
row_actions = (ClusterGrow, ClusterShrink, ResetPassword,
DeleteCluster)
def get_instance_size(instance):
if hasattr(instance, "full_flavor"):
size_string = _("%(name)s | %(RAM)s RAM")
vals = {'name': instance.full_flavor.name,
'RAM': sizeformat.mbformat(instance.full_flavor.ram)}
return size_string % vals
return _("Not available")
def get_instance_type(instance):
if hasattr(instance, "type"):
return instance.type
return _("Not available")
def get_host(instance):
if hasattr(instance, "hostname"):
return instance.hostname
elif hasattr(instance, "ip") and instance.ip:
return instance.ip[0]
return _("Not Assigned")
def get_instance_volume_size(instance):
if hasattr(instance, "volume"):
return sizeformat.diskgbformat(instance.volume.get("size"))
return _("Not available")
class InstancesTable(tables.DataTable):
name = tables.Column("name",
verbose_name=_("Name"))
type = tables.Column(get_instance_type,
verbose_name=_("Type"))
host = tables.Column(get_host,
verbose_name=_("Host"))
size = tables.Column(get_instance_size,
verbose_name=_("Size"),
attrs={'data-type': 'size'})
volume_size = tables.Column(get_instance_volume_size,
verbose_name=_("Volume Size"),
attrs={'data-type': 'size'})
status = tables.Column("status",
filters=(title, filters.replace_underscores),
verbose_name=_("Status"))
class Meta(object):
name = "instances"
verbose_name = _("Instances")
class ClusterShrinkAction(tables.BatchAction):
name = "cluster_shrink_action"
icon = "remove"
classes = ('btn-danger',)
success_url = 'horizon:project:database_clusters:index'
help_text = _("Shrinking a cluster is not recoverable.")
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Shrink Cluster",
u"Shrink Cluster",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Scheduled Shrinking of Cluster",
u"Scheduled Shrinking of Cluster",
count
)
def handle(self, table, request, obj_ids):
datum_display_objs = []
for datum_id in obj_ids:
datum = table.get_object_by_id(datum_id)
datum_display = table.get_object_display(datum) or datum_id
datum_display_objs.append(datum_display)
display_str = functions.lazy_join(", ", datum_display_objs)
try:
cluster_id = table.kwargs['cluster_id']
data = [{'id': instance_id} for instance_id in obj_ids]
api.trove.cluster_shrink(request, cluster_id, data)
LOG.info('%s: "%s"' %
(self._get_action_name(past=True),
display_str))
msg = _('Removed instances from cluster.')
messages.info(request, msg)
except Exception as ex:
LOG.error('Action %(action)s failed with %(ex)s for %(data)s' %
{'action': self._get_action_name(past=True).lower(),
'ex': ex,
'data': display_str})
msg = _('Unable to remove instances from cluster: %s')
messages.error(request, msg % ex)
return shortcuts.redirect(self.get_success_url(request))
class ClusterShrinkInstancesTable(tables.DataTable):
name = tables.Column("name",
verbose_name=_("Name"))
status = tables.Column("status",
filters=(title, filters.replace_underscores),
verbose_name=_("Status"))
class Meta(object):
name = "shrink_cluster_table"
verbose_name = _("Instances")
table_actions = (ClusterShrinkAction,)
row_actions = (ClusterShrinkAction,)
class ClusterGrowAddInstance(tables.LinkAction):
name = "cluster_grow_add_instance"
verbose_name = _("Add Instance")
url = "horizon:project:database_clusters:add_instance"
classes = ("ajax-modal",)
def get_link_url(self):
return urls.reverse(
self.url, args=[self.table.kwargs['cluster_id']])
class ClusterGrowRemoveInstance(tables.BatchAction):
name = "cluster_grow_remove_instance"
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Remove Instance",
u"Remove Instances",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Removed Instance",
u"Removed Instances",
count
)
def action(self, request, datum_id):
manager = cluster_manager.get(self.table.kwargs['cluster_id'])
manager.delete_instance(datum_id)
def handle(self, table, request, obj_ids):
action_success = []
action_failure = []
action_not_allowed = []
for datum_id in obj_ids:
datum = table.get_object_by_id(datum_id)
datum_display = table.get_object_display(datum) or datum_id
if not table._filter_action(self, request, datum):
action_not_allowed.append(datum_display)
LOG.warning('Permission denied to %s: "%s"' %
(self._get_action_name(past=True).lower(),
datum_display))
continue
try:
self.action(request, datum_id)
# Call update to invoke changes if needed
self.update(request, datum)
action_success.append(datum_display)
self.success_ids.append(datum_id)
LOG.info('%s: "%s"' %
(self._get_action_name(past=True), datum_display))
except Exception as ex:
# Handle the exception but silence it since we'll display
# an aggregate error message later. Otherwise we'd get
# multiple error messages displayed to the user.
action_failure.append(datum_display)
action_description = (
self._get_action_name(past=True).lower(), datum_display)
LOG.error(
'Action %(action)s Failed for %(reason)s', {
'action': action_description, 'reason': ex})
if action_not_allowed:
msg = _('You are not allowed to %(action)s: %(objs)s')
params = {"action":
self._get_action_name(action_not_allowed).lower(),
"objs": functions.lazy_join(", ", action_not_allowed)}
messages.error(request, msg % params)
if action_failure:
msg = _('Unable to %(action)s: %(objs)s')
params = {"action": self._get_action_name(action_failure).lower(),
"objs": functions.lazy_join(", ", action_failure)}
messages.error(request, msg % params)
return shortcuts.redirect(self.get_success_url(request))
class ClusterGrowAction(tables.Action):
name = "grow_cluster_action"
verbose_name = _("Grow Cluster")
verbose_name_plural = _("Grow Cluster")
requires_input = False
icon = "plus"
def handle(self, table, request, obj_ids):
if not table.data:
msg = _("Cannot grow cluster. No instances specified.")
messages.info(request, msg)
return shortcuts.redirect(request.build_absolute_uri())
datum_display_objs = []
for instance in table.data:
msg = _("[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, "
"type=%(type)s, related_to=%(related_to)s, "
"nics=%(nics)s]")
params = {"flavor": instance.flavor_id, "volume": instance.volume,
"name": instance.name, "type": instance.type,
"related_to": instance.related_to, "nics": instance.nics}
datum_display_objs.append(msg % params)
display_str = functions.lazy_join(", ", datum_display_objs)
cluster_id = table.kwargs['cluster_id']
try:
api.trove.cluster_grow(request, cluster_id, table.data)
LOG.info('%s: "%s"' % (_("Grow Cluster"), display_str))
msg = _('Scheduled growing of cluster.')
messages.success(request, msg)
except Exception as ex:
LOG.error('Action grow cluster failed with %(ex)s for %(data)s' %
{'ex': ex,
'data': display_str})
msg = _('Unable to grow cluster: %s')
messages.error(request, msg % ex)
finally:
cluster_manager.delete(cluster_id)
return shortcuts.redirect(urls.reverse(
"horizon:project:database_clusters:index"))
class ClusterGrowInstancesTable(tables.DataTable):
id = tables.Column("id", hidden=True)
name = tables.Column("name", verbose_name=_("Name"))
flavor = tables.Column("flavor", verbose_name=_("Flavor"))
flavor_id = tables.Column("flavor_id", hidden=True)
volume = tables.Column("volume", verbose_name=_("Volume"))
type = tables.Column("type", verbose_name=_("Instance Type"))
related_to = tables.Column("related_to", verbose_name=_("Related To"))
nics = tables.Column("nics", verbose_name=_("Network"))
class Meta(object):
name = "cluster_grow_instances_table"
verbose_name = _("Instances")
table_actions = (ClusterGrowAddInstance, ClusterGrowRemoveInstance,
ClusterGrowAction)
row_actions = (ClusterGrowRemoveInstance,)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/tabs.py 0000644 0001750 0001750 00000006500 00000000000 027701 0 ustar 00corey corey 0000000 0000000 # Copyright (c) 2014 eBay Software Foundation
# Copyright 2015 HP Software, LLC
# All Rights Reserved.
#
# 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.
from django import template
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import tabs
from trove_dashboard import api
from trove_dashboard.content.database_clusters import tables
from trove_dashboard.content.databases import db_capability
class OverviewTab(tabs.Tab):
name = _("Overview")
slug = "overview"
def get_context_data(self, request):
return {"cluster": self.tab_group.kwargs['cluster']}
def get_template_name(self, request):
cluster = self.tab_group.kwargs['cluster']
template_file = ('project/database_clusters/_detail_overview_%s.html'
% self._get_template_type(cluster.datastore['type']))
try:
template.loader.get_template(template_file)
return template_file
except template.TemplateDoesNotExist:
# This datastore type does not have a template file
# Just use the base template file
return ('project/database_clusters/_detail_overview.html')
def _get_template_type(self, datastore):
if db_capability.is_mysql_compatible(datastore):
return 'mysql'
return datastore
class InstancesTab(tabs.TableTab):
table_classes = (tables.InstancesTable,)
name = _("Instances")
slug = "instances_tab"
cluster = None
template_name = "horizon/common/_detail_table.html"
preload = True
def get_instances_data(self):
cluster = self.tab_group.kwargs['cluster']
data = []
try:
instances = api.trove.cluster_get(self.request,
cluster.id).instances
for instance in instances:
instance_info = api.trove.instance_get(self.request,
instance['id'])
flavor_id = instance_info.flavor['id']
instance_info.full_flavor = api.trove.flavor_get(self.request,
flavor_id)
if "type" in instance:
instance_info.type = instance["type"]
if "ip" in instance:
instance_info.ip = instance["ip"]
if "hostname" in instance:
instance_info.hostname = instance["hostname"]
data.append(instance_info)
except Exception:
msg = _('Unable to get instances data.')
exceptions.handle(self.request, msg)
data = []
return data
class ClusterDetailTabs(tabs.TabGroup):
slug = "cluster_details"
tabs = (OverviewTab, InstancesTab)
sticky = True
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.4814372
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/templates/ 0000755 0001750 0001750 00000000000 00000000000 030373 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5094357
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/templates/database_clusters/ 0000755 0001750 0001750 00000000000 00000000000 034063 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000225 00000000000 011454 x ustar 00 0000000 0000000 127 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/templates/database_clusters/_add_instance.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/database_clusters/templates/database_clusters/_0000644 0001750 0001750 00000000771 00000000000 034231 0 ustar 00corey corey 0000000 0000000 {% extends "horizon/common/_modal_form.html" %}
{% load i18n %}
{% block modal-body-right %}
{% trans "Specify the details of the instance to be added to the cluster." %}
{% trans "The name field is optional. If the field is left blank a name will be generated when the cluster is grown." %}
{% trans "The 'Instance Type' and 'Related To' fields are datastore specific and optional. See the Trove documentation for more information on using these fields." %}
{% trans "Specify the instances to be added to the cluster. When all the instances are specified click 'Grow Cluster' to perform the grow operation." %}
{% blocktrans trimmed %}Optionally choose to create this database using a previous backup, or as a replica of another database instance.{% endblocktrans %}
{% blocktrans trimmed %}Specify the details for launching an instance.{% endblocktrans %}
{% blocktrans trimmed %}Please note: The value specified in the Volume Size field should be greater than 0, however, some configurations do not support specifying volume size. If specifying the volume size results in an error stating volume support is not enabled, enter 0.{% endblocktrans %}
{% trans "Optionally provide a comma separated list of databases to create:" %}
database1, database2, database3
{% trans "Initial Admin User" %}
{% blocktrans trimmed %}Create an optional initial user.
This user will have access to all databases you create.{% endblocktrans %}
{% trans "Username (required)" %}
{% trans "Password (required)" %}
{% trans "Allowed Host (optional)" %}
{% blocktrans trimmed %}Allow the user to connect from this host
only. If not provided this user will be allowed to connect from anywhere.
{% endblocktrans %}
{% blocktrans trimmed %}
Move networks from 'Available Networks' to 'Selected Networks' by
clicking the button, or dragging and dropping. You can change the
NIC order by dragging and dropping as well.
{% endblocktrans %}
{% trans "Note: Enable root access on an instance. If the root user is already enabled then a new password is generated." %}
{{ table.render }}
{% endblock %} ././@PaxHeader 0000000 0000000 0000000 00000000221 00000000000 011450 x ustar 00 0000000 0000000 123 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/templates/databases/promote_to_replica_source.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/templates/databases/promote_to_replic0000644 0001750 0001750 00000000177 00000000000 034236 0 ustar 00corey corey 0000000 0000000 {% extends "base.html" %}
{% block main %}
{% include "project/databases/_promote_to_replica_source.html" %}
{% endblock %}
././@PaxHeader 0000000 0000000 0000000 00000000207 00000000000 011454 x ustar 00 0000000 0000000 113 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/templates/databases/resize_instance.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/templates/databases/resize_instance.h0000644 0001750 0001750 00000000165 00000000000 034121 0 ustar 00corey corey 0000000 0000000 {% extends "base.html" %}
{% block main %}
{% include "project/databases/_resize_instance.html" %}
{% endblock %}
././@PaxHeader 0000000 0000000 0000000 00000000205 00000000000 011452 x ustar 00 0000000 0000000 111 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/templates/databases/resize_volume.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/templates/databases/resize_volume.htm0000644 0001750 0001750 00000000163 00000000000 034163 0 ustar 00corey corey 0000000 0000000 {% extends "base.html" %}
{% block main %}
{% include "project/databases/_resize_volume.html" %}
{% endblock %}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/tests.py 0000644 0001750 0001750 00000154542 00000000000 026363 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Mirantis Inc.
# Copyright 2013 Rackspace Hosting.
#
# 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
import django
from django import http
from django.urls import reverse
import unittest
import mock
from horizon import exceptions
from openstack_auth import policy
from openstack_dashboard import api as dash_api
from troveclient import common
from trove_dashboard import api
from trove_dashboard.content.databases import forms
from trove_dashboard.content.databases import tables
from trove_dashboard.content.databases import views
from trove_dashboard.content.databases.workflows import create_instance
from trove_dashboard.test import helpers as test
from trove_dashboard.utils import common as common_utils
INDEX_URL = reverse('horizon:project:databases:index')
LAUNCH_URL = reverse('horizon:project:databases:launch')
DETAILS_URL = reverse('horizon:project:databases:detail', args=['id'])
class DatabaseTests(test.TestCase):
@test.create_mocks(
{api.trove: ('instance_list', 'flavor_list')})
def test_index(self):
# Mock database instances
databases = common.Paginated(self.databases.list())
self.mock_instance_list.return_value = databases
# Mock flavors
self.mock_flavor_list.return_value = self.flavors.list()
res = self.client.get(INDEX_URL)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/index.html')
# Check the Host column displaying ip or hostname
self.assertContains(res, '10.0.0.3')
self.assertContains(res, 'trove.instance-2.com')
@test.create_mocks(
{api.trove: ('instance_list', 'flavor_list')})
def test_index_flavor_exception(self):
# Mock database instances
databases = common.Paginated(self.databases.list())
self.mock_instance_list.return_value = databases
# Mock flavors
self.mock_flavor_list.side_effect = self.exceptions.trove
res = self.client.get(INDEX_URL)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/index.html')
self.assertMessageCount(res, error=1)
@test.create_mocks(
{api.trove: ('instance_list',)})
def test_index_list_exception(self):
# Mock database instances
self.mock_instance_list.side_effect = self.exceptions.trove
res = self.client.get(INDEX_URL)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.assertTemplateUsed(res, 'project/databases/index.html')
self.assertMessageCount(res, error=1)
@test.create_mocks(
{api.trove: ('instance_list', 'flavor_list')})
def test_index_pagination(self):
# Mock database instances
databases = self.databases.list()
last_record = databases[-1]
databases = common.Paginated(databases, next_marker="foo")
self.mock_instance_list.return_value = databases
# Mock flavors
self.mock_flavor_list.return_value = self.flavors.list()
res = self.client.get(INDEX_URL)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/index.html')
self.assertContains(
res, 'marker=' + last_record.id)
@test.create_mocks(
{api.trove: ('instance_list', 'flavor_list')})
def test_index_flavor_list_exception(self):
# Mocking instances.
databases = common.Paginated(self.databases.list())
self.mock_instance_list.return_value = databases
# Mocking flavor list with raising an exception.
self.mock_flavor_list.side_effect = self.exceptions.trove
res = self.client.get(INDEX_URL)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/index.html')
self.assertMessageCount(res, error=1)
@test.create_mocks({
api.trove: ('backup_list', 'configuration_list', 'datastore_flavors',
'datastore_list', 'datastore_version_list', 'flavor_list',
'instance_list'),
dash_api.cinder: ('volume_type_list',),
dash_api.neutron: ('network_list',),
dash_api.nova: ('availability_zone_list',),
policy: ('check',),
})
def test_launch_instance(self):
self.mock_check.return_value = True
self.mock_datastore_flavors.return_value = self.flavors.list()
self.mock_backup_list.return_value = self.database_backups.list()
self.mock_configuration_list.return_value = []
self.mock_instance_list.return_value = self.databases.list()
# Mock datastores
self.mock_datastore_list.return_value = self.datastores.list()
# Mock datastore versions
self.mock_datastore_version_list.return_value = (
self.datastore_versions.list())
self.mock_volume_type_list.return_value = []
self.mock_network_list.side_effect = [self.networks.list()[:1],
self.networks.list()[1:]]
self.mock_availability_zone_list.return_value = (
self.availability_zones.list())
res = self.client.get(LAUNCH_URL)
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_check, 4, mock.call((), test.IsHttpRequest()))
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_flavors, 20,
mock.call(test.IsHttpRequest(),
test.IsA(str),
test.IsA(str)))
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_configuration_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_datastore_list.assert_called_once_with(test.IsHttpRequest())
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_version_list, 4,
mock.call(test.IsHttpRequest(), test.IsA(str)))
self.mock_volume_type_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_network_list.assert_has_calls([
mock.call(test.IsHttpRequest(),
tenant_id=self.tenant.id,
shared=False),
mock.call(test.IsHttpRequest(), shared=True)])
self.mock_availability_zone_list.assert_called_once_with(
test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/launch.html')
# django 1.7 and later does not handle the thrown Http302
# exception well enough.
# TODO(mrunge): re-check when django-1.8 is stable
@unittest.skipIf(django.VERSION >= (1, 7, 0),
'Currently skipped with Django >= 1.7')
@test.create_mocks({api.trove: ('flavor_list',)})
def test_launch_instance_exception_on_flavors(self):
trove_exception = self.exceptions.nova
self.mock_flavor_list.side_effect = trove_exception
toSuppress = ["trove_dashboard.content.databases."
"workflows.create_instance",
"horizon.workflows.base"]
# Suppress expected log messages in the test output
loggers = []
for cls in toSuppress:
logger = logging.getLogger(cls)
loggers.append((logger, logger.getEffectiveLevel()))
logger.setLevel(logging.CRITICAL)
try:
with self.assertRaises(exceptions.Http302):
self.client.get(LAUNCH_URL)
self.mock_datastore_flavors.assert_called_once_with(
test.IsHttpRequest(), mock.ANY, mock.ANY)
finally:
# Restore the previous log levels
for (log, level) in loggers:
log.setLevel(level)
@test.create_mocks({
api.trove: ('backup_list', 'configuration_list', 'datastore_flavors',
'datastore_list', 'datastore_version_list', 'flavor_list',
'instance_create', 'instance_list'),
dash_api.cinder: ('volume_type_list',),
dash_api.neutron: ('network_list',),
dash_api.nova: ('availability_zone_list',),
policy: ('check',),
})
def test_create_simple_instance(self):
self.mock_check.return_value = True
self.mock_datastore_flavors.return_value = self.flavors.list()
self.mock_backup_list.return_value = self.database_backups.list()
self.mock_instance_list.return_value = self.databases.list()
# Mock datastores
self.mock_datastore_list.return_value = self.datastores.list()
# Mock datastore versions
self.mock_datastore_version_list.return_value = (
self.datastore_versions.list())
self.mock_volume_type_list.return_value = []
self.mock_network_list.side_effect = [self.networks.list()[:1],
self.networks.list()[1:]]
nics = [{"net-id": self.networks.first().id, "v4-fixed-ip": ''}]
datastore = 'mysql'
datastore_version = '5.5'
field_name = self._build_flavor_widget_name(datastore,
datastore_version)
self.mock_availability_zone_list.return_value = (
self.availability_zones.list())
# Mock create database call
self.mock_instance_create.return_value = self.databases.first()
post = {
'name': "MyDB",
'volume': '1',
'flavor': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'datastore': field_name,
field_name: 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'network': self.networks.first().id,
'volume_type': 'no_type'
}
res = self.client.post(LAUNCH_URL, post)
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_check, 4, mock.call((), test.IsHttpRequest()))
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_flavors, 20,
mock.call(test.IsHttpRequest(),
test.IsA(str),
test.IsA(str)))
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_datastore_list.assert_called_once_with(test.IsHttpRequest())
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_version_list, 4,
mock.call(test.IsHttpRequest(), test.IsA(str)))
self.mock_volume_type_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_network_list.assert_has_calls([
mock.call(test.IsHttpRequest(),
tenant_id=self.tenant.id,
shared=False),
mock.call(test.IsHttpRequest(), shared=True)])
self.mock_availability_zone_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_instance_create.assert_called_once_with(
test.IsHttpRequest(),
test.IsA(str),
test.IsA(int),
test.IsA(str),
databases=None,
datastore=datastore,
datastore_version=datastore_version,
restore_point=None,
replica_of=None,
configuration=None,
users=None,
nics=nics,
replica_count=None,
volume_type=None,
locality=None,
availability_zone=test.IsA(str))
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('backup_list', 'configuration_list', 'datastore_flavors',
'datastore_list', 'datastore_version_list', 'flavor_list',
'instance_create', 'instance_list'),
dash_api.cinder: ('volume_type_list',),
dash_api.neutron: ('network_list',),
dash_api.nova: ('availability_zone_list',),
policy: ('check',),
})
def test_create_simple_instance_exception(self):
self.mock_check.return_value = True
trove_exception = self.exceptions.nova
self.mock_datastore_flavors.return_value = self.flavors.list()
self.mock_backup_list.return_value = self.database_backups.list()
self.mock_instance_list.return_value = self.databases.list()
# Mock datastores
self.mock_datastore_list.return_value = self.datastores.list()
# Mock datastore versions
self.mock_datastore_version_list.return_value = (
self.datastore_versions.list())
self.mock_volume_type_list.return_value = []
self.mock_network_list.side_effect = [self.networks.list()[:1],
self.networks.list()[1:]]
nics = [{"net-id": self.networks.first().id, "v4-fixed-ip": ''}]
datastore = 'mysql'
datastore_version = '5.5'
field_name = self._build_flavor_widget_name(datastore,
datastore_version)
self.mock_availability_zone_list.return_value = (
self.availability_zones.list())
# Mock create database call
self.mock_instance_create.side_effect = trove_exception
post = {
'name': "MyDB",
'volume': '1',
'flavor': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'datastore': field_name,
field_name: 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'network': self.networks.first().id,
'volume_type': 'no_type'
}
res = self.client.post(LAUNCH_URL, post)
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_check, 4, mock.call((), test.IsHttpRequest()))
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_flavors, 20,
mock.call(test.IsHttpRequest(),
test.IsA(str),
test.IsA(str)))
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_instance_list.assert_called_once_with(test.IsHttpRequest())
self.mock_datastore_list.assert_called_once_with(test.IsHttpRequest())
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_version_list, 4,
mock.call(test.IsHttpRequest(), test.IsA(str)))
self.mock_volume_type_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_network_list.assert_has_calls([
mock.call(test.IsHttpRequest(),
tenant_id=self.tenant.id,
shared=False),
mock.call(test.IsHttpRequest(), shared=True)])
self.mock_availability_zone_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_instance_create.assert_called_once_with(
test.IsHttpRequest(),
test.IsA(str),
test.IsA(int),
test.IsA(str),
databases=None,
datastore=datastore,
datastore_version=datastore_version,
restore_point=None,
replica_of=None,
configuration=None,
users=None,
nics=nics,
replica_count=None,
volume_type=None,
locality=None,
availability_zone=test.IsA(str))
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('instance_get', 'flavor_get', 'root_show')
})
def _test_details(self, database, test_text, assert_contains=True):
self.mock_instance_get.return_value = database
self.mock_flavor_get.return_value = self.flavors.first()
self.mock_root_show.return_value = self.database_user_roots.first()
# Suppress expected log messages in the test output
loggers = []
toSuppress = ["trove_dashboard.content.databases.tabs",
"horizon.tables"]
for cls in toSuppress:
logger = logging.getLogger(cls)
loggers.append((logger, logger.getEffectiveLevel()))
logger.setLevel(logging.CRITICAL)
try:
res = self.client.get(DETAILS_URL)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_flavor_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_root_show.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.assertTemplateUsed(res, 'project/databases/'
'_detail_overview.html')
if assert_contains:
self.assertContains(res, test_text)
else:
self.assertNotContains(res, test_text)
finally:
# Restore the previous log levels
for (log, level) in loggers:
log.setLevel(level)
def test_details_with_ip(self):
database = self.databases.first()
self._test_details(database, database.ip[0])
def test_details_with_hostname(self):
database = self.databases.list()[1]
self._test_details(database, database.hostname)
def test_details_without_locality(self):
database = self.databases.list()[1]
self._test_details(database, "Locality", assert_contains=False)
def test_details_with_locality(self):
database = self.databases.first()
self._test_details(database, "Locality")
def test_create_database(self):
database = self.databases.first()
url = reverse('horizon:project:databases:create_database',
args=[database.id])
res = self.client.get(url)
self.assertTemplateUsed(res, 'project/databases/create_database.html')
@test.create_mocks({api.trove: ('database_create',)})
def test_create_new_database(self):
new_database = {
"status": "ACTIVE",
"updated": "2013-08-12T22:00:09",
"name": "NewDB",
"links": [],
"created": "2013-08-12T22:00:03",
"ip": [
"10.0.0.3",
],
"volume": {
"used": 0.13,
"size": 1,
},
"flavor": {
"id": "1",
"links": [],
},
"datastore": {
"type": "mysql",
"version": "5.5"
},
"id": "12345678-73db-4e23-b52e-368937d72719",
}
self.mock_database_create.return_value = new_database
url = reverse('horizon:project:databases:create_database',
args=['id'])
post = {
'method': 'CreateDatabaseForm',
'instance_id': 'id',
'name': 'NewDB'}
res = self.client.post(url, post)
self.mock_database_create.assert_called_once_with(
test.IsHttpRequest(), u'id', u'NewDB', character_set=u'',
collation=u'')
self.assertNoFormErrors(res)
self.assertMessageCount(success=1)
@test.create_mocks({api.trove: ('database_create',)})
def test_create_new_database_exception(self):
self.mock_database_create.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:create_database',
args=['id'])
post = {
'method': 'CreateDatabaseForm',
'instance_id': 'id',
'name': 'NewDB'}
res = self.client.post(url, post)
self.mock_database_create.assert_called_once_with(
test.IsHttpRequest(), u'id', u'NewDB', character_set=u'',
collation=u'')
self.assertEqual(res.status_code, 302)
@test.create_mocks({api.trove: ('instance_get', 'root_show')})
def test_show_root(self):
database = self.databases.first()
database.id = u'id'
user = self.database_user_roots.first()
self.mock_instance_get.return_value = database
self.mock_root_show.return_value = user
url = reverse('horizon:project:databases:manage_root',
args=['id'])
res = self.client.get(url)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_root_show, 2,
mock.call(test.IsHttpRequest(), database.id))
self.assertTemplateUsed(
res, 'project/databases/manage_root.html')
@test.create_mocks({api.trove: ('instance_get', 'root_show')})
def test_show_root_exception(self):
database = self.databases.first()
self.mock_instance_get.return_value = database
self.mock_root_show.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:manage_root',
args=['id'])
res = self.client.get(url)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_root_show.assert_called_once_with(
test.IsHttpRequest(), u'id')
self.assertRedirectsNoFollow(res, DETAILS_URL)
@test.create_mocks({api.trove: ('root_enable',)})
def test_enable_root(self):
self.mock_root_enable.return_value = ("root", "password")
url = reverse('horizon:project:databases:manage_root',
args=['id'])
form_data = {"action": "manage_root__enable_root_action__%s" % 'id'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id'}
enable_root_info_list = []
enable_root_info = views.EnableRootInfo('id', 'inst1', False, '')
enable_root_info_list.append(enable_root_info)
table = tables.ManageRootTable(req, enable_root_info_list, **kwargs)
table.maybe_handle()
self.mock_root_enable.assert_called_once_with(
test.IsHttpRequest(), [u'id'])
self.assertEqual(table.data[0].enabled, True)
self.assertEqual(table.data[0].password, "password")
@test.create_mocks({api.trove: ('root_enable',)})
def test_enable_root_exception(self):
self.mock_root_enable.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:manage_root',
args=['id'])
form_data = {"action": "manage_root__enable_root_action__%s" % 'id'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id'}
enable_root_info_list = []
enable_root_info = views.EnableRootInfo('id', 'inst1', False, '')
enable_root_info_list.append(enable_root_info)
table = tables.ManageRootTable(req, enable_root_info_list, **kwargs)
table.maybe_handle()
self.mock_root_enable.assert_called_once_with(
test.IsHttpRequest(), [u'id'])
self.assertNotEqual(table.data[0].enabled, True)
self.assertNotEqual(table.data[0].password, "password")
@test.create_mocks({api.trove: ('root_disable',)})
def test_disable_root(self):
url = reverse('horizon:project:databases:manage_root',
args=['id'])
form_data = {"action": "manage_root__disable_root_action__%s" % 'id'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id'}
enable_root_info_list = []
enable_root_info = views.EnableRootInfo(
'id', 'inst1', True, 'password')
enable_root_info_list.append(enable_root_info)
table = tables.ManageRootTable(req, enable_root_info_list, **kwargs)
table.maybe_handle()
self.mock_root_disable.assert_called_once_with(
test.IsHttpRequest(), u'id')
self.assertEqual(table.data[0].enabled, True)
self.assertIsNone(table.data[0].password)
@test.create_mocks({api.trove: ('root_disable',)})
def test_disable_root_exception(self):
self.mock_root_disable.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:manage_root',
args=['id'])
form_data = {"action": "manage_root__disable_root_action__%s" % 'id'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id'}
enable_root_info_list = []
enable_root_info = views.EnableRootInfo(
'id', 'inst1', True, 'password')
enable_root_info_list.append(enable_root_info)
table = tables.ManageRootTable(req, enable_root_info_list, **kwargs)
table.maybe_handle()
self.mock_root_disable.assert_called_once_with(
test.IsHttpRequest(), u'id')
self.assertEqual(table.data[0].enabled, True)
self.assertEqual(table.data[0].password, "password")
@test.create_mocks({
api.trove: ('instance_get', 'flavor_get', 'user_delete', 'users_list',
'user_list_access')
})
def test_user_delete(self):
database = self.databases.first()
user = self.database_users.first()
user_db = self.database_user_dbs.first()
database_id = database.id
# Instead of using the user's ID, the api uses the user's name. BOOO!
user_id = user.name + "@" + user.host
# views.py: DetailView.get_data
self.mock_instance_get.return_value = database
self.mock_flavor_get.return_value = self.flavors.first()
# tabs.py: UserTab.get_user_data
self.mock_users_list.return_value = [user]
self.mock_user_list_access.return_value = [user_db]
# tables.py: DeleteUser.delete
self.mock_user_delete.return_value = None
details_url = reverse('horizon:project:databases:detail',
args=[database_id])
url = details_url + '?tab=instance_details__users_tab'
action_string = u"users__delete__%s" % user_id
form_data = {'action': action_string}
res = self.client.post(url, form_data)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_flavor_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_users_list.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_user_list_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str), test.IsA(str),
host=test.IsA(str))
self.mock_user_delete.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str),
test.IsA(str), host=test.IsA(str))
self.assertRedirectsNoFollow(res, url)
def test_create_user(self):
user = self.users.first()
url = reverse('horizon:project:databases:create_user',
args=[user.id])
res = self.client.get(url)
self.assertTemplateUsed(res, 'project/databases/create_user.html')
@test.create_mocks({api.trove: ('user_create',)})
def test_create_new_user(self):
database = self.databases.first()
user = self.users.first()
new_user = {
"name": "Test_User2",
"host": "%",
"databases": ["TestDB"],
}
self.mock_user_create.return_value = new_user
url = reverse('horizon:project:databases:create_user',
args=[database.id])
post = {
'method': 'CreateUserForm',
'instance_id': database.id,
'name': user.name,
'password': 'password'}
res = self.client.post(url, post)
self.mock_user_create.assert_called_once_with(
test.IsHttpRequest(), database.id, user.name, u'password',
host=u'', databases=[])
self.assertNoFormErrors(res)
self.assertMessageCount(success=1)
@test.create_mocks({api.trove: ('user_create',)})
def test_create_new_user_exception(self):
self.mock_user_create.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:create_user',
args=['id'])
post = {
'method': 'CreateUserForm',
'instance_id': 'id',
'name': 'name',
'password': 'password'}
res = self.client.post(url, post)
self.mock_user_create.assert_called_once_with(
test.IsHttpRequest(), u'id', u'name', u'password',
host=u'', databases=[])
self.assertEqual(res.status_code, 302)
@test.create_mocks({api.trove: ('user_update_attributes',)})
def test_edit_user(self):
database = self.databases.first()
user = self.users.first()
url = reverse('horizon:project:databases:edit_user',
args=[database.id, user.name, '%'])
post = {
'method': 'EditUserForm',
'instance_id': database.id,
'user_name': user.name,
'user_host': '%',
'new_name': 'new_name',
'new_password': 'new_password',
'new_host': '127.0.0.1'}
res = self.client.post(url, post)
self.mock_user_update_attributes.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str),
test.IsA(str), host=test.IsA(str),
new_name=test.IsA(str),
new_password=test.IsA(str),
new_host=test.IsA(str))
self.assertNoFormErrors(res)
self.assertMessageCount(success=1)
@test.create_mocks({api.trove: ('user_update_attributes',)})
def test_edit_user_exception(self):
database = self.databases.first()
user = self.users.first()
url = reverse('horizon:project:databases:edit_user',
args=[database.id, user.name, '%'])
post = {
'method': 'EditUserForm',
'instance_id': database.id,
'user_name': user.name,
'new_name': 'new_name',
'user_host': '%',
'new_password': 'new_password',
'new_host': '127.0.0.1'}
res = self.client.post(url, post)
self.mock_user_update_attributes.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str),
test.IsA(str), host=test.IsA(str),
new_name=test.IsA(str),
new_password=test.IsA(str),
new_host=test.IsA(str))
self.assertEqual(res.status_code, 302)
def test_edit_user_no_values(self):
database = self.databases.first()
user = self.users.first()
url = reverse('horizon:project:databases:edit_user',
args=[database.id, user.name, '%'])
post = {
'method': 'EditUserForm',
'instance_id': database.id,
'user_name': user.name,
'user_host': '%'}
res = self.client.post(url, post)
msg = forms.EditUserForm.validation_error_message
self.assertFormError(res, "form", None, [msg])
@test.create_mocks({api.trove: ('database_list', 'user_show_access')})
def test_access_detail_get(self):
self.mock_database_list.return_value = self.databases.list()
self.mock_user_show_access.return_value = self.databases.list()
url = reverse('horizon:project:databases:access_detail',
args=['id', 'name', 'host'])
res = self.client.get(url)
self.mock_database_list.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_user_show_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str),
test.IsA(str), host=test.IsA(str))
self.assertTemplateUsed(
res, 'project/databases/access_detail.html')
@test.create_mocks({api.trove: ('database_list', 'user_show_access')})
def test_access_detail_get_exception(self):
self.mock_database_list.return_value = self.databases.list()
self.mock_user_show_access.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:access_detail',
args=['id', 'name', 'host'])
res = self.client.get(url)
self.mock_database_list.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_user_show_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str),
test.IsA(str), host=test.IsA(str))
self.assertRedirectsNoFollow(res, DETAILS_URL)
@test.create_mocks({api.trove: ('user_grant_access',)})
def test_detail_grant_access(self):
url = reverse('horizon:project:databases:access_detail',
args=['id', 'name', 'host'])
form_data = {"action": "access__grant_access__%s" % 'db1'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id', 'user_name': 'name', 'user_host': '%'}
db_access_list = []
db_access = views.DBAccess('db1', False)
db_access_list.append(db_access)
table = tables.AccessTable(req, db_access_list, **kwargs)
handled = table.maybe_handle()
self.mock_user_grant_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str), test.IsA(str),
[test.IsA(str)], host=test.IsA(str))
handled_url = handled['location']
self.assertEqual(handled_url, url)
@test.create_mocks({api.trove: ('user_grant_access',)})
def test_detail_grant_access_exception(self):
self.mock_user_grant_access.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:access_detail',
args=['id', 'name', 'host'])
form_data = {"action": "access__grant_access__%s" % 'db1'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id', 'user_name': 'name', 'user_host': '%'}
db_access_list = []
db_access = views.DBAccess('db1', False)
db_access_list.append(db_access)
table = tables.AccessTable(req, db_access_list, **kwargs)
handled = table.maybe_handle()
self.mock_user_grant_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str), test.IsA(str),
[test.IsA(str)], host=test.IsA(str))
handled_url = handled['location']
self.assertEqual(handled_url, url)
@test.create_mocks({api.trove: ('user_revoke_access',)})
def test_detail_revoke_access(self):
url = reverse('horizon:project:databases:access_detail',
args=['id', 'name', 'host'])
form_data = {"action": "access__revoke_access__%s" % 'db1'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id', 'user_name': 'name', 'user_host': '%'}
db_access_list = []
db_access = views.DBAccess('db1', True)
db_access_list.append(db_access)
table = tables.AccessTable(req, db_access_list, **kwargs)
handled = table.maybe_handle()
self.mock_user_revoke_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str), test.IsA(str),
test.IsA(str), host=test.IsA(str))
handled_url = handled['location']
self.assertEqual(handled_url, url)
@test.create_mocks({api.trove: ('user_revoke_access',)})
def test_detail_revoke_access_exception(self):
self.mock_user_revoke_access.side_effect = self.exceptions.trove
url = reverse('horizon:project:databases:access_detail',
args=['id', 'name', 'host'])
form_data = {"action": "access__revoke_access__%s" % 'db1'}
req = self.factory.post(url, form_data)
kwargs = {'instance_id': 'id', 'user_name': 'name', 'user_host': '%'}
db_access_list = []
db_access = views.DBAccess('db1', True)
db_access_list.append(db_access)
table = tables.AccessTable(req, db_access_list, **kwargs)
handled = table.maybe_handle()
self.mock_user_revoke_access.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str), test.IsA(str),
test.IsA(str), host=test.IsA(str))
handled_url = handled['location']
self.assertEqual(handled_url, url)
@test.create_mocks({
api.trove: ('instance_get', 'instance_resize_volume')})
def test_resize_volume(self):
database = self.databases.first()
database_id = database.id
database_size = database.volume.get('size')
# views.py: DetailView.get_data
self.mock_instance_get.return_value = database
# forms.py: ResizeVolumeForm.handle
self.mock_instance_resize_volume.return_value = None
url = reverse('horizon:project:databases:resize_volume',
args=[database_id])
post = {
'instance_id': database_id,
'orig_size': database_size,
'new_size': database_size + 1,
}
res = self.client.post(url, post)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_instance_resize_volume.assert_called_once_with(
test.IsHttpRequest(), database_id, test.IsA(int))
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({api.trove: ('instance_get', )})
def test_resize_volume_bad_value(self):
database = self.databases.first()
database_id = database.id
database_size = database.volume.get('size')
# views.py: DetailView.get_data
self.mock_instance_get.return_value = database
url = reverse('horizon:project:databases:resize_volume',
args=[database_id])
post = {
'instance_id': database_id,
'orig_size': database_size,
'new_size': database_size,
}
res = self.client.post(url, post)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.assertContains(
res, "New size for volume must be greater than current size.")
@test.create_mocks(
{api.trove: ('instance_get',
'flavor_list')})
def test_resize_instance_get(self):
database = self.databases.first()
# views.py: DetailView.get_data
self.mock_instance_get.return_value = database
self.mock_flavor_list.return_value = self.database_flavors.list()
url = reverse('horizon:project:databases:resize_instance',
args=[database.id])
res = self.client.get(url)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), database.id)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertTemplateUsed(res, 'project/databases/resize_instance.html')
option = ''
for flavor in self.database_flavors.list():
if flavor.id == database.flavor['id']:
self.assertNotContains(res, option % (flavor.id, flavor.name))
else:
self.assertContains(res, option % (flavor.id, flavor.name))
@test.create_mocks(
{api.trove: ('instance_get',
'flavor_list',
'instance_resize')})
def test_resize_instance(self):
database = self.databases.first()
# views.py: DetailView.get_data
self.mock_instance_get.return_value = database
self.mock_flavor_list.return_value = self.database_flavors.list()
old_flavor = self.database_flavors.list()[0]
new_flavor = self.database_flavors.list()[1]
self.mock_instance_resize.return_value = None
url = reverse('horizon:project:databases:resize_instance',
args=[database.id])
post = {
'instance_id': database.id,
'old_flavor_name': old_flavor.name,
'old_flavor_id': old_flavor.id,
'new_flavor': new_flavor.id
}
res = self.client.post(url, post)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), database.id)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.mock_instance_resize.assert_called_once_with(
test.IsHttpRequest(), database.id, new_flavor.id)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('backup_list', 'configuration_list', 'datastore_flavors',
'datastore_list', 'datastore_version_list', 'flavor_list',
'instance_create', 'instance_get', 'instance_list_all'),
dash_api.cinder: ('volume_type_list',),
dash_api.neutron: ('network_list',),
dash_api.nova: ('availability_zone_list',),
policy: ('check',),
})
def test_create_replica_instance(self):
self.mock_check.return_value = True
self.mock_datastore_flavors.return_value = self.flavors.list()
self.mock_backup_list.return_value = self.database_backups.list()
self.mock_instance_list_all.return_value = self.databases.list()
self.mock_datastore_list.return_value = self.datastores.list()
self.mock_datastore_version_list.return_value = (
self.datastore_versions.list())
self.mock_volume_type_list.return_value = []
self.mock_network_list.side_effect = [self.networks.list()[:1],
self.networks.list()[1:]]
nics = [{"net-id": self.networks.first().id, "v4-fixed-ip": ''}]
self.mock_availability_zone_list.return_value = (
self.availability_zones.list())
self.mock_instance_get.return_value = self.databases.first()
datastore = 'mysql'
datastore_version = '5.5'
field_name = self._build_flavor_widget_name(datastore,
datastore_version)
# Mock create database call
self.mock_instance_create.return_value = self.databases.first()
post = {
'name': "MyDB",
'volume': '1',
'flavor': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'datastore': field_name,
field_name: 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'network': self.networks.first().id,
'initial_state': 'master',
'master': self.databases.first().id,
'replica_count': 2,
'volume_type': 'no_type'
}
res = self.client.post(LAUNCH_URL, post)
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_check, 4, mock.call((), test.IsHttpRequest()))
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_flavors, 20,
mock.call(test.IsHttpRequest(),
test.IsA(str),
test.IsA(str)))
self.mock_backup_list.assert_called_once_with(test.IsHttpRequest())
self.mock_instance_list_all.assert_called_once_with(
test.IsHttpRequest())
self.mock_datastore_list.assert_called_once_with(test.IsHttpRequest())
self.assert_mock_multiple_calls_with_same_arguments(
self.mock_datastore_version_list, 4,
mock.call(test.IsHttpRequest(), test.IsA(str)))
self.mock_volume_type_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_network_list.assert_has_calls([
mock.call(test.IsHttpRequest(),
tenant_id=self.tenant.id,
shared=False),
mock.call(test.IsHttpRequest(), shared=True)])
self.mock_availability_zone_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_instance_create.assert_called_once_with(
test.IsHttpRequest(),
test.IsA(str),
test.IsA(int),
test.IsA(str),
databases=None,
datastore=datastore,
datastore_version=datastore_version,
restore_point=None,
replica_of=self.databases.first().id,
configuration=None,
users=None,
nics=nics,
replica_count=2,
volume_type=None,
locality=None,
availability_zone=test.IsA(str))
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('promote_to_replica_source',),
views.PromoteToReplicaSourceView: ('get_initial',)})
def test_promote_replica_instance(self):
replica_source = self.databases.first()
replica = self.databases.list()[1]
initial = {'instance_id': replica_source.id,
'replica': replica,
'replica_source': replica_source}
self.mock_get_initial.return_value = initial
url = reverse('horizon:project:databases:promote_to_replica_source',
args=[replica_source.id])
form = {
'instance_id': replica_source.id
}
res = self.client.post(url, form)
self.mock_get_initial.assert_called_once()
self.mock_promote_to_replica_source.assert_called_once_with(
test.IsHttpRequest(), replica_source.id)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('promote_to_replica_source',),
views.PromoteToReplicaSourceView: ('get_initial',)})
def test_promote_replica_instance_exception(self):
replica_source = self.databases.first()
replica = self.databases.list()[1]
initial = {'instance_id': replica_source.id,
'replica': replica,
'replica_source': replica_source}
self.mock_get_initial.return_value = initial
self.mock_promote_to_replica_source.side_effect = (
self.exceptions.trove)
url = reverse('horizon:project:databases:promote_to_replica_source',
args=[replica_source.id])
form = {
'instance_id': replica_source.id
}
res = self.client.post(url, form)
self.mock_get_initial.assert_called_once()
self.mock_promote_to_replica_source.assert_called_once_with(
test.IsHttpRequest(), replica_source.id)
self.assertEqual(res.status_code, 302)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('flavor_list', 'instance_list',
'eject_replica_source',),
})
def test_eject_replica_source(self):
databases = common.Paginated(self.databases.list())
database = databases[2]
databases = common.Paginated(self.databases.list())
self.mock_instance_list.return_value = databases
self.mock_flavor_list.return_value = self.flavors.list()
res = self.client.post(
INDEX_URL,
{'action': 'databases__eject_replica_source__%s' % database.id})
self.mock_eject_replica_source.assert_called_once_with(
test.IsHttpRequest(), database.id)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('flavor_list', 'instance_list',
'eject_replica_source',),
})
def test_eject_replica_source_exception(self):
databases = common.Paginated(self.databases.list())
database = databases[2]
self.mock_eject_replica_source.side_effect = self.exceptions.trove
databases = common.Paginated(self.databases.list())
self.mock_instance_list.return_value = databases
self.mock_flavor_list.return_value = self.flavors.list()
res = self.client.post(
INDEX_URL,
{'action': 'databases__eject_replica_source__%s' % database.id})
self.mock_eject_replica_source.assert_called_once_with(
test.IsHttpRequest(), database.id)
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('instance_list',)
})
def test_master_list_pagination(self):
request = http.HttpRequest()
first_part = common.Paginated(items=self.databases.list()[:1],
next_marker='marker')
second_part = common.Paginated(items=self.databases.list()[1:])
self.mock_instance_list.side_effect = [
first_part, second_part, first_part]
advanced_page = create_instance.AdvancedAction(request, None)
choices = advanced_page.populate_master_choices(request, None)
expected_calls = [
mock.call(request),
mock.call(request, marker='marker'),
mock.call(request)]
self.assertEqual(expected_calls,
self.mock_instance_list.call_args_list)
self.assertTrue(len(choices) == len(self.databases.list()) + 1)
def _build_datastore_display_text(self, datastore, datastore_version):
return datastore + ' - ' + datastore_version
def _build_flavor_widget_name(self, datastore, datastore_version):
return common_utils.hexlify(self._build_datastore_display_text(
datastore, datastore_version))
@test.create_mocks({
api.trove: ('instance_get',
'configuration_list',
'instance_attach_configuration'),
})
def test_attach_configuration(self):
database = self.databases.first()
configuration = self.database_configurations.first()
self.mock_instance_get.return_value = database
self.mock_configuration_list.return_value = (
self.database_configurations.list())
self.mock_instance_attach_configuration.return_value = None
url = reverse('horizon:project:databases:attach_config',
args=[database.id])
form = {
'instance_id': database.id,
'configuration': configuration.id,
}
res = self.client.post(url, form)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_configuration_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_instance_attach_configuration.assert_called_once_with(
test.IsHttpRequest(), database.id, configuration.id)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('instance_get',
'configuration_list',
'instance_attach_configuration'),
})
def test_attach_configuration_exception(self):
database = self.databases.first()
configuration = self.database_configurations.first()
self.mock_instance_get.return_value = database
self.mock_configuration_list.return_value = (
self.database_configurations.list())
self.mock_instance_attach_configuration.side_effect = (
self.exceptions.trove)
url = reverse('horizon:project:databases:attach_config',
args=[database.id])
form = {
'instance_id': database.id,
'configuration': configuration.id,
}
res = self.client.post(url, form)
self.mock_instance_get.assert_called_once_with(
test.IsHttpRequest(), test.IsA(str))
self.mock_configuration_list.assert_called_once_with(
test.IsHttpRequest())
self.mock_instance_attach_configuration.assert_called_once_with(
test.IsHttpRequest(), database.id, configuration.id)
self.assertEqual(res.status_code, 302)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('instance_list',
'flavor_list',
'instance_detach_configuration',),
})
def test_detach_configuration(self):
databases = common.Paginated(self.databases.list())
database = databases[2]
self.mock_instance_list.return_value = databases
self.mock_flavor_list.return_value = self.flavors.list()
self.mock_instance_detach_configuration.return_value = None
res = self.client.post(
INDEX_URL,
{'action': 'databases__detach_configuration__%s' % database.id})
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.mock_instance_detach_configuration.assert_called_once_with(
test.IsHttpRequest(), database.id)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_mocks({
api.trove: ('instance_list',
'flavor_list',
'instance_detach_configuration',),
})
def test_detach_configuration_exception(self):
databases = common.Paginated(self.databases.list())
database = databases[2]
self.mock_instance_list.return_value = databases
self.mock_flavor_list.return_value = self.flavors.list()
self.mock_instance_detach_configuration.side_effect = (
self.exceptions.trove)
res = self.client.post(
INDEX_URL,
{'action': 'databases__detach_configuration__%s' % database.id})
self.mock_instance_list.assert_called_once_with(
test.IsHttpRequest(), marker=None)
self.mock_flavor_list.assert_called_once_with(test.IsHttpRequest())
self.mock_instance_detach_configuration.assert_called_once_with(
test.IsHttpRequest(), database.id)
self.assertRedirectsNoFollow(res, INDEX_URL)
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/urls.py 0000644 0001750 0001750 00000004235 00000000000 026177 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
from django.conf.urls import include
from django.conf.urls import url
from trove_dashboard.content.databases.logs import urls as logs_urls
from trove_dashboard.content.databases import views
BASEINSTANCES = r'^(?P[^/]+)/%s'
INSTANCES = BASEINSTANCES + '$'
USERS = r'^(?P[^/]+)/(?P[^/]+)/' \
r'(?P[^/]+)/%s$'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^launch$', views.LaunchInstanceView.as_view(), name='launch'),
url(INSTANCES % '', views.DetailView.as_view(), name='detail'),
url(INSTANCES % 'resize_volume', views.ResizeVolumeView.as_view(),
name='resize_volume'),
url(INSTANCES % 'resize_instance', views.ResizeInstanceView.as_view(),
name='resize_instance'),
url(INSTANCES % 'create_user', views.CreateUserView.as_view(),
name='create_user'),
url(USERS % 'edit_user', views.EditUserView.as_view(),
name='edit_user'),
url(USERS % 'access_detail', views.AccessDetailView.as_view(),
name='access_detail'),
url(INSTANCES % 'create_database', views.CreateDatabaseView.as_view(),
name='create_database'),
url(INSTANCES % 'promote_to_replica_source',
views.PromoteToReplicaSourceView.as_view(),
name='promote_to_replica_source'),
url(INSTANCES % 'attach_config', views.AttachConfigurationView.as_view(),
name='attach_config'),
url(INSTANCES % 'manage_root', views.ManageRootView.as_view(),
name='manage_root'),
url(BASEINSTANCES % 'logs/', include((logs_urls, 'logs'))),
]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/views.py 0000644 0001750 0001750 00000046444 00000000000 026357 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
"""
Views for managing database instances.
"""
from collections import OrderedDict
from django.urls import reverse
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms as horizon_forms
from horizon import tables as horizon_tables
from horizon import tabs as horizon_tabs
from horizon.utils import memoized
from horizon import workflows as horizon_workflows
from openstack_dashboard.dashboards.project.instances \
import utils as instance_utils
from oslo_log import log as logging
from trove_dashboard import api
from trove_dashboard.content.databases import forms
from trove_dashboard.content.databases import tables
from trove_dashboard.content.databases import tabs
from trove_dashboard.content.databases import workflows
LOG = logging.getLogger(__name__)
class IndexView(horizon_tables.DataTableView):
table_class = tables.InstancesTable
template_name = 'project/databases/index.html'
page_title = _("Instances")
def has_more_data(self, table):
return self._more
@memoized.memoized_method
def get_flavors(self):
try:
flavors = api.trove.flavor_list(self.request)
except Exception:
flavors = []
msg = _('Unable to retrieve database size information.')
exceptions.handle(self.request, msg)
return OrderedDict((str(flavor.id), flavor)
for flavor in flavors)
def _extra_data(self, instance):
flavor = self.get_flavors().get(instance.flavor["id"])
if flavor is not None:
instance.full_flavor = flavor
instance.host = tables.get_host(instance)
return instance
def get_data(self):
marker = self.request.GET.get(
tables.InstancesTable._meta.pagination_param)
# Gather our instances
try:
instances = api.trove.instance_list(self.request, marker=marker)
self._more = instances.next or False
except Exception:
self._more = False
instances = []
msg = _('Unable to retrieve database instances.')
exceptions.handle(self.request, msg)
for instance in instances:
self._extra_data(instance)
return instances
class LaunchInstanceView(horizon_workflows.WorkflowView):
workflow_class = workflows.LaunchInstance
template_name = "project/databases/launch.html"
page_title = _("Launch Database")
def get_initial(self):
initial = super(LaunchInstanceView, self).get_initial()
initial['project_id'] = self.request.user.project_id
initial['user_id'] = self.request.user.id
return initial
class DBAccess(object):
def __init__(self, name, access):
self.name = name
self.access = access
class CreateUserView(horizon_forms.ModalFormView):
form_class = forms.CreateUserForm
form_id = "create_user_form"
modal_header = _("Create User")
modal_id = "create_user_modal"
template_name = 'project/databases/create_user.html'
submit_label = "Create User"
submit_url = 'horizon:project:databases:create_user'
success_url = 'horizon:project:databases:detail'
def get_success_url(self):
return reverse(self.success_url,
args=(self.kwargs['instance_id'],))
def get_context_data(self, **kwargs):
context = super(CreateUserView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
instance_id = self.kwargs['instance_id']
return {'instance_id': instance_id}
class EditUserView(horizon_forms.ModalFormView):
form_class = forms.EditUserForm
form_id = "edit_user_form"
modal_header = _("Edit User")
modal_id = "edit_user_modal"
template_name = 'project/databases/edit_user.html'
submit_label = "Apply Changes"
submit_url = 'horizon:project:databases:edit_user'
success_url = 'horizon:project:databases:detail'
def get_success_url(self):
return reverse(self.success_url,
args=(self.kwargs['instance_id'],))
def get_context_data(self, **kwargs):
context = super(EditUserView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
context['user_name'] = self.kwargs['user_name']
context['user_host'] = self.kwargs['user_host']
args = (self.kwargs['instance_id'], self.kwargs['user_name'],
self.kwargs['user_host'])
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
instance_id = self.kwargs['instance_id']
user_name = self.kwargs['user_name']
user_host = self.kwargs['user_host']
return {'instance_id': instance_id, 'user_name': user_name,
'user_host': user_host}
class AccessDetailView(horizon_tables.DataTableView):
table_class = tables.AccessTable
template_name = 'project/databases/access_detail.html'
page_title = _("Database Access for: {{ user_name }}@{{user_host}}")
@memoized.memoized_method
def get_data(self):
instance_id = self.kwargs['instance_id']
user_name = self.kwargs['user_name']
user_host = self.kwargs['user_host']
try:
databases = api.trove.database_list(self.request, instance_id)
except Exception:
databases = []
redirect = reverse('horizon:project:databases:detail',
args=[instance_id])
exceptions.handle(self.request,
_('Unable to retrieve databases.'),
redirect=redirect)
try:
granted = api.trove.user_show_access(
self.request, instance_id, user_name, host=user_host)
except Exception:
granted = []
redirect = reverse('horizon:project:databases:detail',
args=[instance_id])
exceptions.handle(self.request,
_('Unable to retrieve accessible databases.'),
redirect=redirect)
db_access_list = []
for database in databases:
if database in granted:
access = True
else:
access = False
db_access = DBAccess(database.name, access)
db_access_list.append(db_access)
return sorted(db_access_list, key=lambda data: (data.name))
def get_context_data(self, **kwargs):
context = super(AccessDetailView, self).get_context_data(**kwargs)
context["db_access"] = self.get_data()
return context
class AttachConfigurationView(horizon_forms.ModalFormView):
form_class = forms.AttachConfigurationForm
form_id = "attach_config_form"
modal_header = _("Attach Configuration Group")
modal_id = "attach_config_modal"
template_name = "project/databases/attach_config.html"
submit_label = "Attach Configuration"
submit_url = 'horizon:project:databases:attach_config'
success_url = reverse_lazy('horizon:project:databases:index')
@memoized.memoized_method
def get_object(self, *args, **kwargs):
instance_id = self.kwargs['instance_id']
try:
return api.trove.instance_get(self.request, instance_id)
except Exception:
msg = _('Unable to retrieve instance details.')
redirect = reverse('horizon:project:databases:index')
exceptions.handle(self.request, msg, redirect=redirect)
def get_context_data(self, **kwargs):
context = (super(AttachConfigurationView, self)
.get_context_data(**kwargs))
context['instance_id'] = self.kwargs['instance_id']
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
instance = self.get_object()
return {'instance_id': self.kwargs['instance_id'],
'datastore': instance.datastore.get('type', ''),
'datastore_version': instance.datastore.get('version', '')}
class DetailView(horizon_tabs.TabbedTableView):
tab_group_class = tabs.InstanceDetailTabs
template_name = 'horizon/common/_detail.html'
page_title = "{{ instance.name }}"
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
instance = self.get_data()
table = tables.InstancesTable(self.request)
context["instance"] = instance
context["url"] = self.get_redirect_url()
context["actions"] = table.render_row_actions(instance)
return context
@memoized.memoized_method
def get_data(self):
try:
LOG.info("Obtaining instance for detailed view ")
instance_id = self.kwargs['instance_id']
instance = api.trove.instance_get(self.request, instance_id)
instance.host = tables.get_host(instance)
except Exception:
msg = _('Unable to retrieve details '
'for database instance: %s') % instance_id
exceptions.handle(self.request, msg,
redirect=self.get_redirect_url())
try:
instance.full_flavor = api.trove.flavor_get(
self.request, instance.flavor["id"])
except Exception:
LOG.error('Unable to retrieve flavor details'
' for database instance: %s' % instance_id)
return instance
def get_tabs(self, request, *args, **kwargs):
instance = self.get_data()
return self.tab_group_class(request, instance=instance, **kwargs)
@staticmethod
def get_redirect_url():
return reverse('horizon:project:databases:index')
class CreateDatabaseView(horizon_forms.ModalFormView):
form_class = forms.CreateDatabaseForm
form_id = "create_database_form"
modal_header = _("Create Database")
modal_id = "create_database_modal"
template_name = 'project/databases/create_database.html'
submit_label = _("Create Database")
submit_url = 'horizon:project:databases:create_database'
success_url = 'horizon:project:databases:detail'
def get_success_url(self):
return reverse(self.success_url,
args=(self.kwargs['instance_id'],))
def get_context_data(self, **kwargs):
context = super(CreateDatabaseView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
instance_id = self.kwargs['instance_id']
return {'instance_id': instance_id}
class ResizeVolumeView(horizon_forms.ModalFormView):
form_class = forms.ResizeVolumeForm
form_id = "resize_volume_form"
modal_header = _("Resize Database Volume")
modal_id = "resize_volume_modal"
template_name = 'project/databases/resize_volume.html'
submit_label = "Resize Database Volume"
submit_url = 'horizon:project:databases:resize_volume'
success_url = reverse_lazy('horizon:project:databases:index')
page_title = _("Resize Database Volume")
@memoized.memoized_method
def get_object(self, *args, **kwargs):
instance_id = self.kwargs['instance_id']
try:
return api.trove.instance_get(self.request, instance_id)
except Exception:
msg = _('Unable to retrieve instance details.')
redirect = reverse('horizon:project:databases:index')
exceptions.handle(self.request, msg, redirect=redirect)
def get_context_data(self, **kwargs):
context = super(ResizeVolumeView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
instance = self.get_object()
return {'instance_id': self.kwargs['instance_id'],
'orig_size': instance.volume.get('size', 0)}
class ResizeInstanceView(horizon_forms.ModalFormView):
form_class = forms.ResizeInstanceForm
form_id = "resize_instance_form"
modal_header = _("Resize Database Instance")
modal_id = "resize_instance_modal"
template_name = 'project/databases/resize_instance.html'
submit_label = "Resize Database Instance"
submit_url = 'horizon:project:databases:resize_instance'
success_url = reverse_lazy('horizon:project:databases:index')
page_title = _("Resize Database Instance")
@memoized.memoized_method
def get_object(self, *args, **kwargs):
instance_id = self.kwargs['instance_id']
try:
instance = api.trove.instance_get(self.request, instance_id)
flavor_id = instance.flavor['id']
flavors = {}
for i, j in self.get_flavors():
flavors[str(i)] = j
if flavor_id in flavors:
instance.flavor_name = flavors[flavor_id]
else:
flavor = api.trove.flavor_get(self.request, flavor_id)
instance.flavor_name = flavor.name
return instance
except Exception:
redirect = reverse('horizon:project:databases:index')
msg = _('Unable to retrieve instance details.')
exceptions.handle(self.request, msg, redirect=redirect)
def get_context_data(self, **kwargs):
context = super(ResizeInstanceView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
@memoized.memoized_method
def get_flavors(self, *args, **kwargs):
try:
flavors = api.trove.flavor_list(self.request)
return instance_utils.sort_flavor_list(self.request, flavors)
except Exception:
redirect = reverse("horizon:project:databases:index")
exceptions.handle(self.request,
_('Unable to retrieve flavors.'),
redirect=redirect)
def get_initial(self):
initial = super(ResizeInstanceView, self).get_initial()
obj = self.get_object()
if obj:
initial.update({'instance_id': self.kwargs['instance_id'],
'old_flavor_id': obj.flavor['id'],
'old_flavor_name': getattr(obj,
'flavor_name', ''),
'flavors': self.get_flavors()})
return initial
class PromoteToReplicaSourceView(horizon_forms.ModalFormView):
form_class = forms.PromoteToReplicaSourceForm
form_id = "promote_to_replica_source_form"
modal_header = _("Promote to Replica Source")
modal_id = "promote_to_replica_source_modal"
template_name = 'project/databases/promote_to_replica_source.html'
submit_lable = _("Promote")
submit_url = 'horizon:project:databases:promote_to_replica_source'
success_url = reverse_lazy('horizon:project:databases:index')
@memoized.memoized_method
def get_object(self, *args, **kwargs):
instance_id = self.kwargs['instance_id']
try:
replica = api.trove.instance_get(self.request, instance_id)
replica_source = api.trove.instance_get(self.request,
replica.replica_of['id'])
instances = {'replica': replica,
'replica_source': replica_source}
return instances
except Exception:
msg = _('Unable to retrieve instance details.')
redirect = reverse('horizon:project:databases:index')
exceptions.handle(self.request, msg, redirect=redirect)
def get_context_data(self, **kwargs):
context = \
super(PromoteToReplicaSourceView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
context['replica'] = self.get_initial().get('replica')
context['replica'].ip = \
self.get_initial().get('replica').ip[0]
context['replica_source'] = self.get_initial().get('replica_source')
context['replica_source'].ip = \
self.get_initial().get('replica_source').ip[0]
args = (self.kwargs['instance_id'],)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
instances = self.get_object()
return {'instance_id': self.kwargs['instance_id'],
'replica': instances['replica'],
'replica_source': instances['replica_source']}
class EnableRootInfo(object):
def __init__(self, instance_id, instance_name, enabled, password=None):
self.id = instance_id
self.name = instance_name
self.enabled = enabled
self.password = password
class ManageRootView(horizon_tables.DataTableView):
table_class = tables.ManageRootTable
template_name = 'project/databases/manage_root.html'
page_title = _("Manage Root Access")
@memoized.memoized_method
def get_data(self):
instance_id = self.kwargs['instance_id']
try:
instance = api.trove.instance_get(self.request, instance_id)
except Exception:
redirect = reverse('horizon:project:databases:detail',
args=[instance_id])
exceptions.handle(self.request,
_('Unable to retrieve instance details.'),
redirect=redirect)
try:
enabled = api.trove.root_show(self.request, instance_id)
except Exception:
redirect = reverse('horizon:project:databases:detail',
args=[instance_id])
exceptions.handle(self.request,
_('Unable to determine if instance root '
'is enabled.'),
redirect=redirect)
root_enabled_list = []
root_enabled_info = EnableRootInfo(instance.id,
instance.name,
enabled.rootEnabled)
root_enabled_list.append(root_enabled_info)
return root_enabled_list
def get_context_data(self, **kwargs):
context = super(ManageRootView, self).get_context_data(**kwargs)
context['instance_id'] = self.kwargs['instance_id']
return context
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5254347
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/workflows/ 0000755 0001750 0001750 00000000000 00000000000 026671 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/workflows/__init__.py 0000644 0001750 0001750 00000000152 00000000000 031000 0 ustar 00corey corey 0000000 0000000 # Importing non-modules that are not used explicitly
from .create_instance import LaunchInstance # noqa
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/databases/workflows/create_instance.py 0000644 0001750 0001750 00000061616 00000000000 032404 0 ustar 00corey corey 0000000 0000000 # Copyright 2013 Rackspace Hosting
#
# 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.
from django.conf import settings
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms
from horizon.utils import memoized
from horizon import workflows
from openstack_dashboard import api as dash_api
from openstack_dashboard.dashboards.project.instances \
import utils as instance_utils
from openstack_dashboard.dashboards.project.instances.workflows \
import create_instance as dash_create_instance
from oslo_log import log as logging
from trove_dashboard import api
from trove_dashboard.utils import common as common_utils
LOG = logging.getLogger(__name__)
def parse_datastore_and_version_text(datastore_and_version):
if datastore_and_version:
datastore, datastore_version = datastore_and_version.split('-', 1)
return datastore.strip(), datastore_version.strip()
return None, None
class SetInstanceDetailsAction(workflows.Action):
availability_zone = forms.ChoiceField(
label=_("Availability Zone"),
required=False)
name = forms.CharField(max_length=80, label=_("Instance Name"))
volume = forms.IntegerField(label=_("Volume Size"),
min_value=0,
initial=1,
help_text=_("Size of the volume in GB."))
volume_type = forms.ChoiceField(
label=_("Volume Type"),
required=False,
help_text=_("Applicable only if the volume size is specified."))
datastore = forms.ChoiceField(
label=_("Datastore"),
help_text=_("Type and version of datastore."),
widget=forms.Select(attrs={
'class': 'switchable',
'data-slug': 'datastore'
}))
def __init__(self, request, *args, **kwargs):
if args:
self.backup_id = args[0].get('backup', None)
else:
self.backup_id = None
super(SetInstanceDetailsAction, self).__init__(request,
*args,
**kwargs)
# Add this field to the end after the dynamic fields
self.fields['locality'] = forms.ChoiceField(
label=_("Locality"),
choices=[("", "None"),
("affinity", "affinity"),
("anti-affinity", "anti-affinity")],
required=False,
help_text=_("Specify whether future replicated instances will "
"be created on the same hypervisor (affinity) or on "
"different hypervisors (anti-affinity). "
"This value is ignored if the instance to be "
"launched is a replica.")
)
class Meta(object):
name = _("Details")
help_text_template = "project/databases/_launch_details_help.html"
def clean(self):
datastore_and_version = self.data.get("datastore", None)
if not datastore_and_version:
msg = _("You must select a datastore type and version.")
self._errors["datastore"] = self.error_class([msg])
else:
datastore, datastore_version = parse_datastore_and_version_text(
common_utils.unhexlify(datastore_and_version))
field_name = self._build_flavor_field_name(datastore,
datastore_version)
flavor = self.data.get(field_name, None)
if not flavor:
msg = _("You must select a flavor.")
self._errors[field_name] = self.error_class([msg])
if not self.data.get("locality", None):
self.cleaned_data["locality"] = None
return self.cleaned_data
def handle(self, request, context):
datastore_and_version = context["datastore"]
if datastore_and_version:
datastore, datastore_version = parse_datastore_and_version_text(
common_utils.unhexlify(context["datastore"]))
field_name = self._build_flavor_field_name(datastore,
datastore_version)
flavor = self.data[field_name]
if flavor:
context["flavor"] = flavor
return context
return None
@memoized.memoized_method
def availability_zones(self, request):
try:
return dash_api.nova.availability_zone_list(request)
except Exception:
LOG.exception("Exception while obtaining availablity zones")
self._availability_zones = []
def populate_availability_zone_choices(self, request, context):
try:
zones = self.availability_zones(request)
except Exception:
zones = []
redirect = reverse('horizon:project:databases:index')
exceptions.handle(request,
_('Unable to retrieve availability zones.'),
redirect=redirect)
zone_list = [(zone.zoneName, zone.zoneName)
for zone in zones if zone.zoneState['available']]
zone_list.sort()
if not zone_list:
zone_list.insert(0, ("", _("No availability zones found")))
elif len(zone_list) > 1:
zone_list.insert(0, ("", _("Any Availability Zone")))
return zone_list
@memoized.memoized_method
def datastore_flavors(self, request, datastore_name, datastore_version):
try:
return api.trove.datastore_flavors(
request, datastore_name, datastore_version)
except Exception:
LOG.exception("Exception while obtaining flavors list")
redirect = reverse("horizon:project:databases:index")
exceptions.handle(request,
_('Unable to obtain flavors.'),
redirect=redirect)
@memoized.memoized_method
def populate_volume_type_choices(self, request, context):
try:
volume_types = dash_api.cinder.volume_type_list(request)
return ([("no_type", _("No volume type"))] +
[(type.name, type.name)
for type in volume_types])
except Exception:
LOG.exception("Exception while obtaining volume types list")
self._volume_types = []
@memoized.memoized_method
def datastores(self, request):
try:
return api.trove.datastore_list(request)
except Exception:
LOG.exception("Exception while obtaining datastores list")
self._datastores = []
@memoized.memoized_method
def datastore_versions(self, request, datastore):
try:
return api.trove.datastore_version_list(request, datastore)
except Exception:
LOG.exception("Exception while obtaining datastore version list")
self._datastore_versions = []
@memoized.memoized_method
def get_backup(self, request, backup_id):
try:
return api.trove.backup_get(request, backup_id)
except Exception:
LOG.exception("Exception while obtaining backup information")
return None
def populate_datastore_choices(self, request, context):
choices = ()
datastores = self.datastores(request)
if datastores is not None:
if self.backup_id:
backup = self.get_backup(request, self.backup_id)
for ds in datastores:
if self.backup_id:
if ds.name != backup.datastore['type']:
continue
versions = self.datastore_versions(request, ds.name)
if versions:
# only add to choices if datastore has at least one version
version_choices = ()
for v in versions:
# NOTE(zhaochao): please refer to the comment about
# the same change for 'populate_datastore_choices'
# of 'LaunchForm' in
# trove_dashboard/content/database_clusters/forms.py
# for details.
if not v.to_dict().get('active', True):
continue
if self.backup_id:
if v.id != backup.datastore['version_id']:
continue
selection_text = self._build_datastore_display_text(
ds.name, v.name)
widget_text = self._build_widget_field_name(
ds.name, v.name)
version_choices = (version_choices +
((widget_text, selection_text),))
self._add_datastore_flavor_field(request,
ds.name,
v.name)
choices = choices + version_choices
return choices
def _add_datastore_flavor_field(self,
request,
datastore,
datastore_version):
name = self._build_widget_field_name(datastore, datastore_version)
attr_key = 'data-datastore-' + name
field_name = self._build_flavor_field_name(datastore,
datastore_version)
self.fields[field_name] = forms.ChoiceField(
label=_("Flavor"),
help_text=_("Size of image to launch."),
required=False,
widget=forms.Select(attrs={
'class': 'switched',
'data-switch-on': 'datastore',
attr_key: _("Flavor")
}))
valid_flavors = self.datastore_flavors(request,
datastore,
datastore_version)
if valid_flavors:
self.fields[field_name].choices = instance_utils.sort_flavor_list(
request, valid_flavors)
def _build_datastore_display_text(self, datastore, datastore_version):
return datastore + ' - ' + datastore_version
def _build_widget_field_name(self, datastore, datastore_version):
# Since the fieldnames cannot contain an uppercase character
# we generate a hex encoded string representation of the
# datastore and version as the fieldname
return common_utils.hexlify(
self._build_datastore_display_text(datastore, datastore_version))
def _build_flavor_field_name(self, datastore, datastore_version):
return self._build_widget_field_name(datastore,
datastore_version)
TROVE_ADD_USER_PERMS = getattr(settings, 'TROVE_ADD_USER_PERMS', [])
TROVE_ADD_DATABASE_PERMS = getattr(settings, 'TROVE_ADD_DATABASE_PERMS', [])
TROVE_ADD_PERMS = TROVE_ADD_USER_PERMS + TROVE_ADD_DATABASE_PERMS
class SetInstanceDetails(workflows.Step):
action_class = SetInstanceDetailsAction
contributes = ("name", "volume", "volume_type", "flavor", "datastore",
"locality", "availability_zone")
class AddDatabasesAction(workflows.Action):
"""Initialize the database with users/databases. This tab will honor
the settings which should be a list of permissions required:
* TROVE_ADD_USER_PERMS = []
* TROVE_ADD_DATABASE_PERMS = []
"""
databases = forms.CharField(label=_('Initial Databases'),
required=False,
help_text=_('Comma separated list of '
'databases to create'))
user = forms.CharField(label=_('Initial Admin User'),
required=False,
help_text=_("Initial admin user to add"))
password = forms.CharField(widget=forms.PasswordInput(),
label=_("Password"),
required=False)
host = forms.CharField(label=_("Allowed Host (optional)"),
required=False,
help_text=_("Host or IP that the user is allowed "
"to connect through."))
class Meta(object):
name = _("Initialize Databases")
permissions = TROVE_ADD_PERMS
help_text_template = "project/databases/_launch_initialize_help.html"
def clean(self):
cleaned_data = super(AddDatabasesAction, self).clean()
if cleaned_data.get('user'):
if not cleaned_data.get('password'):
msg = _('You must specify a password if you create a user.')
self._errors["password"] = self.error_class([msg])
if not cleaned_data.get('databases'):
msg = _('You must specify at least one database if '
'you create a user.')
self._errors["databases"] = self.error_class([msg])
return cleaned_data
class InitializeDatabase(workflows.Step):
action_class = AddDatabasesAction
contributes = ["databases", 'user', 'password', 'host']
class AdvancedAction(workflows.Action):
config = forms.ChoiceField(
label=_("Configuration Group"),
required=False,
help_text=_('Select a configuration group'))
initial_state = forms.ChoiceField(
label=_('Source for Initial State'),
required=False,
help_text=_("Choose initial state."),
choices=[
('', _('None')),
('backup', _('Restore from Backup')),
('master', _('Replicate from Instance'))],
widget=forms.Select(attrs={
'class': 'switchable',
'data-slug': 'initial_state'
}))
backup = forms.ChoiceField(
label=_('Backup Name'),
required=False,
help_text=_('Select a backup to restore'),
widget=forms.Select(attrs={
'class': 'switched',
'data-switch-on': 'initial_state',
'data-initial_state-backup': _('Backup Name')
}))
master = forms.ChoiceField(
label=_('Master Instance Name'),
required=False,
help_text=_('Select a master instance'),
widget=forms.Select(attrs={
'class': 'switched',
'data-switch-on': 'initial_state',
'data-initial_state-master': _('Master Instance Name')
}))
replica_count = forms.IntegerField(
label=_('Replica Count'),
required=False,
min_value=1,
initial=1,
help_text=_('Specify the number of replicas to be created'),
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'initial_state',
'data-initial_state-master': _('Replica Count')
}))
def __init__(self, request, *args, **kwargs):
if args[0]:
self.backup_id = args[0].get('backup', None)
else:
self.backup_id = None
super(AdvancedAction, self).__init__(request, *args, **kwargs)
if self.backup_id:
self.fields['initial_state'].choices = [('backup',
_('Restore from Backup'))]
class Meta(object):
name = _("Advanced")
help_text_template = "project/databases/_launch_advanced_help.html"
def populate_config_choices(self, request, context):
try:
configs = api.trove.configuration_list(request)
config_name = "%(name)s (%(datastore)s - %(version)s)"
choices = [(c.id,
config_name % {'name': c.name,
'datastore': c.datastore_name,
'version': c.datastore_version_name})
for c in configs]
except Exception:
choices = []
if choices:
choices.insert(0, ("", _("Select configuration")))
else:
choices.insert(0, ("", _("No configurations available")))
return choices
def populate_backup_choices(self, request, context):
try:
choices = []
backups = api.trove.backup_list(request)
for b in backups:
if self.backup_id and b.id != self.backup_id:
continue
if b.status == 'COMPLETED':
choices.append((b.id, b.name))
except Exception:
choices = []
if choices:
choices.insert(0, ("", _("Select backup")))
else:
choices.insert(0, ("", _("No backups available")))
return choices
def _get_instances(self):
instances = []
try:
instances = api.trove.instance_list_all(self.request)
except Exception:
msg = _('Unable to retrieve database instances.')
exceptions.handle(self.request, msg)
return instances
def populate_master_choices(self, request, context):
try:
instances = self._get_instances()
choices = sorted([(i.id, i.name) for i in
instances if i.status == 'ACTIVE'],
key=lambda i: i[1])
except Exception:
choices = []
if choices:
choices.insert(0, ("", _("Select instance")))
else:
choices.insert(0, ("", _("No instances available")))
return choices
def clean(self):
cleaned_data = super(AdvancedAction, self).clean()
config = self.cleaned_data['config']
if config:
try:
# Make sure the user is not "hacking" the form
# and that they have access to this configuration
cfg = api.trove.configuration_get(self.request, config)
self.cleaned_data['config'] = cfg.id
except Exception:
raise forms.ValidationError(_("Unable to find configuration "
"group!"))
else:
self.cleaned_data['config'] = None
initial_state = cleaned_data.get("initial_state")
if initial_state == 'backup':
cleaned_data['replica_count'] = None
backup = self.cleaned_data['backup']
if backup:
try:
bkup = api.trove.backup_get(self.request, backup)
self.cleaned_data['backup'] = bkup.id
except Exception:
raise forms.ValidationError(_("Unable to find backup!"))
else:
raise forms.ValidationError(_("A backup must be selected!"))
cleaned_data['master'] = None
elif initial_state == 'master':
master = self.cleaned_data['master']
if master:
try:
api.trove.instance_get(self.request, master)
except Exception:
raise forms.ValidationError(
_("Unable to find master instance!"))
else:
raise forms.ValidationError(
_("A master instance must be selected!"))
cleaned_data['backup'] = None
else:
cleaned_data['master'] = None
cleaned_data['backup'] = None
cleaned_data['replica_count'] = None
return cleaned_data
class Advanced(workflows.Step):
action_class = AdvancedAction
contributes = ['config', 'backup', 'master', 'replica_count']
class LaunchInstance(workflows.Workflow):
slug = "launch_instance"
name = _("Launch Instance")
finalize_button_name = _("Launch")
success_message = _('Launched %(count)s named "%(name)s".')
failure_message = _('Unable to launch %(count)s named "%(name)s".')
success_url = "horizon:project:databases:index"
default_steps = (SetInstanceDetails,
dash_create_instance.SetNetwork,
InitializeDatabase,
Advanced)
def __init__(self, request=None, context_seed=None, entry_point=None,
*args, **kwargs):
super(LaunchInstance, self).__init__(request, context_seed,
entry_point, *args, **kwargs)
self.attrs['autocomplete'] = (
settings.HORIZON_CONFIG.get('password_autocomplete'))
def format_status_message(self, message):
name = self.context.get('name', 'unknown instance')
return message % {"count": _("instance"), "name": name}
def _get_databases(self, context):
"""Returns the initial databases for this instance."""
databases = None
if context.get('databases'):
dbs = context['databases']
databases = [{'name': d.strip()} for d in dbs.split(',')]
return databases
def _get_users(self, context):
users = None
if context.get('user'):
user = {
'name': context['user'],
'password': context['password'],
'databases': self._get_databases(context),
}
if context['host']:
user['host'] = context['host']
users = [user]
return users
def _get_backup(self, context):
backup = None
if context.get('backup'):
backup = {'backupRef': context['backup']}
return backup
def _get_nics(self, context):
netids = context.get('network_id', None)
if netids:
return [{"net-id": netid, "v4-fixed-ip": ""}
for netid in netids]
else:
return None
def _get_volume_type(self, context):
volume_type = None
if context.get('volume_type') != 'no_type':
volume_type = context['volume_type']
return volume_type
def _get_locality(self, context):
# If creating a replica from a master then always set to None
if context.get('master'):
return None
locality = None
if context.get('locality'):
locality = context['locality']
return locality
def handle(self, request, context):
try:
datastore, datastore_version = parse_datastore_and_version_text(
common_utils.unhexlify(self.context['datastore']))
avail_zone = context.get('availability_zone', None)
LOG.info("Launching database instance with parameters "
"{name=%s, volume=%s, volume_type=%s, flavor=%s, "
"datastore=%s, datastore_version=%s, "
"dbs=%s, "
"backups=%s, nics=%s, replica_of=%s replica_count=%s, "
"configuration=%s, locality=%s, "
"availability_zone=%s}",
context['name'], context['volume'],
self._get_volume_type(context), context['flavor'],
datastore, datastore_version,
self._get_databases(context),
self._get_backup(context), self._get_nics(context),
context.get('master'), context['replica_count'],
context.get('config'), self._get_locality(context),
avail_zone)
api.trove.instance_create(request,
context['name'],
context['volume'],
context['flavor'],
datastore=datastore,
datastore_version=datastore_version,
databases=self._get_databases(context),
users=self._get_users(context),
restore_point=self._get_backup(context),
nics=self._get_nics(context),
replica_of=context.get('master'),
replica_count=context['replica_count'],
volume_type=self._get_volume_type(
context),
configuration=context.get('config'),
locality=self._get_locality(context),
availability_zone=avail_zone)
return True
except Exception:
exceptions.handle(request)
return False
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5254347
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/ 0000755 0001750 0001750 00000000000 00000000000 026645 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/__init__.py 0000644 0001750 0001750 00000001263 00000000000 030760 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 IBM Corp.
#
# 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.
# Register the REST API URLs so they can be called from the JavaScript files
import trove_dashboard.api.rest # noqa
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/panel.py 0000644 0001750 0001750 00000001515 00000000000 030320 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 IBM Corp.
#
# 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.
from django.utils.translation import ugettext_lazy as _
import horizon
class NGBackups(horizon.Panel):
name = _("Backups")
slug = 'ng_database_backups'
policy_rules = ('openstack.services.database',
'openstack.services.object-store',)
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/templates/ 0000755 0001750 0001750 00000000000 00000000000 030643 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000215 00000000000 011453 x ustar 00 0000000 0000000 113 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/templates/ng_database_backups/
28 mtime=1586806756.5254347
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/templates/ng_database_backu0000755 0001750 0001750 00000000000 00000000000 034161 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000221 00000000000 011450 x ustar 00 0000000 0000000 123 path=trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/templates/ng_database_backups/index.html
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/templates/ng_database_backu0000644 0001750 0001750 00000000456 00000000000 034170 0 ustar 00corey corey 0000000 0000000 {% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Backups" %}{% endblock %}
{% block page_header %}
{% endblock page_header %}
{% block main %}
{% endblock %}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/urls.py 0000644 0001750 0001750 00000001354 00000000000 030207 0 ustar 00corey corey 0000000 0000000 # Copyright 2015 IBM Corp.
#
# 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.
from django.conf import urls
from trove_dashboard.content.ng_database_backups import views
urlpatterns = [
urls.url(r'^$', views.IndexView.as_view(), name='index'),
]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/content/ng_database_backups/views.py 0000644 0001750 0001750 00000001306 00000000000 030354 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 IBM Corp.
#
# 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.
from django.views import generic
class IndexView(generic.TemplateView):
template_name = 'project/ng_database_backups/index.html'
././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5254347
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/ 0000755 0001750 0001750 00000000000 00000000000 022625 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/_1710_database_panel_group.py 0000644 0001750 0001750 00000001621 00000000000 030145 0 ustar 00corey corey 0000000 0000000 # 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.
from django.utils.translation import ugettext_lazy as _
# The slug of the panel group to be added to HORIZON_CONFIG. Required.
PANEL_GROUP = 'database'
# The display name of the PANEL_GROUP. Required.
PANEL_GROUP_NAME = _('Database')
# The slug of the dashboard the PANEL_GROUP associated with. Required.
PANEL_GROUP_DASHBOARD = 'project'
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/_1720_project_databases_panel.py 0000644 0001750 0001750 00000002236 00000000000 030646 0 ustar 00corey corey 0000000 0000000 # 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.
from trove_dashboard import exceptions
# The slug of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'databases'
# The slug of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The slug of the panel group the PANEL is associated with.
PANEL_GROUP = 'database'
# Python panel class of the PANEL to be added.
ADD_PANEL = ('trove_dashboard.content.databases.panel.Databases')
ADD_INSTALLED_APPS = ["trove_dashboard", ]
ADD_EXCEPTIONS = {
'not_found': exceptions.NOT_FOUND,
'recoverable': exceptions.RECOVERABLE,
'unauthorized': exceptions.UNAUTHORIZED
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/_1730_project_database_backups_panel.py 0000644 0001750 0001750 00000002177 00000000000 032200 0 ustar 00corey corey 0000000 0000000 # 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.
from trove_dashboard import exceptions
# The slug of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'database_backups'
# The slug of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The slug of the panel group the PANEL is associated with.
PANEL_GROUP = 'database'
# Python panel class of the PANEL to be added.
ADD_PANEL = ('trove_dashboard.content.database_backups.panel.Backups')
ADD_EXCEPTIONS = {
'not_found': exceptions.NOT_FOUND,
'recoverable': exceptions.RECOVERABLE,
'unauthorized': exceptions.UNAUTHORIZED,
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/_1731_project_database_backups_panel.py 0000644 0001750 0001750 00000002651 00000000000 032176 0 ustar 00corey corey 0000000 0000000 # Copyright 2016 IBM Corp.
#
# 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.
# The slug of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'ng_database_backups'
# The slug of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The slug of the panel group the PANEL is associated with.
PANEL_GROUP = 'database'
# If set to True, this settings file will not be added to the settings.
DISABLED = True
# Python panel class of the PANEL to be added.
ADD_PANEL = ('trove_dashboard.content.ng_database_backups.panel.NGBackups')
ADD_ANGULAR_MODULES = ['horizon.dashboard.project.backups']
ADD_JS_FILES = [
'dashboard/project/ngbackups/backups.module.js',
'dashboard/project/ngbackups/table/table.controller.js',
'dashboard/project/ngbackups/table/table.config.js',
'app/core/openstack-service-api/trove.service.js'
]
ADD_JS_SPEC_FILES = [
'dashboard/project/ngbackups/backups.module.spec.js'
]
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/_1740_project_database_clusters_panel.py 0000644 0001750 0001750 00000002327 00000000000 032412 0 ustar 00corey corey 0000000 0000000 # Copyright [2015] Hewlett-Packard Development Company, L.P.
# All Rights Reserved.
#
# 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.
from trove_dashboard import exceptions
# The slug of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'database_clusters'
# The slug of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The slug of the panel group the PANEL is associated with.
PANEL_GROUP = 'database'
# Python panel class of the PANEL to be added.
ADD_PANEL = ('trove_dashboard.content.database_clusters.panel.Clusters')
ADD_EXCEPTIONS = {
'not_found': exceptions.NOT_FOUND,
'recoverable': exceptions.RECOVERABLE,
'unauthorized': exceptions.UNAUTHORIZED
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/_1760_project_database_configurations_panel.py 0000644 0001750 0001750 00000002244 00000000000 033600 0 ustar 00corey corey 0000000 0000000 # 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.
from trove_dashboard import exceptions
# The slug of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'database_configurations'
# The slug of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The slug of the panel group the PANEL is associated with.
PANEL_GROUP = 'database'
# Python panel class of the PANEL to be added.
ADD_PANEL = ('trove_dashboard.content.database_configurations.panel.'
'Configurations')
ADD_EXCEPTIONS = {
'not_found': exceptions.NOT_FOUND,
'recoverable': exceptions.RECOVERABLE,
'unauthorized': exceptions.UNAUTHORIZED,
}
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/enabled/__init__.py 0000644 0001750 0001750 00000000000 00000000000 024724 0 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/exceptions.py 0000644 0001750 0001750 00000001405 00000000000 023766 0 ustar 00corey corey 0000000 0000000 #
# 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.
from troveclient import exceptions as troveclient
UNAUTHORIZED = (
troveclient.Unauthorized,
)
NOT_FOUND = (
troveclient.NotFound,
)
RECOVERABLE = (
troveclient.ClientException,
)
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ 0000755 0001750 0001750 00000000000 00000000000 022472 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/cs/ 0000755 0001750 0001750 00000000000 00000000000 023077 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5254347
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/cs/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 024664 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/cs/LC_MESSAGES/django.po 0000644 0001750 0001750 00000073250 00000000000 026475 0 ustar 00corey corey 0000000 0000000 # Lenka Husáková , 2016. #zanata
# Stanislav Ulrych , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-01-15 11:49+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-06-14 12:02+0000\n"
"Last-Translator: Stanislav Ulrych \n"
"Language-Team: Czech\n"
"Language: cs\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s instancí"
msgid "-"
msgstr "-"
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Nezapomeňte prosím: Hodnota zadaná v poli Velikost svazku "
"by měla být větší než 0. Některé konfigurace ale neodporují zadání velikosti "
"svazku. Pokud zadání velikosti má za následek chybu uvádějící, že podpora "
"velikosti svazku není povolena, pak zadejte 0."
msgid "A backup must be selected!"
msgstr "Musíte vybrat zálohu."
msgid "A master instance must be selected!"
msgstr "Musíte vybrat hlavní instanci."
msgid "A new name or new password or new host must be specified."
msgstr "Musí být zvolen nový název, nové heslo nebo nový hostitel."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Přístup zrušen do"
msgstr[1] "Přístupy zrušeny do"
msgstr[2] "Přístupy zrušeno do"
msgid "Accessible"
msgstr "Přístupné"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Aktivní"
msgid "Add"
msgstr "Přidat"
msgid "Add Instance"
msgstr "Přidat instanci"
msgid "Advanced"
msgstr "Pokročilé"
msgid "Allowed Host"
msgstr "Povolený hostitel"
msgid "Allowed Host (optional)"
msgstr "Povolený hostitel (nepovinné)"
msgid "Applicable only if the volume size is specified."
msgstr "Aplikovatelný pouze pokud velikost svazku je zadána."
msgid "At least one of the new fields must be changed."
msgstr "Alespoň jedno z nových polí musí být změněno."
msgid "Available networks"
msgstr "Dostupné sítě"
msgid "Backup"
msgstr "Záloha"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Záloha"
msgid "Backup Database"
msgstr "Zálohovat databázi"
msgid "Backup Details"
msgstr "Podrobnosti zálohy"
msgid "Backup Details: {{ backup.name }}"
msgstr "Podrobnosti zálohy: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Životnost zálohy"
msgid "Backup File"
msgstr "Zálohovat soubor"
msgid "Backup File Location"
msgstr "Umístění souboru zálohy"
msgid "Backup Name"
msgstr "Název zálohy"
msgid "Backup Overview"
msgstr "Přehled záloh"
msgid "Backups"
msgstr "Zálohy"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Blokováno"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Sestavování"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Sestavování"
msgid "Cancel"
msgstr "Zrušit"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Nelze zakázat root přístup: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Nelze zvětšit cluster. Instance nebyly zadány."
msgid "Character Set"
msgstr "Znaková sada"
msgid "Choose a new instance flavor."
msgstr "Zvolte nový typ instance."
msgid "Choose initial state."
msgstr "Zvolte výchozí stav."
msgid "Close"
msgstr "Zavřít"
msgid "Cluster Name"
msgstr "Název clusteru"
msgid "Cluster Size"
msgstr "Velikost clusteru"
msgid "Clusters"
msgstr "Clustery"
msgid "Collation"
msgstr "Collation"
msgid "Comma separated list of databases to create"
msgstr "Čárkami oddělený seznam databází pro vytvoření"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Dokončené"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr "Potvrdit, že současná replika bude povýšena na nový zdroj repliky."
msgid "Connection Examples"
msgstr "Příklady připojení"
msgid "Connection Information"
msgstr "Informace o připojení"
msgid "Container"
msgstr "Kontejner"
msgid "Create Backup"
msgstr "Vytvořit zálohu"
msgid "Create Database"
msgstr "Vytvořit databázi"
msgid "Create User"
msgstr "Vytvořit uživatele"
msgid "Created"
msgstr "Vytvořeno"
#, python-format
msgid "Created database \"%s\"."
msgstr "Vytvořena databáze \"%s\"."
#, python-format
msgid "Created user \"%s\"."
msgstr "Vytvořen uživatel \"%s\"."
msgid "Current Replica"
msgstr "Současná replika"
msgid "Current Replica Source"
msgstr "Současný zdroj repliky"
msgid "Current Size (GB)"
msgstr "Současná velikost (GB)"
msgid "Current Task"
msgstr "Současný úkol"
msgid "DATABASE"
msgstr "DATABÁZE"
msgid "Database"
msgstr "Databáze"
msgid "Database Access"
msgstr "Databázový přístup"
msgid "Database Backups"
msgstr "Zálohy databáze"
msgid "Database Info"
msgstr "Informace o databázi"
msgid "Database Instance"
msgstr "Instance databáze"
msgid "Database Name"
msgstr "Název databáze"
msgid "Database Port"
msgstr "Port databáze"
msgid "Databases"
msgstr "Databáze"
msgid "Datastore"
msgstr "Datové úložiště"
msgid "Datastore Version"
msgstr "Verze datového úložiště"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Smazat zálohu"
msgstr[1] "Smazat zálohy"
msgstr[2] "Smazat zálohy"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Smazat cluster"
msgstr[1] "Smazat clustery"
msgstr[2] "Smazat clustery"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Smazat databázi"
msgstr[1] "Smazat databáze"
msgstr[2] "Smazat databáze"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Smazání selhalo"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Smazat instanci"
msgstr[1] "Smazat instance"
msgstr[2] "Smazat instance"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Smazat uživatele"
msgstr[1] "Smazat uživatele"
msgstr[2] "Smazat uživatele"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Záloha smazána"
msgstr[1] "Zálohy smazány"
msgstr[2] "Zálohy smazány"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Databáze smazána"
msgstr[1] "Databáze smazány"
msgstr[2] "Databáze smazány"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Uživatel smazán"
msgstr[1] "Uživatelé smazáni"
msgstr[2] "Uživatelé smazáni"
msgid "Deleted cluster is not recoverable."
msgstr "Smazaný cluster nelze obnovit"
msgid "Deleted instances are not recoverable."
msgstr "Smazané instance nelze obnovit."
msgid "Description"
msgstr "Popis"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Odpojit repliku"
msgstr[1] "Odpojit repliky"
msgstr[2] "Odpojit repliky"
msgid "Details"
msgstr "Podrobnosti"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Zakázat log"
msgstr[1] "Zakázat logy"
msgstr[2] "Zakázat logy"
msgid "Disable Root"
msgstr "Zakázat root."
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Log zakázán"
msgstr[1] "Logy zakázány"
msgstr[2] "Logy zakázány"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Vyřadit log"
msgstr[1] "Vyřadit logy"
msgstr[2] "Vyřadit logy"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Log vyřezen"
msgstr[1] "Logy vyřazeny"
msgstr[2] "Logy vyřazeny"
msgid "Download"
msgstr "Stáhnout"
msgid "Download Backup"
msgstr "Stáhnout zálohu"
msgid "Edit User"
msgstr "Upravit uživatele"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Vysunout zdroj repliky"
msgstr[1] "Vysunout zdroje repliky"
msgstr[2] "Vysunout zdroje repliky"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Zdroj repliky odpojen"
msgstr[1] "Zdroje repliky odpojen"
msgstr[2] "Zdroje repliky odpojit"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Povolit log"
msgstr[1] "Povolit logy"
msgstr[2] "Povolit logy"
msgid "Enable Root"
msgstr "Povolit root"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Log povolen"
msgstr[1] "Logy povoleny"
msgstr[2] "Logy povoleny"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Chyba"
msgid "Error creating database backup."
msgstr "Chyba při vytváření zálohy databáze."
msgid "Error deleting database on instance."
msgstr "Chyba při mazání databáze v instanci."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Chyba při stahování log souboru: %s"
msgid "Error getting database backup list."
msgstr "Chyba při získávání seznamu záloh databáze."
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Selhalo"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Selhalo"
msgid "Flavor"
msgstr "Typ"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "Přejít"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Povolit přístup"
msgstr[1] "Povolit přístupy"
msgstr[2] "Povolit přístupy"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Přístup povolen do"
msgstr[1] "Přístupy povoleny do"
msgstr[2] "Přístupy povoleny do"
msgid "Grow Cluster"
msgstr "Zvětšit cluster"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Zvětšit cluster: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Byl někdy povolen root"
msgid "Host"
msgstr "Hostitel"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Hostitel nebo IP, ze které se uživatel může připojit."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "Přírůstková"
msgid "Incremental Backup"
msgstr "Přírůstková záloha"
msgid "Information"
msgstr "Informace"
msgid "Initial Admin User"
msgstr "Výchozí účet správce"
msgid "Initial Databases"
msgstr "Výchozí databáze"
msgid "Initial Volume Size"
msgstr "Počáteční velikost svazku"
msgid "Initial admin user to add"
msgstr "Výchozí účet správce pro přidání"
msgid "Initialize Databases"
msgstr "Inicializovat databáze"
msgid "Instance Name"
msgstr "Název instance"
msgid "Instance Type"
msgstr "Typ instance"
msgid "Instances"
msgstr "Instance"
msgid "Is a Replica Of"
msgstr "Je replikou "
msgid "Launch"
msgstr "Spustit"
msgid "Launch Cluster"
msgstr "Spustit cluster"
msgid "Launch Database"
msgstr "Spustit databázi"
msgid "Launch Instance"
msgstr "Spustit instanci"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "Spuštěno %(count)s pojmenovaných \"%(name)s\"."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Cluster \"%s\" spuštěn"
msgid "Log"
msgstr "Log"
msgid "Log Contents"
msgstr "Obsah logu"
msgid "Log Length"
msgstr "Délka logu"
msgid "Log length must be a nonnegative integer."
msgstr "Délka logu musí být nezáporné celé číslo."
msgid "Log: "
msgstr "Log: "
msgid "Logs"
msgstr "Logy"
msgid "Manage Access"
msgstr "Spravovat přístup"
msgid "Manage Root"
msgstr "Spravovat root"
msgid "Manage Root Access"
msgstr "Spravovat root přístup"
msgid "Management Console"
msgstr "Správcovská konzole"
msgid "Master Instance Name"
msgstr "Název hlavní instance"
msgid "Name"
msgstr "Jméno"
msgid "Network"
msgstr "Síť"
msgid "Network attached to instance."
msgstr "Síť připojená k instanci."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "Nový"
msgid "New Flavor"
msgstr "Nový typ"
msgid "New Host"
msgstr "Nový hostitel"
msgid "New Name"
msgstr "Nový název"
msgid "New Password"
msgstr "Nové heslo"
msgid "New Size (GB)"
msgstr "Nová velkost (GB)"
msgid "New password for cluster access."
msgstr "Nové heslo pro přístup ke clusteru"
msgid "New size for volume must be greater than current size."
msgstr "Nová velikost svazku musí být větší než současná."
msgid "No backups available"
msgstr "Žádné zálohy nejsou dostupné"
msgid "No flavors available"
msgstr "Typy nejsou dostupné"
msgid "No instances available"
msgstr "Žádné dostupné instance"
msgid "No volume type"
msgstr "Žádný typ svazku"
msgid "None"
msgstr "Žádný"
msgid "Not Assigned"
msgstr "Nepřiděleno"
msgid "Not Found"
msgstr "Nenalezeno"
msgid "Not available"
msgstr "Není dostupné"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Poznámka: Povolí root přístup do instance. Pokud root uživatel je již "
"povolen, bude vygenerováno nové heslo."
msgid "Number of Instances"
msgstr "Počet instancí"
msgid "Number of Shards"
msgstr "Počet částí"
msgid "Number of instances in the cluster."
msgstr "Počet instancí v clusteru."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Počet instanci v clusteru (pouze pro čtení)."
msgid "Number of shards. (Read only)"
msgstr "Počet částí. (Pouze pro čtení)"
msgid "Old Flavor"
msgstr "Původní typ"
msgid "Optional Backup Description"
msgstr "Nepovinný popis zálohy"
msgid "Optional character set for the database."
msgstr "Volitelná znaková sada pro databázi."
msgid "Optional collation type for the database."
msgstr "Collation databáze (volitelné)."
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"Volitelný, čárkami oddělený seznam databází, do kterého má uživatel přístup."
msgid "Optional datastore specific type of the instance."
msgstr "Typ instance specifický pro uložiště (volitelné)."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Specifická hodnota volitelného datového uložiště, která definuje vztah z "
"jedné instance v clusteru do jiné instance."
msgid "Optional host of user."
msgstr "Volitelný hostitel pro uživatele."
msgid "Optional name of the instance."
msgstr "Volitelné jméno instance."
msgid "Optional parent backup"
msgstr "Nepovinná nadřazená záloha"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"Můžete vytvořit databázi pomocí předchozí zálohy, nebo jako repliku jiné "
"instance databáze."
msgid "Optionally provide a character set and collation for the database."
msgstr "Zvolit znakovou sadu a collation databáze (volitelné)."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr "Lze zadat nepovinný, čárkami oddělený seznam databází pro vytvoření:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Volitelně zadat uživatelova hostitele a seznam databází, do kterých má "
"uživatel přístup."
msgid "Overview"
msgstr "Přehled"
msgid "PASSWORD"
msgstr "HESLO"
msgid "Parent Backup"
msgstr "Nadřazená záloha"
msgid "Password"
msgstr "Heslo"
msgid "Password (required)"
msgstr "Heslo (povinné)"
msgid "Password for root user must be specified."
msgstr "Heslo pro uživatele root musí být zadáno."
msgid "Password for root user."
msgstr "Heslo pro root uživatele."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"Heslo je viditelné pouze bezprostředně po povolení nebo resetování root."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Nezapomeňte prosím: Nová hodnota musí být větší nebo rovna "
"velikosti původního svazku."
msgid "Promote"
msgstr "Povýšení"
msgid "Promote to Replica Source"
msgstr "Povýšení zdroje repliky"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Povýšení repliky \"%s\" na nový zdroj repliky."
msgid "Publish"
msgstr "Zveřejnit"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Zveřejnit log"
msgstr[1] "Zveřejnit logy"
msgstr[2] "Zveřejnit logy"
msgid "Publishable (bytes)"
msgstr "Publikovatelný (bytů)"
msgid "Published (bytes)"
msgstr "Zvěřejněno (bajty)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Log zveřejněn"
msgstr[1] "Logy zveřejněny"
msgstr[2] "Logy zveřejněny"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Restartování"
msgid "Related To"
msgstr "Vztahující se k"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Odstranit instanci"
msgstr[1] "Odstranit instance"
msgstr[2] "Odstranit instance"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Instance smazána"
msgstr[1] "Instance smazány"
msgstr[2] "Instancí smazáno"
msgid "Removed instances from cluster."
msgstr "Instance z clusteru odstraněny."
msgid "Replica Count"
msgstr "Počet replik"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Replika odpojena"
msgstr[1] "Repliky odpojeny"
msgstr[2] "Repliky odpojeny"
msgid "Replicas"
msgstr "Repliky"
msgid "Replicate from Instance"
msgstr "Replikovat z instance"
msgid "Replication"
msgstr "Replikace"
msgid "Reset Root Password"
msgstr "Resetovat root heslo"
msgid "Resize Database Instance"
msgstr "Změnit velikost instance databáze"
msgid "Resize Database Volume"
msgstr "Změnit velikost svazku databáze"
msgid "Resize Instance"
msgstr "Změnit velikost instance"
msgid "Resize Volume"
msgstr "Změnit velikost svazku"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Změna velikosti"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Změna velikosti instance \"%s\""
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Měnění velikosti svazku \"%s\""
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Restartovat instanci"
msgstr[1] "Restartovat instance"
msgstr[2] "Restartovat instance"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Vyžadován restart"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Instance restartována"
msgstr[1] "Instance restartovány"
msgstr[2] "Instance restartovány"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Restartované instance ztratí veškerá data, jenž nejsou uložená v trvalém "
"úložišti."
msgid "Restore Backup"
msgstr "Obnovit zálohu"
msgid "Restore from Backup"
msgstr "Obnovit ze zálohy"
msgid "Return to Log List"
msgstr "Návrat do seznamu logů"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Zrušit přístup"
msgstr[1] "Zrušit přístupy"
msgstr[2] "Zrušit přístupy"
msgid "Root Enabled"
msgstr "Root povolen"
msgid "Root Password"
msgstr "Heslo pro root uživatele"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Root heslo pro cluster \"%s\" aktualizováno"
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Ukládání"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Zmenšení clusteru naplánováno"
msgstr[1] "Zmenšení clusterů naplánováno"
msgstr[2] "Zmenšení clusterů naplánováno"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Naplánována záloha \"%(name)s\"."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Smazání clusteru naplánováno"
msgstr[1] "Smazání clusterů naplánováno"
msgstr[2] "Smazání clusterů naplánováno"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Smazání instance naplánováno"
msgstr[1] "Smazání instancí naplánováno"
msgstr[2] "Smazání instancí naplánováno"
msgid "Scheduled growing of cluster."
msgstr "Zvětšení clusteru naplánováno."
msgid "Select a backup to restore"
msgstr "Vyberte zálohu pro obnovení"
msgid "Select a master instance"
msgstr "Vyberte hlavní instanci"
msgid "Select a new flavor"
msgstr "Vyberte nový typ"
msgid "Select backup"
msgstr "Vyberte zálohu"
msgid "Select datastore type and version"
msgstr "Vyberte typ datového úložiště a verzi"
msgid "Select instance"
msgstr "Vyberte instanci"
msgid "Select parent backup"
msgstr "Vyberte nadřazenou zálohu"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Vyberte instance, které budou odebrány z clusteru."
msgid "Selected networks"
msgstr "Vybrané sítě"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Zmenšit cluster"
msgstr[1] "Zmenšit clustery"
msgstr[2] "Zmenšit clustery"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Zmenšit cluster: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Zmenšení clusteru je nevratné."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Vypnout"
msgid "Size"
msgstr "Velikost"
msgid "Size of image to launch."
msgstr "Velikost obrazu pro spuštění."
msgid "Size of the volume in GB."
msgstr "Velikost svazku v GB."
msgid "Source for Initial State"
msgstr "Zdroj výchozího stavu"
msgid "Specify a new flavor for the database instance."
msgstr "Zadejte nový typ instance databáze."
msgid "Specify a new name, new password or new host name for the user."
msgstr ""
"Zadejte nové jméno, nové heslo nebo nové jméno hostitele pro uživatele."
msgid "Specify the details for launching an instance."
msgstr "Zadejte podrobnosti spuštění instance."
msgid "Specify the details for the database backup."
msgstr "Zadejte podrobnosti zálohy databáze."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Zadejte detaily instancí pro přidání do clusteru."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Zadejte instance pro přidání do clusteru. Po zadání všech instancí klikněte "
"na tlačítko 'Zvětšit cluster' pro zahájení operace."
msgid "Specify the name of the new database."
msgstr "Zadejte název nové databáze."
msgid "Specify the name of the new user and password."
msgstr "Zadejte jméno a heslo pro nového uživatele."
msgid "Specify the new root password for vertica cluster."
msgstr "Zadejte nové root heslo pro vertica cluster."
msgid "Specify the new volume size for the database instance."
msgstr "Zadejte novou velikost svazku instance databáze."
msgid "Specify the number of replicas to be created"
msgstr "Zadejte počet replik pro vytvoření"
msgid "Specs"
msgstr "Specifikace"
msgid "Status"
msgstr "Stav"
msgid "Status if root was ever enabled for an instance."
msgstr "Stav, zda byl root povolen pro instanci"
msgid "Successfully disabled root access."
msgstr "Úspěšně zakázán přístup root."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"Pole 'Typ instance' a 'Týkající se' jsou specifické vzhledem k úložišti a "
"jsou volitelné. Viz dokumentace Trove pro více informací o použití těchto "
"polí."
msgid "The flavor must be specified."
msgstr "Typ musí být zadaný."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"Pole jméno je volitelné. Pokud je prázdné, bude generováno při vytvoření "
"clusteru."
msgid "The number of instances must be greater than 1."
msgstr "Počet instancí musí být větší než 1."
msgid "The number of shards must be greater than 1."
msgstr "Počet částí musí být větší než 1."
msgid "There was a problem enabling root."
msgstr "Při povolování uživatele root se vyskytl problém."
msgid "This action cannot be undone."
msgstr "Toto nelze vrátit."
msgid "Type"
msgstr "Typ"
msgid "Type and version of datastore."
msgstr "Typ a verze datového úložiště"
msgid "USERNAME"
msgstr "UŽIVATELSKÉ JMÉNO"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Nelze %(action)s: %(objs)s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Nelze vytvořit databázi. %s"
#, python-format
msgid "Unable to create user. %s"
msgstr "Nelze vytvořit uživatele. %s"
msgid "Unable to determine if instance root is enabled."
msgstr "Nelze zjistit, zda je root přístup do instance povolen."
msgid "Unable to find backup!"
msgstr "Nelze najít zálohu."
msgid "Unable to find master instance!"
msgstr "Nelze najít hlavní instanci."
msgid "Unable to get database backup data."
msgstr "Nelze získat data zálohy databáze."
msgid "Unable to get databases data."
msgstr "Nelze získat data databáze."
msgid "Unable to get instances data."
msgstr "Nelze získat data instance."
msgid "Unable to get user access data."
msgstr "Nelze získat přístupová data uživatele."
msgid "Unable to get user data."
msgstr "Nelze získat data uživatele."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Nelze zvětšit cluster. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Nelze zvětšit cluster: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Nelze spustit %(count)s pojmenovaných \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Nelze spustit cluster. %s"
msgid "Unable to list database backups for parent."
msgstr "Nelze vypsat zálohy databáze pro nadřazenou zálohu."
msgid "Unable to list database instances to backup."
msgstr "Nelze vypsat instance databáze k zálohování."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Nelze načíst {0} log.\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Nelze načíst {0} log pro instanci \"{1}\"."
msgid "Unable to obtain datastore versions."
msgstr "Nelze získat verze datových úložišť."
msgid "Unable to obtain datastores."
msgstr "Nelze získat datová úložiště."
msgid "Unable to obtain flavors."
msgstr "Nelze získat typy."
msgid "Unable to obtain information on root user"
msgstr "Nelze získat informace o root uživateli"
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Repliku nelze povýšit na novou zdroj repliky. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Nelze odebrat instance z clusteru: %s."
#, python-format
msgid "Unable to reset password. %s"
msgstr "Nelze resetovat heslo. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Nelze změnit velikost instance. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Nelze změnit velikost svazku. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Nelze získat dostupné databáze."
msgid "Unable to retrieve cluster details."
msgstr "Nelze získat podrobnosti clusteru."
msgid "Unable to retrieve database clusters."
msgstr "Nelze získat databázové clustery."
msgid "Unable to retrieve database instances."
msgstr "Nelze získat instance databáze."
msgid "Unable to retrieve database size information."
msgstr "Nelze získat informace o velikosti databáze."
msgid "Unable to retrieve databases."
msgstr "Nelze získat databáze. "
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Nelze získat podrobnosti zálohy: %s."
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Nelze získat podrobnosti databázového clusteru: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Nelze získat detaily pro instance databáze: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Nelze získat podrobnosti nadřazené zálohy: %s"
msgid "Unable to retrieve flavors."
msgstr "Nelze získat typy."
msgid "Unable to retrieve instance details."
msgstr "Nelze získat podrobnosti instance."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Nelze získat seznam logů.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Nelze získat sítě."
#, python-format
msgid "Unable to update user. %s"
msgstr "Nelze aktualizovat uživatele. %s"
msgid "Unknown"
msgstr "Neznámý"
msgid "Updated"
msgstr "Aktualizováno"
#, python-format
msgid "Updated user \"%s\"."
msgstr "Uživatel aktualizován \"%s\"."
msgid "User Name"
msgstr "Uživatelské jméno"
msgid "Username (required)"
msgstr "Uživatelské jméno (povinné)"
msgid "Users"
msgstr "Uživatelé"
msgid "View Full Log"
msgstr "Zobrazit celý log"
msgid "View Log"
msgstr "Zobrazit log"
msgid "Volume"
msgstr "Svazek"
msgid "Volume Size"
msgstr "Velikost svazku"
msgid "Volume Type"
msgstr "Typ svazku"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "Nemáte oprávnění pro %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Přírůstkovou zálohu můžete provést zadáním nadřazené zálohy. "
"Nezapomeňte ale, že ne všechny databáze podporují "
"přírůstkové zálohy a v takových případech operace selže s chybou."
msgid "You must select a datastore type and version."
msgstr "Musíte vybrat typ datového úložiště a verzi."
msgid "You must specify a password if you create a user."
msgstr "Při vytváření uživatele musíte zadat heslo."
msgid "You must specify at least one database if you create a user."
msgstr "Při vytváření uživatele musíte zadat alespoň jednu databázi."
msgid "instance"
msgstr "instance"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/de/ 0000755 0001750 0001750 00000000000 00000000000 023062 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/de/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 024647 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/de/LC_MESSAGES/django.po 0000644 0001750 0001750 00000115013 00000000000 026452 0 ustar 00corey corey 0000000 0000000 # Frank Kloeker , 2016. #zanata
# Frank Kloeker , 2017. #zanata
# Robert Simai , 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-01-30 00:49+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-01-29 04:19+0000\n"
"Last-Translator: Robert Simai \n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s Instanzen"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"Bitte beachten Sie: Es kann notwendig sein, die "
"Datenbankinstanz zur Übernahme der neuen Konfiguration neu zu starten."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Zur Beachtung: Der Wert im Feld Datenträgergröße sollte im "
"Allgemeinen größer als 0 sein. Einige Konfigurationen unterstützen die "
"Angabe der Datenträgergröße jedoch nicht. Falls bei der Eingabe der "
"Datenträgergröße ein Fehler ausgegeben wird, wie Datenträgerunterstützung "
"nicht aktiviert, geben Sie 0 ein."
msgid "A backup must be selected!"
msgstr "Es muss eine Sicherungskopie ausgewählt werden!"
msgid "A master instance must be selected!"
msgstr "Es muss eine Master-Instanz ausgewählt werden!"
msgid "A new name or new password or new host must be specified."
msgstr ""
"Ein neuer Name oder ein neues Passwort oder ein neuer Host muss angegeben "
"werden."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Zugriff widerrufen für"
msgstr[1] "Zugriff widerrufen für"
msgid "Accessible"
msgstr "Verfügbar"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Aktiv"
msgid "Add"
msgstr "Hinzufügen"
msgid "Add Instance"
msgstr "Füge Instanz hinzu"
msgid "Add Parameter"
msgstr "Parameter hinzufügen"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Füge Parameter zur Gruppenkonfiguration hinzu. Wenn alle Parameter "
"hinzugefügt sind, klicke \"Änderungen übernehmen\" für dauerhafte Änderungen."
msgid "Advanced"
msgstr "Erweitert"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"Erlauben Sie dem Benutzer sich nur von diesem Host zu verbinden. Ohne Angabe "
"darf der Benutzer sich von überall verbinden."
msgid "Allowed Host"
msgstr "Erlaubter Host"
msgid "Allowed Host (optional)"
msgstr "Erlaubter Host (optional)"
msgid "Any Availability Zone"
msgstr "Irgendeine Verfügbarkeitszone"
msgid "Applicable only if the volume size is specified."
msgstr "Nur anwendbar wenn die Datenträgergrösse angegeben ist."
msgid "Applied changes to server"
msgstr "Angewandte Änderungen zum Server"
msgid "Apply Changes"
msgstr "Änderungen anwenden"
msgid "At least one of the new fields must be changed."
msgstr "Mindestens eines der neuen Felder muss geändert werden."
msgid "Attach Configuration Group"
msgstr "Konfigurationsgruppe angehangen"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Angehängte Konfigurationsgruppe \"%s\""
msgid "Availability Zone"
msgstr "Verfügbarkeitszone"
msgid "Available networks"
msgstr "Verfügbare Netzwerke"
msgid "Backup"
msgstr "Sicherungskopie"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Sicherungskopie"
msgid "Backup Database"
msgstr "Datenbank sichern"
msgid "Backup Details"
msgstr "Sicherungskopie Details"
msgid "Backup Details: {{ backup.name }}"
msgstr "Sicherungskopie Details: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Dauer der Sicherung"
msgid "Backup File"
msgstr "Sicherungsdatei"
msgid "Backup File Location"
msgstr "Speicherort der Sicherungskopie"
msgid "Backup Name"
msgstr "Name der Sicherung"
msgid "Backup Overview"
msgstr "Sicherungskopie Übersicht"
msgid "Backups"
msgstr "Sicherungskopien"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Blockiert"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Bauend"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Bauend"
msgid "Cancel"
msgstr "Abbrechen"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Konnte Root Zugriff nicht deaktivieren: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Cluster kann nicht vergrößert werden. Keine Instanzen angegeben."
msgid "Character Set"
msgstr "Zeichensatz"
msgid "Choose a new instance flavor."
msgstr "Neue Variante für die Instanz auswählen."
msgid "Choose initial state."
msgstr "Initialen Status auswählen."
msgid "Close"
msgstr "Schließen"
msgid "Cluster Name"
msgstr "Cluster Name"
msgid "Cluster Size"
msgstr "Clustergröße"
msgid "Clusters"
msgstr "Cluster"
msgid "Collation"
msgstr "Kollation"
msgid "Comma separated list of databases to create"
msgstr "Kommaseparierte Liste von zu erzeugenden Datenbanken"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Abgeschlossen"
msgid "Configuration Defaults"
msgstr "Konfigurationsdetails"
msgid "Configuration Group"
msgstr "Konfigurationsgruppe"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Gruppenkonfigurationsdetails: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Konfiguration der Gruppeninstanzen"
msgid "Configuration Group Name"
msgstr "Name der Konfigurationsgruppe"
msgid "Configuration Group Overview"
msgstr "Konfigurationsgruppenübersicht"
msgid "Configuration Group Values"
msgstr "Werte der Konfigurationsgruppe"
msgid "Configuration Groups"
msgstr "Konfigurationsgruppe"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr ""
"Bestätige das derzeitige Replika zur Beförderung als neue Replika-Quelle."
msgid "Connection Examples"
msgstr "Verbindungsbeispiele"
msgid "Connection Information"
msgstr "Verbindungsinformationen"
msgid "Container"
msgstr "Container"
msgid "Create Backup"
msgstr "Sicherungskopie erstellen"
msgid "Create Configuration Group"
msgstr "Erzeuge Konfigurationsgruppe"
msgid "Create Database"
msgstr "Erzeuge Datenbank"
msgid "Create User"
msgstr "Benutzer erstellen"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"Erzeugen Sie einen optionalen initialen Benutzer. Dieser Benutzer hat "
"Zugriff auf die Datenbank, die Sie erstellen."
msgid "Created"
msgstr "Erstellt"
msgid "Created configuration group"
msgstr "Neue Konfigurationsgruppe wurde erstellt"
#, python-format
msgid "Created database \"%s\"."
msgstr "Datenbank \"%s\" erstellt."
#, python-format
msgid "Created user \"%s\"."
msgstr "Benutzer \"%s\" angelegt."
msgid "Current Replica"
msgstr "Derzeitiges Replika"
msgid "Current Replica Source"
msgstr "Derzeitige Replika-Quelle"
msgid "Current Size (GB)"
msgstr "Aktuelle Größe (GB)"
msgid "Current Task"
msgstr "Aktuelle Aufgabe"
msgid "DATABASE"
msgstr "DATENBANK"
msgid "Database"
msgstr "Datenbank"
msgid "Database Access"
msgstr "Datenbankzugriff"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "Datenbankzugriff für: {{ user_name }}@{{user_host}}"
msgid "Database Backups"
msgstr "Datenbanksicherungen"
msgid "Database Info"
msgstr "Datenbank Info"
msgid "Database Instance"
msgstr "Datenbankinstanz"
msgid "Database Name"
msgstr "Datenbank Name"
msgid "Database Port"
msgstr "Datenbankport"
msgid "Databases"
msgstr "Datenbanken"
msgid "Datastore"
msgstr "Datenspeicher"
msgid "Datastore Version"
msgstr "Version des Datenspeichers"
msgid "Defaults"
msgstr "Voreinstellungen"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Sicherungskopie löschen"
msgstr[1] "Sicherungskopien löschen"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Cluster löschen"
msgstr[1] "Cluster löschen"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "Konfigurationsgruppe löschen"
msgstr[1] "Konfigurationsgruppen löschen"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Datenbank löschen"
msgstr[1] "Datenbanken löschen"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Löschvorgang fehlgeschlagen"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Instanz löschen"
msgstr[1] "Instanzen löschen"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "Parameter löschen"
msgstr[1] "Parameter löschen"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Benutzer löschen"
msgstr[1] "Benutzer löschen"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Gelöschte Sicherungskopie"
msgstr[1] "Gelöschte Sicherungskopien"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "Gelöschte Konfigurationsgruppe"
msgstr[1] "Gelöschte Konfigurationsgruppen"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Gelöschte Datenbank"
msgstr[1] "Gelöschte Datenbanken"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "Gelöschter Parameter"
msgstr[1] "Gelöschte Parameter"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Gelöschter Benutzer"
msgstr[1] "Gelöschte Benutzer"
msgid "Deleted cluster is not recoverable."
msgstr "Ein gelöschter Cluster kann nicht wiederhergestellt werden."
msgid "Deleted instances are not recoverable."
msgstr "Gelöschte Instanzen können nicht wiederhergestellt werden."
msgid "Description"
msgstr "Beschreibung"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Konfigurationsgruppe abtrennen"
msgstr[1] "Konfigurationsgruppen abtrennen"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Replikation abtrennen"
msgstr[1] "Replikationen abtrennen"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Abgetrennte Konfigurationsgruppe"
msgstr[1] "Abgetrennte Konfigurationsgruppen"
msgid "Details"
msgstr "Details"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Deaktiviere Log"
msgstr[1] "Deaktiviere Logs"
msgid "Disable Root"
msgstr "Deaktiviere Root"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Deaktiviertes Log"
msgstr[1] "Deaktivierte Logs"
msgid "Discard Changes"
msgstr "Verwerfe Änderungen"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Log verwerfen"
msgstr[1] "Logs verwerfen"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Verworfenes Log"
msgstr[1] "Verworfene Logs"
msgid "Download"
msgstr "Herunterladen"
msgid "Download Backup"
msgstr "Sicherungskopie herunterladen"
msgid "Edit User"
msgstr "Benutzer bearbeiten"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Replicaquelle auswerfen"
msgstr[1] "Replicaquellen auswerfen"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Ausgeworfene Replicaquelle"
msgstr[1] "Ausgeworfene Replicaquellen"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Aktiviere Log"
msgstr[1] "Aktiviere Logs"
msgid "Enable Root"
msgstr "Aktiviere Root"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Aktiviertes Log"
msgstr[1] "Aktivierte Logs"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Fehler"
msgid "Error applying changes"
msgstr "Fehler beim Anwenden der Änderungen"
msgid "Error creating database backup."
msgstr "Fehler beim Erzeugen der Datenbanksicherung."
msgid "Error deleting database on instance."
msgstr "Fehler beim Löschen der Datenbank auf Instanz."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Fehler beim Herunterladen von Logfiles: %s"
msgid "Error getting configuration group list."
msgstr "Fehler beim Bezug der Gruppenkonfigurationsliste."
msgid "Error getting database backup list."
msgstr "Fehler beim Abruf der Datenbank-Sicherungskopieliste."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Fehler beim Zurücksetzen der Parameter: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Fehlgeschlagen"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Fehlgeschlagen"
msgid "Fault"
msgstr "Fehler"
msgid "Flavor"
msgstr "Variante"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "Los"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Zugriff erlauben."
msgstr[1] "Zugriff erlauben."
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Zugriff erlaubt für"
msgstr[1] "Zugriff erlaubt für"
msgid "Grow Cluster"
msgstr "Cluster vergrößern"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Cluster vergrößern: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Root war schon aktiviert"
msgid "Host"
msgstr "Host"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Host- oder IP-Adresse, zu der sich der Benutzer verbinden darf."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "Inkrementell"
msgid "Incremental Backup"
msgstr "Inkrementelle Sicherung"
msgid "Info"
msgstr "Info"
msgid "Information"
msgstr "Information"
msgid "Initial Admin User"
msgstr "Initialer Administrator"
msgid "Initial Databases"
msgstr "Initiale Datenbanken"
msgid "Initial Volume Size"
msgstr "Initiale Datenträgergröße"
msgid "Initial admin user to add"
msgstr "Initialer Administrator zum Hinzufügen"
msgid "Initialize Databases"
msgstr "Datenbanken initialisieren"
msgid "Instance Name"
msgstr "Instanzname"
msgid "Instance Type"
msgstr "Instanz Typ"
msgid "Instances"
msgstr "Instanzen"
msgid "Is a Replica Of"
msgstr "Ist eine Replikation von"
msgid "Launch"
msgstr "Start"
msgid "Launch Cluster"
msgstr "Cluster starten"
msgid "Launch Database"
msgstr "Datenbank starten"
msgid "Launch Instance"
msgstr "Instanz starten"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "%(count)s mal \"%(name)s\" gestartet."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Cluster \"%s\" gestartet"
msgid "Locality"
msgstr "Lokalität"
msgid "Log"
msgstr "Log"
msgid "Log Contents"
msgstr "Log Inhalte"
msgid "Log Length"
msgstr "Loglänge"
msgid "Log length must be a nonnegative integer."
msgstr "Loglänge muß eine nichtnegative Zahl sein."
msgid "Log: "
msgstr "Log:"
msgid "Logs"
msgstr "Logs"
msgid "Manage Access"
msgstr "Zugriff verwalten"
msgid "Manage Root"
msgstr "Verwalte Root"
msgid "Manage Root Access"
msgstr "Verwalte Root Zugriff"
msgid "Management Console"
msgstr "Verwaltungskonsole"
msgid "Master Instance Name"
msgstr "Master-Instanz Name"
msgid "Message"
msgstr "Nachricht"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"Bewegen Sie Netzwerke von 'Verfügbare Netzwerke' nach 'Ausgewählte "
"Netzwerke' durch klicken des Knopfes oder durch ziehen und fallen lassen. "
"Sie können die NIC Reihenfolge ebenso durch ziehen und fallen lassen ändern."
msgid "Name"
msgstr "Name"
msgid "Network"
msgstr "Netzwerk"
msgid "Network attached to instance."
msgstr "Der Instanz zugewiesenes Netzwerk."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "Neu"
msgid "New Flavor"
msgstr "Neue Variante"
msgid "New Host"
msgstr "Neuer Host"
msgid "New Name"
msgstr "Neuer Name"
msgid "New Password"
msgstr "Neues Passwort"
msgid "New Size (GB)"
msgstr "Neue Größe (GB)"
msgid "New password for cluster access."
msgstr "Neues Passwort für den Clusterzugriff."
msgid "New size for volume must be greater than current size."
msgstr ""
"Die neue Größe des Datenträgers muss größer sein als die momentane Größe."
msgid "No availability zones found"
msgstr "Keine Verfügbarkeitszone gefunden"
msgid "No backups available"
msgstr "Keine Sicherungskopien verfügbar"
msgid "No configuration groups available"
msgstr "Keine Konfigurationsgruppen verfügbar"
msgid "No configurations available"
msgstr "Keine Konfigurationen verfügbar"
msgid "No flavors available"
msgstr "Keine Varianten verfügbar"
msgid "No instances available"
msgstr "Keine Instanz verfügbar"
msgid "No volume type"
msgstr "Kein Datenträgertyp"
msgid "None"
msgstr "Keine"
msgid "Not Assigned"
msgstr "Nicht zugewiesen"
msgid "Not Found"
msgstr "Nicht gefunden"
msgid "Not available"
msgstr "Nicht verfügbar"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Anmerkung: Aktiviere root Zugriff auf der Instanz. Wenn root schon aktiviert "
"war, wurde ein neues Passwort generiert."
msgid "Number of Instances"
msgstr "Anzahl der Instanzen"
msgid "Number of Shards"
msgstr "Anzahl der Shards"
msgid "Number of instances in the cluster."
msgstr "Anzahl der Instanzen in dem Cluster."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Anzahl der Instanzen im Cluster (nur lesen)"
msgid "Number of shards. (Read only)"
msgstr "Anzahl der Shards. (nur lesen)"
msgid "Old Flavor"
msgstr "Alte Variante"
msgid "Optional Backup Description"
msgstr "Optionale Beschreibung der Sicherungskopie"
msgid "Optional character set for the database."
msgstr "Optionaler Zeichensatz für die Datenbank."
msgid "Optional collation type for the database."
msgstr "Optionaler Kollationstyp für die Datenbank."
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"Optionale kommaseparierte Liste von Datenbanken, auf die der Benutzer "
"Zugriff hat."
msgid "Optional datastore specific type of the instance."
msgstr "Optional Datenspeicher spezifischer Typ der Instanz."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Optionaler datenspeicher-spezifische Wert, der die Beziehung von einer "
"Instanz im Cluster zu einer anderen beschreibt."
msgid "Optional host of user."
msgstr "Optionaler Host des Benutzers."
msgid "Optional name of the instance."
msgstr "Optionaler Name der Instanz"
msgid "Optional parent backup"
msgstr "Optionale Eltern-Sicherungskopie"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"Optional wählen Sie die Erstellung der Datenbank aus einer vorherigen "
"Sicherung oder als Replikation einer vorhandenen Datenbankinstanz."
msgid "Optionally provide a character set and collation for the database."
msgstr ""
"Stelle optional ein Zeichensatgz und eine Kollation für die Datenbank zur "
"Verfügung."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"Geben Sie optional eine kommaseparierte Liste der zu erzeugenden Datenbanken "
"an:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Stelle optional den Host des Benutzers und eine Liste von Datenbanken zur "
"Verfügung, auf die der Benutzer Zugriff haben soll."
msgid "Overview"
msgstr "Übersicht"
msgid "PASSWORD"
msgstr "PASSWORT"
msgid "Parameter"
msgstr "Parameter"
msgid "Parameters"
msgstr "Parameter"
msgid "Parent Backup"
msgstr "Eltern-Sicherungskopie"
msgid "Password"
msgstr "Passwort"
msgid "Password (required)"
msgstr "Passwort (erforderlich)"
msgid "Password for root user must be specified."
msgstr "Das Passwort für den Root-Benutzer muss angegeben werden."
msgid "Password for root user."
msgstr "Passwort des Root-Benutzers."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"Passwort ist nur sichtbar, nachdem Root aktiviert oder zurückgesetzt ist."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Bitte beachten: Der neue Wert muss grösser sein als die "
"existierende Datenträgergrösse."
msgid "Promote"
msgstr "Befördern"
msgid "Promote to Replica Source"
msgstr "Befördert zur Replicaquelle"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Angebotenes Replica \"%s\" als die neue Replicaquelle."
msgid "Property"
msgstr "Eigenschaft"
msgid "Publish"
msgstr "Veröffentliche"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Log publizieren"
msgstr[1] "Logs publizieren"
msgid "Publishable (bytes)"
msgstr "Publizierbar (bytes)"
msgid "Published (bytes)"
msgstr "Publiziert (bytes)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Publiziertes Log"
msgstr[1] "Publizierte Logs"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Neustartend"
msgid "Related To"
msgstr "In Beziehung zu"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Entferne Instanz"
msgstr[1] "Entferne Instanzen"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Entfernte Instanze"
msgstr[1] "Entfernte Instanzen"
msgid "Removed instances from cluster."
msgstr "Instanzen wurden vom Cluster entfernt."
msgid "Replica Count"
msgstr "Replica Anzahl"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Abgetrennte Replikation"
msgstr[1] "Abgetrennte Replpikationen"
msgid "Replicas"
msgstr "Replikationen"
msgid "Replicate from Instance"
msgstr "Repliziere aus Instanz"
msgid "Replication"
msgstr "Replikation"
msgid "Reset Parameters"
msgstr "Parameter zurücksetzen"
msgid "Reset Root Password"
msgstr "Root-Passwort zurücksetzen"
msgid "Resize Database Instance"
msgstr "Datenbankinstanzgröße ändern"
msgid "Resize Database Volume"
msgstr "Größe des Datenbank-Datenträgers anpassen"
msgid "Resize Instance"
msgstr "Instanzgröße ändern"
msgid "Resize Volume"
msgstr "Datenträgergröße ändern"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Größenänderung wird ausgeführt"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Skaliere Instanz \"%s\""
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Ändere Größe des Datenträgers \"%s\""
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Instanz neu starten"
msgstr[1] "Instanzen neu starten"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Neustart erforderlich"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Neu gestartete Instanz"
msgstr[1] "Neu gestartete Instanzen"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Neu gestartete Instanzen verlieren alle Daten, die nicht im persistenten "
"Speicher gespeichert wurden."
msgid "Restore Backup"
msgstr "Aus Sicherungskopie wiederherstellen"
msgid "Restore from Backup"
msgstr "Aus Sicherungskopie wiederherstellen"
msgid "Return to Log List"
msgstr "Zurück zur Logliste"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Zugriff entziehen"
msgstr[1] "Zugriff entziehen"
msgid "Root Enabled"
msgstr "Root aktiviert"
msgid "Root Password"
msgstr "Root-Passwort"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Root-Passwort für den Cluster \"%s\" aktualisiert"
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Speichern"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Geplante Verkleinerung des Clusters"
msgstr[1] "Geplante Verkleinerung des Clusters"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Geplante Sicherung \"%(name)s\"."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Geplante Löschung eines Clusters"
msgstr[1] "Geplante Löschung von Clustern"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Geplante Löschung einer Instanz"
msgstr[1] "Geplante Löschung von Instanzen"
msgid "Scheduled growing of cluster."
msgstr "Geplante Vergrößerung des Clusters"
msgid "Select a backup to restore"
msgstr "Wählen Sie eine Sicherungskopie zur Wiederherstellung aus"
msgid "Select a configuration group"
msgstr "Wähle eine Konfigurationsgruppe"
msgid "Select a configuration group to attach to the database instance."
msgstr "Wähle eine Konfigurationsgruppe zum Anhängen an die Datenbankinstanz."
msgid "Select a master instance"
msgstr "Wählen Sie eine Master-Instanz"
msgid "Select a new flavor"
msgstr "Neue Variante auswählen"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr ""
"Wähle einen Parameter und stelle einen Wert für den Konfigurationsparameter "
"zur Verfügung."
msgid "Select backup"
msgstr "Sicherungskopie auswählen"
msgid "Select configuration"
msgstr "Wähle Konfiguration"
msgid "Select configuration group"
msgstr "Wähle Konfigurationsgruppe"
msgid "Select datastore type and version"
msgstr "Typ und Version des Datenspeichers wählen"
msgid "Select instance"
msgstr "Instanz auswählen"
msgid "Select parent backup"
msgstr "Eltern-Sicherungskopie auswählen"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr ""
"Wählen Sie die Instanz(en) aus, die vom Cluster entfernt werden sollen."
msgid "Selected networks"
msgstr "Ausgewählte Netzwerke"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Cluster verkleinern"
msgstr[1] "Cluster verkleinern"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Cluster verkleinern: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Verkleinern eines Clusters kann nicht rückgängig gemacht werden."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Herunterfahren"
msgid "Size"
msgstr "Größe"
msgid "Size of image to launch."
msgstr "Größe des zu startenden Abbildes."
msgid "Size of the volume in GB."
msgstr "Größe des Datenträgers in GB."
msgid "Source for Initial State"
msgstr "Quelle für initialen Status"
msgid "Specify a new flavor for the database instance."
msgstr "Geben Sie eine neue Variante für die Datenbankinstanz an."
msgid "Specify a new name, new password or new host name for the user."
msgstr ""
"Geben Sie einen neuen Namen, ein neues Passwort oder einen neuen Host für "
"den Benutzer an."
msgid "Specify the details for launching an instance."
msgstr "Geben Sie die Details zum Start einer Instanz an."
msgid "Specify the details for the database backup."
msgstr "Legen Sie die Details für die Datenbanksicherung fest."
msgid "Specify the details of the instance to be added to the cluster."
msgstr ""
"Geben Sie die Details der Instanz an, die zum Cluster hinzugefügt werden "
"soll."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Spezifiziert die Instanzen, die zum Cluster zugefügt worden. Wenn alle "
"Instanzen spezifiziert sind, klicken Sie \"Baue Cluster\", um den Cluster "
"entstehen zu lassen."
msgid "Specify the name of the new database."
msgstr "Spezifiziere den Namen der neuen Datenbank."
msgid "Specify the name of the new user and password."
msgstr "Geben Sie den Namen und das Passwort des neuen Benutzers an."
msgid "Specify the new root password for vertica cluster."
msgstr "Geben Sie das neue root Passwort für den Vertica Cluster an."
msgid "Specify the new volume size for the database instance."
msgstr "Die neue Größe des Datenträgers der Datenbankinstanz festlegen."
msgid "Specify the number of replicas to be created"
msgstr "Spezifiziere die Nummer der zu erstellenden Replikas"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"Spezifiere, ob zukünftig replizierte Instanzen auf demselben Hypervisor "
"erstellt werden (Affinität) oder auf verschiedenen (Anti-Affinität). Wert "
"wird ignoriert, wenn die erstellte Instanz eine Replika ist."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Gibt an, welche Instanzen des Clusters auf demselben Hypervisor erstellt "
"werden (Affinität) oder auf unterschiedlichen (Anti-Affinität)."
msgid "Specs"
msgstr "Spezifikationen"
msgid "Status"
msgstr "Status"
msgid "Status if root was ever enabled for an instance."
msgstr "Status wenn Root für diese Instanz schon aktiviert war."
msgid "Successfully added parameter"
msgstr "Parameter erfolgreich hinzugefügt"
msgid "Successfully disabled root access."
msgstr "Root Zugriff erfolgreich deaktiviert."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"Das 'Instanztyp' und 'In Beziehung zu' Felder sind datenspeicherspezifisch "
"und optional. Schauen Sie in die Trove Dokumentation für mehr Informationen "
"zur Benutzung dieser Felder."
msgid "The flavor must be specified."
msgstr "Die Variante muss angegeben werden."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"Das Namensfeld ist optional. Wenn das Feld leer ist, wird ein Name beim "
"Entstehen des Clusters generiert."
msgid "The number of instances must be greater than 1."
msgstr "Die Anzahl der Instanzen muss größer als 1 sein."
msgid "The number of shards must be greater than 1."
msgstr "Die Anzahl der Shards muss größer als 1 sein."
msgid "There was a problem enabling root."
msgstr "Beim Root aktivieren ist ein Problem aufgetreten."
msgid "This action cannot be undone."
msgstr "Diese Aktion kann nicht rückgängig gemacht werden."
msgid "Type"
msgstr "Typ"
msgid "Type and version of datastore."
msgstr "Typ und Version des Datenspeichers."
msgid "USERNAME"
msgstr "BENUTZERNAME"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Nicht möglich: %(action)s: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Parameter kann nicht hinzugefügt werden: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Konnte Konfigurationsgruppe nicht anhängen. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Konfigurationsgruppe %s konnte nicht erstellt werden."
#, python-format
msgid "Unable to create database. %s"
msgstr "Datenbank konnte nicht erstellt werden. %s"
msgid "Unable to create list of parameters."
msgstr "Die Liste der Parameter kann nicht erzeugt werden."
#, python-format
msgid "Unable to create user. %s"
msgstr "Benutzer %s kann nicht erstellt werden."
msgid "Unable to determine if instance root is enabled."
msgstr "Es kann nicht ermittelt werden, ob auf der Instanz root aktiviert ist."
msgid "Unable to find backup!"
msgstr "Sicherungskopie kann nicht gefunden werden!"
msgid "Unable to find configuration group!"
msgstr "Konfigurationsgruppe konnte nicht gefunden werden!"
msgid "Unable to find master instance!"
msgstr "Master-Instanz kann nicht gefunden werden!"
msgid "Unable to get configuration data."
msgstr "Konnte Konfigurationsdaten nicht beziehen."
msgid "Unable to get database backup data."
msgstr "Datenbank-Sicherungsdaten können nicht abgerufen werden."
msgid "Unable to get databases data."
msgstr "Datenbank-Daten können nicht abgerufen werden."
msgid "Unable to get instances data."
msgstr "Instanzdaten können nicht abgerufen werden."
msgid "Unable to get user access data."
msgstr "Konnte Zugangsdaten nicht beziehen."
msgid "Unable to get user data."
msgstr "Benutzerdaten können nicht abgerufen werden."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Cluster %s kann nicht vergrößert werden."
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Cluster %s kann nicht vergrößert werden."
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Außerstande %(count)s mal \"%(name)s\" zu starten."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Cluster \"%s\" kann nicht gestartet werden."
msgid "Unable to list database backups for parent."
msgstr "Eltern-Datenbank-Sicherungskopien können nicht aufgelistet werden."
msgid "Unable to list database instances to backup."
msgstr "Die zu sichernden Datenbankinstanzen können nicht aufgelistet werden."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Konnte log {0} nicht laden\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Konnte log {0} für Instanz \"{1}\" nicht laden."
msgid "Unable to obtain datastore versions."
msgstr "Beziehen der Datastore Versionen nicht möglich."
msgid "Unable to obtain datastores."
msgstr "Beziehen des Datastore nicht möglich."
msgid "Unable to obtain flavors."
msgstr "Die Varianten können nicht abgerufen werden."
msgid "Unable to obtain information on root user"
msgstr "Konnte keine Informationen über den Benutzer Root erhalten"
msgid "Unable to obtain list of parameters."
msgstr "Die Liste der Parameter können nicht abgerufen werden."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Konnte neue Replicaquelle nicht anbieten. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Instanzen können nicht vom Cluster %s entfernt werden."
#, python-format
msgid "Unable to reset password. %s"
msgstr "Das Passwort kann nicht zurückgesetzt werden. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Instanz %s kann nicht skaliert werden."
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Größenänderung des Datenträgers nicht möglich. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Konnte erreichbare Datenbanken nicht beziehen."
msgid "Unable to retrieve availability zones."
msgstr "Verfügbarkeitszonen können nicht abgerufen werden."
msgid "Unable to retrieve cluster details."
msgstr "Clusterdetails können nicht abgerufen werden."
msgid "Unable to retrieve database clusters."
msgstr "Datenbankcluster können nicht abgerufen werden."
msgid "Unable to retrieve database instances."
msgstr "Liste der Datenbankinstanzen kann nicht abgerufen werden."
msgid "Unable to retrieve database size information."
msgstr "Größe der Datenbank kann nicht abgerufen werden."
msgid "Unable to retrieve databases."
msgstr "Die Datenbanken können nicht abgerufen werden."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Details zur Sicherungskopie können nicht abgerufen werden: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "Konnte Gruppenkonfigurationsdetails nicht beziehen: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Details zum Datenbankcluster können nicht abgerufen werden: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Details zur Datenbankinstanz können nicht abgerufen werden: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr ""
"Details zur übergeordneten Sicherungskopie können nicht abgerufen werden: %s"
msgid "Unable to retrieve flavors."
msgstr "Varianten können nicht abgerufen werden."
msgid "Unable to retrieve instance details."
msgstr "Instanzdetails können nicht aufgerufen werden. "
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Konnte die Liste der Logs nicht beziehen.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Netzwerke können nicht abgerufen werden."
#, python-format
msgid "Unable to update user. %s"
msgstr "Benutzer %s kann nicht aktualisiert werden."
msgid "Unknown"
msgstr "Unbekannt"
msgid "Updated"
msgstr "Aktualisiert"
#, python-format
msgid "Updated user \"%s\"."
msgstr "Benutzer \"%s\" aktualisiert."
msgid "User Name"
msgstr "Benutzername"
msgid "Username (required)"
msgstr "Benutzername (erforderlich)"
msgid "Users"
msgstr "Benutzer"
msgid "Value"
msgstr "Wert"
msgid "Value must be \"true\" or \"false\"."
msgstr "Wert muß \"true\" oder \"false\" sein."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "Der Wert muss im Bereich von %(min)s bis %(max)s sein."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "Wert muß größer-gleich %s sein."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "Wert muß kleiner-gleich %s sein."
msgid "Value must be a number."
msgstr "Wert muß eine Zahl sein."
#, python-format
msgid "Value must be of type %s."
msgstr "Wert muss vom Typ %s sein."
msgid "Values"
msgstr "Werte"
msgid "View Full Log"
msgstr "Gesamtes Log anzeigen"
msgid "View Log"
msgstr "Log anzeigen"
msgid "Volume"
msgstr "Datenträger"
msgid "Volume Size"
msgstr "Datenträgergröße"
msgid "Volume Type"
msgstr "Datenträgertyp"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "Sie haben keine Berechtigung für %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Sie können eine inkrementelle Sicherung durchführen, indem Sie eine Eltern-"
"Sicherungskopie angeben. Achtung! Nicht alle Datenbanken "
"unterstützen inkrementelle Sicherungen. In diesem Fall wird die Ausführung "
"fehlschlagen."
msgid "You must select a datastore type and version."
msgstr "Sie müssen Typ und Version des Datenspeichers wählen."
msgid "You must select a flavor."
msgstr "Sie müssen eine Variante auswählen."
msgid "You must specify a password if you create a user."
msgstr "Sie müssen ein Passwort angeben, wenn Sie einen Benutzer erstellen."
msgid "You must specify at least one database if you create a user."
msgstr ""
"Sie müssen mindestens eine Datenbank angeben, wenn Sie einen Benutzer "
"anlegen."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "Instanz"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/de/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001663 00000000000 027014 0 ustar 00corey corey 0000000 0000000 # Andreas Jaeger , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard 7.0.0.0rc2.dev7\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-10-07 13:57+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-09-25 11:27+0000\n"
"Last-Translator: Andreas Jaeger \n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Created"
msgstr "Erstellt"
msgid "Database"
msgstr "Datenbank"
msgid "Datastore"
msgstr "Datenspeicher"
msgid "Datastore Version"
msgstr "Version des Datenspeichers"
msgid "Incremental"
msgstr "Inkrementell"
msgid "Name"
msgstr "Name"
msgid "Unable to retrieve the Backups."
msgstr "Sicherungskopien können nicht abgerufen werden."
msgid "status"
msgstr "Status"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/en_GB/ 0000755 0001750 0001750 00000000000 00000000000 023444 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/en_GB/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025231 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/en_GB/LC_MESSAGES/django.po 0000644 0001750 0001750 00000106612 00000000000 027041 0 ustar 00corey corey 0000000 0000000 # Andi Chandler , 2016. #zanata
# Andi Chandler , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-18 08:17+0000\n"
"Last-Translator: Andi Chandler \n"
"Language-Team: English (United Kingdom)\n"
"Language: en_GB\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgid "A backup must be selected!"
msgstr "A backup must be selected!"
msgid "A master instance must be selected!"
msgstr "A master instance must be selected!"
msgid "A new name or new password or new host must be specified."
msgstr "A new name or new password or new host must be specified."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Access Revoked to"
msgstr[1] "Access Revoked to"
msgid "Accessible"
msgstr "Accessible"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Active"
msgid "Add"
msgstr "Add"
msgid "Add Instance"
msgstr "Add Instance"
msgid "Add Parameter"
msgstr "Add Parameter"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgid "Advanced"
msgstr "Advanced"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgid "Allowed Host"
msgstr "Allowed Host"
msgid "Allowed Host (optional)"
msgstr "Allowed Host (optional)"
msgid "Any Availability Zone"
msgstr "Any Availability Zone"
msgid "Applicable only if the volume size is specified."
msgstr "Applicable only if the volume size is specified."
msgid "Applied changes to server"
msgstr "Applied changes to server"
msgid "Apply Changes"
msgstr "Apply Changes"
msgid "At least one of the new fields must be changed."
msgstr "At least one of the new fields must be changed."
msgid "Attach Configuration Group"
msgstr "Attach Configuration Group"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Attaching Configuration group \"%s\""
msgid "Availability Zone"
msgstr "Availability Zone"
msgid "Available networks"
msgstr "Available networks"
msgid "Backup"
msgstr "Backup"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Backup"
msgid "Backup Database"
msgstr "Backup Database"
msgid "Backup Details"
msgstr "Backup Details"
msgid "Backup Details: {{ backup.name }}"
msgstr "Backup Details: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Backup Duration"
msgid "Backup File"
msgstr "Backup File"
msgid "Backup File Location"
msgstr "Backup File Location"
msgid "Backup Name"
msgstr "Backup Name"
msgid "Backup Overview"
msgstr "Backup Overview"
msgid "Backups"
msgstr "Backups"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Blocked"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Building"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Building"
msgid "Cancel"
msgstr "Cancel"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Cannot disable root access: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Cannot grow cluster. No instances specified."
msgid "Character Set"
msgstr "Character Set"
msgid "Choose a new instance flavor."
msgstr "Choose a new instance flavour."
msgid "Choose initial state."
msgstr "Choose initial state."
msgid "Close"
msgstr "Close"
msgid "Cluster Name"
msgstr "Cluster Name"
msgid "Cluster Size"
msgstr "Cluster Size"
msgid "Clusters"
msgstr "Clusters"
msgid "Collation"
msgstr "Collation"
msgid "Comma separated list of databases to create"
msgstr "Comma separated list of databases to create"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Completed"
msgid "Configuration Defaults"
msgstr "Configuration Defaults"
msgid "Configuration Group"
msgstr "Configuration Group"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Configuration Group Details: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Configuration Group Instances"
msgid "Configuration Group Name"
msgstr "Configuration Group Name"
msgid "Configuration Group Overview"
msgstr "Configuration Group Overview"
msgid "Configuration Group Values"
msgstr "Configuration Group Values"
msgid "Configuration Groups"
msgstr "Configuration Groups"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr ""
"Confirm the current replica is to be promoted as the new replica source."
msgid "Connection Examples"
msgstr "Connection Examples"
msgid "Connection Information"
msgstr "Connection Information"
msgid "Container"
msgstr "Container"
msgid "Create Backup"
msgstr "Create Backup"
msgid "Create Configuration Group"
msgstr "Create Configuration Group"
msgid "Create Database"
msgstr "Create Database"
msgid "Create User"
msgstr "Create User"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgid "Created"
msgstr "Created"
msgid "Created configuration group"
msgstr "Created configuration group"
#, python-format
msgid "Created database \"%s\"."
msgstr "Created database \"%s\"."
#, python-format
msgid "Created user \"%s\"."
msgstr "Created user \"%s\"."
msgid "Current Replica"
msgstr "Current Replica"
msgid "Current Replica Source"
msgstr "Current Replica Source"
msgid "Current Size (GB)"
msgstr "Current Size (GB)"
msgid "Current Task"
msgstr "Current Task"
msgid "DATABASE"
msgstr "DATABASE"
msgid "Database"
msgstr "Database"
msgid "Database Access"
msgstr "Database Access"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "Database Access for: {{ user_name }}@{{user_host}}"
msgid "Database Backups"
msgstr "Database Backups"
msgid "Database Info"
msgstr "Database Info"
msgid "Database Instance"
msgstr "Database Instance"
msgid "Database Name"
msgstr "Database Name"
msgid "Database Port"
msgstr "Database Port"
msgid "Databases"
msgstr "Databases"
msgid "Datastore"
msgstr "Datastore"
msgid "Datastore Version"
msgstr "Datastore Version"
msgid "Defaults"
msgstr "Defaults"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Delete Backup"
msgstr[1] "Delete Backups"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Delete Cluster"
msgstr[1] "Delete Clusters"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "Delete Configuration Group"
msgstr[1] "Delete Configuration Groups"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Delete Database"
msgstr[1] "Delete Databases"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Delete Failed"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Delete Instance"
msgstr[1] "Delete Instances"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "Delete Parameter"
msgstr[1] "Delete Parameters"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Delete User"
msgstr[1] "Delete Users"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Deleted Backup"
msgstr[1] "Deleted Backups"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "Deleted Configuration Group"
msgstr[1] "Deleted Configuration Groups"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Deleted Database"
msgstr[1] "Deleted Databases"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "Deleted Parameter"
msgstr[1] "Deleted Parameters"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Deleted User"
msgstr[1] "Deleted Users"
msgid "Deleted cluster is not recoverable."
msgstr "Deleted cluster is not recoverable."
msgid "Deleted instances are not recoverable."
msgstr "Deleted instances are not recoverable."
msgid "Description"
msgstr "Description"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Detach Configuration Group"
msgstr[1] "Detach Configuration Groups"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Detach Replica"
msgstr[1] "Detach Replicas"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Detached Configuration Group"
msgstr[1] "Detached Configuration Groups"
msgid "Details"
msgstr "Details"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Disable Log"
msgstr[1] "Disable Logs"
msgid "Disable Root"
msgstr "Disable Root"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Disabled Log"
msgstr[1] "Disabled Logs"
msgid "Discard Changes"
msgstr "Discard Changes"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Discard Log"
msgstr[1] "Discard Logs"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Discarded Log"
msgstr[1] "Discarded Logs"
msgid "Download"
msgstr "Download"
msgid "Download Backup"
msgstr "Download Backup"
msgid "Edit User"
msgstr "Edit User"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Eject Replica Source"
msgstr[1] "Eject Replica Sources"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Ejected Replica Source"
msgstr[1] "Ejected Replica Sources"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Enable Log"
msgstr[1] "Enable Logs"
msgid "Enable Root"
msgstr "Enable Root"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Enabled Log"
msgstr[1] "Enabled Logs"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Error"
msgid "Error applying changes"
msgstr "Error applying changes"
msgid "Error creating database backup."
msgstr "Error creating database backup."
msgid "Error deleting database on instance."
msgstr "Error deleting database on instance."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Error downloading log file: %s"
msgid "Error getting configuration group list."
msgstr "Error getting configuration group list."
msgid "Error getting database backup list."
msgstr "Error getting database backup list."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Error resetting parameters: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Failed"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Failed"
msgid "Fault"
msgstr "Fault"
msgid "Flavor"
msgstr "Flavour"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "Go"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Grant Access"
msgstr[1] "Grant Access"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Granted Access to"
msgstr[1] "Granted Access to"
msgid "Grow Cluster"
msgstr "Grow Cluster"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Grow Cluster: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Has Root Ever Been Enabled"
msgid "Host"
msgstr "Host"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Host or IP that the user is allowed to connect through."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "Incremental"
msgid "Incremental Backup"
msgstr "Incremental Backup"
msgid "Info"
msgstr "Info"
msgid "Information"
msgstr "Information"
msgid "Initial Admin User"
msgstr "Initial Admin User"
msgid "Initial Databases"
msgstr "Initial Databases"
msgid "Initial Volume Size"
msgstr "Initial Volume Size"
msgid "Initial admin user to add"
msgstr "Initial admin user to add"
msgid "Initialize Databases"
msgstr "Initialise Databases"
msgid "Instance Name"
msgstr "Instance Name"
msgid "Instance Type"
msgstr "Instance Type"
msgid "Instances"
msgstr "Instances"
msgid "Is a Replica Of"
msgstr "Is a Replica Of"
msgid "Launch"
msgstr "Launch"
msgid "Launch Cluster"
msgstr "Launch Cluster"
msgid "Launch Database"
msgstr "Launch Database"
msgid "Launch Instance"
msgstr "Launch Instance"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "Launched %(count)s named \"%(name)s\"."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Launched cluster \"%s\""
msgid "Locality"
msgstr "Locality"
msgid "Log"
msgstr "Log"
msgid "Log Contents"
msgstr "Log Contents"
msgid "Log Length"
msgstr "Log Length"
msgid "Log length must be a nonnegative integer."
msgstr "Log length must be a non-negative integer."
msgid "Log: "
msgstr "Log: "
msgid "Logs"
msgstr "Logs"
msgid "Manage Access"
msgstr "Manage Access"
msgid "Manage Root"
msgstr "Manage Root"
msgid "Manage Root Access"
msgstr "Manage Root Access"
msgid "Management Console"
msgstr "Management Console"
msgid "Master Instance Name"
msgstr "Master Instance Name"
msgid "Message"
msgstr "Message"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgid "Name"
msgstr "Name"
msgid "Network"
msgstr "Network"
msgid "Network attached to instance."
msgstr "Network attached to instance."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "New"
msgid "New Flavor"
msgstr "New Flavour"
msgid "New Host"
msgstr "New Host"
msgid "New Name"
msgstr "New Name"
msgid "New Password"
msgstr "New Password"
msgid "New Size (GB)"
msgstr "New Size (GB)"
msgid "New password for cluster access."
msgstr "New password for cluster access."
msgid "New size for volume must be greater than current size."
msgstr "New size for volume must be greater than current size."
msgid "No availability zones found"
msgstr "No availability zones found"
msgid "No backups available"
msgstr "No backups available"
msgid "No configuration groups available"
msgstr "No configuration groups available"
msgid "No configurations available"
msgstr "No configurations available"
msgid "No flavors available"
msgstr "No flavours available"
msgid "No instances available"
msgstr "No instances available"
msgid "No volume type"
msgstr "No volume type"
msgid "None"
msgstr "None"
msgid "Not Assigned"
msgstr "Not Assigned"
msgid "Not Found"
msgstr "Not Found"
msgid "Not available"
msgstr "Not available"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgid "Number of Instances"
msgstr "Number of Instances"
msgid "Number of Shards"
msgstr "Number of Shards"
msgid "Number of instances in the cluster."
msgstr "Number of instances in the cluster."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Number of instances in the cluster. (Read only)"
msgid "Number of shards. (Read only)"
msgstr "Number of shards. (Read only)"
msgid "Old Flavor"
msgstr "Old Flavour"
msgid "Optional Backup Description"
msgstr "Optional Backup Description"
msgid "Optional character set for the database."
msgstr "Optional character set for the database."
msgid "Optional collation type for the database."
msgstr "Optional collation type for the database."
msgid "Optional comma separated list of databases user has access to."
msgstr "Optional comma separated list of databases user has access to."
msgid "Optional datastore specific type of the instance."
msgstr "Optional datastore specific type of the instance."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgid "Optional host of user."
msgstr "Optional host of user."
msgid "Optional name of the instance."
msgstr "Optional name of the instance."
msgid "Optional parent backup"
msgstr "Optional parent backup"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgid "Optionally provide a character set and collation for the database."
msgstr "Optionally provide a character set and collation for the database."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr "Optionally provide a comma separated list of databases to create:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgid "Overview"
msgstr "Overview"
msgid "PASSWORD"
msgstr "PASSWORD"
msgid "Parameter"
msgstr "Parameter"
msgid "Parameters"
msgstr "Parameters"
msgid "Parent Backup"
msgstr "Parent Backup"
msgid "Password"
msgstr "Password"
msgid "Password (required)"
msgstr "Password (required)"
msgid "Password for root user must be specified."
msgstr "Password for root user must be specified."
msgid "Password for root user."
msgstr "Password for root user."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"Password is only visible immediately after the root is enabled or reset."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Please note: The new value must be greater than the existing volume "
"size."
msgid "Promote"
msgstr "Promote"
msgid "Promote to Replica Source"
msgstr "Promote to Replica Source"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Promoted replica \"%s\" as the new replica source."
msgid "Property"
msgstr "Property"
msgid "Publish"
msgstr "Publish"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Publish Log"
msgstr[1] "Publish Logs"
msgid "Publishable (bytes)"
msgstr "Publishable (bytes)"
msgid "Published (bytes)"
msgstr "Published (bytes)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Published Log"
msgstr[1] "Published Logs"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Rebooting"
msgid "Related To"
msgstr "Related To"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Remove Instance"
msgstr[1] "Remove Instances"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Removed Instance"
msgstr[1] "Removed Instances"
msgid "Removed instances from cluster."
msgstr "Removed instances from cluster."
msgid "Replica Count"
msgstr "Replica Count"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Replica Detached"
msgstr[1] "Replicas Detached"
msgid "Replicas"
msgstr "Replicas"
msgid "Replicate from Instance"
msgstr "Replicate from Instance"
msgid "Replication"
msgstr "Replication"
msgid "Reset Parameters"
msgstr "Reset Parameters"
msgid "Reset Root Password"
msgstr "Reset Root Password"
msgid "Resize Database Instance"
msgstr "Resize Database Instance"
msgid "Resize Database Volume"
msgstr "Resize Database Volume"
msgid "Resize Instance"
msgstr "Resize Instance"
msgid "Resize Volume"
msgstr "Resize Volume"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Resizing"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Resizing instance \"%s\""
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Resizing volume \"%s\""
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Restart Instance"
msgstr[1] "Restart Instances"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Restart Required"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Restarted Instance"
msgstr[1] "Restarted Instances"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Restarted instances will lose any data not saved in persistent storage."
msgid "Restore Backup"
msgstr "Restore Backup"
msgid "Restore from Backup"
msgstr "Restore from Backup"
msgid "Return to Log List"
msgstr "Return to Log List"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Revoke Access"
msgstr[1] "Revoke Access"
msgid "Root Enabled"
msgstr "Root Enabled"
msgid "Root Password"
msgstr "Root Password"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Root password updated for cluster \"%s\""
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Saving"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Scheduled Shrinking of Cluster"
msgstr[1] "Scheduled Shrinking of Cluster"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Scheduled backup \"%(name)s\"."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Scheduled deletion of Cluster"
msgstr[1] "Scheduled deletion of Clusters"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Scheduled deletion of Instance"
msgstr[1] "Scheduled deletion of Instances"
msgid "Scheduled growing of cluster."
msgstr "Scheduled growing of cluster."
msgid "Select a backup to restore"
msgstr "Select a backup to restore"
msgid "Select a configuration group"
msgstr "Select a configuration group"
msgid "Select a configuration group to attach to the database instance."
msgstr "Select a configuration group to attach to the database instance."
msgid "Select a master instance"
msgstr "Select a master instance"
msgid "Select a new flavor"
msgstr "Select a new flavour"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr ""
"Select a parameter and provide a value for the configuration parameter."
msgid "Select backup"
msgstr "Select backup"
msgid "Select configuration"
msgstr "Select configuration"
msgid "Select configuration group"
msgstr "Select configuration group"
msgid "Select datastore type and version"
msgstr "Select datastore type and version"
msgid "Select instance"
msgstr "Select instance"
msgid "Select parent backup"
msgstr "Select parent backup"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Select the instance(s) that will be removed from the cluster."
msgid "Selected networks"
msgstr "Selected networks"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Shrink Cluster"
msgstr[1] "Shrink Cluster"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Shrink Cluster: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Shrinking a cluster is not recoverable."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Shutdown"
msgid "Size"
msgstr "Size"
msgid "Size of image to launch."
msgstr "Size of image to launch."
msgid "Size of the volume in GB."
msgstr "Size of the volume in GB."
msgid "Source for Initial State"
msgstr "Source for Initial State"
msgid "Specify a new flavor for the database instance."
msgstr "Specify a new flavour for the database instance."
msgid "Specify a new name, new password or new host name for the user."
msgstr "Specify a new name, new password or new host name for the user."
msgid "Specify the details for launching an instance."
msgstr "Specify the details for launching an instance."
msgid "Specify the details for the database backup."
msgstr "Specify the details for the database backup."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Specify the details of the instance to be added to the cluster."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgid "Specify the name of the new database."
msgstr "Specify the name of the new database."
msgid "Specify the name of the new user and password."
msgstr "Specify the name of the new user and password."
msgid "Specify the new root password for vertica cluster."
msgstr "Specify the new root password for vertica cluster."
msgid "Specify the new volume size for the database instance."
msgstr "Specify the new volume size for the database instance."
msgid "Specify the number of replicas to be created"
msgstr "Specify the number of replicas to be created"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgid "Specs"
msgstr "Specs"
msgid "Status"
msgstr "Status"
msgid "Status if root was ever enabled for an instance."
msgstr "Status if root was ever enabled for an instance."
msgid "Successfully added parameter"
msgstr "Successfully added parameter"
msgid "Successfully disabled root access."
msgstr "Successfully disabled root access."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgid "The flavor must be specified."
msgstr "The flavour must be specified."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgid "The number of instances must be greater than 1."
msgstr "The number of instances must be greater than 1."
msgid "The number of shards must be greater than 1."
msgstr "The number of shards must be greater than 1."
msgid "There was a problem enabling root."
msgstr "There was a problem enabling root."
msgid "This action cannot be undone."
msgstr "This action cannot be undone."
msgid "Type"
msgstr "Type"
msgid "Type and version of datastore."
msgstr "Type and version of datastore."
msgid "USERNAME"
msgstr "USERNAME"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Unable to %(action)s: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Unable to add new parameter: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Unable to attach configuration group. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Unable to create configuration group. %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Unable to create database. %s"
msgid "Unable to create list of parameters."
msgstr "Unable to create list of parameters."
#, python-format
msgid "Unable to create user. %s"
msgstr "Unable to create user. %s"
msgid "Unable to determine if instance root is enabled."
msgstr "Unable to determine if instance root is enabled."
msgid "Unable to find backup!"
msgstr "Unable to find backup!"
msgid "Unable to find configuration group!"
msgstr "Unable to find configuration group!"
msgid "Unable to find master instance!"
msgstr "Unable to find master instance!"
msgid "Unable to get configuration data."
msgstr "Unable to get configuration data."
msgid "Unable to get database backup data."
msgstr "Unable to get database backup data."
msgid "Unable to get databases data."
msgstr "Unable to get databases data."
msgid "Unable to get instances data."
msgstr "Unable to get instances data."
msgid "Unable to get user access data."
msgstr "Unable to get user access data."
msgid "Unable to get user data."
msgstr "Unable to get user data."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Unable to grow cluster. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Unable to grow cluster: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Unable to launch %(count)s named \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Unable to launch cluster. %s"
msgid "Unable to list database backups for parent."
msgstr "Unable to list database backups for parent."
msgid "Unable to list database instances to backup."
msgstr "Unable to list database instances to backup."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Unable to load {0} log\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Unable to load {0} log for instance \"{1}\"."
msgid "Unable to obtain datastore versions."
msgstr "Unable to obtain datastore versions."
msgid "Unable to obtain datastores."
msgstr "Unable to obtain datastores."
msgid "Unable to obtain flavors."
msgstr "Unable to obtain flavours."
msgid "Unable to obtain information on root user"
msgstr "Unable to obtain information on root user"
msgid "Unable to obtain list of parameters."
msgstr "Unable to obtain list of parameters."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Unable to promote replica as the new replica source. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Unable to remove instances from cluster: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "Unable to reset password. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Unable to resize instance. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Unable to resize volume. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Unable to retrieve accessible databases."
msgid "Unable to retrieve availability zones."
msgstr "Unable to retrieve availability zones."
msgid "Unable to retrieve cluster details."
msgstr "Unable to retrieve cluster details."
msgid "Unable to retrieve database clusters."
msgstr "Unable to retrieve database clusters."
msgid "Unable to retrieve database instances."
msgstr "Unable to retrieve database instances."
msgid "Unable to retrieve database size information."
msgstr "Unable to retrieve database size information."
msgid "Unable to retrieve databases."
msgstr "Unable to retrieve databases."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Unable to retrieve details for backup: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "Unable to retrieve details for configuration group: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Unable to retrieve details for database cluster: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Unable to retrieve details for database instance: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Unable to retrieve details for parent backup: %s"
msgid "Unable to retrieve flavors."
msgstr "Unable to retrieve flavours."
msgid "Unable to retrieve instance details."
msgstr "Unable to retrieve instance details."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Unable to retrieve list of logs.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Unable to retrieve networks."
#, python-format
msgid "Unable to update user. %s"
msgstr "Unable to update user. %s"
msgid "Unknown"
msgstr "Unknown"
msgid "Updated"
msgstr "Updated"
#, python-format
msgid "Updated user \"%s\"."
msgstr "Updated user \"%s\"."
msgid "User Name"
msgstr "User Name"
msgid "Username (required)"
msgstr "Username (required)"
msgid "Users"
msgstr "Users"
msgid "Value"
msgstr "Value"
msgid "Value must be \"true\" or \"false\"."
msgstr "Value must be \"true\" or \"false\"."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "Value must be a number between %(min)s and %(max)s."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "Value must be a number greater than or equal to %s."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "Value must be a number less than or equal to %s."
msgid "Value must be a number."
msgstr "Value must be a number."
#, python-format
msgid "Value must be of type %s."
msgstr "Value must be of type %s."
msgid "Values"
msgstr "Values"
msgid "View Full Log"
msgstr "View Full Log"
msgid "View Log"
msgstr "View Log"
msgid "Volume"
msgstr "Volume"
msgid "Volume Size"
msgstr "Volume Size"
msgid "Volume Type"
msgstr "Volume Type"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "You are not allowed to %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgid "You must select a datastore type and version."
msgstr "You must select a datastore type and version."
msgid "You must select a flavor."
msgstr "You must select a flavour."
msgid "You must specify a password if you create a user."
msgstr "You must specify a password if you create a user."
msgid "You must specify at least one database if you create a user."
msgstr "You must specify at least one database if you create a user."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavour=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "instance"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/en_GB/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001625 00000000000 027374 0 ustar 00corey corey 0000000 0000000 # Andi Chandler , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-07-11 03:12+0000\n"
"Last-Translator: Andi Chandler \n"
"Language-Team: English (United Kingdom)\n"
"Language: en_GB\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Created"
msgstr "Created"
msgid "Database"
msgstr "Database"
msgid "Datastore"
msgstr "Datastore"
msgid "Datastore Version"
msgstr "Datastore Version"
msgid "Incremental"
msgstr "Incremental"
msgid "Name"
msgstr "Name"
msgid "Unable to retrieve the Backups."
msgstr "Unable to retrieve the Backups."
msgid "status"
msgstr "status"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/fr/ 0000755 0001750 0001750 00000000000 00000000000 023101 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/fr/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 024666 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/fr/LC_MESSAGES/django.po 0000644 0001750 0001750 00000120004 00000000000 026465 0 ustar 00corey corey 0000000 0000000 # Andreas Jaeger , 2016. #zanata
# Corinne Verheyde , 2016. #zanata
# Gérald LONLAS , 2016. #zanata
# Corinne Verheyde , 2017. #zanata
# Mateusz Kowalski , 2017. #zanata
# JF Taltavull , 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-03-06 07:55+0000\n"
"Last-Translator: JF Taltavull \n"
"Language-Team: French\n"
"Language: fr\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"Note: Il peut être nécessaire de redémarrer l'instance de "
"base de données pour prendre en compte le nouveau groupe de configuration."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
" Veuillez noter : strong> La valeur spécifiée dans le champ Taille "
"de volume doit être supérieur à 0, cependant, certaines configurations ne "
"supportent pas la spécification de la taille du volume. Si la spécification "
"de la taille du volume génère un message d'erreur indiquant que le volume "
"n'est pas activé, rentrez 0."
msgid "A backup must be selected!"
msgstr "Vous devez sélectionner un serveur de backend !"
msgid "A master instance must be selected!"
msgstr "Vous devez sélectionner une instance Master !"
msgid "A new name or new password or new host must be specified."
msgstr ""
"Un nouveau nom d'utilisateur, un nouveau mot de passe ou un nouveau nom "
"d'hôte doit être spécifié."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Accès enlevé à"
msgstr[1] "Accès enlevés à"
msgid "Accessible"
msgstr "Accessible"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Active"
msgid "Add"
msgstr "Ajouter"
msgid "Add Instance"
msgstr "Ajouter une instance"
msgid "Add Parameter"
msgstr "Ajouter un paramètre"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Ajout de paramètres au groupe de configuration. Une fois tous les paramètres "
"ajoutés, cliquer sur 'Appliquer les changements' pour les rendre persistents."
msgid "Advanced"
msgstr "Avancées"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"Autorise l'utilisateur à se connecter uniquement à partir de cet hôte. Si "
"non spécifié, l'utilisateur pourra se connecter de n'importe où."
msgid "Allowed Host"
msgstr "Hôte autorisé"
msgid "Allowed Host (optional)"
msgstr "Hôte autorisé (optionnel)"
msgid "Any Availability Zone"
msgstr "Toute zone de disponibilité"
msgid "Applicable only if the volume size is specified."
msgstr "Applicable seulement si la taille du volume est specifiée."
msgid "Applied changes to server"
msgstr "Changements appliqués sur le serveur"
msgid "Apply Changes"
msgstr "Appliquer les changements"
msgid "At least one of the new fields must be changed."
msgstr "Au moins l'un des nouveaux champs doit être modifié."
msgid "Attach Configuration Group"
msgstr "Attacher le groupe de configuration"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Attachement du groupe de configuration. %s"
msgid "Availability Zone"
msgstr "Zone de disponibilité"
msgid "Available networks"
msgstr "Les réseaux disponibles"
msgid "Backup"
msgstr "Sauvegarde"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Sauvegarde"
msgid "Backup Database"
msgstr "Sauvegarde de Base de Données"
msgid "Backup Details"
msgstr "Détails de la sauvegarde"
msgid "Backup Details: {{ backup.name }}"
msgstr "Détails de la sauvegarde: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Durée de la sauvegarde"
msgid "Backup File"
msgstr "Fichier de sauvegarde"
msgid "Backup File Location"
msgstr "Emplacement du fichier de sauvegarde"
msgid "Backup Name"
msgstr "Nom de la sauvegarde"
msgid "Backup Overview"
msgstr "Aperçu de la Sauvegarde"
msgid "Backups"
msgstr "Sauvegardes"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Bloquée"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Construction"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Construction"
msgid "Cancel"
msgstr "Annuler"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Impossible de désactiver l'accès Root : %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Impossible d'agrandir le cluster. Aucune instance n'est spécifiée."
msgid "Character Set"
msgstr "Codage des caractères"
msgid "Choose a new instance flavor."
msgstr "Sélectionner un nouveau gabarit d'instance."
msgid "Choose initial state."
msgstr "Sélectionner un état initial."
msgid "Close"
msgstr "Fermer"
msgid "Cluster Name"
msgstr "Nom du cluster"
msgid "Cluster Size"
msgstr "Taille du cluster"
msgid "Clusters"
msgstr "Clusters"
msgid "Collation"
msgstr "Collation"
msgid "Comma separated list of databases to create"
msgstr "Liste des bases de données séparée par des virgules à créer "
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Terminé"
msgid "Configuration Defaults"
msgstr "Configurations par défaut"
msgid "Configuration Group"
msgstr "Groupe de configuration"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Détails du Group de Configuration: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Instances du groupe de configuration"
msgid "Configuration Group Name"
msgstr "Nom du groupe de configuration"
msgid "Configuration Group Overview"
msgstr "Aperçu du Groupe de Configuration"
msgid "Configuration Group Values"
msgstr "Valueur du groupe de configuration"
msgid "Configuration Groups"
msgstr "Groupes de configuration"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr ""
"Confirmer la promotion du replica en cours en tant que source de replica."
msgid "Connection Examples"
msgstr "Exemples de connexion"
msgid "Connection Information"
msgstr "Information de connexion"
msgid "Container"
msgstr "Conteneur"
msgid "Create Backup"
msgstr "Créer une sauvegarde"
msgid "Create Configuration Group"
msgstr "Créer un groupe de configuration"
msgid "Create Database"
msgstr "Créer la base de données"
msgid "Create User"
msgstr "Créer un utilisateur"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"Créer un utilisateur initial optionnel. Cet utilisateur aura accès à toutes "
"les bases de données que vous créerez."
msgid "Created"
msgstr "Créé"
msgid "Created configuration group"
msgstr "Groupe de configuration créé"
#, python-format
msgid "Created database \"%s\"."
msgstr "Base de données \"%s\" créée."
#, python-format
msgid "Created user \"%s\"."
msgstr "Utilisateur \"%s\" créé."
msgid "Current Replica"
msgstr "Replica courant"
msgid "Current Replica Source"
msgstr "Source courante du Replica"
msgid "Current Size (GB)"
msgstr "Taille courante (Go)"
msgid "Current Task"
msgstr "Tâche courante"
msgid "DATABASE"
msgstr "BASE DE DONNÉES"
msgid "Database"
msgstr "Base de données"
msgid "Database Access"
msgstr "Accès à la base de données"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "Accès à la base de données pour: {{ user_name }}@{{user_host}}"
msgid "Database Backups"
msgstr "Sauvegardes de Base de Données "
msgid "Database Info"
msgstr "Informations de la Base de Données"
msgid "Database Instance"
msgstr "Instance de la base de données"
msgid "Database Name"
msgstr "Nom de la Base de Données"
msgid "Database Port"
msgstr "Port de la base de données"
msgid "Databases"
msgstr "Bases de données"
msgid "Datastore"
msgstr "Datastore"
msgid "Datastore Version"
msgstr "Version du datastore"
msgid "Defaults"
msgstr "Valeurs par défaut"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Supprimer la Sauvegarde"
msgstr[1] "Supprimer les Sauvegardes"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Supprimer le cluster"
msgstr[1] "Supprimer les clusters"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "Supprimer un groupe de configuration"
msgstr[1] "Supprimer des groupes de configuration"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Supprimer une Base de données"
msgstr[1] "Supprimer les Bases de données"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Échec de la suppression"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Supprimer l'instance"
msgstr[1] "Supprimer les instances"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "Supprimer le paramètre"
msgstr[1] "Supprimer les paramètres"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Supprimer l'utilisateur"
msgstr[1] "Supprimer les utilisateurs"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Sauvegarde Supprimée"
msgstr[1] "Sauvegardes Supprimées"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "Groupe de configuration supprimé"
msgstr[1] "Groupes de configuration supprimés"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Base de données Supprimée"
msgstr[1] "Bases de données Supprimées"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "Paramètre supprimé"
msgstr[1] "Paramètres supprimés"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Utilisateur Supprimé"
msgstr[1] "Utilisateurs Supprimés"
msgid "Deleted cluster is not recoverable."
msgstr "Le cluster supprimé n'est pas récupérable."
msgid "Deleted instances are not recoverable."
msgstr "Les instances supprimées ne sont pas récupérables."
msgid "Description"
msgstr "Description"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Détacher un groupe de configuration"
msgstr[1] "Détacher des groupes de configuration"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Détacher Réplica"
msgstr[1] "Détacher Réplicas"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Groupe de configuration détaché"
msgstr[1] "Groupes de configuration détachés"
msgid "Details"
msgstr "Détails"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Désactiver le journal"
msgstr[1] "Désactiver les journaux"
msgid "Disable Root"
msgstr "Désactiver Root"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Journal désactivé"
msgstr[1] "Journaux désactivés"
msgid "Discard Changes"
msgstr "Annuler les changements"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Jeter le journal"
msgstr[1] "Jeter les journaux"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Journal jeté"
msgstr[1] "Journaux jetés"
msgid "Download"
msgstr "Télécharger"
msgid "Download Backup"
msgstr "Télécharger la sauvegarde"
msgid "Edit User"
msgstr "Éditer l'utilisateur"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Éjecter la source du Replica"
msgstr[1] "Éjecter les sources du Replica"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Éjecter la source du Replica"
msgstr[1] "Éjecter les sources du Replica"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Activer le journal"
msgstr[1] "Activer les journaux"
msgid "Enable Root"
msgstr "Activer le Root"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Journal activé"
msgstr[1] "Journaux activés"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Erreur"
msgid "Error applying changes"
msgstr "Erreur à l'application de la modification"
msgid "Error creating database backup."
msgstr "Erreur pendant la sauvegarde de la base de données."
msgid "Error deleting database on instance."
msgstr "Erreur lors de la suppression de la base de données sur l'instance."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Erreur lors du téléchargement du journal : %s"
msgid "Error getting configuration group list."
msgstr ""
"Erreur lors de la récupération de la liste des groupes de configuration."
msgid "Error getting database backup list."
msgstr ""
"Erreur lors de la récupération de la liste des sauvegardes de la base de "
"données."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Erreur lors de la réinitialisation des paramètres: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Échec"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Échec"
msgid "Fault"
msgstr "Panne"
msgid "Flavor"
msgstr "Gabarit"
msgid "GB"
msgstr "Go"
msgid "Go"
msgstr "Go"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Droit d'accès"
msgstr[1] "Droits d'accès"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Accès autorisé à"
msgstr[1] "Accès autorisés à"
msgid "Grow Cluster"
msgstr "Agrandir le cluster"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Agrandir le cluster : {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Si l'accès root a déjà été activé"
msgid "Host"
msgstr "Host"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Hôte ou IP autorisé pour la connexion de l'utilisateur."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "Incrémentale"
msgid "Incremental Backup"
msgstr "Sauvegarde incrémentale"
msgid "Info"
msgstr "Info"
msgid "Information"
msgstr "Information"
msgid "Initial Admin User"
msgstr "Utilisateur Admin initial"
msgid "Initial Databases"
msgstr "Bases de données initiales"
msgid "Initial Volume Size"
msgstr "Taille initiale du volume"
msgid "Initial admin user to add"
msgstr "Utilisateur admin initial à ajouter"
msgid "Initialize Databases"
msgstr "Initialiser les bases de données"
msgid "Instance Name"
msgstr "Nom de l'instance"
msgid "Instance Type"
msgstr "Type d'instance"
msgid "Instances"
msgstr "Instances"
msgid "Is a Replica Of"
msgstr "Est un réplica de"
msgid "Launch"
msgstr "Démarrer"
msgid "Launch Cluster"
msgstr "Lancer le Cluster"
msgid "Launch Database"
msgstr "Lancer la base de données"
msgid "Launch Instance"
msgstr "Lancer Instance"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "%(count)s instance(s) nommée(s) \"%(name)s\" ont été lancée(s)."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Cluster \"%s\" démarré"
msgid "Locality"
msgstr "Localisation"
msgid "Log"
msgstr "Journal"
msgid "Log Contents"
msgstr "Contenu du journal"
msgid "Log Length"
msgstr "Longueur du journal"
msgid "Log length must be a nonnegative integer."
msgstr "La longueur du journal doit correspondre à un nombre non négatif."
msgid "Log: "
msgstr "Journal :"
msgid "Logs"
msgstr "Journaux"
msgid "Manage Access"
msgstr "Gérer les accès"
msgid "Manage Root"
msgstr "Gérer le Root"
msgid "Manage Root Access"
msgstr "Gérer les accès Root"
msgid "Management Console"
msgstr "Console de management"
msgid "Master Instance Name"
msgstr "Nom de l'instance Master"
msgid "Message"
msgstr "Message"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"Déplacer les réseaux depuis \"Réseaux disponibles\" vers \"Réseaux "
"Sélectionnés\" en cliquant sur le bouton, ou en faisant un glisser-déposer. "
"Vous pouvez changer l'ordre des interfaces réseaux en faisant également un "
"glisser-déposer."
msgid "Name"
msgstr "Nom"
msgid "Network"
msgstr "Réseau"
msgid "Network attached to instance."
msgstr "Réseau attaché à l'instance."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "Nouveau"
msgid "New Flavor"
msgstr "Nouveau gabarit"
msgid "New Host"
msgstr "Nouvel hôte"
msgid "New Name"
msgstr "Nouveau nom"
msgid "New Password"
msgstr "Nouveau mot de passe"
msgid "New Size (GB)"
msgstr "Nouvelle Taille (Go)"
msgid "New password for cluster access."
msgstr "Nouveau mot de passe pour accès au cluster"
msgid "New size for volume must be greater than current size."
msgstr "La nouvelle taille du volume doit être supérieur à sa taille actuelle."
msgid "No availability zones found"
msgstr "Pas de zones de disponibilité trouvées"
msgid "No backups available"
msgstr "Aucune sauvegarde disponible"
msgid "No configuration groups available"
msgstr "Aucun groupe de configuration disponible"
msgid "No configurations available"
msgstr "Aucun configuration disponible"
msgid "No flavors available"
msgstr "Pas de gabarits disponibles"
msgid "No instances available"
msgstr "Aucune instance disponible"
msgid "No volume type"
msgstr "Pas de type de volume"
msgid "None"
msgstr "Aucun"
msgid "Not Assigned"
msgstr "Non assigné"
msgid "Not Found"
msgstr "Non trouvé"
msgid "Not available"
msgstr "Non disponible"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Note: Autorise l'accès root à une instance. Si l'utilisateur root est déjà "
"activé, alors un nouveau mot de passe est généré."
msgid "Number of Instances"
msgstr "Nombre d'instances"
msgid "Number of Shards"
msgstr "Nombre de fragments"
msgid "Number of instances in the cluster."
msgstr "Nombre d'instances dans le cluster."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Nombre d'instances dans le cluster. (En lecture seule)"
msgid "Number of shards. (Read only)"
msgstr "Nombre de fragments. (lecture seule)"
msgid "Old Flavor"
msgstr "Ancien gabarit"
msgid "Optional Backup Description"
msgstr "Description de sauvegarde optionnelle"
msgid "Optional character set for the database."
msgstr "Codage des caractères optionnel pour la base de données"
msgid "Optional collation type for the database."
msgstr "Optionnel: Type de collation pour la base de données "
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"Optionnel: Liste des bases de données auxquelles l'utilisateur a accès, "
"séparée par des virgules. "
msgid "Optional datastore specific type of the instance."
msgstr "Optionnel: Type spécifique au datastore pour l'instance."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Optionnel: Valeur spécifique au datastore qui définie la relation d'une "
"instance du cluster vers une autre."
msgid "Optional host of user."
msgstr "Hôte optionnel de l'utilisateur"
msgid "Optional name of the instance."
msgstr "Nom optionnel de l'instance."
msgid "Optional parent backup"
msgstr "Sauvegarde totale optionnelle"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"A choisi de créer cette base de données en option à l'aide d'une sauvegarde "
"antérieure, ou en répliqua d'une autre instance de base de données."
msgid "Optionally provide a character set and collation for the database."
msgstr ""
"Éventuellement, fournir un jeu de caractères et une collation pour la base "
"de données."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"Fournissez, optionnellement, une liste de base de données à créer, séparée "
"par des virgules."
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Éventuellement, fournir l'hôte de l'utilisateur et la liste des bases de "
"données auxquelles l'utilisateur a accès."
msgid "Overview"
msgstr "Vue d'ensemble"
msgid "PASSWORD"
msgstr "MOT DE PASSE"
msgid "Parameter"
msgstr "Paramètre"
msgid "Parameters"
msgstr "Paramètres"
msgid "Parent Backup"
msgstr "Sauvegarde totale"
msgid "Password"
msgstr "Mot de passe"
msgid "Password (required)"
msgstr "Mot de passe (obligatoire)"
msgid "Password for root user must be specified."
msgstr "Le mot de passe pour l'utilisateur root doit être spécifié."
msgid "Password for root user."
msgstr "Mot de passe pour l'utilisateur root."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"Le mot de passe est visible uniquement juste après l'activation de root ou "
"sa réinitialisation."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Veuillez noter que : La nouvelle valeur doit être plus grande que "
"la taille du volume existant."
msgid "Promote"
msgstr "Promouvoir"
msgid "Promote to Replica Source"
msgstr "Promouvoir la source du Replica"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Promouvoir le replica \"%s\" comme nouvelle source de replica."
msgid "Property"
msgstr "Propriété"
msgid "Publish"
msgstr "Publier"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Publier le journal"
msgstr[1] "Publier les journaux"
msgid "Publishable (bytes)"
msgstr "Publiable (Octets)"
msgid "Published (bytes)"
msgstr "Publié (Octets)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Journal publié"
msgstr[1] "Journaux publiés"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Redémarrage en cours"
msgid "Related To"
msgstr "Relatif à"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Supprimer l'instance"
msgstr[1] "Supprimer les instances"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Instance supprimée"
msgstr[1] "Instances supprimées"
msgid "Removed instances from cluster."
msgstr "Instances supprimées du cluster"
msgid "Replica Count"
msgstr "Nombre de replicata"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Réplica détachée"
msgstr[1] "Réplicas détachées"
msgid "Replicas"
msgstr "Réplicas"
msgid "Replicate from Instance"
msgstr "Réplication depuis l'instance"
msgid "Replication"
msgstr "Réplication"
msgid "Reset Parameters"
msgstr "Réinitialiser les paramètres"
msgid "Reset Root Password"
msgstr "Réinitialiser le mot de passe root"
msgid "Resize Database Instance"
msgstr "Redimensionnement de l'instance de la base de données"
msgid "Resize Database Volume"
msgstr "Redimensionner le Volume de base de données"
msgid "Resize Instance"
msgstr "Redimensionner une instance"
msgid "Resize Volume"
msgstr "Redimensionner un volume"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Redimensionnement"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Redimensionnement de l'instance \"%s\" en cours"
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Redimensionnement du volume \"%s\" en cours"
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Redémarrer l'Instance"
msgstr[1] "Redémarrer les Instances"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Redémarrage requis"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Instance Redémarrée"
msgstr[1] "Instances Redémarrées"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Les instances démarrées à nouveau perdront les données qui n'auront pas été "
"sauvegardées en stockage persistant."
msgid "Restore Backup"
msgstr "Restaurer une Sauvegarde"
msgid "Restore from Backup"
msgstr "Restaurer depuis la sauvegarde"
msgid "Return to Log List"
msgstr "Revenir à la liste des journaux"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Enlever l'accès"
msgstr[1] "Enlever les accès"
msgid "Root Enabled"
msgstr "Root activé"
msgid "Root Password"
msgstr "Mot de passe Root"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Mot de passe root mis à jour pour le cluster \"%s\""
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Sauvegarde en cours"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Rétrécissement du cluster programmé,"
msgstr[1] "Rétrécissement des clusters programmé,"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Sauvegarde \"%(name)s\" planifiée."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Suppression du cluster programmée"
msgstr[1] "Suppression des clusters programmée"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Suppression de l'instances planifiée"
msgstr[1] "Suppression des instances planifiée"
msgid "Scheduled growing of cluster."
msgstr "Agrandissement du cluster programmé."
msgid "Select a backup to restore"
msgstr "Sélectionnez une sauvegarde à restaurer"
msgid "Select a configuration group"
msgstr "Sélectionner un groupe de configuration"
msgid "Select a configuration group to attach to the database instance."
msgstr ""
"Sélectionnez un groupe de configuration à attacher à l'instance de base de "
"données."
msgid "Select a master instance"
msgstr "Sélectionner une instance Master"
msgid "Select a new flavor"
msgstr "Sélectionner un nouveau gabarit"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr ""
"Sélectionner un paramètre et fournir une valeur pour ce paramètre de "
"configuration."
msgid "Select backup"
msgstr "Sélectionner une sauvegarde"
msgid "Select configuration"
msgstr "Sélectionner la configuration"
msgid "Select configuration group"
msgstr "Sélectionner le groupe de configuration"
msgid "Select datastore type and version"
msgstr "Sélectionner le type et la version de datastore"
msgid "Select instance"
msgstr "Sélectionner une instance"
msgid "Select parent backup"
msgstr "Sélectionner une sauvegarde totale"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Sélectionner le ou les instances qui seront supprimées du cluster."
msgid "Selected networks"
msgstr "Réseaux sélectionnés"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Rétrécir le cluster"
msgstr[1] "Rétrécir les clusters"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Diminuer le cluster : {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Un cluster rétréci n'est pas récupérable."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Éteindre "
msgid "Size"
msgstr "Taille"
msgid "Size of image to launch."
msgstr "Taille de l'image à lancer."
msgid "Size of the volume in GB."
msgstr "Taille du volume en Go"
msgid "Source for Initial State"
msgstr "Source de l'état initial"
msgid "Specify a new flavor for the database instance."
msgstr "Spécifier un nouveau gabarit pour l'instance de la base de données."
msgid "Specify a new name, new password or new host name for the user."
msgstr ""
"Spécifier le nouveau nom, le nouveau mot de passe ou le nouveau nom d'hôte "
"pour cet utilisateur."
msgid "Specify the details for launching an instance."
msgstr "Spécifiez les détails de démarrage d'une instance."
msgid "Specify the details for the database backup."
msgstr "Spécifiez les détails pour la sauvegarde de la base de données."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Spécifier le détail de l'instance à ajouter au cluster."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Spécifier les instances à ajouter au cluster. Quand toutes les instances "
"sont spécifiées, cliquer sur 'Agrandir le cluster' pour effectuer "
"l'opération de croissance du cluster."
msgid "Specify the name of the new database."
msgstr "Spécifier le nom pour la nouvelle base de donnée."
msgid "Specify the name of the new user and password."
msgstr "Spécifier le nom et le mot de passe du nouvel utilisateur."
msgid "Specify the new root password for vertica cluster."
msgstr "Spécifier le nouveau mot de passe root pour le cluster vertica."
msgid "Specify the new volume size for the database instance."
msgstr ""
"Spécifier la nouvelle taille du volume pour l'instance de base de données."
msgid "Specify the number of replicas to be created"
msgstr "Spécifier le nombre de répliques à créer."
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"Spécifie si les prochaines instances répliquées seront créées sur le même "
"hyperviseur (affinité) ou sur des hyperviseurs différents (anti-affinité). "
"Cette valeur n'est pas prise en compte si l'instance à lancer est une "
"réplique."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Spécifier si les instances du cluster seront créées sur le même hyperviseur "
"(affinité) ou sur des hyperviseurs différents (anti-affinité)."
msgid "Specs"
msgstr "Spécifications"
msgid "Status"
msgstr "Statut"
msgid "Status if root was ever enabled for an instance."
msgstr "Statut si l'accès root n'a jamais été activé sur une instance."
msgid "Successfully added parameter"
msgstr "Paramètre ajoutée avec succès"
msgid "Successfully disabled root access."
msgstr "Désactivation avec succès de l'accès Root."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"Les champs 'Type d'Instance' et 'Relatif à' sont spécifiques au datastore et "
"optionnel. Voir la documentation Trove pour plus d'informations sur "
"l'utilisation de ces champs."
msgid "The flavor must be specified."
msgstr "Le gabarit doit être spécifié."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"Le champs nom est optionnel. Si le champs est laissé vide, un nom sera "
"généré lors de l’agrandissement du cluster."
msgid "The number of instances must be greater than 1."
msgstr "Le nombre d'instances doit être supérieur à 1."
msgid "The number of shards must be greater than 1."
msgstr "Le nombre de fragment doit être supérieur à 1."
msgid "There was a problem enabling root."
msgstr "Il y a eu un problème durant l'activation du root."
msgid "This action cannot be undone."
msgstr "Cette action ne peut pas être annulée."
msgid "Type"
msgstr "Type"
msgid "Type and version of datastore."
msgstr "Type et version du datastore."
msgid "USERNAME"
msgstr "NOM D'UTILISATEUR"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Impossible de %(action)s : %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Impossible d'ajouter le nouveau paramètre. %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Impossible d'attacher le groupe de configuration. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Impossible de créer le groupe de configuration %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Impossible de créer la base de données %s"
msgid "Unable to create list of parameters."
msgstr "Impossible de créer la liste des paramètres."
#, python-format
msgid "Unable to create user. %s"
msgstr "Impossible de créer l'utilisateur %s."
msgid "Unable to determine if instance root is enabled."
msgstr "Impossible de déterminer si l'instance Root est active."
msgid "Unable to find backup!"
msgstr "Impossible de trouver la sauvegarde !"
msgid "Unable to find configuration group!"
msgstr "Impossible de trouver le groupe de configuration !"
msgid "Unable to find master instance!"
msgstr "Impossible de trouver une instance Master !"
msgid "Unable to get configuration data."
msgstr "Impossible d'obtenir les données de configuration."
msgid "Unable to get database backup data."
msgstr "Impossible d'obtenir les données de sauvegarde de la base de données."
msgid "Unable to get databases data."
msgstr "Impossible d'obtenir les informations de la base de données"
msgid "Unable to get instances data."
msgstr "Impossible d'obtenir les données de l'instance."
msgid "Unable to get user access data."
msgstr "Impossible d'obtenir les informations d'accès de l'utilisateur."
msgid "Unable to get user data."
msgstr "Impossible d'obtenir les informations de l'utilisateur."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Impossible d'agrandir le cluster. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Impossible d'agrandir le cluster : %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Impossible de démarrer %(count)s instance(s) nommée(s) \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Impossible de démarrer le cluster. %s"
msgid "Unable to list database backups for parent."
msgstr "Impossible de lister les sauvegardes totale des base de données."
msgid "Unable to list database instances to backup."
msgstr "Impossible de lister les instances de base de données à sauvegarder."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Impossible de charger le journal {0}\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Impossible de charger le journal {0} pour l\\'instance \"{1}\"."
msgid "Unable to obtain datastore versions."
msgstr "Impossible d'obtenir les versions de datastores."
msgid "Unable to obtain datastores."
msgstr "Impossible d'obtenir les datastores."
msgid "Unable to obtain flavors."
msgstr "Impossible d'obtenir les gabarits."
msgid "Unable to obtain information on root user"
msgstr "Impossible d'obtenir les informations de l'utilisateur Root"
msgid "Unable to obtain list of parameters."
msgstr "Impossible d'obtenir la liste des paramètres."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr ""
"Impossible de promouvoir le replica comme nouvelle source de replica. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Impossible de supprimer les instances du cluster : %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "Impossible de réinitialiser le mot de passe. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Impossible de redimensionner l'instance. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Impossible de redimensionner le volume %s"
msgid "Unable to retrieve accessible databases."
msgstr "Impossible de récupérer les bases de données accessibles."
msgid "Unable to retrieve availability zones."
msgstr "Impossible de récupérer les zones de disponibilité."
msgid "Unable to retrieve cluster details."
msgstr "Impossible de récupérer les détails du cluster."
msgid "Unable to retrieve database clusters."
msgstr "Impossible de trouver les clusters de base de donnée."
msgid "Unable to retrieve database instances."
msgstr "Impossible de récupérer les instances de base de données"
msgid "Unable to retrieve database size information."
msgstr ""
"Impossible de récupérer les informations sur la taille de la base de données."
msgid "Unable to retrieve databases."
msgstr "Impossible de récupérer la base de données."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Impossible de récupérer les détails pour la sauvegarde : %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr ""
"Impossible de récupérer les détails pour le groupe de configuration: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr ""
"Impossible de récupérer les détails pour le cluster de base de données : %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr ""
"Impossible de récupérer les détails pour l'instance %s de base de données"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Impossible de récupérer les détails de la sauvegarde totale: %s"
msgid "Unable to retrieve flavors."
msgstr "Impossible de récupérer les gabarits."
msgid "Unable to retrieve instance details."
msgstr "Impossible de récupérer les détails de l'instance."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Impossible de récupérer la liste des journaux.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Impossible de récupérer les réseaux."
#, python-format
msgid "Unable to update user. %s"
msgstr "Impossible de mettre à jour l'utilisateur %s."
msgid "Unknown"
msgstr "Inconnu"
msgid "Updated"
msgstr "Mis à jour"
#, python-format
msgid "Updated user \"%s\"."
msgstr "L'utilisateur \"%s\" a été mis à jour."
msgid "User Name"
msgstr "Nom d'utilisateur"
msgid "Username (required)"
msgstr "Nom d'utilisateur (obligatoire)"
msgid "Users"
msgstr "Utilisateurs"
msgid "Value"
msgstr "Valeur"
msgid "Value must be \"true\" or \"false\"."
msgstr "La valeur doit être \"vrai\" ou \"faux\"."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "La valeur doit être entre %(min)s et %(max)s."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "La valeur doit être un nombre plus grand ou égal à %s."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "La valeur doit être un nombre inférieur ou égal à %s."
msgid "Value must be a number."
msgstr "La valeur doit être numérique."
#, python-format
msgid "Value must be of type %s."
msgstr "La valeur doit être de type %s."
msgid "Values"
msgstr "Valeurs"
msgid "View Full Log"
msgstr "Afficher le journal complet"
msgid "View Log"
msgstr "Afficher le journal"
msgid "Volume"
msgstr "Volume"
msgid "Volume Size"
msgstr "Taille du Volume"
msgid "Volume Type"
msgstr "Type de Volume"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "Vous n'êtes pas autorisé à %(action)s : %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Vous pouvez effectuer une sauvegarde incrémentale en spécifiant une "
"sauvegarde totale.Cependant, toutes les bases de données ne "
"supportent pas les sauvegardes incrémentales, et dans ce cas l'opération se "
"terminera en erreur."
msgid "You must select a datastore type and version."
msgstr "Vous devez sélectionner un type et une version de datastore."
msgid "You must select a flavor."
msgstr "Vous devez choisir un gabarit."
msgid "You must specify a password if you create a user."
msgstr "Vous devez spécifier un mot de passe si vous créez un utilisateur."
msgid "You must specify at least one database if you create a user."
msgstr ""
"Vous devez spécifier au moins une base de données si vous créez un "
"utilisateur."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "instance"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/fr/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001644 00000000000 027032 0 ustar 00corey corey 0000000 0000000 # Gérald LONLAS , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard 7.0.0.0rc2.dev12\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-11-04 14:40+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-11-08 10:42+0000\n"
"Last-Translator: Gérald LONLAS \n"
"Language-Team: French\n"
"Language: fr\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
msgid "Created"
msgstr "Créé"
msgid "Database"
msgstr "Base de données"
msgid "Datastore"
msgstr "Datastore"
msgid "Datastore Version"
msgstr "Version du datastore"
msgid "Incremental"
msgstr "Incrémentale"
msgid "Name"
msgstr "Nom"
msgid "Unable to retrieve the Backups."
msgstr "Impossible de récupérer les sauvegardes."
msgid "status"
msgstr "statut"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/id/ 0000755 0001750 0001750 00000000000 00000000000 023066 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/id/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 024653 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/id/LC_MESSAGES/django.po 0000644 0001750 0001750 00000113237 00000000000 026464 0 ustar 00corey corey 0000000 0000000 # suhartono , 2016. #zanata
# suhartono , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-01-15 11:49+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-27 04:03+0000\n"
"Last-Translator: suhartono \n"
"Language-Team: Indonesian\n"
"Language: id\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=1; plural=0\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"Please note: Mungkin perlu untuk reboot instance database "
"bagi kelompok konfigurasi baru untuk memulai berpengaruh."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Harap dicatat: Nilai yang ditentukan dalam kolom Volume "
"Size harus lebih besar dari 0, namun, beberapa konfigurasi tidak mendukung "
"menentukan ukuran volume. Jika penentuan hasil ukuran volume dalam kesalahan "
"yang menyatakan dukungan volume tidak diaktifkan, masukkan 0."
msgid "A backup must be selected!"
msgstr "Sebuah cadangan harus dipilih!"
msgid "A master instance must be selected!"
msgstr "Sebuah instance utama harus dipilih!"
msgid "A new name or new password or new host must be specified."
msgstr "Sebuah nama baru atau password baru atau host baru harus ditentukan."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Access Revoked to"
msgid "Accessible"
msgstr "Accessible (dapat diakses)"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Active (aktif)"
msgid "Add"
msgstr "Add (pemambahan)"
msgid "Add Instance"
msgstr "Add Instance (tambah instance)"
msgid "Add Parameter"
msgstr "Add Parameter (penambahan parameter)"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Menambahkan parameter ke kelompok konfigurasi. Ketika semua parameter "
"ditambahkan klik 'Apply Changes' untuk menyimpan perubahan."
msgid "Advanced"
msgstr "Advanced (lanjutan)"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"Izinkan pengguna untuk menghubungkan dari host ini saja. Jika tidak izin "
"ini, pengguna ini akan diizinkan untuk terhubung dari mana saja."
msgid "Allowed Host"
msgstr "Allowed Host (diizinkan host)"
msgid "Allowed Host (optional)"
msgstr "Allowed Host (optional)"
msgid "Any Availability Zone"
msgstr "Any Availability Zone"
msgid "Applicable only if the volume size is specified."
msgstr "Berlaku hanya jika ukuran volume ditentukan."
msgid "Applied changes to server"
msgstr "Perubahan yang diterapkan ke server"
msgid "Apply Changes"
msgstr "Apply Changes (penerapan perubahan)"
msgid "At least one of the new fields must be changed."
msgstr "Setidaknya satu kolom baru harus diubah."
msgid "Attach Configuration Group"
msgstr "Attach Configuration Group (pelekatan grup konfigurasi)"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Melekatkan grup Konfigurasi \"%s\""
msgid "Availability Zone"
msgstr "Availability Zone (ketersediaan zona)"
msgid "Available networks"
msgstr "Jaringan yang tersedia"
msgid "Backup"
msgstr "Backup (cadangan)"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Backup (pencadangan)"
msgid "Backup Database"
msgstr "Backup Database (cadangan database)"
msgid "Backup Details"
msgstr "Backup Details (rincian cadangan)"
msgid "Backup Details: {{ backup.name }}"
msgstr "Backup Details: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Backup Duration (jangka cadangan)"
msgid "Backup File"
msgstr "Backup File (file cadangan)"
msgid "Backup File Location"
msgstr "Backup File Location (lokasi file cadangan)"
msgid "Backup Name"
msgstr "Backup Name (nama cadangan)"
msgid "Backup Overview"
msgstr "Backup Overview (ikhtisar cadangan)"
msgid "Backups"
msgstr "Backups (cadangan)"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Blocked (diblokir)"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Building (pembangunan)"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Building (pembangunan)"
msgid "Cancel"
msgstr "Cancel (pembatalan)"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Tidak dapat menonaktifkan akses root: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Tidak bisa tumbuh cluster. Tidak ada instance yang ditentukan."
msgid "Character Set"
msgstr "Character Set (set karakter)"
msgid "Choose a new instance flavor."
msgstr "Pilih flavor instance baru."
msgid "Choose initial state."
msgstr "Pilih keadaan awal."
msgid "Close"
msgstr "Close (tutup)"
msgid "Cluster Name"
msgstr "Cluster Name (nama kluster)"
msgid "Cluster Size"
msgstr "Cluster Size (ukuran kluster)"
msgid "Clusters"
msgstr "Clusters (kluster)"
msgid "Collation"
msgstr "Collation (pemeriksaan)"
msgid "Comma separated list of databases to create"
msgstr "Daftar dipisahkan koma dari database untuk membuat"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Completed (lengkap)"
msgid "Configuration Defaults"
msgstr "Configuration Defaults (default konfigurasi)"
msgid "Configuration Group"
msgstr "Configuration Group (grup konfigurasi)"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Configuration Group Details: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Configuration Group Instances (instance grup konfigurasi)"
msgid "Configuration Group Name"
msgstr "Configuration Group Name (nama grup konfigurasi)"
msgid "Configuration Group Overview"
msgstr "Configuration Group Overview"
msgid "Configuration Group Values"
msgstr "Configuration Group Values (nilai grup konfigurasi)"
msgid "Configuration Groups"
msgstr "Configuration Groups (grup konfigurasi)"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr ""
"Konfirmasi replika saat ini adalah untuk dipromosikan sebagai sumber replika "
"baru."
msgid "Connection Examples"
msgstr "Connection Examples (contoh koneksi)"
msgid "Connection Information"
msgstr "Connection Information (informasi koneksi)"
msgid "Container"
msgstr "Container (kontainer)"
msgid "Create Backup"
msgstr "Create Backup (buat cadangan)"
msgid "Create Configuration Group"
msgstr "Create Configuration Group (buat grup konfigurasi)"
msgid "Create Database"
msgstr "Create Database (buat database)"
msgid "Create User"
msgstr "Create User (buat user)"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"Buat pengguna awal opsional. Pengguna ini akan memiliki akses ke semua "
"database yang Anda buat."
msgid "Created"
msgstr "Created (dibuat))"
msgid "Created configuration group"
msgstr "Dibuat grup konfigurasi"
#, python-format
msgid "Created database \"%s\"."
msgstr "Database yang dibuat \"%s\"."
#, python-format
msgid "Created user \"%s\"."
msgstr "Dibuat pengguna \"%s\"."
msgid "Current Replica"
msgstr "Current Replica (salinan saat ini)"
msgid "Current Replica Source"
msgstr "Current Replica Source (sumber salinan saat ini)"
msgid "Current Size (GB)"
msgstr "Current Size (GB) (ukuran saat ini)"
msgid "Current Task"
msgstr "Current Task (tugas saat ini)"
msgid "DATABASE"
msgstr "DATABASE (database)"
msgid "Database"
msgstr "Database (database)"
msgid "Database Access"
msgstr "Database Access (akses database)"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "Database Access untuk: {{ user_name }}@{{user_host}}"
msgid "Database Backups"
msgstr "Database Backups (cadangan database) "
msgid "Database Info"
msgstr "Database Info (info database)"
msgid "Database Instance"
msgstr "Database Instance (instance database)"
msgid "Database Name"
msgstr "Database Name (nama pengguna)"
msgid "Database Port"
msgstr "Database Port (port database)"
msgid "Databases"
msgstr "Databases (database)"
msgid "Datastore"
msgstr "Datastore (penyimpanan data)"
msgid "Datastore Version"
msgstr "Datastore Version (versi penyimpanan data)"
msgid "Defaults"
msgstr "Defaults (default)"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Delete Backup"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Delete Cluster"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "Delete Configuration Group"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Delete Database"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Delete Failed (penghapusan kegagalan)"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Delete Instance"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "Delete Parameter"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Delete User"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Deleted Backup"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "Deleted Configuration Group"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Deleted Database"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "Deleted Parameter"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Deleted User"
msgid "Deleted cluster is not recoverable."
msgstr "Cluster dihapus tidak dapat dipulihkan."
msgid "Deleted instances are not recoverable."
msgstr "Instance yang dihapus tidak dapat dipulihkan."
msgid "Description"
msgstr "Description (deskripsi)"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Detach Configuration Group"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Detach Replica"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Detached Configuration Group"
msgid "Details"
msgstr "Details (rincian)"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Disable Log"
msgid "Disable Root"
msgstr "Disable Root (menonaktifkan root)"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Disabled Log"
msgid "Discard Changes"
msgstr "Discard Changes (pembuangan perubahan)"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Discard Log"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Discarded Log"
msgid "Download"
msgstr "Download (pengunduhan)"
msgid "Download Backup"
msgstr "Download Backup (mengunduh cadangan)"
msgid "Edit User"
msgstr "Edit User (edit user)"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Eject Replica Source"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Ejected Replica Source"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Enable Log"
msgid "Enable Root"
msgstr "Enable Root (mengaktifkan root)"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Enabled Log"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Error"
msgid "Error applying changes"
msgstr "Kesalahan menerapkan perubahan"
msgid "Error creating database backup."
msgstr "Kesalahan menciptakan backup database."
msgid "Error deleting database on instance."
msgstr "Kesalahan menghapus database pada instance."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Kesalahan men-download file log: %s"
msgid "Error getting configuration group list."
msgstr "Kesalahan mendapatkan daftar grup konfigurasi."
msgid "Error getting database backup list."
msgstr "Kesalahan mendapatkan daftar backup database."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Kesalahan ulang (resetting) parameter: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Failed"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Failed (kegagalan)"
msgid "Fault"
msgstr "Fault (kesalahan)"
msgid "Flavor"
msgstr "Flavor"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "Go (jalan)"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Grant Access"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Granted Access to"
msgid "Grow Cluster"
msgstr "Grow Cluster (pertumbuhan kluster)"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Grow Cluster: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Has Root Ever Been Enabled (apakah root pernah diaktifkan)"
msgid "Host"
msgstr "Host (host)"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Host atau IP dimana pengguna diperbolehkan untuk terhubung melalui."
msgid "ID"
msgstr "ID (id)"
msgid "Incremental"
msgstr "Incremental (penambahan)"
msgid "Incremental Backup"
msgstr "Incremental Backup (cadangan inkremental)"
msgid "Info"
msgstr "Info (informasi)"
msgid "Information"
msgstr "Information (informasi)"
msgid "Initial Admin User"
msgstr "Initial Admin User (user admin awal)"
msgid "Initial Databases"
msgstr "Initial Databases (database awal)"
msgid "Initial Volume Size"
msgstr "Initial Volume Size (ukuran volume awal)"
msgid "Initial admin user to add"
msgstr "Awal user admin untuk menambahkan"
msgid "Initialize Databases"
msgstr "Initialize Databases"
msgid "Instance Name"
msgstr "Instance Name (nama instance)"
msgid "Instance Type"
msgstr "Instance Type (tipe instance)"
msgid "Instances"
msgstr "Instances (instance)"
msgid "Is a Replica Of"
msgstr "Is a Replica Of"
msgid "Launch"
msgstr "Launch (meluncurkan)"
msgid "Launch Cluster"
msgstr "Launch Cluster (peluncuran kluster)"
msgid "Launch Database"
msgstr "Launch Database (peluncuran database)"
msgid "Launch Instance"
msgstr " Launch Instance (peluncuran instance)"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "Diluncurkan %(count)s named \"%(name)s\"."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Diluncurkan klaster \"%s\""
msgid "Locality"
msgstr "Locality (lokalitas)"
msgid "Log"
msgstr "Log (catatan)"
msgid "Log Contents"
msgstr "Log Contents (konten catatan)"
msgid "Log Length"
msgstr "Log Length (panjang catatan)"
msgid "Log length must be a nonnegative integer."
msgstr "Panjang log harus berupa bilangan integer positif."
msgid "Log: "
msgstr "Log (catatan): "
msgid "Logs"
msgstr "Logs (catatan)"
msgid "Manage Access"
msgstr "Manage Access (mengelola akses)"
msgid "Manage Root"
msgstr "Manage Root (mengelola root)"
msgid "Manage Root Access"
msgstr "Manage Root Access (mengelolaan akses root)"
msgid "Management Console"
msgstr "Management Console (konsol pengelolaan)"
msgid "Master Instance Name"
msgstr "Master Instance Name (nama instance induk)"
msgid "Message"
msgstr "Message (pesan)"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"Pindah jaringan dari 'Available Networks' ke 'Selected Networks' dengan "
"mengklik tombol, atau menyeret dan menjatuhkan (drag and drop). Anda dapat "
"mengubah urutan NIC dengan menyeret dan menjatuhkan juga."
msgid "Name"
msgstr "Name (nama)"
msgid "Network"
msgstr "Network (jaringan)"
msgid "Network attached to instance."
msgstr "Jaringan terpasang untuk instance."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "New (baru)"
msgid "New Flavor"
msgstr "New Flavor (flavor baru)"
msgid "New Host"
msgstr "New Host (host baru)"
msgid "New Name"
msgstr "New Name (nama baru)"
msgid "New Password"
msgstr "New Password (password baru)"
msgid "New Size (GB)"
msgstr "New Size (GB) (ukuran baru)"
msgid "New password for cluster access."
msgstr "Password baru untuk akses cluster."
msgid "New size for volume must be greater than current size."
msgstr "Ukuran baru untuk volume harus lebih besar dari ukuran saat ini."
msgid "No availability zones found"
msgstr "Tidak ada zona ketersediaan ditemukan"
msgid "No backups available"
msgstr "Tidak ada backup yang tersedia"
msgid "No configuration groups available"
msgstr "Tidak ada grup konfigurasi yang tersedia"
msgid "No configurations available"
msgstr "Tidak ada konfigurasi yang tersedia"
msgid "No flavors available"
msgstr "Tidak ada flavor tersedia"
msgid "No instances available"
msgstr "Tidak ada instance yang tersedia"
msgid "No volume type"
msgstr "Tidak ada jenis volume"
msgid "None"
msgstr "None (tak satupun)"
msgid "Not Assigned"
msgstr "Not Assigned (tidak ditugaskan)"
msgid "Not Found"
msgstr "Not Found (tidak ditemukan)"
msgid "Not available"
msgstr "Not available (tidak tersedia)"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Catatan: Aktifkan akses root pada sebuah instance. Jika user root sudah "
"diaktifkan maka password baru yang dihasilkan."
msgid "Number of Instances"
msgstr "Number of Instances (jumlah instance)"
msgid "Number of Shards"
msgstr "Number of Shards (jumlah serpihan)"
msgid "Number of instances in the cluster."
msgstr "Jumlah instance dalam cluster."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Jumlah instance dalam cluster. (read only)"
msgid "Number of shards. (Read only)"
msgstr "Jumlah serpihan. (Read only)"
msgid "Old Flavor"
msgstr "Old Flavor (flavor lama)"
msgid "Optional Backup Description"
msgstr "Optional Backup Description (deskripsi cadangan opsional)"
msgid "Optional character set for the database."
msgstr "Set karakter opsional untuk database."
msgid "Optional collation type for the database."
msgstr "Tipe pemeriksaan opsional untuk database."
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"Daftar dipisahkan koma opsional di database pengguna memiliki akses ke."
msgid "Optional datastore specific type of the instance."
msgstr "Tipe tertentu datastore opsional untuk instance."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Nilai tertentu datastore opsional yang mendefinisikan hubungan dari satu "
"instance dalam cluster ke instance yang lain."
msgid "Optional host of user."
msgstr "Host opsional pengguna."
msgid "Optional name of the instance."
msgstr "Nama opsional instance."
msgid "Optional parent backup"
msgstr "Backup indukn opsional"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"Secara opsional memilih untuk membuat database ini menggunakan cadangan "
"sebelumnya, atau sebagai replika contoh database lain."
msgid "Optionally provide a character set and collation for the database."
msgstr ""
"Secara opsional menyediakan set karakter dan pemeriksaan untuk database."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"Secara opsional memberikan daftar dipisahkan koma dari database untuk "
"membuat:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Secara opsional menyediakan host pengguna dan daftar database dimana "
"pengguna diberikan akses ke database itu."
msgid "Overview"
msgstr "Overview (ikhtisar)"
msgid "PASSWORD"
msgstr "PASSWORD (password)"
msgid "Parameter"
msgstr "Parameter (parameter)"
msgid "Parameters"
msgstr "Parameters (parameter)"
msgid "Parent Backup"
msgstr "Parent Backup (cadangan induk)"
msgid "Password"
msgstr "Password (password)"
msgid "Password (required)"
msgstr "Password (wajib)"
msgid "Password for root user must be specified."
msgstr "Password untuk user root harus ditentukan."
msgid "Password for root user."
msgstr "Password untuk user root."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr "Password hanya terlihat segera setelah akar diaktifkan atau reset."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Harap dicatat: Nilai baru harus lebih besar dari ukuran volume yang "
"ada."
msgid "Promote"
msgstr "Promote (promosi)"
msgid "Promote to Replica Source"
msgstr "Promote to Replica Source (promosi sumber replika)"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Replika dipromosikan \"%s\" sebagai sumber replika baru."
msgid "Property"
msgstr "Property (properti)"
msgid "Publish"
msgstr "Publish (penerbitan)"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Publish Log"
msgid "Publishable (bytes)"
msgstr "Publishable (yang patut diterbitkan) (bytes)"
msgid "Published (bytes)"
msgstr "Published (diterbitkan) (bytes)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Published Log"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Rebooting (melakukan reboot)"
msgid "Related To"
msgstr "Related To"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Remove Instance"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Removed Instance"
msgid "Removed instances from cluster."
msgstr "Instance dihapus dari cluster."
msgid "Replica Count"
msgstr "Replica Count (jumlah salinan)"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Replica Detached"
msgid "Replicas"
msgstr "Replicas (salinan)"
msgid "Replicate from Instance"
msgstr "Mereplikasi dari Instance"
msgid "Replication"
msgstr "Replication (tiruan)"
msgid "Reset Parameters"
msgstr "Reset Parameters (pengaturan ulang parameter)"
msgid "Reset Root Password"
msgstr "Reset Root Password (mengatur ulang password root) "
msgid "Resize Database Instance"
msgstr "Resize Database Instance (perubahan ukuran instance database)"
msgid "Resize Database Volume"
msgstr "Resize Database Volume (perubahan ukuran volume database)"
msgid "Resize Instance"
msgstr "Resize Instance (perubahan ukuran instance)"
msgid "Resize Volume"
msgstr "Resize Volume (perubahan ukuran volume)"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Resizing (perubahan ukurang)"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Mengubah ukuran instance \"%s\""
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Perubahan ukuran volume \"%s\""
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Restart Instance"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Restart Required (restart diperlukan)"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Restarted Instance"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Instance yang direstart akan kehilangan data tidak disimpan dalam "
"penyimpanan persisten."
msgid "Restore Backup"
msgstr "Restore Backup (pengembalian cadangan)"
msgid "Restore from Backup"
msgstr "Restore dari Backup"
msgid "Return to Log List"
msgstr "Return to Log List (kembali ke daftar catatan)"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Revoke Access"
msgid "Root Enabled"
msgstr "Root Enabled (root diaktifkan)"
msgid "Root Password"
msgstr "Root Password (password root)"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Password root diperbarui untuk cluster \"%s\""
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Saving (penyimpanan)"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Scheduled Shrinking of Cluster"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Backup dijadwalkan\"%(name)s\"."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Scheduled deletion of Cluster"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Scheduled deletion of Instance"
msgid "Scheduled growing of cluster."
msgstr "Dijadwalkan pertumbuhan cluster."
msgid "Select a backup to restore"
msgstr "Pilih cadangan untuk mengembalikan"
msgid "Select a configuration group"
msgstr "Pilih grup konfigurasi"
msgid "Select a configuration group to attach to the database instance."
msgstr "Pilih grup konfigurasi untuk melekat pada instance database."
msgid "Select a master instance"
msgstr "Pilih instance induk"
msgid "Select a new flavor"
msgstr "Pilih flavor baru"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr "Pilih parameter dan memberikan nilai untuk parameter konfigurasi."
msgid "Select backup"
msgstr "Pilih backup"
msgid "Select configuration"
msgstr "Pilih konfigurasi"
msgid "Select configuration group"
msgstr "Pilih grup konfigurasi"
msgid "Select datastore type and version"
msgstr "Pilih tipe datastore dan versi"
msgid "Select instance"
msgstr "Pilih instance"
msgid "Select parent backup"
msgstr "Pilih cadangan induknya"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Pilih instance yang akan dihapus dari cluster."
msgid "Selected networks"
msgstr "Jaringan yang dipilih"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Shrink Cluster"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Shrink Cluster: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Menyusut cluster tidak dapat dipulihkan."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Shutdown (mematikan)"
msgid "Size"
msgstr "Size (size)"
msgid "Size of image to launch."
msgstr "Ukuran image untuk memulai."
msgid "Size of the volume in GB."
msgstr "Ukuran volume dalam GB."
msgid "Source for Initial State"
msgstr "Source untuk Initial State"
msgid "Specify a new flavor for the database instance."
msgstr "Tentukan flavor baru untuk instance database."
msgid "Specify a new name, new password or new host name for the user."
msgstr "Tentukan nama baru, password baru atau nama host baru bagi pengguna."
msgid "Specify the details for launching an instance."
msgstr "Tentukan rincian untuk meluncurkan sebuah instance."
msgid "Specify the details for the database backup."
msgstr "Tentukan rincian untuk backup database."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Menentukan rincian instance yang akan ditambahkan ke cluster."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Tentukan instance yang akan ditambahkan ke cluster. Ketika semua instance "
"yang klik ditentukan 'Grow Cluster' untuk melakukan operasi tumbuh."
msgid "Specify the name of the new database."
msgstr "Tentukan nama database baru."
msgid "Specify the name of the new user and password."
msgstr "Tentukan nama pengguna dan password baru."
msgid "Specify the new root password for vertica cluster."
msgstr "Tentukan password root baru untuk cluster vertica."
msgid "Specify the new volume size for the database instance."
msgstr "Tentukan ukuran volume baru untuk instance database."
msgid "Specify the number of replicas to be created"
msgstr "Tentukan jumlah replika yang akan dibuat"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"Menentukan apakah instance yang direplikasi masa depan akan dibuat pada "
"hypervisor yang sama (afinitas) atau pada hypervisors berbeda (anti-"
"afinitas). Nilai ini diabaikan jika instance yang akan diluncurkan adalah "
"replika."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Menentukan apakah instance di cluster akan dibuat pada hypervisor yang sama "
"(afinitas) atau pada hypervisors berbeda (anti-afinitas)."
msgid "Specs"
msgstr "Specs (spesifikasi)"
msgid "Status"
msgstr "Status (keadaan)"
msgid "Status if root was ever enabled for an instance."
msgstr "Keadaan jika root pernah diaktifkan untuk sebuah instance."
msgid "Successfully added parameter"
msgstr "Berhasil ditambahkan parameter"
msgid "Successfully disabled root access."
msgstr "Berhasil menonaktifkan akses root."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"Kolom 'Instance Type' dan 'Related To' adalah datastore spesifik dan "
"opsional. Lihat dokumentasi Trove untuk informasi lebih lanjut tentang "
"menggunakan kolom ini."
msgid "The flavor must be specified."
msgstr "Flavor harus ditentukan."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"Kolom nama adalah opsional. Jika Kolom ini dibiarkan kosong maka nama akan "
"dihasilkan ketika cluster tumbuh."
msgid "The number of instances must be greater than 1."
msgstr "Jumlah instance harus lebih besar dari 1."
msgid "The number of shards must be greater than 1."
msgstr "Jumlah serpihan harus lebih besar dari 1."
msgid "There was a problem enabling root."
msgstr "Ada masalah mengaktifkan root."
msgid "This action cannot be undone."
msgstr "Tindakan ini tidak bisa dibatalkan."
msgid "Type"
msgstr "Type (tipe)"
msgid "Type and version of datastore."
msgstr "Tipe dan versi datastore."
msgid "USERNAME"
msgstr "USERNAME (username)"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Tidak bisa %(action)s: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Tidak dapat menambahkan parameter baru: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Tidak dapat melekatkan grup konfigurasi. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Tidak dapat membuat grup konfigurasi %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Tidak dapat membuat database. %s"
msgid "Unable to create list of parameters."
msgstr "Tidak dapat membuat daftar parameter."
#, python-format
msgid "Unable to create user. %s"
msgstr "Tidak dapat membuat pengguna. %s"
msgid "Unable to determine if instance root is enabled."
msgstr "Tidak dapat menentukan apakah instance akar diaktifkan."
msgid "Unable to find backup!"
msgstr "Tidak dapat menemukan cadangan (backup) !"
msgid "Unable to find configuration group!"
msgstr "Tidak dapat menemukan grup konfigurasi!"
msgid "Unable to find master instance!"
msgstr "Tidak dapat menemukan instance utama!"
msgid "Unable to get configuration data."
msgstr "Tidak dapat mendapatkan data konfigurasi."
msgid "Unable to get database backup data."
msgstr "Tidak dapat mendapatkan data backup database."
msgid "Unable to get databases data."
msgstr "Tidak dapat mendapatkan data database."
msgid "Unable to get instances data."
msgstr "Tidak dapat mendapatkan data instance."
msgid "Unable to get user access data."
msgstr "Tidak dapat mendapatkan akses data pengguna."
msgid "Unable to get user data."
msgstr "Tidak dapat mendapatkan data pengguna."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Tidak dapat mengembangkan cluster. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Tidak dapat tumbuh klaster: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Tidak dapat meluncurkan %(count)s named \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Tidak dapat meluncurkan klaster. %s"
msgid "Unable to list database backups for parent."
msgstr "Tidak dapat mendaftar backup database untuk induknya."
msgid "Unable to list database instances to backup."
msgstr "Tidak dapat mendaftar instance database untuk backup."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Tidak bisa memuat {0} log\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Tidak bisa memuat {0} log untuk instance \"{1}\"."
msgid "Unable to obtain datastore versions."
msgstr "Tidak dapat memperoleh versi datastore."
msgid "Unable to obtain datastores."
msgstr "Tidak dapat memperoleh datastores."
msgid "Unable to obtain flavors."
msgstr "Tidak dapat memperoleh flavor."
msgid "Unable to obtain information on root user"
msgstr "Tidak dapat memperoleh informasi tentang root user"
msgid "Unable to obtain list of parameters."
msgstr "Tidak dapat memperoleh daftar parameter."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Tidak dapat mempromosikan replika sebagai sumber replika baru. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Tidak dapat menghapus instance dari gugus: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "Tidak dapat me-reset password. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Tidak dapat mengubah ukuran instance. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Tidak dapat mengubah ukuran volume. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Tidak dapat mengambil database yang dapat diakses."
msgid "Unable to retrieve availability zones."
msgstr "Tidak dapat mengambil zona ketersediaan."
msgid "Unable to retrieve cluster details."
msgstr "Tidak dapat mengambil rincian cluster."
msgid "Unable to retrieve database clusters."
msgstr "Tidak dapat mengambil cluster database."
msgid "Unable to retrieve database instances."
msgstr "Tidak dapat mengambil instance database."
msgid "Unable to retrieve database size information."
msgstr "Tidak dapat mengambil informasi ukuran database."
msgid "Unable to retrieve databases."
msgstr "Tidak dapat mengambil database."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Tidak dapat mengambil rincian untuk backup: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "Tidak dapat mengambil rincian untuk kelompok konfigurasi: % s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Tidak dapat mengambil rincian untuk cluster database: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Tidak dapat mengambil rincian untuk instance database: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Tidak dapat mengambil rincian untuk backup induknya: %s"
msgid "Unable to retrieve flavors."
msgstr "Tidak dapat mengambil flavor."
msgid "Unable to retrieve instance details."
msgstr "Tidak dapat mengambil rincian instance."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Tidak dapat mengambil daftar log.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Tidak dapat mengambil jaringan."
#, python-format
msgid "Unable to update user. %s"
msgstr "Tidak dapat memperbarui pengguna. %s"
msgid "Unknown"
msgstr "Unknown (tidak diketahui)"
msgid "Updated"
msgstr "Updated (diperbarui)"
#, python-format
msgid "Updated user \"%s\"."
msgstr "Diperbarui pengguna \"%s\"."
msgid "User Name"
msgstr "User Name (nama user)"
msgid "Username (required)"
msgstr "Username (wajib)"
msgid "Users"
msgstr "Users (pengguna)"
msgid "Value"
msgstr "Value (nilai)"
msgid "Value must be \"true\" or \"false\"."
msgstr "Nilai harus \"true\" atau \"false\"."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "Nilai harus berupa angka antara %(min)s dan %(max)s."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "Nilai harus berupa angka lebih besar dari atau sama dengan %s."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "Nilai harus berupa angka kurang dari atau sama dengan %s."
msgid "Value must be a number."
msgstr "Nilai harus berupa angka"
#, python-format
msgid "Value must be of type %s."
msgstr "Nilai harus dari tipe %s."
msgid "Values"
msgstr "Values (nilai)"
msgid "View Full Log"
msgstr "View Full Log (melihat catalan seluruhnya)"
msgid "View Log"
msgstr "View Log (melihat catatan)"
msgid "Volume"
msgstr "Volume (volume)"
msgid "Volume Size"
msgstr "Volume Size (ukuran volume)"
msgid "Volume Type"
msgstr "Volume Type (tipe volume)"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "Anda tidak diizinkan untuk %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Anda dapat melakukan incremental backup dengan menetapkan cadangan induknya. "
" However, strong> tidak semua database mendukung incremental "
"backup dalam hal operasi ini akan mengakibatkan kesalahan."
msgid "You must select a datastore type and version."
msgstr "Anda harus memilih jenis datastore dan versi."
msgid "You must select a flavor."
msgstr "Anda harus memilih sebuah flavor."
msgid "You must specify a password if you create a user."
msgstr "Anda harus menentukan password jika Anda membuat user."
msgid "You must specify at least one database if you create a user."
msgstr "Anda harus menentukan setidaknya satu database jika Anda membuat user."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "instance"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/id/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001752 00000000000 027017 0 ustar 00corey corey 0000000 0000000 # suhartono , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard 7.0.0.0rc2.dev7\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-10-07 13:57+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-10-04 03:38+0000\n"
"Last-Translator: suhartono \n"
"Language-Team: Indonesian\n"
"Language: id\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "Created"
msgstr "Created (dibuat)"
msgid "Database"
msgstr "Database (database)"
msgid "Datastore"
msgstr "Datastore (penyimpanan data)"
msgid "Datastore Version"
msgstr "Datastore Version (versi penyimpanan data)"
msgid "Incremental"
msgstr "Incremental (inkremental)"
msgid "Name"
msgstr "Name (nama)"
msgid "Unable to retrieve the Backups."
msgstr "Tidak dapat mengambil Backup."
msgid "status"
msgstr "status (keadaan)"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ja/ 0000755 0001750 0001750 00000000000 00000000000 023064 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ja/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 024651 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ja/LC_MESSAGES/django.po 0000644 0001750 0001750 00000116363 00000000000 026465 0 ustar 00corey corey 0000000 0000000 # Akihiro Motoki , 2016. #zanata
# Andreas Jaeger , 2016. #zanata
# Shu Muto , 2016. #zanata
# Yoshiki Eguchi , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-01-15 11:49+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-09-30 03:49+0000\n"
"Last-Translator: Akihiro Motoki \n"
"Language-Team: Japanese\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0\n"
"X-Generator: Zanata 3.9.6\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s インスタンス"
msgid "-"
msgstr "-"
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"注意: ボリュームサイズ欄では 0 より大きい値を指定すべきです"
"が、設定によってはボリュームサイズの指定に対応していない場合があります。ボ"
"リュームサイズを指定した際に、ボリューム側でのサポートが有効になっていないと"
"のエラーになる場合は、0 を入力してください。"
msgid "A backup must be selected!"
msgstr "バックアップを選択する必要があります。"
msgid "A master instance must be selected!"
msgstr "マスターインスタンスを選択する必要があります"
msgid "A new name or new password or new host must be specified."
msgstr ""
"新しい名前、新しいパスワード、新しいホストのいずれかは指定しなければいけませ"
"ん。"
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "アクセスを取り消しました"
msgid "Accessible"
msgstr "アクセス可能"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "稼働中"
msgid "Add"
msgstr "追加"
msgid "Add Instance"
msgstr "インスタンスの追加"
msgid "Add Parameter"
msgstr "パラメーターの追加"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"設定グループのパラメーターを追加してください。全てのパラメーターが追加した"
"ら、変更を保存するために「変更の適用」をクリックしてください。"
msgid "Advanced"
msgstr "高度な設定"
msgid "Allowed Host"
msgstr "許可ホスト"
msgid "Allowed Host (optional)"
msgstr "許可ホスト (省略可)"
msgid "Any Availability Zone"
msgstr "すべてのアベイラビリティーゾーン"
msgid "Applicable only if the volume size is specified."
msgstr "ボリュームサイズが指定された場合のみ有効です。"
msgid "Applied changes to server"
msgstr "変更をサーバーに適用しました"
msgid "Apply Changes"
msgstr "変更の適用"
msgid "At least one of the new fields must be changed."
msgstr ""
"新しい値を指定するフィールドの少なくとも 1 つは、値が変更されていないければい"
"けません。"
msgid "Attach Configuration Group"
msgstr "設定グループの適用"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "設定グループ \"%s\" を適用中"
msgid "Availability Zone"
msgstr "アベイラビリティーゾーン"
msgid "Available networks"
msgstr "利用可能なネットワーク"
msgid "Backup"
msgstr "バックアップ"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "バックアップ"
msgid "Backup Database"
msgstr "データベースのバックアップ"
msgid "Backup Details"
msgstr "バックアップの詳細"
msgid "Backup Details: {{ backup.name }}"
msgstr "バックアップの詳細: {{ backup.name }}"
msgid "Backup Duration"
msgstr "バックアップ生存期間"
msgid "Backup File"
msgstr "バックアップファイル"
msgid "Backup File Location"
msgstr "バックアップファイルの場所"
msgid "Backup Name"
msgstr "バックアップ名"
msgid "Backup Overview"
msgstr "バックアップの概要"
msgid "Backups"
msgstr "バックアップ"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "実行待ち"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "作成中"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "作成中"
msgid "Cancel"
msgstr "取り消し"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "ルートアクセスを無効化できません: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "クラスターを拡張できません。インスタンスが指定されていません。"
msgid "Character Set"
msgstr "文字集合"
msgid "Choose a new instance flavor."
msgstr "新しいインスタンスフレーバーを選択してください。"
msgid "Choose initial state."
msgstr "初期状態を選択してください"
msgid "Close"
msgstr "閉じる"
msgid "Cluster Name"
msgstr "クラスター名"
msgid "Cluster Size"
msgstr "クラスターサイズ"
msgid "Clusters"
msgstr "クラスター"
msgid "Collation"
msgstr "照合順序"
msgid "Comma separated list of databases to create"
msgstr "作成するデータベースのリスト(コンマ区切り)"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "完了"
msgid "Configuration Defaults"
msgstr "設定のデフォルト値"
msgid "Configuration Group"
msgstr "設定グループ"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "設定グループの詳細: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "設定グループのインスタンス"
msgid "Configuration Group Name"
msgstr "設定グループ名"
msgid "Configuration Group Overview"
msgstr "設定グループの概要"
msgid "Configuration Group Values"
msgstr "設定グループ値"
msgid "Configuration Groups"
msgstr "設定グループ"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr "現在のレプリカを新しいレプリカ元に昇格することを確認してください。"
msgid "Connection Examples"
msgstr "接続例"
msgid "Connection Information"
msgstr "接続情報"
msgid "Container"
msgstr "コンテナー"
msgid "Create Backup"
msgstr "バックアップの作成"
msgid "Create Configuration Group"
msgstr "設定グループの作成"
msgid "Create Database"
msgstr "データベースの作成"
msgid "Create User"
msgstr "ユーザーの作成"
msgid "Created"
msgstr "作成時刻"
msgid "Created configuration group"
msgstr "設定グループを作成しました"
#, python-format
msgid "Created database \"%s\"."
msgstr "データベース \"%s\" を作成しました。"
#, python-format
msgid "Created user \"%s\"."
msgstr "ユーザー \"%s\" を作成しました。"
msgid "Current Replica"
msgstr "現在のレプリカ"
msgid "Current Replica Source"
msgstr "現在のレプリカ元"
msgid "Current Size (GB)"
msgstr "現在のサイズ (GB)"
msgid "Current Task"
msgstr "現在のタスク"
msgid "DATABASE"
msgstr "DATABASE"
msgid "Database"
msgstr "データベース"
msgid "Database Access"
msgstr "データベースのアクセス権"
msgid "Database Backups"
msgstr "データベースのバックアップ"
msgid "Database Info"
msgstr "データーベースの情報"
msgid "Database Instance"
msgstr "データベースインスタンス"
msgid "Database Name"
msgstr "データベース名"
msgid "Database Port"
msgstr "データベースのポート番号"
msgid "Databases"
msgstr "データベース"
msgid "Datastore"
msgstr "データストア"
msgid "Datastore Version"
msgstr "データストアバージョン"
msgid "Defaults"
msgstr "デフォルト値"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "バックアップの削除"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "クラスターの削除"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "データベースの削除"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "削除に失敗しました"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "インスタンスの削除"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "ユーザーの削除"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "バックアップを削除しました"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "データベースを削除しました"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "ユーザーを削除しました"
msgid "Deleted cluster is not recoverable."
msgstr "削除されたクラスターは元に戻すことはできません。"
msgid "Deleted instances are not recoverable."
msgstr "削除されたインスタンスは元に戻すことはできません。"
msgid "Description"
msgstr "説明"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "設定グループの解除"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "レプリカの切断"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "設定グループを解除しました"
msgid "Details"
msgstr "詳細"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "ログの無効化"
msgid "Disable Root"
msgstr "ルートの無効化"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "ログを無効にしました"
msgid "Discard Changes"
msgstr "変更の破棄"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "ログの破棄"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "ログを破棄しました"
msgid "Download"
msgstr "ダウンロード"
msgid "Download Backup"
msgstr "バックアップのダウンロード"
msgid "Edit User"
msgstr "ユーザーの編集"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "レプリカ元のイジェクト"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "レプリカ元をイジェクトしました"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "ログの有効化"
msgid "Enable Root"
msgstr "ルートの有効化"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "ログを有効にしました"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "エラー"
msgid "Error applying changes"
msgstr "変更の適用中にエラーが発生しました"
msgid "Error creating database backup."
msgstr "データベースのバックアップ作成でエラーが発生しました。"
msgid "Error deleting database on instance."
msgstr "インスタンスからのデータベースの削除でエラーが発生しました。"
#, python-format
msgid "Error downloading log file: %s"
msgstr "ログファイルのダウンロードに失敗しました: %s"
msgid "Error getting configuration group list."
msgstr "設定グループ一覧の取得でエラーが発生しました。"
msgid "Error getting database backup list."
msgstr "データベースのバックアップ一覧の取得でエラーが発生しました。"
#, python-format
msgid "Error resetting parameters: %s"
msgstr "パラメーターのリセット中にエラーが発生しました: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "失敗"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "失敗"
msgid "Fault"
msgstr "失敗"
msgid "Flavor"
msgstr "フレーバー"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "表示"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "アクセスの承認"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "アクセスを承認しました"
msgid "Grow Cluster"
msgstr "クラスターの拡張"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "クラスターの拡張: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "ルートを有効のままにする"
msgid "Host"
msgstr "ホスト"
msgid "Host or IP that the user is allowed to connect through."
msgstr "このユーザーで許可される接続元のホスト名または IP アドレス"
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "差分"
msgid "Incremental Backup"
msgstr "差分バックアップ"
msgid "Info"
msgstr "情報"
msgid "Information"
msgstr "情報"
msgid "Initial Admin User"
msgstr "最初の管理ユーザー"
msgid "Initial Databases"
msgstr "初期データベース"
msgid "Initial Volume Size"
msgstr "初期ボリュームサイズ"
msgid "Initial admin user to add"
msgstr "追加する初期管理ユーザー"
msgid "Initialize Databases"
msgstr "データベースの初期化"
msgid "Instance Name"
msgstr "インスタンス名"
msgid "Instance Type"
msgstr "インスタンスタイプ"
msgid "Instances"
msgstr "インスタンス"
msgid "Is a Replica Of"
msgstr "インスタンスのレプリカ元"
msgid "Launch"
msgstr "起動"
msgid "Launch Cluster"
msgstr "クラスターの起動"
msgid "Launch Database"
msgstr "データベースの起動"
msgid "Launch Instance"
msgstr "インスタンスの起動"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "名前が \"%(name)s\" の %(count)s を起動しました。"
#, python-format
msgid "Launched cluster \"%s\""
msgstr "クラスター \"%s\" を起動しました。"
msgid "Locality"
msgstr "局所性"
msgid "Log"
msgstr "ログ"
msgid "Log Contents"
msgstr "ログの内容"
msgid "Log Length"
msgstr "ログの表示行数"
msgid "Log length must be a nonnegative integer."
msgstr "ログの表示行数は 0 以上の整数でなければいけません。"
msgid "Log: "
msgstr "ログ:"
msgid "Logs"
msgstr "ログ"
msgid "Manage Access"
msgstr "アクセス権の管理"
msgid "Manage Root"
msgstr "ルートの管理"
msgid "Manage Root Access"
msgstr "ルートアクセスの管理"
msgid "Management Console"
msgstr "管理コンソール"
msgid "Master Instance Name"
msgstr "マスターインスタンス名"
msgid "Message"
msgstr "メッセージ"
msgid "Name"
msgstr "名前"
msgid "Network"
msgstr "ネットワーク"
msgid "Network attached to instance."
msgstr "インスタンスに接続するネットワーク。"
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "新規作成"
msgid "New Flavor"
msgstr "新しいフレーバー"
msgid "New Host"
msgstr "新しいホスト"
msgid "New Name"
msgstr "新しい名前"
msgid "New Password"
msgstr "新しいパスワード"
msgid "New Size (GB)"
msgstr "新しいサイズ (GB)"
msgid "New password for cluster access."
msgstr "クラスターへのアクセスに使用する新しいパスワード。"
msgid "New size for volume must be greater than current size."
msgstr "新しいボリュームサイズは現在のサイズよりも大きい必要があります。"
msgid "No availability zones found"
msgstr "アベイラビリティーゾーンがありません"
msgid "No backups available"
msgstr "バックアップがありません"
msgid "No configuration groups available"
msgstr "設定グループがありません"
msgid "No configurations available"
msgstr "設定がありません"
msgid "No flavors available"
msgstr "利用可能なフレーバーがありません"
msgid "No instances available"
msgstr "インスタンスがありません"
msgid "No volume type"
msgstr "ボリューム種別の指定なし"
msgid "None"
msgstr "なし"
msgid "Not Assigned"
msgstr "割り当てなし"
msgid "Not Found"
msgstr "見つかりません"
msgid "Not available"
msgstr "利用できません"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"注意: インスタンスでルートアクセスを有効にします。ルートユーザーがすでに有効"
"になっている場合は、新しいパスワードが生成されます。"
msgid "Number of Instances"
msgstr "インスタンス数"
msgid "Number of Shards"
msgstr "シャード数"
msgid "Number of instances in the cluster."
msgstr "クラスター内のインスタンス数。"
msgid "Number of instances in the cluster. (Read only)"
msgstr "クラスターのインスタンス数 (読み出し専用)"
msgid "Number of shards. (Read only)"
msgstr "シャード数 (読み出し専用)"
msgid "Old Flavor"
msgstr "現在のフレーバー"
msgid "Optional Backup Description"
msgstr "バックアップの説明(省略可)"
msgid "Optional character set for the database."
msgstr "(オプション) データベースで使用する文字集合。"
msgid "Optional collation type for the database."
msgstr "(オプション) このデータベースでの照合順序タイプ。"
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"(オプション) ユーザーがアクセスできるデータベースのコンマ区切りのリスト。"
msgid "Optional datastore specific type of the instance."
msgstr "(オプション) このインスタンスのデータストア固有のタイプ。"
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"(オプション) クラスター内のあるインスタンスから他のインスタンスへの関係性を定"
"義するデータストア固有の値。"
msgid "Optional host of user."
msgstr "(オプション) ユーザーのホスト。"
msgid "Optional name of the instance."
msgstr "インスタンス名 (オプション)。"
msgid "Optional parent backup"
msgstr "親バックアップ(省略可)"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"オプションで、以前のバックアップまたは他のデータベースインスタンスのレプリカ"
"を使用してこのデータベースを作成するように選択することもできます。"
msgid "Optionally provide a character set and collation for the database."
msgstr ""
"オプションで、このデータベースで使用する文字集合と照合順序を指定できます。"
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"オプションで、作成するデータベースをコンマ区切りのリストで指定できます: "
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"オプションで、このユーザーのホストと、このユーザーにアクセスを承認するデータ"
"ベースのリストを指定できます。"
msgid "Overview"
msgstr "概要"
msgid "PASSWORD"
msgstr "PASSWORD"
msgid "Parameter"
msgstr "パラメーター"
msgid "Parameters"
msgstr "パラメーター"
msgid "Parent Backup"
msgstr "親バックアップ"
msgid "Password"
msgstr "パスワード"
msgid "Password (required)"
msgstr "パスワード (必須)"
msgid "Password for root user must be specified."
msgstr "ルートユーザーのパスワードを指定する必要があります。"
msgid "Password for root user."
msgstr "ルートユーザーのパスワード。"
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"パスワードが表示されるのは、ルートを有効またはリセットした直後のみです。"
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"注意: 新しいボリュームサイズは現在のサイズよりも大きくなければいけま"
"せん。"
msgid "Promote"
msgstr "昇格"
msgid "Promote to Replica Source"
msgstr "レプリカ元へ昇格"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "レプリカ \"%s\" を新しいレプリカ元に昇格しました。"
msgid "Property"
msgstr "プロパティー"
msgid "Publish"
msgstr "公開"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "ログの公開"
msgid "Publishable (bytes)"
msgstr "公開可能なバイト数"
msgid "Published (bytes)"
msgstr "公開されたバイト数"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "ログを公開しました"
msgid "RAM"
msgstr "メモリー"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "リブート中"
msgid "Related To"
msgstr "関連付け先"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "インスタンスの削除"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "インスタンスを削除しました"
msgid "Removed instances from cluster."
msgstr "クラスターからインスタンスを削除しました。"
msgid "Replica Count"
msgstr "レプリカ数"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "レプリカが切断されました"
msgid "Replicas"
msgstr "レプリカ"
msgid "Replicate from Instance"
msgstr "インスタンスから複製"
msgid "Replication"
msgstr "レプリケーション"
msgid "Reset Parameters"
msgstr "パラメーターのリセット"
msgid "Reset Root Password"
msgstr "ルートパスワードのリセット"
msgid "Resize Database Instance"
msgstr "データベースインスタンスのリサイズ"
msgid "Resize Database Volume"
msgstr "データベースボリュームのリサイズ"
msgid "Resize Instance"
msgstr "インスタンスのリサイズ"
msgid "Resize Volume"
msgstr "ボリュームのリサイズ"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "リサイズ中"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "インスタンス \"%s\" をリサイズ中です"
#, python-format
msgid "Resizing volume \"%s\""
msgstr "ボリューム \"%s\" をリサイズ中"
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "インスタンスの再起動"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "再起動が必要です"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "インスタンスを再起動しました"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"インスタンスが再起動されると、永続ストレージに保存されていないデータはすべて"
"失われます。 "
msgid "Restore Backup"
msgstr "バックアップのリストア"
msgid "Restore from Backup"
msgstr "バックアップからのリストア"
msgid "Return to Log List"
msgstr "ログの一覧に戻る"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "アクセスの取り消し"
msgid "Root Enabled"
msgstr "ルートの有効化"
msgid "Root Password"
msgstr "ルートパスワード"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "クラスター \"%s\" のルートパスワードを更新しました。"
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "保存中"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "クラスターの縮小を予約しました"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "バックアップ \"%(name)s\" の作成を予約しました。"
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "クラスターの削除を予約しました"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "インスタンスの削除を予約しました。"
msgid "Scheduled growing of cluster."
msgstr "クラスターの拡張を予約しました。"
msgid "Select a backup to restore"
msgstr "リストアするバックアップを選択してください"
msgid "Select a configuration group"
msgstr "設定グループを選択してください"
msgid "Select a configuration group to attach to the database instance."
msgstr "このデータベースインスタンスに適用する設定グループを選択してください。"
msgid "Select a master instance"
msgstr "マスターインスタンスを選択してください"
msgid "Select a new flavor"
msgstr "新しいフレーバーを選択してください"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr "パラメーターを選択して、設定パラメーターの値を指定してください。"
msgid "Select backup"
msgstr "バックアップを選択してください"
msgid "Select configuration"
msgstr "設定を選択してください"
msgid "Select configuration group"
msgstr "設定グループを選択してください"
msgid "Select datastore type and version"
msgstr "データストアの種別とバージョンを選択してください"
msgid "Select instance"
msgstr "インスタンスを選択してください"
msgid "Select parent backup"
msgstr "親バックアップを選択してください"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "クラスターから削除するインスタンスを選択してください。"
msgid "Selected networks"
msgstr "選択済みネットワーク"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "クラスターの縮小"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "クラスターの縮小: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "クラスターの縮小は元に戻すことはできません。"
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "シャットダウン"
msgid "Size"
msgstr "サイズ"
msgid "Size of image to launch."
msgstr "起動するイメージの容量"
msgid "Size of the volume in GB."
msgstr "GB 単位のボリュームサイズ"
msgid "Source for Initial State"
msgstr "初期状態の元情報"
msgid "Specify a new flavor for the database instance."
msgstr "データベースインスタンスの新しいフレーバーを指定します。"
msgid "Specify a new name, new password or new host name for the user."
msgstr ""
"新しい名前、新しいパスワード、そのユーザーの新しいホスト名を指定してくださ"
"い。"
msgid "Specify the details for launching an instance."
msgstr "インスタンスを起動するために詳細を指定します。"
msgid "Specify the details for the database backup."
msgstr "データベースバックアップの詳細を指定します。"
msgid "Specify the details of the instance to be added to the cluster."
msgstr "クラスターに追加するインスタンスの詳細を指定してください。"
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"クラスターに追加するインスタンスを指定してください。追加するインスタンスをす"
"べて指定したら、「クラスターの拡張」をクリックして拡張操作を実行してくださ"
"い。"
msgid "Specify the name of the new database."
msgstr "新しいデータベースの名前を指定してください。"
msgid "Specify the name of the new user and password."
msgstr "新しいユーザーの名前とパスワードを指定してください。"
msgid "Specify the new root password for vertica cluster."
msgstr "vertica クラスターの新しいルートパスワードを指定します。"
msgid "Specify the new volume size for the database instance."
msgstr "データベースインスタンスのボリュームの新しいサイズを指定します。"
msgid "Specify the number of replicas to be created"
msgstr "作成するレプリカ数を指定します。"
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"クラスター内のインスタンスが同じハイパーバイザーに作成されるか (affinity)、別"
"のハイパーバイザーに作成されるか (anti-affinity) を指定します。"
msgid "Specs"
msgstr "スペック"
msgid "Status"
msgstr "ステータス"
msgid "Status if root was ever enabled for an instance."
msgstr "インスタンスでこれまでにルートが有効にされたことがあるかのスタータス。"
msgid "Successfully added parameter"
msgstr "パラメーターを正常に追加しました"
msgid "Successfully disabled root access."
msgstr "ルートアクセスを無効化しました。"
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"フィールド「インスタンスタイプ」と「関連付け先」はデータストア固有で、指定は"
"任意です。これらのフィールドの使い方に関する詳しい情報は Trove のドキュメント"
"を参照してください。"
msgid "The flavor must be specified."
msgstr "フレーバーを指定する必要があります。"
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"名前のフィールドはオプションです。このフィールドが空の場合、クラスターの拡張"
"時に名前が生成されます。"
msgid "The number of instances must be greater than 1."
msgstr "インスタンス数は 1 より大きくなければいけません。"
msgid "The number of shards must be greater than 1."
msgstr "シャード数は 1 より大きくなければいけません。"
msgid "There was a problem enabling root."
msgstr "ルートの有効化中に問題がありました。"
msgid "This action cannot be undone."
msgstr "この操作は取り消せません。"
msgid "Type"
msgstr "種別"
msgid "Type and version of datastore."
msgstr "データストアの種別とバージョン"
msgid "USERNAME"
msgstr "USERNAME"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "%(action)s を実行できません: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "新しいパラメーターを追加できません: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "設定グループを適用できません。 %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "設定グループを作成できません。 %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "データベースを作成できません: %s"
msgid "Unable to create list of parameters."
msgstr "パラメーターの一覧を作成できません。"
#, python-format
msgid "Unable to create user. %s"
msgstr "ユーザーを作成できません。 %s"
msgid "Unable to determine if instance root is enabled."
msgstr "インスタンスのルートが有効になっているか判定できません。"
msgid "Unable to find backup!"
msgstr "バックアップが見つかりません!"
msgid "Unable to find configuration group!"
msgstr "設定が見つかりません!"
msgid "Unable to find master instance!"
msgstr "マスターインスタンスが見つかりません。"
msgid "Unable to get configuration data."
msgstr "設定データを取得できません。"
msgid "Unable to get database backup data."
msgstr "データベースバックアップの一覧を取得できません。"
msgid "Unable to get databases data."
msgstr "データベースの一覧を取得できません。"
msgid "Unable to get instances data."
msgstr "インスタンスのデータを取得できません。"
msgid "Unable to get user access data."
msgstr "ユーザーのアクセスデータを取得できません。"
msgid "Unable to get user data."
msgstr "ユーザーの一覧を取得できません。"
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "クラスターを拡張できません: %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "クラスターを拡張できません: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "名前が \"%(name)s\" の %(count)s が起動できません。"
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "クラスターを起動できません。 %s"
msgid "Unable to list database backups for parent."
msgstr "親バックアップとなるデータベースバックアップの一覧を取得できません。"
msgid "Unable to list database instances to backup."
msgstr "バックアップ候補のデータベースインスタンスの一覧を取得できません。"
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"{0} ログをロードできません\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "インスタンス \"{1}\" の {0} ログをロードできません。"
msgid "Unable to obtain datastore versions."
msgstr "データストアのバージョン一覧を取得できません。"
msgid "Unable to obtain datastores."
msgstr "データストア一覧を取得できません。"
msgid "Unable to obtain flavors."
msgstr "フレーバー一覧を取得できません。"
msgid "Unable to obtain information on root user"
msgstr "ルートユーザーの情報を取得できません。"
msgid "Unable to obtain list of parameters."
msgstr "パラメーターの一覧を取得できません。"
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "新しいレプリカ元としてレプリカを昇格できません。 \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "クラスターからインスタンスを削除できません: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "パスワードをリセットできません。 %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "インスタンスをリサイズできません。 %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "ボリュームをリサイズできません。%s"
msgid "Unable to retrieve accessible databases."
msgstr "アクセス可能なデータベースの一覧を取得できません。"
msgid "Unable to retrieve availability zones."
msgstr "アベイラビリティーゾーンを取得できません。"
msgid "Unable to retrieve cluster details."
msgstr "クラスターの詳細を取得できません。"
msgid "Unable to retrieve database clusters."
msgstr "データベースクラスターの一覧を取得できません。"
msgid "Unable to retrieve database instances."
msgstr "データベースインスタンスを取得できません。"
msgid "Unable to retrieve database size information."
msgstr "データベースのサイズ情報を取得できません。"
msgid "Unable to retrieve databases."
msgstr "データベースの一覧を取得できません。"
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "バックアップの詳細を取得できません: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "設定グループの詳細を取得できません: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "データベースクラスターの詳細を取得できません: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "データベースインスタンスの詳細を取得できません: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "親バックアップ %s の詳細を取得できません。"
msgid "Unable to retrieve flavors."
msgstr "フレーバーの一覧を取得できません。"
msgid "Unable to retrieve instance details."
msgstr "インスタンスの詳細を取得できません。"
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"ログの一覧を取得できません。\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "ネットワーク一覧を取得できません。"
#, python-format
msgid "Unable to update user. %s"
msgstr "ユーザーを更新できません。 %s"
msgid "Unknown"
msgstr "不明"
msgid "Updated"
msgstr "更新日時"
#, python-format
msgid "Updated user \"%s\"."
msgstr "ユーザー \"%s\" を更新しました。"
msgid "User Name"
msgstr "ユーザー名"
msgid "Username (required)"
msgstr "ユーザー名 (必須)"
msgid "Users"
msgstr "ユーザー"
msgid "Value"
msgstr "値"
msgid "Value must be \"true\" or \"false\"."
msgstr "値は True または False でなければなりません。"
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "値は %(min)s から %(max)s までの数字でなければなりません。"
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "値は %s 以上でなければなりません。"
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "値は %s 以下でなければなりません。"
msgid "Value must be a number."
msgstr "値は数字でなければなりません。"
#, python-format
msgid "Value must be of type %s."
msgstr "値のタイプは %s でなければなりません。"
msgid "Values"
msgstr "値"
msgid "View Full Log"
msgstr "すべてのログの表示"
msgid "View Log"
msgstr "ログの参照"
msgid "Volume"
msgstr "ボリューム"
msgid "Volume Size"
msgstr "ボリュームサイズ"
msgid "Volume Type"
msgstr "ボリューム種別"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "%(action)s は許可されていません: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"親バックアップを指定することで差分バックアップを行うことができます。"
"ただし、すべてのデータベースが差分バックアップに対応しているわけでは"
"なく、その場合にはこのバックアップ操作はエラーになります。"
msgid "You must select a datastore type and version."
msgstr "データストアの種別とバージョンを選択する必要があります。"
msgid "You must select a flavor."
msgstr "フレーバーを選択しなければいけません。"
msgid "You must specify a password if you create a user."
msgstr "ユーザーを作成する場合は、パスワードを指定する必要があります。"
msgid "You must specify at least one database if you create a user."
msgstr ""
"ユーザーを作成する場合は、データベースを少なくとも 1 つ指定する必要がありま"
"す。"
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[フレーバー=%(flavor)s, ボリューム=%(volume)s, 名前=%(name)s, タイプ="
"%(type)s, 関連付け先=%(related_to)s, NIC(s)=%(nics)s]"
msgid "instance"
msgstr "インスタンス"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ja/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001727 00000000000 027017 0 ustar 00corey corey 0000000 0000000 # Yoshiki Eguchi , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard 7.0.0.0b3.dev14\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-08-26 11:48+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-09-02 02:19+0000\n"
"Last-Translator: Yoshiki Eguchi \n"
"Language-Team: Japanese\n"
"Language: ja\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "Created"
msgstr "作成時刻"
msgid "Database"
msgstr "データベース"
msgid "Datastore"
msgstr "データストア"
msgid "Datastore Version"
msgstr "データストアバージョン"
msgid "Incremental"
msgstr "差分"
msgid "Name"
msgstr "名前"
msgid "Unable to retrieve the Backups."
msgstr "バックアップ一覧を取得できません。"
msgid "status"
msgstr "ステータス"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ko_KR/ 0000755 0001750 0001750 00000000000 00000000000 023477 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ko_KR/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025264 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ko_KR/LC_MESSAGES/django.po 0000644 0001750 0001750 00000114043 00000000000 027071 0 ustar 00corey corey 0000000 0000000 # Andreas Jaeger , 2016. #zanata
# Ian Y. Choi , 2016. #zanata
# Ian Y. Choi , 2017. #zanata
# Sungjin Kang , 2017. #zanata
# Ian Y. Choi , 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-01-30 10:30+0000\n"
"Last-Translator: Ian Y. Choi \n"
"Language-Team: Korean (South Korea)\n"
"Language: ko_KR\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | 인스턴스 %(instances)s"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"참고: 새로운 구성 그룹을 적용하기 위해 데이터베이스 인스턴스"
"를 재부팅할 필요가 있을 수 있습니다."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"주: 볼륨 크기 필드에 0보다 큰 값을 지정해야 하지만, 일부 구"
"성에서는 볼륨 크기를 지정할 수 없습니다. 볼륨 크기를 지정했을 때 볼륨 지원이 "
"사용되지 않음을 표시하는 메시지가 표시되면 0을 입력하십시오."
msgid "A backup must be selected!"
msgstr "백업이 반드시 선택되어야 합니다!"
msgid "A master instance must be selected!"
msgstr "마스터 인스턴스는 반드시 선택되어야 합니다!"
msgid "A new name or new password or new host must be specified."
msgstr "새로운 이름이나 새로운 암호, 새로운 호스트를 지정할 수 있습니다."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "접근 불가"
msgid "Accessible"
msgstr "접근 가능한"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Active"
msgid "Add"
msgstr "추가"
msgid "Add Instance"
msgstr "인스턴스 추가"
msgid "Add Parameter"
msgstr "매개 변수 추가"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"매개 변수를 구성 그룹에 추가하였습니다. 모든 매개 변수를 추가한 뒤에 변경 사"
"항을 유지하기 위해 '변경 사항 적용' 을 클릭합니다."
msgid "Advanced"
msgstr "진보된"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"사용자가 이 호스트에서만 접근하도록 허용하십시오. 이 옵션을 제공하지 않으면 "
"사용자가 모든 위치에서 접근할 수 있습니다. "
msgid "Allowed Host"
msgstr "허용한 호스트"
msgid "Allowed Host (optional)"
msgstr "허용한 호스트(선택적)"
msgid "Any Availability Zone"
msgstr "임의 가용 구역"
msgid "Applicable only if the volume size is specified."
msgstr "볼륨 크기가 지정된 경우에만 적용됩니다."
msgid "Applied changes to server"
msgstr "서버에 적용된 변경 사항"
msgid "Apply Changes"
msgstr "변경 사항 적용"
msgid "At least one of the new fields must be changed."
msgstr "적어도 새로운 필드 중 하나는 반드시 바뀌어야만한다."
msgid "Attach Configuration Group"
msgstr "구성 그룹 연결"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "구성 그룹 \"%s\" 연결"
msgid "Availability Zone"
msgstr "가용 구역"
msgid "Available networks"
msgstr "사용 가능한 네트워크"
msgid "Backup"
msgstr "백업"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Backup"
msgid "Backup Database"
msgstr "백업 데이터베이스"
msgid "Backup Details"
msgstr "백업에 대한 세부 정보"
msgid "Backup Details: {{ backup.name }}"
msgstr "백업 세부 정보: {{ backup.name }}"
msgid "Backup Duration"
msgstr "백업 사용 시간"
msgid "Backup File"
msgstr "백업 파일"
msgid "Backup File Location"
msgstr "백업 파일 위치"
msgid "Backup Name"
msgstr "백업 이름"
msgid "Backup Overview"
msgstr "백업 개요"
msgid "Backups"
msgstr "백업"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Blocked"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Building"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Building"
msgid "Cancel"
msgstr "취소"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "루트 액세스를 비활성화할 수 없습니다: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "클러스터를 확장할 수 없습니다. 선택된 인스턴스가 없습니다."
msgid "Character Set"
msgstr "Character Set"
msgid "Choose a new instance flavor."
msgstr "새로운 인스턴스 flavor를 선택하세요."
msgid "Choose initial state."
msgstr "초기 상태를 선택하십시오."
msgid "Close"
msgstr "닫기"
msgid "Cluster Name"
msgstr "클러스터 이름"
msgid "Cluster Size"
msgstr "클러스터 크기"
msgid "Clusters"
msgstr "클러스터"
msgid "Collation"
msgstr "컬렉션"
msgid "Comma separated list of databases to create"
msgstr "생성할 데이터베이스를 쉼표로 구분한 목록"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "완료됨"
msgid "Configuration Defaults"
msgstr "구성 디폴트"
msgid "Configuration Group"
msgstr "구성 그룹"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "구성 그룹 세부 사항: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "구성 그룹 인스턴스"
msgid "Configuration Group Name"
msgstr "구성 그룹 이름"
msgid "Configuration Group Overview"
msgstr "구성 그룹 개요"
msgid "Configuration Group Values"
msgstr "구성 그룹 값"
msgid "Configuration Groups"
msgstr "구성 그룹"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr "현재 복제가 새로운 복제 원본으로 승격되었는지를 확인합니다."
msgid "Connection Examples"
msgstr "연결 예제"
msgid "Connection Information"
msgstr "연결 정보"
msgid "Container"
msgstr "컨테이너"
msgid "Create Backup"
msgstr "백업 생성"
msgid "Create Configuration Group"
msgstr "구성 그룹 생성"
msgid "Create Database"
msgstr "데이터베이스 생성"
msgid "Create User"
msgstr "사용자 생성"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"선택적 초기 사용자를 작성하십시오. 이 초기 사용자는 사용자가 만든 모든 데이터"
"베이스에 액세스할 수 있습니다."
msgid "Created"
msgstr "생성됨"
msgid "Created configuration group"
msgstr "생성한 구성 그룹"
#, python-format
msgid "Created database \"%s\"."
msgstr "데이터베이스 \"%s\"가 생성되었습니다."
#, python-format
msgid "Created user \"%s\"."
msgstr "\"%s\" 사용자 생성되었습니다."
msgid "Current Replica"
msgstr "현재 복제"
msgid "Current Replica Source"
msgstr "현재 복제 원본"
msgid "Current Size (GB)"
msgstr "현재 크기 (GB)"
msgid "Current Task"
msgstr "현재 작업"
msgid "DATABASE"
msgstr "DATABASE"
msgid "Database"
msgstr "Database"
msgid "Database Access"
msgstr "데이터베이스 접근"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "{{ user_name }}@{{user_host}} 에 대한 데이터베이스 접근"
msgid "Database Backups"
msgstr "데이터베이스 백업"
msgid "Database Info"
msgstr "데이터베이스 정보"
msgid "Database Instance"
msgstr "데이터베이스 인스턴스"
msgid "Database Name"
msgstr " 데이트베이스 이름"
msgid "Database Port"
msgstr "데이터베이스 포트"
msgid "Databases"
msgstr "데이터베이스"
msgid "Datastore"
msgstr "Datastore"
msgid "Datastore Version"
msgstr "Datastore 버전"
msgid "Defaults"
msgstr "디폴트"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "백업 삭제"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "클러스터 삭제"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "구성 그룹 삭제"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "데이터베이스 삭제"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "삭제 실패함"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "인스턴스 삭제"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "매개변수 삭제"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "사용자 삭제"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "백업 삭제됨"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "구성 그룹 삭제됨"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "데이터베이스 삭제됨"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "매개변수 삭제됨"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "사용자 삭제됨"
msgid "Deleted cluster is not recoverable."
msgstr "삭제된 클러스터는 복구할 수 없습니다."
msgid "Deleted instances are not recoverable."
msgstr "삭제된 인스턴스는 되살릴 수 없습니다."
msgid "Description"
msgstr "설명"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "구성 그룹 연결 해제"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "복제본으로부터 해제"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "연결 해제된 구성 그룹"
msgid "Details"
msgstr "상세 정보"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "로그 비활성화"
msgid "Disable Root"
msgstr "루트 비활성화"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "비활성화된 로그"
msgid "Discard Changes"
msgstr "변경 사항 폐기"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "로그 폐기"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "폐기된 로그"
msgid "Download"
msgstr "내려받기"
msgid "Download Backup"
msgstr "백업 다운로드"
msgid "Edit User"
msgstr "사용자 수정"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "복제 원본 이젝트"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "이젝트된 복제 원본"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "로그 활성화"
msgid "Enable Root"
msgstr "Root 활성화"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "활성화된 로그"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Error"
msgid "Error applying changes"
msgstr "변경 사항 적용 오류"
msgid "Error creating database backup."
msgstr "데이터베이스 백업을 생성하던 중 오류가 발생하였습니다."
msgid "Error deleting database on instance."
msgstr "인스턴스에서 데이터베이스 삭제중 에러가 발생하였습니다."
#, python-format
msgid "Error downloading log file: %s"
msgstr "로그 파일 다운로드 오류: %s"
msgid "Error getting configuration group list."
msgstr "구성 그룹 목록을 가져올 수 없습니다."
msgid "Error getting database backup list."
msgstr "데이터베이스 백업 목록을 가져오던 중 오류가 발생하였습니다."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "매개 변수 리셋 중 오류 발생: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "실패함"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Failed"
msgid "Fault"
msgstr "Fault"
msgid "Flavor"
msgstr "Flavor"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "시작"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "접근 허용"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "접근 허용 "
msgid "Grow Cluster"
msgstr "클러스터 확장"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "클러스터 확장: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "루트가 활성화되어 있음"
msgid "Host"
msgstr "호스트"
msgid "Host or IP that the user is allowed to connect through."
msgstr "사용자가 연결하도록 허용된 호스트 또는 IP입니다."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "증분"
msgid "Incremental Backup"
msgstr "증분 백업"
msgid "Info"
msgstr "정보"
msgid "Information"
msgstr "정보"
msgid "Initial Admin User"
msgstr "초기 관리자"
msgid "Initial Databases"
msgstr "초기 데이터베이스"
msgid "Initial Volume Size"
msgstr "초기 볼륨 크기"
msgid "Initial admin user to add"
msgstr "추가할 초기 관리자"
msgid "Initialize Databases"
msgstr "데이터베이스 초기화"
msgid "Instance Name"
msgstr "인스턴스 이름"
msgid "Instance Type"
msgstr "인스턴스 타입"
msgid "Instances"
msgstr "인스턴스"
msgid "Is a Replica Of"
msgstr "복제본에 속함"
msgid "Launch"
msgstr "실행"
msgid "Launch Cluster"
msgstr "클러스터 실행"
msgid "Launch Database"
msgstr "데이터베이스 시작"
msgid "Launch Instance"
msgstr "인스턴스 시작"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "%(count)s개의 \"%(name)s\"이(가) 시작되었습니다."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "클러스터 \"%s\" 구동됨"
msgid "Locality"
msgstr "지역성"
msgid "Log"
msgstr "로그"
msgid "Log Contents"
msgstr "로그 내용"
msgid "Log Length"
msgstr "로그 길이"
msgid "Log length must be a nonnegative integer."
msgstr "로그 길이는 음수가 아닌 정수값이어야 합니다."
msgid "Log: "
msgstr "로그:"
msgid "Logs"
msgstr "로그"
msgid "Manage Access"
msgstr "접근 관리"
msgid "Manage Root"
msgstr "Root 관리"
msgid "Manage Root Access"
msgstr "Root 접근 관리"
msgid "Management Console"
msgstr "관리 콘솔"
msgid "Master Instance Name"
msgstr "마스터 인스턴스 이름"
msgid "Message"
msgstr "메시지"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"버튼을 클릭하거나 드래그 앤 드롭하여 '사용 가능한 네트워크'를 '선택한 네트워"
"크'로 이동합니다. 드래그 앤 드롭을 사용해서 NIC 순서 또한 변경 가능합니다."
msgid "Name"
msgstr "이름"
msgid "Network"
msgstr "네트워크"
msgid "Network attached to instance."
msgstr "인스턴스에 네트워크 연결하였습니다."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "New"
msgid "New Flavor"
msgstr "새로운 Flavor"
msgid "New Host"
msgstr "새 호스트"
msgid "New Name"
msgstr "새 이름"
msgid "New Password"
msgstr "새로운 암호"
msgid "New Size (GB)"
msgstr "새로운 크기 (GB)"
msgid "New password for cluster access."
msgstr "클러스터에 접근할 수 있는 새로운 암호를 설정합니다."
msgid "New size for volume must be greater than current size."
msgstr "볼륨의 새로운 크기는 현재 크기보다 커야합니다."
msgid "No availability zones found"
msgstr "가용 구역을 찾을 수 없습니다."
msgid "No backups available"
msgstr "사용가능한 백업 없음"
msgid "No configuration groups available"
msgstr "사용 가능한 구성 그룹이 없습니다"
msgid "No configurations available"
msgstr "사용 가능한 구성이 없습니다"
msgid "No flavors available"
msgstr "Flavor가 존재하지 않습니다"
msgid "No instances available"
msgstr "사용 가능한 인스턴스가 없음"
msgid "No volume type"
msgstr "볼륨 타입이 없음"
msgid "None"
msgstr "None"
msgid "Not Assigned"
msgstr "할당되지 않았습니다."
msgid "Not Found"
msgstr "찾을 수 없음"
msgid "Not available"
msgstr "사용할 수 없음"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"주: 인스턴스에서 root 접근을 사용하십시오. root 사용자가 이미 사용되는 경우 "
"새 암호가 생성됩니다."
msgid "Number of Instances"
msgstr "인스턴스 수"
msgid "Number of Shards"
msgstr "Shard 개수"
msgid "Number of instances in the cluster."
msgstr "클러스터에 있는 인스턴스 수"
msgid "Number of instances in the cluster. (Read only)"
msgstr "클러스터에 존재하는 인스턴스 수. (읽기 전용)"
msgid "Number of shards. (Read only)"
msgstr "Shard 개수 (읽기 전용)"
msgid "Old Flavor"
msgstr "오래된 Flavor"
msgid "Optional Backup Description"
msgstr "선택 백업 설명"
msgid "Optional character set for the database."
msgstr "데이터베이스 character set을 선택합니다."
msgid "Optional collation type for the database."
msgstr "데이터베이스에대한 컬렉션 타입은 옵션입니다."
msgid "Optional comma separated list of databases user has access to."
msgstr "접근 가능한 데이터베이스 사용자는 쉼표로 구분하여 지정 가능합니다."
msgid "Optional datastore specific type of the instance."
msgstr "인스턴스에 대한 datastore 특정 타입을 선택할 수 있습니다."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"다른 클러스터에서 하나의 인스턴스와 관계를 정의하는 datastore 고유 값을 선택"
"합니다."
msgid "Optional host of user."
msgstr "사용자 호스트는 선택할 수 있습니다."
msgid "Optional name of the instance."
msgstr "인스턴스 이름을 선택할 수 있습니다."
msgid "Optional parent backup"
msgstr "선택가능한 부모 백업"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"이 데이터베이스를 이전 백업을 사용하여 생성할지 아니면 다른 데이터베이스 인스"
"턴스의 복제본으로 생성할지 선택하십시오."
msgid "Optionally provide a character set and collation for the database."
msgstr "선택적으로 데이터베이스의 문자 세트와 데이터 정렬을 제공하십시오."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr "선택적으로, 생성할 데이터베이스 목록을 쉼표로 구분하여 제공하십시오."
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"선택적으로 사용자의 호스트와 사용자가 액세스 권한을 부여한 데이터베이스 목록"
"을 제공하십시오."
msgid "Overview"
msgstr "개요"
msgid "PASSWORD"
msgstr "PASSWORD"
msgid "Parameter"
msgstr "매개 변수"
msgid "Parameters"
msgstr "매개 변수"
msgid "Parent Backup"
msgstr "부모 백업"
msgid "Password"
msgstr "암호"
msgid "Password (required)"
msgstr "패스워드(필수)"
msgid "Password for root user must be specified."
msgstr "Root 사용자 암호가 지정되어야 합니다."
msgid "Password for root user."
msgstr "Root 사용자 암호"
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr "패스워드는 오직 root가 리셋,enabled된 이후에 즉시 보이기 시작한다."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr "참고: 새로운 값은 기존 볼륨 크기보다 커야 합니다."
msgid "Promote"
msgstr "승격"
msgid "Promote to Replica Source"
msgstr "복제 원본 승격"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "복제 \"%s\" 를 새로운 복제 원본으로 승격합니다."
msgid "Property"
msgstr "속성"
msgid "Publish"
msgstr "퍼블리시"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "로그 퍼블리시"
msgid "Publishable (bytes)"
msgstr "퍼블리시 가능 (바이트)"
msgid "Published (bytes)"
msgstr "퍼블리시됨 (바이트)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "퍼블리시된 로그"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Rebooting"
msgid "Related To"
msgstr "Related To"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "인스턴스 제거"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "인스턴스 제거됨"
msgid "Removed instances from cluster."
msgstr "클러스터에서 인스턴스를 제거하였습니다."
msgid "Replica Count"
msgstr "복제 개수"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "복제본으로부터 해제됨"
msgid "Replicas"
msgstr "복제본"
msgid "Replicate from Instance"
msgstr "인스턴스에서 복제"
msgid "Replication"
msgstr "복제(Replication)"
msgid "Reset Parameters"
msgstr "매개 변수 리셋"
msgid "Reset Root Password"
msgstr "Root 암호 재설정"
msgid "Resize Database Instance"
msgstr "데이터베이스 인스턴스 크기 재조정"
msgid "Resize Database Volume"
msgstr "데이터베이스 볼륨 크기 조정"
msgid "Resize Instance"
msgstr "인스턴스 크기 재조정"
msgid "Resize Volume"
msgstr "볼륨 크기 재조정"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Resizing"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "인스턴스 \"%s\" 크기 재조정"
#, python-format
msgid "Resizing volume \"%s\""
msgstr "볼륨 \"%s\" 크기 재조정"
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "인스턴스 재시작"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Restart Required"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "인스턴스 재시작함"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"재시작된 인스턴스에서 persistent 스토리지에 저장되지 않은 모든 데이터는 손실"
"됩니다."
msgid "Restore Backup"
msgstr "백업 복구"
msgid "Restore from Backup"
msgstr "백업으로부터 복구"
msgid "Return to Log List"
msgstr "로그 목록으로 돌아가기"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "접근 불가"
msgid "Root Enabled"
msgstr "Root 활성화됨"
msgid "Root Password"
msgstr "Root 암호"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "\"%s\" 클러스터에 대한 root 암호를 업데이트 하였습니다."
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "저장 중"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "클러스터 예약 축소"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "\"%(name)s\" 백업할 예정입니다."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "클러스터 예약 삭제"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "인스턴스 예약 삭제"
msgid "Scheduled growing of cluster."
msgstr "클러스터 예약 확장"
msgid "Select a backup to restore"
msgstr "복원할 백업본 선택"
msgid "Select a configuration group"
msgstr "구성 그룹 선택"
msgid "Select a configuration group to attach to the database instance."
msgstr "데이터베이스 인스턴스에 연결할 구성 그룹을 선택합니다."
msgid "Select a master instance"
msgstr "마스터 인스턴스 선택"
msgid "Select a new flavor"
msgstr "새로운 flavor 선택"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr "매개 변수를 선택하고 구성 매개 변수에 대한 값을 제공합니다."
msgid "Select backup"
msgstr "백업 선택"
msgid "Select configuration"
msgstr "구성 선택"
msgid "Select configuration group"
msgstr "구성 그룹 선택"
msgid "Select datastore type and version"
msgstr "Datastore 타입과 버전 선택"
msgid "Select instance"
msgstr "인스턴스 선택"
msgid "Select parent backup"
msgstr "부모 백업 선택"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "선택한 인스턴스를 클러스터에서 제거합니다."
msgid "Selected networks"
msgstr "네트워크 선택됨"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "클러스터 축소"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "클러스터 축소: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "축소한 클러스터는 복구할 수 없습니다."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Shutdown"
msgid "Size"
msgstr "크기"
msgid "Size of image to launch."
msgstr "시작시 이미지 크기"
msgid "Size of the volume in GB."
msgstr "GB 볼륨 크기."
msgid "Source for Initial State"
msgstr "초기 상태 원본"
msgid "Specify a new flavor for the database instance."
msgstr "데이터베이스 인스턴스에 대한 새로운 flavor을 지정하라"
msgid "Specify a new name, new password or new host name for the user."
msgstr "유저에 대한 새로운 이름, 패스워드, 호스트이름을 명시하라"
msgid "Specify the details for launching an instance."
msgstr "인스턴스 실행에 대한 세부 정보를 지정하십시오."
msgid "Specify the details for the database backup."
msgstr "데이터베이스 백업에 대한 세부 사항을 지정합니다."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "클러스터에 추가하는 인스턴스의 세부 사항을 지정합니다."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"지정한 인스턴스를 클러스터에 추가합니다. 'Grow Cluster'를 눌러 모든 인스턴스"
"에 확장 작업을 진행할 수 있습니다."
msgid "Specify the name of the new database."
msgstr "새 데이터베이스의 이름을 지정하십시오."
msgid "Specify the name of the new user and password."
msgstr "새로운 유저의 이름과 패스워드를 명시하라"
msgid "Specify the new root password for vertica cluster."
msgstr "vertica 클러스터에 대한 새로운 root 암호를 지정합니다."
msgid "Specify the new volume size for the database instance."
msgstr "데이터베이스 인스터스에 사용할 새로운 볼륨 크기를 지정합니다."
msgid "Specify the number of replicas to be created"
msgstr "생성할 복제 개수를 지정합니다"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"향후 복제된 인스턴스를 동일한 하이퍼바이저 (affinity) 또는 다른 하이퍼바이저 "
"(anti-affinity)에 생성할 것인지를 지정합니다. 해당 값은 구동되는 인스턴스가 "
"복제일 경우 무시되어질 수 있습니다."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"클러스터 내 인스턴스를 동일한 하이퍼바이저 (affinity) 또는 다른 하이퍼바이저 "
"(anti-affinity)에 생성할 것인지를 지정합니다."
msgid "Specs"
msgstr "사양"
msgid "Status"
msgstr "상태"
msgid "Status if root was ever enabled for an instance."
msgstr "인스턴스에 대해 root가 사용으로 설정된 경우 상태입니다."
msgid "Successfully added parameter"
msgstr "매개 변수 추가를 완료하였습니다"
msgid "Successfully disabled root access."
msgstr "루트 액세스 비활성화 성공"
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"'Instance Type'와 'Related To' 필드는 datastore를 지정하거나 옵션으로 설정할 "
"수 있습니다. 필드 사용에대한 자세한 내용은 Trove 문서를 참고하십시오."
msgid "The flavor must be specified."
msgstr "Flabor가 지정되어야 합니다."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"이름 필드는 옵션입니다. 필드를 비워두면 클러스터를 키울때 이름을 생성합니"
"다."
msgid "The number of instances must be greater than 1."
msgstr "인스턴스는 1개 이상이어야 합니다."
msgid "The number of shards must be greater than 1."
msgstr "Shard는 1개 이상이어야 합니다."
msgid "There was a problem enabling root."
msgstr "Root 계정 활성화에 문제가 발생했습니다."
msgid "This action cannot be undone."
msgstr "이 작업은 취소할 수 없습니다."
msgid "Type"
msgstr "타입"
msgid "Type and version of datastore."
msgstr "Datastore 타입과 버전"
msgid "USERNAME"
msgstr "USERNAME"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "%(action)s 할 수 없습니다: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "새로운 매개 변수: %s 를 추가할 수 없습니다"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "구성 그룹을 연결할 수 없습니다. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "구성 그룹을 생성할 수 없습니다. %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "데이터베이스 %s를 생성할 수 없음"
msgid "Unable to create list of parameters."
msgstr "매개 변수 목록을 생성할 수 없습니다."
#, python-format
msgid "Unable to create user. %s"
msgstr "\"%s\" 사용자를 생성할 수 없습니다."
msgid "Unable to determine if instance root is enabled."
msgstr "만약 인스턴스 루트가 이용 가능하다면 결정이 불가능하다"
msgid "Unable to find backup!"
msgstr "백업을 찾을 수 없습니다!"
msgid "Unable to find configuration group!"
msgstr "구성 그룹을 찾을 수 없습니다!"
msgid "Unable to find master instance!"
msgstr "마스터 인스턴스를 찾기가 불가능합니다!"
msgid "Unable to get configuration data."
msgstr "구성 데이터를 가져올 수 없습니다."
msgid "Unable to get database backup data."
msgstr "데이터베이스 백업 데이터를 가져올 수 없습니다."
msgid "Unable to get databases data."
msgstr "데이터베이스 데이터를 가져올 수 없습니다."
msgid "Unable to get instances data."
msgstr "인스턴스 데이터를 가져올 수 없습니다."
msgid "Unable to get user access data."
msgstr "사용자 접속 데이터를 가져올 수 없습니다."
msgid "Unable to get user data."
msgstr "사용자 데이터를 가져올 수 없습니다."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "클러스터를 늘릴 수 없습니다. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "클러스터를 늘릴 수 없습니다: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "%(count)s 개의 \"%(name)s\"을 구동할 수 없습니다."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "클러스터 \"%s\"를 구동할 수 없습니다."
msgid "Unable to list database backups for parent."
msgstr "부모 데이터베이스 백업을 나열할 수 없습니다."
msgid "Unable to list database instances to backup."
msgstr "백업 데이터베이스 인스턴스를 나열할 수 없습니다."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"{0} 로그를 불러올 수 없습니다\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "인스턴스 \"{1}\" 에 대한 {0} 로그를 불러올 수 없습니다."
msgid "Unable to obtain datastore versions."
msgstr "Datastore 버전을 가져올 수 없습니다."
msgid "Unable to obtain datastores."
msgstr "Datastore를 가져올 수 없습니다."
msgid "Unable to obtain flavors."
msgstr "Flavor을 가져올 수 없습니다."
msgid "Unable to obtain information on root user"
msgstr "Root 사용자의 정보를 얻을 수 없습니다"
msgid "Unable to obtain list of parameters."
msgstr "매개 변수 목록을 가져올 수 없습니다."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "복제를 새로운 복제 원본으로 승격할 수 없습니다. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "클러스터에서 인스턴스를 제거하지 못 하였습니다: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "암호를 재설정하지 못하였습니다. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "인스턴스 크기 재조정 실패. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "볼륨 크기를 변경할 수 없습니다. %s"
msgid "Unable to retrieve accessible databases."
msgstr "접근 가능한 데이터베이스를 찾지 못 했습니다."
msgid "Unable to retrieve availability zones."
msgstr "가용 구역을 가져올 수 없습니다."
msgid "Unable to retrieve cluster details."
msgstr "클러스터 세부 정보를 찾지 못했습니다."
msgid "Unable to retrieve database clusters."
msgstr "클러스터 데이터베이스를 찾지 못했습니다."
msgid "Unable to retrieve database instances."
msgstr "인스턴스 데이터베이스를 찾지 못 했습니다."
msgid "Unable to retrieve database size information."
msgstr "데이터베이스 크기 정보를 찾지 못했습니다."
msgid "Unable to retrieve databases."
msgstr "데이터베이스를 찾지 못 했습니다."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "백업에 대한 세부 정보를 찾지 못했습니다: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "구성 그룹: %s 에 대한 세부 사항을 가져올 수 없습니다"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "클러스터 데이터베이스에 대한 세부 정보를 찾지 못했습니다: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "인스턴스 데이터베이스에 대한 세부 정보를 찾지 못 했습니다: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "원본 백업에 대한 세부 정보를 찾지 못했습니다: %s"
msgid "Unable to retrieve flavors."
msgstr "Flavor를 찾지 못 했습니다."
msgid "Unable to retrieve instance details."
msgstr "인스턴스 세부 정보를 찾지 못 했습니다."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"로그 목록을 가져올 수 없습니다.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "네트워크를 찾지 못 했습니다."
#, python-format
msgid "Unable to update user. %s"
msgstr "\"%s\" 사용자를 업데이트할 수 없습니다."
msgid "Unknown"
msgstr "알 수 없음"
msgid "Updated"
msgstr "업데이트 완료"
#, python-format
msgid "Updated user \"%s\"."
msgstr "\"%s\" 사용자 업데이트 되었습니다."
msgid "User Name"
msgstr "사용자 이름"
msgid "Username (required)"
msgstr "사용자이름(필수)"
msgid "Users"
msgstr "사용자"
msgid "Value"
msgstr "값"
msgid "Value must be \"true\" or \"false\"."
msgstr "값은 \"true\" 또는 \"false\" 여야 합니다."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "값은 %(min)s 에서 %(max)s 사이 숫자여야 합니다."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "값은 %s 보다 크거나 같은 숫자여야 합니다."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "값은 %s 보다 작거나 같은 숫자여야 합니다."
msgid "Value must be a number."
msgstr "값은 숫자여야 합니다."
#, python-format
msgid "Value must be of type %s."
msgstr "값은 %s 유형이어야 합니다."
msgid "Values"
msgstr "값"
msgid "View Full Log"
msgstr "전체 로그 보기"
msgid "View Log"
msgstr "로그 보기"
msgid "Volume"
msgstr "볼륨"
msgid "Volume Size"
msgstr "볼륨 크기"
msgid "Volume Type"
msgstr "볼륨 타입"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "%(action)s 이(가) 허용되지 않았습니다: %(objs)s "
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"부모 백업을 지정하여 증분 백업으로 작업을 진행할 수 있습니다. 그러나"
", 모든 데이터베이스에서 오류가 발생되는 경우에는 증분 백업을 지원하"
"지 않습니다."
msgid "You must select a datastore type and version."
msgstr "Datastore 타입과 버전을 선택해야 합니다."
msgid "You must select a flavor."
msgstr "Flavor를 선택해야 합니다."
msgid "You must specify a password if you create a user."
msgstr "사용자 생성을 하려면 패스워드를 입력하세요"
msgid "You must specify at least one database if you create a user."
msgstr "사용자 생성을 하려면 적어도 하나의 데이터베이스를 정하세요"
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "인스턴스"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ko_KR/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001615 00000000000 027426 0 ustar 00corey corey 0000000 0000000 # Ian Y. Choi , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-09-14 05:49+0000\n"
"Last-Translator: \n"
"Language-Team: Korean (South Korea)\n"
"Language: ko_KR\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "Created"
msgstr "생성됨"
msgid "Database"
msgstr "데이터베이스"
msgid "Datastore"
msgstr "데이터 저장소"
msgid "Datastore Version"
msgstr "데이버 저장소 버전"
msgid "Incremental"
msgstr "증분"
msgid "Name"
msgstr "이름"
msgid "Unable to retrieve the Backups."
msgstr "백업을 가져올 수 없습니다."
msgid "status"
msgstr "상태"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/pt_BR/ 0000755 0001750 0001750 00000000000 00000000000 023500 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/pt_BR/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025265 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/pt_BR/LC_MESSAGES/django.po 0000644 0001750 0001750 00000114332 00000000000 027073 0 ustar 00corey corey 0000000 0000000 # Andreas Jaeger , 2016. #zanata
# Fernando Pimenta , 2017. #zanata
# Fernando Pimenta , 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-02-05 12:30+0000\n"
"Last-Translator: Fernando Pimenta \n"
"Language-Team: Portuguese (Brazil)\n"
"Language: pt_BR\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s instâncias"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"Por favor, observe: Pode ser necessário reinicializar a "
"instância de banco de dados para que esse novo grupo de configuração tenha "
"efeito."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Por favor observe: O valor especificado no campo Tamanho do "
"Volume deve ser maior que 0, entretanto, algumas configurações não suportam "
"especificar o tamanho de volume. Se especificar o volume resultar em um erro "
"dizendo que o suporte de volume não está habilitado, digite 0."
msgid "A backup must be selected!"
msgstr "Um backup deve ser selecionado!"
msgid "A master instance must be selected!"
msgstr "Uma instância mestre deve ser selecionada!"
msgid "A new name or new password or new host must be specified."
msgstr "Um novo nome ou uma nova senha ou um novo host deve ser especificado."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Acesso Removido para"
msgstr[1] "Acessos Removidos para"
msgid "Accessible"
msgstr "Acessível"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Ativo"
msgid "Add"
msgstr "Adicionar"
msgid "Add Instance"
msgstr "Adicionar Instância"
msgid "Add Parameter"
msgstr "Adicionar Parâmetro"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Adicionar parâmetros ao grupo de configuração. Quando todos os parâmetros "
"forem adicionados clique em 'Aplicar Mudanças' para que as alterações "
"persistam."
msgid "Advanced"
msgstr "Avançado"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"Permite o usuário conectar somente a partir desse host. Se não for fornecido "
"esse usuário terá permissão de conectar de qualquer lugar."
msgid "Allowed Host"
msgstr "Host Permitido"
msgid "Allowed Host (optional)"
msgstr "Host Permitido (opcional)"
msgid "Any Availability Zone"
msgstr "Qualquer Zona de Disponibilidade"
msgid "Applicable only if the volume size is specified."
msgstr "Aplicável apenas se o tamanho do volume é especificado."
msgid "Applied changes to server"
msgstr "Alterações aplicadas no servidor"
msgid "Apply Changes"
msgstr "Aplicar Alterações"
msgid "At least one of the new fields must be changed."
msgstr "Pelo menos um dos novos campos deve ser alterado."
msgid "Attach Configuration Group"
msgstr "Anexar Grupo de Configuração"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Anexando Grupo de Configuração \"%s\""
msgid "Availability Zone"
msgstr "Zona de Disponibilidade"
msgid "Available networks"
msgstr "Redes disponíveis"
msgid "Backup"
msgstr "Backup"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Backup"
msgid "Backup Database"
msgstr "Fazer Backup da Base de Dados"
msgid "Backup Details"
msgstr "Detalhes do Backup"
msgid "Backup Details: {{ backup.name }}"
msgstr "Detalhes do Backup: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Duração do Backup"
msgid "Backup File"
msgstr "Arquivo de Backup"
msgid "Backup File Location"
msgstr "Localização do Arquivo de Backup"
msgid "Backup Name"
msgstr "Nome do Backup"
msgid "Backup Overview"
msgstr "Visão Geral do Backup"
msgid "Backups"
msgstr "Backups"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Bloqueado"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Construindo"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Construindo"
msgid "Cancel"
msgstr "Cancelar"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Não é possível desabilitar acesso de root: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Não é possível aumentar Cluster. Nenhuma instância especificada."
msgid "Character Set"
msgstr "Codificação de Caracteres"
msgid "Choose a new instance flavor."
msgstr "Escolha um novo Flavor para a instância."
msgid "Choose initial state."
msgstr "Escolha o estado inicial"
msgid "Close"
msgstr "Fechar"
msgid "Cluster Name"
msgstr "Nome do Cluster"
msgid "Cluster Size"
msgstr "Tamanho do Cluster"
msgid "Clusters"
msgstr "Clusters"
msgid "Collation"
msgstr "Regras de comparação"
msgid "Comma separated list of databases to create"
msgstr "Lista separada por vírgula de bases de dados a se criar."
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Completo"
msgid "Configuration Defaults"
msgstr "Padrões de Configuração"
msgid "Configuration Group"
msgstr "Grupo de Configuração"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Detalhes do Grupo de Configuração: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Instâncias do Grupo de Configuração"
msgid "Configuration Group Name"
msgstr "Nome do Grupo de Configuração"
msgid "Configuration Group Overview"
msgstr "Visão Geral do Grupo de Configuração"
msgid "Configuration Group Values"
msgstr "Valores do Grupo de Configuração"
msgid "Configuration Groups"
msgstr "Grupos de Configuração"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr ""
"Confirmar que a réplica atual é para ser promovida como nova fonte de "
"réplica."
msgid "Connection Examples"
msgstr "Exemplos de Conexão"
msgid "Connection Information"
msgstr "Informação de Conexão"
msgid "Container"
msgstr "Contêiner"
msgid "Create Backup"
msgstr "Criar Backup"
msgid "Create Configuration Group"
msgstr "Criar Grupo de Configuração"
msgid "Create Database"
msgstr "Criar Banco de Dados"
msgid "Create User"
msgstr "Criar Usuário"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"Criar um usuário inicial opcional. Esse usuário terá acesso a todos os "
"bancos de dados que você criar."
msgid "Created"
msgstr "Criado"
msgid "Created configuration group"
msgstr "Criado grupo de configuração"
#, python-format
msgid "Created database \"%s\"."
msgstr "Criada base de dados \"%s\"."
#, python-format
msgid "Created user \"%s\"."
msgstr "Criado usuário \"%s\"."
msgid "Current Replica"
msgstr "Réplica atual."
msgid "Current Replica Source"
msgstr "Fonte de Réplica Atual"
msgid "Current Size (GB)"
msgstr "Tamanho Atual (GB)"
msgid "Current Task"
msgstr "Tarefa Atual"
msgid "DATABASE"
msgstr "BANCO DE DADOS"
msgid "Database"
msgstr "Base de dados"
msgid "Database Access"
msgstr "Acesso ao Banco de Dados"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "Acesso ao banco de dados para: {{ user_name }}@{{user_host}}"
msgid "Database Backups"
msgstr "Backups da Base de Dados"
msgid "Database Info"
msgstr "Informações da Base de Dados"
msgid "Database Instance"
msgstr "Instância de Base de Dados"
msgid "Database Name"
msgstr "Nome da Base de Dados"
msgid "Database Port"
msgstr "Porta da Base de Dados"
msgid "Databases"
msgstr "Bases de Dados"
msgid "Datastore"
msgstr "Datastore"
msgid "Datastore Version"
msgstr "Versão Datastore"
msgid "Defaults"
msgstr "Padrões"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Excluir Backup"
msgstr[1] "Excluir Backups"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Excluir Cluster"
msgstr[1] "Excluir Clusters"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "Excluir Grupo de Configuração"
msgstr[1] "Excluir Grupos de Configuração"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Excluir Banco de Dados"
msgstr[1] "Excluir Bancos de Dados"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Falha na Exclusão."
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Excluir Instância"
msgstr[1] "Excluir Instâncias"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "Excluir Parâmetro"
msgstr[1] "Excluir Parâmetros"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Excluir Usuário"
msgstr[1] "Excluir Usuários"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Backup Excluído"
msgstr[1] "Backups Excluídos"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "Excluir Grupo de Configuração"
msgstr[1] "Excluir Grupos de Configuração"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Banco de Dados Excluídos"
msgstr[1] "Bancos de Dados Excluídos"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "Parâmetros Excluídos"
msgstr[1] "Parâmetros Excluídos"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Usuário Excluído"
msgstr[1] "Usuários Excluídos"
msgid "Deleted cluster is not recoverable."
msgstr "Cluster excluído não é recuperável."
msgid "Deleted instances are not recoverable."
msgstr "Instâncias excluídas não são recuperáveis."
msgid "Description"
msgstr "Descrição"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Desconectar Grupo de Configuração"
msgstr[1] "Desconetar Grupos de Configuração"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Desanexar Réplica"
msgstr[1] "Desanexar Réplicas"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Grupo de Configuração Desconectado"
msgstr[1] "Grupos de Configuração Desconectados"
msgid "Details"
msgstr "Detalhes"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Desabilitar Log"
msgstr[1] "Desabilitar Logs"
msgid "Disable Root"
msgstr "Desabilitar Root"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Log Desabilitado"
msgstr[1] "Logs Desabilitados"
msgid "Discard Changes"
msgstr "Descartar Alterações"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Descartar Log"
msgstr[1] "Descartar Logs"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Log Descartado"
msgstr[1] "Logs Descartados"
msgid "Download"
msgstr "Baixar"
msgid "Download Backup"
msgstr "Download do Backup"
msgid "Edit User"
msgstr "Editar Usuário"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Ejetar Origem de Réplica"
msgstr[1] "Ejetar Origens de Réplicas"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Origem de Réplica Ejetada"
msgstr[1] "Origens de Réplicas Ejetadas"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Habilitar Log"
msgstr[1] "Habilitar Logs"
msgid "Enable Root"
msgstr "Habilitar Raiz"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Log Habilitado"
msgstr[1] "Logs Habilitados"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Erro"
msgid "Error applying changes"
msgstr "Erro ao aplicar as alterações"
msgid "Error creating database backup."
msgstr "Erro criando backup da base de dados."
msgid "Error deleting database on instance."
msgstr "Erro excluindo base de dados na instância."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Erro ao baixar o arquivo de log: %s"
msgid "Error getting configuration group list."
msgstr "Erro ao obter a lista do grupo de configuração."
msgid "Error getting database backup list."
msgstr "Erro buscando lista de backup da base de dados."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Erro ao redefinir parâmetros: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Falhou"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Falhou"
msgid "Fault"
msgstr "Falha"
msgid "Flavor"
msgstr "Flavor"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "Ir"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Conceder Acesso"
msgstr[1] "Conceder Acessos"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Acesso Concedido para"
msgstr[1] "Acessos Concedidos para"
msgid "Grow Cluster"
msgstr "Aumentar Cluster"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Aumentar Cluster: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Root já foi ativado"
msgid "Host"
msgstr "Host"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Host ou IP através do qual o usuário pode conectar-se."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "Incremental"
msgid "Incremental Backup"
msgstr "Incremental Backup"
msgid "Info"
msgstr "Informações"
msgid "Information"
msgstr "Informação"
msgid "Initial Admin User"
msgstr "Usuário Inicial Admin"
msgid "Initial Databases"
msgstr "Bancos de dados iniciais"
msgid "Initial Volume Size"
msgstr "Tamanho do Volume Inicial"
msgid "Initial admin user to add"
msgstr "Usuário admin inicial a se adicionar"
msgid "Initialize Databases"
msgstr "Inicializar Bases de dados"
msgid "Instance Name"
msgstr "Nome da instância"
msgid "Instance Type"
msgstr "Tipo da Instância"
msgid "Instances"
msgstr "Instâncias"
msgid "Is a Replica Of"
msgstr "É uma réplica do"
msgid "Launch"
msgstr "Disparar"
msgid "Launch Cluster"
msgstr "Iniciar Cluster"
msgid "Launch Database"
msgstr "Disparar Base de Dados"
msgid "Launch Instance"
msgstr "Disparar Instância"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "Disparadas %(count)s chamadas \"%(name)s\"."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Cluster iniciado \"%s\""
msgid "Locality"
msgstr "Localidade"
msgid "Log"
msgstr "Log"
msgid "Log Contents"
msgstr "Conteúdo do Log"
msgid "Log Length"
msgstr "Tamanho do Log"
msgid "Log length must be a nonnegative integer."
msgstr "Tamanho do log deve ser um número inteiro não negativo."
msgid "Log: "
msgstr "Log:"
msgid "Logs"
msgstr "Logs"
msgid "Manage Access"
msgstr "Gerenciar Acesso"
msgid "Manage Root"
msgstr "Gerenciar Root"
msgid "Manage Root Access"
msgstr "Gerenciar Acesso Raiz"
msgid "Management Console"
msgstr "Console de Gerenciamento"
msgid "Master Instance Name"
msgstr "Nome da Instância Mestre"
msgid "Message"
msgstr "Mensagem"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"Mover redes de 'Redes Disponíveis' para 'Redes Selecionadas' ao clicar no "
"botão, ou arrastar e soltar."
msgid "Name"
msgstr "Nome"
msgid "Network"
msgstr "Rede"
msgid "Network attached to instance."
msgstr "Rede anexada para a instância."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "Novo"
msgid "New Flavor"
msgstr "Flavor Novo"
msgid "New Host"
msgstr "Novo Host"
msgid "New Name"
msgstr "Novo Nome"
msgid "New Password"
msgstr "Nova Senha"
msgid "New Size (GB)"
msgstr "Novo Tamanho (GB)"
msgid "New password for cluster access."
msgstr "Nova senha para o acesso ao cluster."
msgid "New size for volume must be greater than current size."
msgstr "Novo tamanho para o volume tem de ser maior do que o tamanho atual."
msgid "No availability zones found"
msgstr "Não foram encontradas zonas de disponibilidade"
msgid "No backups available"
msgstr "Não há backups disponíveis"
msgid "No configuration groups available"
msgstr "Nenhum grupo de configuração disponível"
msgid "No configurations available"
msgstr "Nenhuma configuração disponível."
msgid "No flavors available"
msgstr "Nenhum flavor disponível."
msgid "No instances available"
msgstr "Não há instâncias disponíveis"
msgid "No volume type"
msgstr "Nenhum tipo de volume"
msgid "None"
msgstr "Nenhum"
msgid "Not Assigned"
msgstr "Não Atribuído"
msgid "Not Found"
msgstr "Não encontrado"
msgid "Not available"
msgstr "Não disponível"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Nota: Habilite o acesso root em uma instância. Se o acesso root já estiver "
"habilitado um novo password será gerado."
msgid "Number of Instances"
msgstr "Número de Instâncias"
msgid "Number of Shards"
msgstr "Numero de Shards"
msgid "Number of instances in the cluster."
msgstr "Número de Instâncias no cluster."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Número de instâncias no cluster. (Somente leitura)"
msgid "Number of shards. (Read only)"
msgstr "Numero de Shards. (Somente leitura)"
msgid "Old Flavor"
msgstr "Flavor antigo"
msgid "Optional Backup Description"
msgstr "Descrição Opcional de Backup"
msgid "Optional character set for the database."
msgstr "Codificação de caracteres opcional para a base de dados."
msgid "Optional collation type for the database."
msgstr "Tipo de regra de comparação opcional para a base de dados."
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"Lista opcional de bancos de dados, separada por vírgula, que o usuário tem "
"acesso."
msgid "Optional datastore specific type of the instance."
msgstr "Tipo específico de datastore opcional da instância."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Valor específico de datastore opcional, que define a relação entre uma "
"instância no cluster com outra instância"
msgid "Optional host of user."
msgstr "Host opcional do usuário."
msgid "Optional name of the instance."
msgstr "Nome opcional da instância"
msgid "Optional parent backup"
msgstr "Backup pai Opcional"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"Opcionalmente pode-se optar por criar esse banco de dados usando um backup "
"anterior, ou como uma réplica de outra instância de banco de dados."
msgid "Optionally provide a character set and collation for the database."
msgstr ""
"Forneça opcionalmente um conjunto de caracteres e regras de ordenação para a "
"base de dados."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"Opcionalmente forneça uma lista separada por vírgula das bases de dados a "
"criar:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Opcionalmente, forneça o host do usuário e uma lista de bases de dados que o "
"usuário possui acesso."
msgid "Overview"
msgstr "Visão Geral"
msgid "PASSWORD"
msgstr "SENHA"
msgid "Parameter"
msgstr "Parâmetro"
msgid "Parameters"
msgstr "Parâmetros"
msgid "Parent Backup"
msgstr "Backup pai"
msgid "Password"
msgstr "Senha"
msgid "Password (required)"
msgstr "Senha (requerido)"
msgid "Password for root user must be specified."
msgstr "Senha para o usuário de root deve ser especificada."
msgid "Password for root user."
msgstr "Senha para o usuário root."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"A senha é apenas visível imediatamente após o root ser habilitado ou "
"redefinido."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Por favor, observe: O novo valor deve ser maior do que o tamanho do "
"volume existente."
msgid "Promote"
msgstr "Promover"
msgid "Promote to Replica Source"
msgstr "Promover para Origem de Réplica"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Promovido réplica \"%s\" como nova origem de réplica."
msgid "Property"
msgstr "Propriedade"
msgid "Publish"
msgstr "Publicar"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Publicar Log"
msgstr[1] "Publicar Logs"
msgid "Publishable (bytes)"
msgstr "Publicável (bytes)"
msgid "Published (bytes)"
msgstr "Publicado (bytes)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Log Publicado"
msgstr[1] "Logs Publicados"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Reinicializando"
msgid "Related To"
msgstr "Relacionado a"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Remover Instância"
msgstr[1] "Remover Instâncias"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Instância Removida"
msgstr[1] "Instâncias Removidas"
msgid "Removed instances from cluster."
msgstr "Removido instâncias do Cluster"
msgid "Replica Count"
msgstr "Contagem de Réplicas"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Réplica Desanexada"
msgstr[1] "Réplicas Desanexadas"
msgid "Replicas"
msgstr "Réplicas"
msgid "Replicate from Instance"
msgstr "Replicar da Instância"
msgid "Replication"
msgstr "Replicação"
msgid "Reset Parameters"
msgstr "Redefinir Parâmetros"
msgid "Reset Root Password"
msgstr "Redefinição da Senha Root"
msgid "Resize Database Instance"
msgstr "Redimensionar Instância de Banco de Dados"
msgid "Resize Database Volume"
msgstr "Redimensionar Volume de banco de dados"
msgid "Resize Instance"
msgstr "Redimensionar Instância"
msgid "Resize Volume"
msgstr "Redimensionar volume"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Redimensionando"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Redimensionando a instância \"%s\""
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Redimensionando volume \"%s\""
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Reiniciar Instância"
msgstr[1] "Reiniciar Instâncias"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Reinicio Requerido"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Instância Reiniciada"
msgstr[1] "Instâncias Reiniciadas"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Instâncias reiniciadas perderão todos os dados não salvos no armazenamento "
"persistente."
msgid "Restore Backup"
msgstr "Restaurar Backup"
msgid "Restore from Backup"
msgstr "Recuperar do Backup"
msgid "Return to Log List"
msgstr "Retornar à Lista de Log"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Remover Acesso"
msgstr[1] "Remover Acessos"
msgid "Root Enabled"
msgstr "Root Habilitado"
msgid "Root Password"
msgstr "Senha Root"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Senha de Root atualizada para o cluster \"%s\""
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Salvando"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Agendamento de encolhimento do Cluster"
msgstr[1] "Agendamento de encolhimento dos Clusters"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Backup \"%(name)s\" agendado."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Exclusão agendada de Cluster"
msgstr[1] "Exclusão agendada de Clusters"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Exclusão agendada de Instância"
msgstr[1] "Exclusão agendada de Instâncias"
msgid "Scheduled growing of cluster."
msgstr "Agendado o aumento do cluster."
msgid "Select a backup to restore"
msgstr "Selecione um Backup para Restaurar"
msgid "Select a configuration group"
msgstr "Selecionar um grupo de configuração"
msgid "Select a configuration group to attach to the database instance."
msgstr ""
"Selecione um grupo de configuração para anexar à instância de banco de dados."
msgid "Select a master instance"
msgstr "Selecione a instância mestre"
msgid "Select a new flavor"
msgstr "Selecione um novo flavor"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr ""
"Selecione um parâmetro e forneça um valor para o parâmetro de configuração."
msgid "Select backup"
msgstr "Selecionar Backup"
msgid "Select configuration"
msgstr "Selecione a configuração."
msgid "Select configuration group"
msgstr "Selecionar grupo de configuração"
msgid "Select datastore type and version"
msgstr "Selecione o tipo de armazenamento de dados e versão"
msgid "Select instance"
msgstr "Selecione uma instância"
msgid "Select parent backup"
msgstr "Selecione o backup pai"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Selecione a(s) intância(s) que serão removidas do cluster."
msgid "Selected networks"
msgstr "Redes Selecionadas"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Encolher Cluster"
msgstr[1] "Encolher Clusters"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Encolher Cluster: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Cluster encolhido não é recuperável."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Desligar"
msgid "Size"
msgstr "Tamanho"
msgid "Size of image to launch."
msgstr "Tamanho da imagem a disparar."
msgid "Size of the volume in GB."
msgstr "Tamanho do volume em GB."
msgid "Source for Initial State"
msgstr "Origem do Estado inicial"
msgid "Specify a new flavor for the database instance."
msgstr "Especifique um novo sabor para a instância do banco de dados."
msgid "Specify a new name, new password or new host name for the user."
msgstr ""
"Especifique um novo nome, nova senha ou novo nome de host para o usuário."
msgid "Specify the details for launching an instance."
msgstr "Especifique os detalhes para disparar uma instância."
msgid "Specify the details for the database backup."
msgstr "Especifique os detalhes para o backup do banco de dados."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Especifique os detalhes da instância a ser adicionada ao cluster."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Especifique as instâncias que serão adicionadas ao cluster. Quando todas as "
"instâncias estiverem especificadas, clique em 'Aumentar Cluster' para "
"executar a operação de aumento."
msgid "Specify the name of the new database."
msgstr "Especifique o nome da nova base de dados."
msgid "Specify the name of the new user and password."
msgstr "Especifique o nome e senha o novo usuário."
msgid "Specify the new root password for vertica cluster."
msgstr "Especifique a nova senha de root para o vertica cluster."
msgid "Specify the new volume size for the database instance."
msgstr ""
"Especifique o novo tamanho do volume para a instância de banco de dados."
msgid "Specify the number of replicas to be created"
msgstr "Especifique o número de réplicas a serem criadas."
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"Especifique se as futuras instâncias replicadas serão criadas no mesmo "
"hipervisor (affinity) ou em diferentes hipervisores (anti-affinity). Este "
"valor é ignorado se a instância a ser lançada é uma réplica."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Especifique se as instâncias no cluster serão criadas no mesmo hypervisor "
"(afinidade) ou em um hypervisor diferente (anti-afinidade)."
msgid "Specs"
msgstr "Especificações"
msgid "Status"
msgstr "Status"
msgid "Status if root was ever enabled for an instance."
msgstr "Situação se o root sempre foi habilitado para uma instância."
msgid "Successfully added parameter"
msgstr "Parâmetro adicionado com sucesso."
msgid "Successfully disabled root access."
msgstr "Acesso de root desabilitado com sucesso."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"O 'Tipo de Instância' e 'Relacionados' campos são armazenamento de dados "
"específico e opcional. Consulte a documentação do Trove para obter mais "
"informações sobre como usar esses campos."
msgid "The flavor must be specified."
msgstr "O flavor deve ser especificado."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"O campo de nome é opcional. Se o campo ficar em branco um nome será gerado "
"quando o cluster for criado."
msgid "The number of instances must be greater than 1."
msgstr "O número de instâncias precisa ser maior que 1."
msgid "The number of shards must be greater than 1."
msgstr "O número de shards precisar ser maior que 1."
msgid "There was a problem enabling root."
msgstr "Houve um problema ao habilitar raiz."
msgid "This action cannot be undone."
msgstr "Essa ação não poderá ser desfeita."
msgid "Type"
msgstr "Tipo"
msgid "Type and version of datastore."
msgstr "Tipo e versão do armazenamento de dados."
msgid "USERNAME"
msgstr "USUÁRIO"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Não foi possível %(action)s: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Não é possível adicionar novo parâmetro: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Não é possível anexar grupo de configuração. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Não é possível criar grupo de configuração. %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Não foi possível criar base de dados: %s"
msgid "Unable to create list of parameters."
msgstr "Não é possível criar lista de parâmetros."
#, python-format
msgid "Unable to create user. %s"
msgstr "Não é possível criar usuário. %s"
msgid "Unable to determine if instance root is enabled."
msgstr "Não foi possível determinar se o root está habilitado na instância"
msgid "Unable to find backup!"
msgstr "Não foi possível encontrar o backup!"
msgid "Unable to find configuration group!"
msgstr "Não é possível encontrar o grupo de configuração!"
msgid "Unable to find master instance!"
msgstr "Incapaz de encontrar instância mestre!"
msgid "Unable to get configuration data."
msgstr "Não é possível obter dados de configuração"
msgid "Unable to get database backup data."
msgstr "Não é possível obter dados de backup de banco de dados."
msgid "Unable to get databases data."
msgstr "Não é possível obter dados de bancos de dados."
msgid "Unable to get instances data."
msgstr "Não foi possível obter dados de instâncias."
msgid "Unable to get user access data."
msgstr "Não foi possível obter os dados de acesso do usuário."
msgid "Unable to get user data."
msgstr "Não foi possível obter os dados do usuário."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Não é possível aumentar cluster. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Não é possível aumentar cluster: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Não foi possível disparar %(count)s chamadas \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Não é possível iniciar cluster. %s"
msgid "Unable to list database backups for parent."
msgstr "Não foi possível listar os backups de banco de dados para o pai."
msgid "Unable to list database instances to backup."
msgstr "Não foi possível listar as instâncias de banco de dados para backup."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Não é possível carregar {0} log\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Não é possível carregar {0} log para a instância \"{1}\"."
msgid "Unable to obtain datastore versions."
msgstr "Não é possível obter versões de datastores."
msgid "Unable to obtain datastores."
msgstr "Não é possível obter datastores."
msgid "Unable to obtain flavors."
msgstr "Não é possível obter flavors."
msgid "Unable to obtain information on root user"
msgstr "Não é possível obter informação do usuário root"
msgid "Unable to obtain list of parameters."
msgstr "Não é possível obter lista de parâmetros."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Não é possível promover a réplica como nova origem de réplica. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Não é possível remover instâncias do cluster: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "Não é possível redefinir a senha. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Não é possível redimensionar instância. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Não é possível redimensionar volume. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Não foi possível obter as bases de dados acessíveis."
msgid "Unable to retrieve availability zones."
msgstr "Não é possível recuperar zonas de disponibilidade"
msgid "Unable to retrieve cluster details."
msgstr "Não foi possível recuperar os detalhes do cluster."
msgid "Unable to retrieve database clusters."
msgstr "Não é possível recuperar os clusters de banco de dados."
msgid "Unable to retrieve database instances."
msgstr "Não foi possível obter instâncias da base de dados."
msgid "Unable to retrieve database size information."
msgstr "Não foi possível obter informações de tamanho da base de dados."
msgid "Unable to retrieve databases."
msgstr "Não foi possível obter as bases de dados."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Não foi possível obter detalhes do backup: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "Não é possível obter detalhes para o grupo de configuração: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Não foi possível obter detalhes para a base de dados do Cluster: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Não foi possível obter detalhes para a instância da base de dados: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Não é possível recuperar detalhes do Backup: %s"
msgid "Unable to retrieve flavors."
msgstr "Não foi possível recuperar flavors."
msgid "Unable to retrieve instance details."
msgstr "Não foi possível recuperar os detalhes da instância."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Não é possível recuperar lista de logs.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Não é possível recuperar redes."
#, python-format
msgid "Unable to update user. %s"
msgstr "Não é possível atualizar usuário. %s"
msgid "Unknown"
msgstr "Desconhecido"
msgid "Updated"
msgstr "Atualizado"
#, python-format
msgid "Updated user \"%s\"."
msgstr "Atualizado usuário \"%s\"."
msgid "User Name"
msgstr "Nome do Usuário"
msgid "Username (required)"
msgstr "Nome de usuário (requerido)"
msgid "Users"
msgstr "Usuários"
msgid "Value"
msgstr "Valor"
msgid "Value must be \"true\" or \"false\"."
msgstr "Valor deve ser \"true\" ou\"false\"."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "Valor deve ser um número entre %(min)s e %(max)s."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "Valor deve ser um número maior que ou igual a %s."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "Valor deve seu um número menor que ou igual a %s."
msgid "Value must be a number."
msgstr "Valor deve ser um número."
#, python-format
msgid "Value must be of type %s."
msgstr "Valor deve ser do tipo %s."
msgid "Values"
msgstr "Valores"
msgid "View Full Log"
msgstr "Ver Log Completo"
msgid "View Log"
msgstr "Visualizar Log"
msgid "Volume"
msgstr "Volume"
msgid "Volume Size"
msgstr "Tamanho do Volume"
msgid "Volume Type"
msgstr "Tipo de Volume"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "Você não possui permissão para %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Você pode realizar um backup incremental, especificando um backup pai. "
" No entanto, nem todos os bancos de dados oferece suporte "
"a backups incrementais, caso em que esta operação irá resultar em um erro."
msgid "You must select a datastore type and version."
msgstr "Você deve selecionar um tipo de armazenamento de dados e versão."
msgid "You must select a flavor."
msgstr "Você deve selecionar um flavor."
msgid "You must specify a password if you create a user."
msgstr "Você deve especificar uma senha se você criar um usuário."
msgid "You must specify at least one database if you create a user."
msgstr ""
"Você deve especificar ao menos uma base de dados se você criar um usuário."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, nome=%(name)s, tipo=%(type)s, "
"relacionado_a=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "instância"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000002027 00000000000 027425 0 ustar 00corey corey 0000000 0000000 # Fernando Pimenta , 2017. #zanata
# Fernando Pimenta , 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-02-07 01:57+0000\n"
"Last-Translator: Fernando Pimenta \n"
"Language-Team: Portuguese (Brazil)\n"
"Language: pt_BR\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid "Created"
msgstr "Criado"
msgid "Database"
msgstr "Banco de Dados"
msgid "Datastore"
msgstr "Repositório de Dados"
msgid "Datastore Version"
msgstr "Versão do Repositório de Dados"
msgid "Incremental"
msgstr "Incremental"
msgid "Name"
msgstr "Nome"
msgid "Unable to retrieve the Backups."
msgstr "Não é possível recuperar os Backups."
msgid "status"
msgstr "Estado"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ru/ 0000755 0001750 0001750 00000000000 00000000000 023120 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5294344
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ru/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 024705 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ru/LC_MESSAGES/django.po 0000644 0001750 0001750 00000137074 00000000000 026523 0 ustar 00corey corey 0000000 0000000 # Andreas Jaeger , 2016. #zanata
# Artem , 2016. #zanata
# Maxim Bozhenko , 2016. #zanata
# Vladimir Sokolov , 2016. #zanata
# Yulia Ryndenkova , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-01-15 11:49+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-10-12 02:47+0000\n"
"Last-Translator: Maxim Bozhenko \n"
"Language-Team: Russian\n"
"Language: ru\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s ОЗУ | Инстансов - %(instances)s "
msgid "-"
msgstr "-"
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Обратите внимание: Значение указываемое в поле Размер диска "
"должно быть больше 0, однако некоторые конфигурации не поддерживают указание "
"размера диска. Если при указание размера диска возникает ошибка говорящая о "
"том что поддержка дисков не включена укажите 0."
msgid "A backup must be selected!"
msgstr "Нужно выбрать резервную копию!"
msgid "A master instance must be selected!"
msgstr "Должна быть выбран основной инстанс!"
msgid "A new name or new password or new host must be specified."
msgstr "Новое имя, новый пароль и новый хост должны быть заданы."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Отменен доступ к "
msgstr[1] "Отменены доступы к "
msgstr[2] "Отменены доступы к "
msgid "Accessible"
msgstr "Доступно"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Активный"
msgid "Add"
msgstr "Добавить"
msgid "Add Instance"
msgstr "Добавить инстанс"
msgid "Add Parameter"
msgstr "Добавить параметр"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Добавьте параметры в группу конфигурации. Когда все параметры добавлены "
"нажмите 'Применить изменения' чтобы сохранить изменения."
msgid "Advanced"
msgstr "Дополнительно"
msgid "Allowed Host"
msgstr "Разрешенный хост"
msgid "Allowed Host (optional)"
msgstr "Разрешенный узел (необязательно)"
msgid "Any Availability Zone"
msgstr "Любая зона доступности"
msgid "Applicable only if the volume size is specified."
msgstr "Поддерживается только если указан размер диска."
msgid "Applied changes to server"
msgstr "Изменения применены"
msgid "Apply Changes"
msgstr "Применить изменения"
msgid "At least one of the new fields must be changed."
msgstr "Хотя бы одно из новых полей должно быть изменено."
msgid "Attach Configuration Group"
msgstr "Подключить группу конфигурации"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Подключение группы конфигурации \"%s\""
msgid "Availability Zone"
msgstr "Зона доступности"
msgid "Available networks"
msgstr "Доступные сети"
msgid "Backup"
msgstr "Резервная копия"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Резервное копирование"
msgid "Backup Database"
msgstr "Резервная копия БД"
msgid "Backup Details"
msgstr "Сведения о резервной копии"
msgid "Backup Details: {{ backup.name }}"
msgstr "Детали резервной копии: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Продолжительность резервной копии"
msgid "Backup File"
msgstr "Файл резервной копии"
msgid "Backup File Location"
msgstr "Путь к файлу резервной копии"
msgid "Backup Name"
msgstr "Имя резервной копии"
msgid "Backup Overview"
msgstr "Обзор резервной копии"
msgid "Backups"
msgstr "Резервные копии"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Заблокирован"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "Создание"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "Создание"
msgid "Cancel"
msgstr "Отмена"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Невозможно отключить доступ к root: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Не могу увеличить кластер. Инстансы не заданы."
msgid "Character Set"
msgstr "Кодировка"
msgid "Choose a new instance flavor."
msgstr "Выберите новый тип для инстанса."
msgid "Choose initial state."
msgstr "Выберите первоначальное наполнение"
msgid "Close"
msgstr "Закрыть"
msgid "Cluster Name"
msgstr "Имя кластера"
msgid "Cluster Size"
msgstr "Размер кластера"
msgid "Clusters"
msgstr "Кластеры"
msgid "Collation"
msgstr "Параметры сортировки"
msgid "Comma separated list of databases to create"
msgstr "Список баз данных для создания разделенный запятыми"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Завершено"
msgid "Configuration Defaults"
msgstr "Установки по умолчанию"
msgid "Configuration Group"
msgstr "Группа конфигурации"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Детали группы конфигурации: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Инстансы группы конфигурации"
msgid "Configuration Group Name"
msgstr "Имя группы конфигурации"
msgid "Configuration Group Overview"
msgstr "Обзор группы конфигурации"
msgid "Configuration Group Values"
msgstr "Значения группы конфигурации"
msgid "Configuration Groups"
msgstr "Группы конфигураций"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr "Подтвердите назначение текущей реплики источником реплик."
msgid "Connection Examples"
msgstr "Примеры соединений"
msgid "Connection Information"
msgstr "Параметры соединения"
msgid "Container"
msgstr "Контейнер"
msgid "Create Backup"
msgstr "Создать резервную копию"
msgid "Create Configuration Group"
msgstr "Создать группу конфигурации"
msgid "Create Database"
msgstr "Создать базу данных"
msgid "Create User"
msgstr "Создать пользователя"
msgid "Created"
msgstr "Создано"
msgid "Created configuration group"
msgstr "Группа конфигурации создана"
#, python-format
msgid "Created database \"%s\"."
msgstr "Создана БД \"%s\"."
#, python-format
msgid "Created user \"%s\"."
msgstr "Создан пользователь \"%s\"."
msgid "Current Replica"
msgstr "Текущая реплика"
msgid "Current Replica Source"
msgstr "Текущий источник реплик"
msgid "Current Size (GB)"
msgstr "Текущий размер (ГБ)"
msgid "Current Task"
msgstr "Текущая задача"
msgid "DATABASE"
msgstr "DATABASE"
msgid "Database"
msgstr "База данных"
msgid "Database Access"
msgstr "Доступ к БД"
msgid "Database Backups"
msgstr "Резервные копии БД"
msgid "Database Info"
msgstr "Информация БД"
msgid "Database Instance"
msgstr "Инстанс БД"
msgid "Database Name"
msgstr "Имя базы данных"
msgid "Database Port"
msgstr "Порт базы данных"
msgid "Databases"
msgstr "Базы данных"
msgid "Datastore"
msgstr "Хранилище данных"
msgid "Datastore Version"
msgstr "Версия хранилища данных"
msgid "Defaults"
msgstr "Установки по умолчанию"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Удалить резервную копию"
msgstr[1] "Удалить резервные копии"
msgstr[2] "Удалить резервные копии"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Удалить кластер"
msgstr[1] "Удалить кластеры"
msgstr[2] "Удалить кластеры"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Удалить базу данных"
msgstr[1] "Удалить базы данных"
msgstr[2] "Удалить базы данных"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Ошибка удаления"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Удалить инстанс"
msgstr[1] "Удалить инстансы"
msgstr[2] "Удалить инстансы"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Удалить пользователя"
msgstr[1] "Удалить пользователей"
msgstr[2] "Удалить пользователей"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Удаленная резервная копия"
msgstr[1] "Удаленные резервные копии"
msgstr[2] "Удаленные резервные копии"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "База данных удалена"
msgstr[1] "Базы данных удалены"
msgstr[2] "Базы данных удалены"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Удаленный пользователь"
msgstr[1] "Удаленные пользователи"
msgstr[2] "Удаленные пользователи"
msgid "Deleted cluster is not recoverable."
msgstr "Удаленный кластер не подлежит восстановлению"
msgid "Deleted instances are not recoverable."
msgstr "Удаленные инстансы нельзя восстановить."
msgid "Description"
msgstr "Описание"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Отключить группу конфигурации"
msgstr[1] "Отключить группы конфигураций"
msgstr[2] "Отключить группы конфигураций"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Отключить реплику"
msgstr[1] "Отключить реплики"
msgstr[2] "Отключить реплики"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Отключенная группа конфигурации"
msgstr[1] "Отключенные группы конфигураций"
msgstr[2] "Отключенные группы конфигураций"
msgid "Details"
msgstr "Подробности"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Выключить лог"
msgstr[1] "Выключить логи"
msgstr[2] "Выключить логи"
msgid "Disable Root"
msgstr "Отключить root"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Выключенный лог"
msgstr[1] "Выключенные логи"
msgstr[2] "Выключенные логи"
msgid "Discard Changes"
msgstr "Отменить изменения"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Удалить лог"
msgstr[1] "Удалить логи"
msgstr[2] "Удалить логи"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Удаленный лог"
msgstr[1] "Удаленные логи"
msgstr[2] "Удаленные логи"
msgid "Download"
msgstr "Скачать"
msgid "Download Backup"
msgstr "Скачать резервную копию"
msgid "Edit User"
msgstr "Редактировать пользователя"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Отключить источник реплик"
msgstr[1] "Отключить источники реплик"
msgstr[2] "Отключить источники реплик"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Отключенный источник реплик"
msgstr[1] "Отключенные источники реплик"
msgstr[2] "Отключенные источники реплик"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Включить лог"
msgstr[1] "Включить логи"
msgstr[2] "Включить логи"
msgid "Enable Root"
msgstr "Разрешить пользователя root"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Включенный лог"
msgstr[1] "Включенные логи"
msgstr[2] "Включенные логи"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Ошибка"
msgid "Error applying changes"
msgstr "Ошибка при применении изменений"
msgid "Error creating database backup."
msgstr "Ошибка создания резервной копии БД."
msgid "Error deleting database on instance."
msgstr "Ошибка удаления БД на инстансе."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Ошибка загрузки файла лога: %s"
msgid "Error getting configuration group list."
msgstr "Ошибка получения списка групп конфигурации."
msgid "Error getting database backup list."
msgstr "Ошибка получения списка резервных копий БД."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Ошибка при очистке параметров: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Произошла ошибка"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Произошла ошибка"
msgid "Fault"
msgstr "Ошибка"
msgid "Flavor"
msgstr "Тип инстанса"
msgid "GB"
msgstr "ГБ"
msgid "Go"
msgstr "Выполнить"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Дать доступ"
msgstr[1] "Дать доступы"
msgstr[2] "Дать доступы"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Дан доступ к "
msgstr[1] "Даны доступы к "
msgstr[2] "Даны доступы к "
msgid "Grow Cluster"
msgstr "Увеличить кластер"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Увеличить кластер: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Был ли когда-то включен root"
msgid "Host"
msgstr "Хост"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Хост или IP через который пользователю разрешено подключиться."
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "Инкрементное"
msgid "Incremental Backup"
msgstr "Инкрементное резервное копирование"
msgid "Info"
msgstr "Информация"
msgid "Information"
msgstr "Информация"
msgid "Initial Admin User"
msgstr "Начальный администратор"
msgid "Initial Databases"
msgstr "Начальные базы данных"
msgid "Initial Volume Size"
msgstr "Изначальный размер диска"
msgid "Initial admin user to add"
msgstr "Начальный пользователь-администратор для добавления"
msgid "Initialize Databases"
msgstr "Инициализировать базы данных"
msgid "Instance Name"
msgstr "Имя инстанса"
msgid "Instance Type"
msgstr "Тип инстанса"
msgid "Instances"
msgstr "Инстансы"
msgid "Is a Replica Of"
msgstr "Является репликой"
msgid "Launch"
msgstr "Запустить"
msgid "Launch Cluster"
msgstr "Запустить кластер"
msgid "Launch Database"
msgstr "Запустить БД"
msgid "Launch Instance"
msgstr "Запустить инстанс"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "Запущено %(count)s названных \"%(name)s\"."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "Запущен кластер %s"
msgid "Locality"
msgstr "Окрестность"
msgid "Log"
msgstr "Лог"
msgid "Log Contents"
msgstr "Содержимое лога"
msgid "Log Length"
msgstr "Длина лога"
msgid "Log length must be a nonnegative integer."
msgstr "Длина журнала должна быть неотрицательным целым числом. "
msgid "Log: "
msgstr "Лог:"
msgid "Logs"
msgstr "Логи"
msgid "Manage Access"
msgstr "Управление доступом"
msgid "Manage Root"
msgstr "Управление root"
msgid "Manage Root Access"
msgstr "Управление правами root"
msgid "Management Console"
msgstr "Консоль управления"
msgid "Master Instance Name"
msgstr "Имя основного инстанса"
msgid "Message"
msgstr "Сообщение"
msgid "Name"
msgstr "Имя"
msgid "Network"
msgstr "Сеть"
msgid "Network attached to instance."
msgstr "Сеть подключенная к инстансу."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "Новая копия"
msgid "New Flavor"
msgstr "Новый тип инстанса"
msgid "New Host"
msgstr "Новый хост"
msgid "New Name"
msgstr "Новое имя"
msgid "New Password"
msgstr "Новый пароль"
msgid "New Size (GB)"
msgstr "Новый размер (Гб)"
msgid "New password for cluster access."
msgstr "Новый пароль для доступа к кластеру."
msgid "New size for volume must be greater than current size."
msgstr "Новый размер диска должен быть больше текущего размера."
msgid "No availability zones found"
msgstr "Не найдены зоны доступности."
msgid "No backups available"
msgstr "Нет доступных резервных копий"
msgid "No configuration groups available"
msgstr "Нет доступных групп конфигураций"
msgid "No configurations available"
msgstr "Нет доступных конфигураций"
msgid "No flavors available"
msgstr "Нет доступных типов инстанса"
msgid "No instances available"
msgstr "Нет доступных инстансов"
msgid "No volume type"
msgstr "Нет типа диска"
msgid "None"
msgstr "Нет"
msgid "Not Assigned"
msgstr "Не назначено"
msgid "Not Found"
msgstr "Не найдено"
msgid "Not available"
msgstr "Недоступно"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Замечание: Разрешите root доступ к инстансу. Если root доступ уже разрешен, "
"тогда будет сгенерирован новый пароль."
msgid "Number of Instances"
msgstr "Количество инстансов"
msgid "Number of Shards"
msgstr "Количество шардов"
msgid "Number of instances in the cluster."
msgstr "Количество инстансов в кластере."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Количество инстансов в кластере. (Только чтение)"
msgid "Number of shards. (Read only)"
msgstr "Количество шардов. (Только чтение)"
msgid "Old Flavor"
msgstr "Старый тип инстанса"
msgid "Optional Backup Description"
msgstr "Опциональное описание резервной копии"
msgid "Optional character set for the database."
msgstr "Опциональная кодировка для БД"
msgid "Optional collation type for the database."
msgstr "Опциональные параметры сортировки для БД"
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"Опциональный список БД, разделенный запятыми, к которым пользователь имеет "
"доступ."
msgid "Optional datastore specific type of the instance."
msgstr "Опциональный тип инстанса для хранилища данных."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Опциональное значение для хранилища данных которое определяет отношение "
"между инстансами в кластере"
msgid "Optional host of user."
msgstr "Опциональный хост пользователя"
msgid "Optional name of the instance."
msgstr "Опциональное имя инстанса."
msgid "Optional parent backup"
msgstr "Необязательная материнская резервная копия"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"Дополнительно можно выбрать создание этой базы данных из резервной копии или "
"в качестве реплики другого экземпляра БД."
msgid "Optionally provide a character set and collation for the database."
msgstr "Опционально укажите кодировку и параметры сортировки для БД."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"Опционально введите список баз данных для создания, разделенный запятыми: "
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"Опционально предоставьте хост для пользователя и список БД к которым "
"пользователь имеет доступ."
msgid "Overview"
msgstr "Обзор"
msgid "PASSWORD"
msgstr "PASSWORD"
msgid "Parameter"
msgstr "Параметр"
msgid "Parameters"
msgstr "Параметры"
msgid "Parent Backup"
msgstr "Материнская резервная копия"
msgid "Password"
msgstr "Пароль"
msgid "Password (required)"
msgstr "Пароль (обязательно)"
msgid "Password for root user must be specified."
msgstr "Должен быть указан пароль для пользователя root."
msgid "Password for root user."
msgstr "Пароль пользователя root"
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr "Пароль видим сразу только после разрешения или сброса root."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Пожалуйста, обратите внимание: Новое значение должно быть больше "
"чем текущего размер диска."
msgid "Promote"
msgstr "Повысить"
msgid "Promote to Replica Source"
msgstr "Сделать источником реплик"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Реплика \"%s\" теперь источник реплик."
msgid "Property"
msgstr "Свойство"
msgid "Publish"
msgstr "Опубликовать"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Опубликовать лог"
msgstr[1] "Опубликовать логи"
msgstr[2] "Опубликовать логи"
msgid "Publishable (bytes)"
msgstr "Может быть опубликовано (байт)"
msgid "Published (bytes)"
msgstr "Опубликовано (байт)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Опубликованный лог"
msgstr[1] "Опубликованные логи"
msgstr[2] "Опубликованные логи"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Перезагрузка"
msgid "Related To"
msgstr "Относится к"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Удалить инстанс"
msgstr[1] "Удалить инстансы"
msgstr[2] "Удалить инстансы"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Удаленный инстанс"
msgstr[1] "Удаленные инстансы"
msgstr[2] "Удаленные инстансы"
msgid "Removed instances from cluster."
msgstr "Удаленные инстансы из кластера"
msgid "Replica Count"
msgstr "Количество реплик"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Реплика отключена"
msgstr[1] "Реплики отключены"
msgstr[2] "Реплики отключены"
msgid "Replicas"
msgstr "Реплики"
msgid "Replicate from Instance"
msgstr "Реплицировать с инстанса"
msgid "Replication"
msgstr "Репликация"
msgid "Reset Parameters"
msgstr "Очистить параметры"
msgid "Reset Root Password"
msgstr "Сбросить пароль для root"
msgid "Resize Database Instance"
msgstr "Изменить размер инстанса БД"
msgid "Resize Database Volume"
msgstr "Изменить размер диска базы данных"
msgid "Resize Instance"
msgstr "Изменить размер инстанса"
msgid "Resize Volume"
msgstr "Изменить размер диска"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Изменение размера"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "Изменить размер инстанса \"%s\""
#, python-format
msgid "Resizing volume \"%s\""
msgstr "Изменяем размер диска \"%s\" "
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Перезапустить инстанс"
msgstr[1] "Перезапустить инстансы"
msgstr[2] "Перезапустить инстансы"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Требуется перезагрузка"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Перезапущен инстанс"
msgstr[1] "Перезапущены инстансы"
msgstr[2] "Перезапущены инстансы"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Перезапущенные инстансы потеряют все данных не сохраненные в постоянном "
"хранилище."
msgid "Restore Backup"
msgstr "Восстановить из резервной копии"
msgid "Restore from Backup"
msgstr "Восстановить из резервной копии"
msgid "Return to Log List"
msgstr "Вернуться к списку логов"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Отменить доступ"
msgstr[1] "Отменить доступы"
msgstr[2] "Отменить доступы"
msgid "Root Enabled"
msgstr "Root разрешен"
msgid "Root Password"
msgstr "Пароль root"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "Пароль root обновлён для кластера \"%s\""
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Сохранение"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Запланировано уменьшение кластера"
msgstr[1] "Запланировано уменьшение кластеров"
msgstr[2] "Запланировано уменьшение кластеров"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Запланированная резервная копия \"%(name)s\"."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Запланировано удаление кластера"
msgstr[1] "Запланировано удаление кластеров"
msgstr[2] "Запланировано удаление кластеров"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Запланировано удаление инстанса"
msgstr[1] "Запланировано удаление инстансов"
msgstr[2] "Запланировано удаление инстансов"
msgid "Scheduled growing of cluster."
msgstr "Запланировано увеличение кластера"
msgid "Select a backup to restore"
msgstr "Выбрать резервную копию для восстановления"
msgid "Select a configuration group"
msgstr "Выберите группу конфигурации"
msgid "Select a configuration group to attach to the database instance."
msgstr "Выберите группу конфигурации для подключения к инстансу базы данных."
msgid "Select a master instance"
msgstr "Выберите основной инстанс"
msgid "Select a new flavor"
msgstr "Выберите новый тип инстанса"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr "Выберите параметр и предоставьте значение для параметра конфигурации."
msgid "Select backup"
msgstr "Выбрать резервную копию"
msgid "Select configuration"
msgstr "Выбрать конфигурацию"
msgid "Select configuration group"
msgstr "Выберите группу конфигурации"
msgid "Select datastore type and version"
msgstr "Выбрать тип и версию хранилища данных."
msgid "Select instance"
msgstr "Выберите инстанс"
msgid "Select parent backup"
msgstr "Выбрать материнскую резервную копию"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Выберите инстанс(ы) который будет удален из кластера."
msgid "Selected networks"
msgstr "Выбранные сети"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Уменьшить кластер"
msgstr[1] "Уменьшить кластеры"
msgstr[2] "Уменьшить кластеры"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Уменьшать кластер: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Уменьшение кластер не подлежит восстановлению."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Выключен"
msgid "Size"
msgstr "Размер"
msgid "Size of image to launch."
msgstr "Размер образа для запуска"
msgid "Size of the volume in GB."
msgstr "Размер диска в ГБ"
msgid "Source for Initial State"
msgstr "Источник для первоначального наполнения"
msgid "Specify a new flavor for the database instance."
msgstr "Укажите новый тип инстанса для инстанса БД."
msgid "Specify a new name, new password or new host name for the user."
msgstr "Укажите новое имя, новой пароль или новый хост для пользователя."
msgid "Specify the details for launching an instance."
msgstr "Задайте детали запуска инстанса."
msgid "Specify the details for the database backup."
msgstr "Указать данные для резервной копии базы данных."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Задайте параметры инстанса для добавления в кластер."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Укажите инстансы для добавления в кластер. Когда все инстансы указаны, "
"нажмите 'Увеличить кластер' для выполнения операции увеличения."
msgid "Specify the name of the new database."
msgstr "Укажите имя новой базы данных."
msgid "Specify the name of the new user and password."
msgstr "Укажите имя нового пользователя и пароль."
msgid "Specify the new root password for vertica cluster."
msgstr "Укажите новый root пароль для кластера vertica."
msgid "Specify the new volume size for the database instance."
msgstr "Указать новый размер диска для инстанса БД."
msgid "Specify the number of replicas to be created"
msgstr "Укажите количество создаваемых реплик"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"Укажите будут ли реплицированные инстансы создаваться на одном и том же "
"гипервизоре (аффинированность) или на разных гипервизорах (анти-"
"аффинитивность). Это значение будет проигнорировано если запускаемый инстанс "
"является репликой."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Укажите будут ли инстансы кластера создаваться на одном и том же гипервизоре "
"(аффинированность) или на разных (анти-аффинированность)"
msgid "Specs"
msgstr "Спеки"
msgid "Status"
msgstr "Статус"
msgid "Status if root was ever enabled for an instance."
msgstr "Статус если root когда либо был разрешен для инстанса."
msgid "Successfully added parameter"
msgstr "Параметр успешно добавлен"
msgid "Successfully disabled root access."
msgstr "Доступ к root отключен."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"Поля 'Тип инстанса' и 'Относится к' опциональны и зависят от хранилища. "
"Смотрите документацию Trove для подробной информации об этих полях."
msgid "The flavor must be specified."
msgstr "Должен быть указан тип инстанса."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"Поле имя опциональное. Если это поле оставить пустым, то имя будет "
"сгенерировано при увеличении кластера."
msgid "The number of instances must be greater than 1."
msgstr "Количество инстансов должно быть больше 1."
msgid "The number of shards must be greater than 1."
msgstr "Количество шардов должно быть больше 1."
msgid "There was a problem enabling root."
msgstr "Возникла проблема с разрешением пользователя root."
msgid "This action cannot be undone."
msgstr "Это действие не может быть отменено."
msgid "Type"
msgstr "Тип"
msgid "Type and version of datastore."
msgstr "Тип и версия хранилища данных."
msgid "USERNAME"
msgstr "USERNAME"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "Невозможно выполнить %(action)s: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Невозможно добавить новый параметр: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Невозможно подключить группу конфигурации. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Невозможно создать группу конфигурации. %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Невозможно создать базу данных. %s"
msgid "Unable to create list of parameters."
msgstr "Невозможно создать список параметров."
#, python-format
msgid "Unable to create user. %s"
msgstr "Невозможно создать пользователя. %s"
msgid "Unable to determine if instance root is enabled."
msgstr "Не удалось определить разрешен ли root для инстанса."
msgid "Unable to find backup!"
msgstr "Не удалось найти резервную копию!"
msgid "Unable to find configuration group!"
msgstr "Невозможно найти группу конфигурации!"
msgid "Unable to find master instance!"
msgstr "Не удалось найти основной инстанс!"
msgid "Unable to get configuration data."
msgstr "Невозможно получить данные конфигурации."
msgid "Unable to get database backup data."
msgstr "Не удалось получить данные резервной копии базы данных"
msgid "Unable to get databases data."
msgstr "Не удалось получить информацию о базах данных"
msgid "Unable to get instances data."
msgstr "Невозможно получить данные инстансов."
msgid "Unable to get user access data."
msgstr "Не удалось получить данные доступа пользователя"
msgid "Unable to get user data."
msgstr "Не удалось получить данные пользователя"
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Не удалось увеличить кластер. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Не удалось увеличить кластер: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "Не удалось запустить %(count)s названных \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Не удалось запустить кластер. %s"
msgid "Unable to list database backups for parent."
msgstr "Не удалось перечислить резервные копии базы для родителя."
msgid "Unable to list database instances to backup."
msgstr ""
"Не удалось получить список инстансов баз данных для резервного копирования."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"Невозможно загрузить лог {0}\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "Невозможно загрузить лог {0} для инстанса \"{1}\"."
msgid "Unable to obtain datastore versions."
msgstr "Невозможно получить версии хранилищ данных."
msgid "Unable to obtain datastores."
msgstr "Невозможно получить список хранилищ данных."
msgid "Unable to obtain flavors."
msgstr "Не удалось получить типы инстансов."
msgid "Unable to obtain information on root user"
msgstr "Невозможно получить информацию о пользователе root"
msgid "Unable to obtain list of parameters."
msgstr "Невозможно получить список параметров."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Невозможно сделать реплику новым источником реплик. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Невозможно удалить инстансы их кластера: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "Не удаётся сбросить пароль. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Не удалось изменить размер инстанса. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Не удалось изменить размер диска. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Не удалось получить доступные базы данных."
msgid "Unable to retrieve availability zones."
msgstr "Не удалось получить список зон доступности."
msgid "Unable to retrieve cluster details."
msgstr "Невозможно получить сведения для кластера."
msgid "Unable to retrieve database clusters."
msgstr "Невозможно получить кластеры БД."
msgid "Unable to retrieve database instances."
msgstr "Не удалось получить инстансы БД."
msgid "Unable to retrieve database size information."
msgstr "Не удалось получить информацию о размере БД."
msgid "Unable to retrieve databases."
msgstr "Не удалось получить базы данных."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Не удалось получить подробную информацию о резервной копии: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "Не удалось получить подробную информацию о группе конфигурации: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Невозможно получить сведения для кластера БД: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Не удалось получить детальную информацию для инстанса БД: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Не удалось получить данные о материнской резервной копии: %s"
msgid "Unable to retrieve flavors."
msgstr "Не удалось получить типы инстанса."
msgid "Unable to retrieve instance details."
msgstr "Не удалось получить подробную информацию об инстансе."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Невозможно получить список логов.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Не удалось получить сети."
#, python-format
msgid "Unable to update user. %s"
msgstr "Невозможно обновить пользователя. %s"
msgid "Unknown"
msgstr "Неизвестно"
msgid "Updated"
msgstr "Обновлено"
#, python-format
msgid "Updated user \"%s\"."
msgstr "Обновлен пользователь \"%s\"."
msgid "User Name"
msgstr "Имя пользователя"
msgid "Username (required)"
msgstr "Имя пользователя (обязательно)"
msgid "Users"
msgstr "Пользователи"
msgid "Value"
msgstr "Значение"
msgid "Value must be \"true\" or \"false\"."
msgstr "Значение должно быть \"true\" или \"false\"."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "Значение должно быть числом между %(min)s и %(max)s."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "Значение должно быть больше или равно %s."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "Значение должно быть меньше или равно %s."
msgid "Value must be a number."
msgstr "Значение должно быть числом."
#, python-format
msgid "Value must be of type %s."
msgstr "Значение должно быть типа %s."
msgid "Values"
msgstr "Значения"
msgid "View Full Log"
msgstr "Просмотр полного лога"
msgid "View Log"
msgstr "Просмотреть лог"
msgid "Volume"
msgstr "Диск"
msgid "Volume Size"
msgstr "Размер диска"
msgid "Volume Type"
msgstr "Тип диска"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "Вам не разрешено выполнение: %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Вы можете выполнить инкрементное резервное копирование, указав материнскую "
"резервную копию. Однако, не все базы данных поддерживают "
"инкрементное резервное копирование, в этом случае операция приведёт к ошибке."
msgid "You must select a datastore type and version."
msgstr "Вы должны выбрать тип и версию хранилища данных."
msgid "You must select a flavor."
msgstr "Необходимо выбрать тип инстанса."
msgid "You must specify a password if you create a user."
msgstr "Вы должны задать пароль если хотите создать пользователя."
msgid "You must specify at least one database if you create a user."
msgstr "Вы должны создать по крайней мере одну БД если создаете пользователя."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "инстанс"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/ru/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000002111 00000000000 027037 0 ustar 00corey corey 0000000 0000000 # Maxim Bozhenko , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard 7.0.0.0rc2.dev7\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-10-07 13:57+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-09-28 02:47+0000\n"
"Last-Translator: Maxim Bozhenko \n"
"Language-Team: Russian\n"
"Language: ru\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
msgid "Created"
msgstr "Создано"
msgid "Database"
msgstr "База данных"
msgid "Datastore"
msgstr "Хранилище"
msgid "Datastore Version"
msgstr "Версия хранилища"
msgid "Incremental"
msgstr "Инкрементальный"
msgid "Name"
msgstr "Имя"
msgid "Unable to retrieve the Backups."
msgstr "Невозможно получить резервные копии."
msgid "status"
msgstr "Статус"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/tr_TR/ 0000755 0001750 0001750 00000000000 00000000000 023524 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5334342
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/tr_TR/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025311 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/tr_TR/LC_MESSAGES/django.po 0000644 0001750 0001750 00000111440 00000000000 027114 0 ustar 00corey corey 0000000 0000000 # işbaran akçayır , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-05-25 09:22+0000\n"
"Last-Translator: Copied by Zanata \n"
"Language-Team: Turkish (Turkey)\n"
"Language: tr_TR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Zanata 4.3.3\n"
"X-POOTLE-MTIME: 1495704069.000000\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s RAM | %(instances)s sunucu"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr ""
"Lütfen dikkat:Bu yeni yapılandırma grubunun uygulanabilmsei "
"için veritabanını yeniden başlatmanız gerekecek olabilir."
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"Lütfen dikkat:Birim Boyutu alanındaki değer 0'dan büyük "
"olmalı, ama bazı yapılandırmalar birim boyutu belirtmeyi desteklemezler. "
"Eğer birim boyutunu belirtmek birim desteğinin etkin olmadığını söyleyen bir "
"hata verirse, 0 girin."
msgid "A backup must be selected!"
msgstr "Bir yedek seçilmeli!"
msgid "A master instance must be selected!"
msgstr "Bir ana sunucu seçilmeli!"
msgid "A new name or new password or new host must be specified."
msgstr "Yeni isim veya yeni parola veya yeni sunucu belirtilmeli."
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "Erişim Kaldırıldı"
msgstr[1] "Erişim Kaldırıldı"
msgid "Accessible"
msgstr "Erişilebilir"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "Etkin"
msgid "Add"
msgstr "Ekle"
msgid "Add Instance"
msgstr "Sunucu Ekle"
msgid "Add Parameter"
msgstr "Parametre Ekle"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"Yapılandırma grubuna parametreler ekle. Tüm parametreler eklendiğinde "
"değişiklikleri kalıcı yapmak için 'Değişiklikleri Uygula'ya tıklayın."
msgid "Advanced"
msgstr "Gelişmiş"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"Kullanıcının yalnızca bu istemciden bağlanmasına izin ver. Verilmezse "
"kullanıcı her yerden bağlanabilecek."
msgid "Allowed Host"
msgstr "İzinli Makine"
msgid "Allowed Host (optional)"
msgstr "İzinli İstemci (isteğe bağlı)"
msgid "Any Availability Zone"
msgstr "Herhangi Bir Kullanılırlık Bölgesi"
msgid "Applicable only if the volume size is specified."
msgstr "Yalnızca birim boyutu belirtilmişse uygulanabilir."
msgid "Applied changes to server"
msgstr "Değişiklikler sunucuya uygulandı"
msgid "Apply Changes"
msgstr "Değişiklikleri Uygula"
msgid "At least one of the new fields must be changed."
msgstr "Yeni alanların en az biri değişmeli."
msgid "Attach Configuration Group"
msgstr "Yapılandırma Grubu Ekle"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "Yapılandırma grubu \"%s\" ekleniyor"
msgid "Availability Zone"
msgstr "Kullanılırlık Bölgesi"
msgid "Available networks"
msgstr "Kullanılabilir ağlar"
msgid "Backup"
msgstr "Yedek"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "Yedekleme"
msgid "Backup Database"
msgstr "Veritabanını Yedekle"
msgid "Backup Details"
msgstr "Yedek Ayrıntıları"
msgid "Backup Details: {{ backup.name }}"
msgstr "Yedek Ayrıntıları: {{ backup.name }}"
msgid "Backup Duration"
msgstr "Yedek Süresi"
msgid "Backup File"
msgstr "Yedek Dosyası"
msgid "Backup File Location"
msgstr "Yedek Dosyası Konumu"
msgid "Backup Name"
msgstr "Yedek İsmi"
msgid "Backup Overview"
msgstr "Yedek Genel Görünümü"
msgid "Backups"
msgstr "Yedekler"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "Engellendi"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "İnşa Ediliyor"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "İnşa Ediliyor"
msgid "Cancel"
msgstr "İptal"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "Kök erişimi kapatılamıyor: %s"
msgid "Cannot grow cluster. No instances specified."
msgstr "Küme büyütülemiyor. Sunucu belirtilmemiş."
msgid "Character Set"
msgstr "Karakter Kümesi"
msgid "Choose a new instance flavor."
msgstr "Yeni bir sunucu niteliği seçin."
msgid "Choose initial state."
msgstr "İlk durumu seçin."
msgid "Close"
msgstr "Kapat"
msgid "Cluster Name"
msgstr "Küme İsmi"
msgid "Cluster Size"
msgstr "Küme Boyutu"
msgid "Clusters"
msgstr "Kümeler"
msgid "Collation"
msgstr "Harmanlama"
msgid "Comma separated list of databases to create"
msgstr "Oluşturulacak veritabanlarının virgülle ayrılmış listesi"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "Tamamlandı"
msgid "Configuration Defaults"
msgstr "Yapılandırma Öntanımları"
msgid "Configuration Group"
msgstr "Yapılandırma Grubu"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "Yapılandırma Grubu Ayrıntıları: {{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "Yapılandırma Grubu Sunucuları"
msgid "Configuration Group Name"
msgstr "Yapılandırma Grup İsmi"
msgid "Configuration Group Overview"
msgstr "Yapılandırma Grubu Genel Görünümü"
msgid "Configuration Group Values"
msgstr "Yapılandırma Grup Değerleri"
msgid "Configuration Groups"
msgstr "Yapılandırma Grupları"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr "Mevcut kopyanın yeni kopya kaynağı olarak terfisini onayla."
msgid "Connection Examples"
msgstr "Bağlantı Örnekleri"
msgid "Connection Information"
msgstr "Bağlantı Bilgisi"
msgid "Container"
msgstr "Kapsayıcı"
msgid "Create Backup"
msgstr "Yedek Oluştur"
msgid "Create Configuration Group"
msgstr "Yapılandırma Grubu Oluştur"
msgid "Create Database"
msgstr "Veritabanı Oluştur"
msgid "Create User"
msgstr "Kullanıcı Oluştur"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr ""
"İsteğe bağlı bir ilk kullanıcı oluşturun. Bu kullanıcının oluşturduğunuz tüm "
"veritabanlarına erişimi olacak."
msgid "Created"
msgstr "Oluşturuldu"
msgid "Created configuration group"
msgstr "Yapılandırma grubu oluşturuldu"
#, python-format
msgid "Created database \"%s\"."
msgstr "\"%s\" veritabanı oluşturuldu."
#, python-format
msgid "Created user \"%s\"."
msgstr "\"%s\" kullanıcısı oluşturuldu."
msgid "Current Replica"
msgstr "Mevcut Kopya"
msgid "Current Replica Source"
msgstr "Mevcut Kopya Kaynağı"
msgid "Current Size (GB)"
msgstr "Mevcut Boyut (GB)"
msgid "Current Task"
msgstr "Mevcut Görev"
msgid "DATABASE"
msgstr "VERİTABANI"
msgid "Database"
msgstr "Veritabanı"
msgid "Database Access"
msgstr "Veritabanı Erişimi"
msgid "Database Backups"
msgstr "Veritabanı Yedekleri"
msgid "Database Info"
msgstr "Veritabanı Bilgisi"
msgid "Database Instance"
msgstr "Veritabanı Sunucusu"
msgid "Database Name"
msgstr "Veritabanı Adı"
msgid "Database Port"
msgstr "Veritabanı Bağlantı Noktası"
msgid "Databases"
msgstr "Veritabanları"
msgid "Datastore"
msgstr "Verideposu"
msgid "Datastore Version"
msgstr "Verideposu Sürümü"
msgid "Defaults"
msgstr "Öntanımlılar"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "Yedeği Sil"
msgstr[1] "Yedekleri Sil"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "Kümeyi Sil"
msgstr[1] "Kümeleri Sil"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "Yapılandırma Grubunu Sil"
msgstr[1] "Yapılandırma Gruplarını Sil"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "Veritabanını Sil"
msgstr[1] "Veritabanlarını Sil"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "Silme Başarısız"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "Sunucuyu Sil"
msgstr[1] "Sunucuları Sil"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "Parametreyi Sil"
msgstr[1] "Parametreleri Sil"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "Kullanıcıyı Sil"
msgstr[1] "Kullanıcıları Sil"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "Yedek Silindi"
msgstr[1] "Yedekler Silindi"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "Yapılandırma Grubu Silindi"
msgstr[1] "Yapılandırma Grupları Silindi"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "Veritabanı Silindi"
msgstr[1] "Veritabanları Silindi"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "Parametre Silindi"
msgstr[1] "Parametreler Silindi"
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "Kullanıcı Silindi"
msgstr[1] "Kullanıcılar Silindi"
msgid "Deleted cluster is not recoverable."
msgstr "Silinen küme geri getirilebilir değil."
msgid "Deleted instances are not recoverable."
msgstr "Silinen sunucular geri getirilemez."
msgid "Description"
msgstr "Açıklama"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "Yapılandırma Grubunu Ayır"
msgstr[1] "Yapılandırma Gruplarını Ayır"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "Kopyayı Ayır"
msgstr[1] "Kopyaları Ayır"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "Yapılandırma Grubu Ayrıldı"
msgstr[1] "Yapılandırma Grupları Ayrıldı"
msgid "Details"
msgstr "Ayrıntılar"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "Günlüğü Kapat"
msgstr[1] "Günlükleri Kapat"
msgid "Disable Root"
msgstr "Root'u Kapat"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "Günlük Kapatıldı"
msgstr[1] "Günlükler Kapatıldı"
msgid "Discard Changes"
msgstr "Değişikliklerden Vazgeç"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "Günlüğü Sil"
msgstr[1] "Günlükleri Sil"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "Günlük Silindi"
msgstr[1] "Günlükler Silindi"
msgid "Download"
msgstr "İndir"
msgid "Download Backup"
msgstr "Yedeği İndir"
msgid "Edit User"
msgstr "Kullanıcı Düzenle"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "Kopya Kaynağını Çıkar"
msgstr[1] "Kopya Kaynaklarını Çıkar"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "Kopya Kaynağı Çıkarıldı"
msgstr[1] "Kopya Kaynakları Çıkarıldı"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "Günlüğü Etkinleştir"
msgstr[1] "Günlükleri Etkinleştir"
msgid "Enable Root"
msgstr "Root'u Etkinleştir"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "Günlük Etkinleştirildi"
msgstr[1] "Günlükler Etkinleştirildi"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "Hata"
msgid "Error applying changes"
msgstr "Değişiklikleri uygulamada hata"
msgid "Error creating database backup."
msgstr "Veritabanı yedeği oluşturmada hata."
msgid "Error deleting database on instance."
msgstr "Sunucudaki veritabanının silinmesinde hata."
#, python-format
msgid "Error downloading log file: %s"
msgstr "Günlük dosyası indirilirken hata: %s"
msgid "Error getting configuration group list."
msgstr "Yapılandırma grubu listesi alınamıyor."
msgid "Error getting database backup list."
msgstr "Veritabanı yedek listesi alınırken hata."
#, python-format
msgid "Error resetting parameters: %s"
msgstr "Parametreler yeniden ayarlanırken hata: %s"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "Başarısız"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "Başarısız"
msgid "Fault"
msgstr "Arıza"
msgid "Flavor"
msgstr "Nitelik"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "Git"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "Erişim İzni Ver"
msgstr[1] "Erişim İzni Ver"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "Erişim Verildi"
msgstr[1] "Erişim Verildi"
msgid "Grow Cluster"
msgstr "Kümeyi Büyüt"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "Kümeyi Büyüt: {{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "Root Hiç Etkinleştirilmiş mi"
msgid "Host"
msgstr "Sunucu"
msgid "Host or IP that the user is allowed to connect through."
msgstr "Kullanıcının bağlanmasına izni olan İstemci veya IP."
msgid "ID"
msgstr "Kimlik"
msgid "Incremental"
msgstr "Artan"
msgid "Incremental Backup"
msgstr "Artırma Yedeklemesi"
msgid "Info"
msgstr "Bilgi"
msgid "Information"
msgstr "Bilgi"
msgid "Initial Admin User"
msgstr "İlk Yönetici Kullanıcı"
msgid "Initial Databases"
msgstr "İlk Veritabanları"
msgid "Initial Volume Size"
msgstr "Birim Başlangıç Boyutu"
msgid "Initial admin user to add"
msgstr "Eklenecek ilk yönetici kullanıcı"
msgid "Initialize Databases"
msgstr "Veritabanlarını İlklendir"
msgid "Instance Name"
msgstr "Sunucu Adı"
msgid "Instance Type"
msgstr "Sunucu Türü"
msgid "Instances"
msgstr "Sunucular"
msgid "Is a Replica Of"
msgstr "Şunun Kopyası"
msgid "Launch"
msgstr "Başlat"
msgid "Launch Cluster"
msgstr "Kümeyi Başlat"
msgid "Launch Database"
msgstr "Veritabanını Başlat"
msgid "Launch Instance"
msgstr "Sunucu Başlat"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "%(count)s \"%(name)s\" isimli başlatıldı."
#, python-format
msgid "Launched cluster \"%s\""
msgstr "\"%s\" kümesi başlatıldı"
msgid "Locality"
msgstr "Çevre"
msgid "Log"
msgstr "Günlük"
msgid "Log Contents"
msgstr "Günlük İçeriği"
msgid "Log Length"
msgstr "Günlük Uzunluğu"
msgid "Log length must be a nonnegative integer."
msgstr "Günlük uzunluğu negatif olmayan tam sayı olmalı."
msgid "Log: "
msgstr "Günlük: "
msgid "Logs"
msgstr "Günlükler"
msgid "Manage Access"
msgstr "Erişimi Yönet"
msgid "Manage Root"
msgstr "Root'u Yönet"
msgid "Manage Root Access"
msgstr "Kök Erişimini Yönet"
msgid "Management Console"
msgstr "Yönetim Konsolu"
msgid "Master Instance Name"
msgstr "Ana Sunucu İsmi"
msgid "Message"
msgstr "İleti"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"Ağlar 'Kullanılabilri Ağlar'dan 'Seçili Ağlar'a düğmeye tıklayarak, ya da "
"sürükleyip bırakarak taşıyın. NIC sırasını da sürükleyip bırakarak "
"değiştirebilirsiniz."
msgid "Name"
msgstr "İsim"
msgid "Network"
msgstr "Ağ"
msgid "Network attached to instance."
msgstr "Ağ sunucuya eklendi."
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "Yeni"
msgid "New Flavor"
msgstr "Yeni Nitelik"
msgid "New Host"
msgstr "Yeni Sunucu"
msgid "New Name"
msgstr "Yeni İsim"
msgid "New Password"
msgstr "Yeni Parola"
msgid "New Size (GB)"
msgstr "Yeni Boyut (GB)"
msgid "New password for cluster access."
msgstr "Küme erişimi için yeni parola."
msgid "New size for volume must be greater than current size."
msgstr "Birimin yeni boyutu mevcut boyutundan büyük olmalıdır."
msgid "No availability zones found"
msgstr "Kullanılırlık bölgesi bulunamadı"
msgid "No backups available"
msgstr "Kullanılabilir yedek yok"
msgid "No configuration groups available"
msgstr "Kullanılabilir yapılandırma grubu yok"
msgid "No configurations available"
msgstr "Kullanılabilir yapılandırma yok"
msgid "No flavors available"
msgstr "Kullanılabilir nitelik yok"
msgid "No instances available"
msgstr "Kullanılabilir sunucu yok"
msgid "No volume type"
msgstr "Birim türü yok"
msgid "None"
msgstr "Hiçbiri"
msgid "Not Assigned"
msgstr "Atanmamış"
msgid "Not Found"
msgstr "Bulunamadı"
msgid "Not available"
msgstr "Kullanılabilir değil"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr ""
"Not: Bir sunucuya kök erişimini etkinleştir. Root kullanıcı zaten etkinse "
"yeni parola üretilir."
msgid "Number of Instances"
msgstr "Sunucu Sayısı"
msgid "Number of Shards"
msgstr "Parça Sayısı"
msgid "Number of instances in the cluster."
msgstr "Kümedeki sunucu sayısı."
msgid "Number of instances in the cluster. (Read only)"
msgstr "Kümedeki sunucu sayısı. (Salt okunur)"
msgid "Number of shards. (Read only)"
msgstr "Parça sayısı. (Salt okunur)"
msgid "Old Flavor"
msgstr "Eski Nitelik"
msgid "Optional Backup Description"
msgstr "İsteğe Bağlı Yedek Tanımı"
msgid "Optional character set for the database."
msgstr "Veritabanı için isteğe bağlı karakter kümesi."
msgid "Optional collation type for the database."
msgstr "Veritabanı için isteğe bağlı harmanlama türü."
msgid "Optional comma separated list of databases user has access to."
msgstr ""
"İsteğe bağlı, kullanıcının erişimi olan veritabanlarının virgülle ayrılmış "
"listesi."
msgid "Optional datastore specific type of the instance."
msgstr "İsteğe bağlı, sunucunun verideposuna özel türü."
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr ""
"Kümedeki bir sunucudan diğerine ilişkiyi tanımlayan isteğe bağlı "
"verideposuna özel değer."
msgid "Optional host of user."
msgstr "İsteğe bağlı, kullanıcı istemcisi."
msgid "Optional name of the instance."
msgstr "Sunucunun isteğe bağlı ismi."
msgid "Optional parent backup"
msgstr "İsteğe bağlı üst yedek"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr ""
"İsteğe bağlı olarak bu veritebanını önceki bir yedekten, ya da başka bir "
"veritabanı sunucusunun kopyası olarak başlat."
msgid "Optionally provide a character set and collation for the database."
msgstr ""
"İsteğe bağlı olarak veritabanı için bir karakter kümesi ve harman sağlayın."
msgid "Optionally provide a comma separated list of databases to create:"
msgstr ""
"İsteğe bağlı olarak oluşturulacak veritabanlarının virgülle ayrılmış "
"listesini sağlayın:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr ""
"İsteğe bağlı olarak kullanıcı sunucusunu ve erişim olan veritabanlarının "
"listesini sağlayın."
msgid "Overview"
msgstr "Genel Görünüm"
msgid "PASSWORD"
msgstr "PAROLA"
msgid "Parameter"
msgstr "Parametre"
msgid "Parameters"
msgstr "Parametreler"
msgid "Parent Backup"
msgstr "Üst Yedek"
msgid "Password"
msgstr "Parola"
msgid "Password (required)"
msgstr "Parola (gerekli)"
msgid "Password for root user must be specified."
msgstr "Root kullanıcı için parola belirtilmeli."
msgid "Password for root user."
msgstr "Root kullanıcısı için parola."
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr ""
"Parola yalnızca root etkinleştirildiğinde ya da sıfırlandığında görünür."
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr ""
"Lütfen dikkat.Yeni değer mevcut birim boyutundan büyük olmalı."
msgid "Promote"
msgstr "Terfi et"
msgid "Promote to Replica Source"
msgstr "Kopya Kaynağı olarak yükselt"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "Kopya \"%s\" yeni kopya kaynağı olarak yükseltildi."
msgid "Property"
msgstr "Özellike"
msgid "Publish"
msgstr "Yayımla"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "Günlüğü Yayımla"
msgstr[1] "Günlükleri Yayımla"
msgid "Publishable (bytes)"
msgstr "Yayımlanabilir (bayt)"
msgid "Published (bytes)"
msgstr "Yayımlandı (bayt)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "Günlük Yayımlandı"
msgstr[1] "Günlükler Yayımlandı"
msgid "RAM"
msgstr "RAM"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "Yeniden başlatılıyor"
msgid "Related To"
msgstr "Bununla İlişkili"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "Sunucuyu Kaldır"
msgstr[1] "Sunucuları Kaldır"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "Sunucu Kaldırıldı"
msgstr[1] "Sunucular Kaldırıldı"
msgid "Removed instances from cluster."
msgstr "Sunucular kümeden kaldırıldı."
msgid "Replica Count"
msgstr "Kopya Sayısı"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "Kopya Ayrıldı"
msgstr[1] "Kopyalar Ayrıldı"
msgid "Replicas"
msgstr "Koypalar"
msgid "Replicate from Instance"
msgstr "Sunucudan Geri Yükle"
msgid "Replication"
msgstr "Çoğaltma"
msgid "Reset Parameters"
msgstr "Parametreleri Sıfırla"
msgid "Reset Root Password"
msgstr "Kök Parolayı Sıfırla"
msgid "Resize Database Instance"
msgstr "Veritabanı Sunucusunu Yeniden Boyutlandır"
msgid "Resize Database Volume"
msgstr "Veritabanı Birimini Yeniden Boyutlandır"
msgid "Resize Instance"
msgstr "Sunucuyu Yeniden Boyutlandır"
msgid "Resize Volume"
msgstr "Birimi Yeniden Boyutlandır"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "Yeniden boyutlandırılıyor"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "\"%s\" sunucusu yeniden boyutlandırılıyor"
#, python-format
msgid "Resizing volume \"%s\""
msgstr "\"%s\" birimi yeniden boyutlandırılıyor"
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "Sunucuyu Yeniden Başlat"
msgstr[1] "Sunucuları Yeniden Başlat"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "Yeniden Başlatma Gerekiyor"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "Sunucu Yeniden Başlatıldı"
msgstr[1] "Sunucular Yeniden Başlatıldı"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr ""
"Yeniden başlatılan sunucular kalıcı depolamaya kaydedilmemiş tüm veriyi "
"kaybeder."
msgid "Restore Backup"
msgstr "Yedeği Geri Yükle"
msgid "Restore from Backup"
msgstr "Yedekten Geri Yükle"
msgid "Return to Log List"
msgstr "Günlük Listesine Dön"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "Erişimi Kaldır"
msgstr[1] "Erişimi Kaldır"
msgid "Root Enabled"
msgstr "Root Etkin"
msgid "Root Password"
msgstr "Kök Parolası"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "\"%s\" kümesi için kök parolası güncellendi"
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "Kaydediliyor"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "Kümenin Daraltılması Zamanlandı"
msgstr[1] "Kümenin Daraltılması Zamanlandı"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "Yedek \"%(name)s\" zamanlandı."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "Kümenin silinmesi zamanlandı"
msgstr[1] "Kümelerin silinmesi zamanlandı"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "Sunucunun silinmesi zamanlandı"
msgstr[1] "Sunucuların silinmesi zamanlandı"
msgid "Scheduled growing of cluster."
msgstr "Kümenin genişletilmesi zamanlandı."
msgid "Select a backup to restore"
msgstr "Geri yüklenecek bir yedek seçin"
msgid "Select a configuration group"
msgstr "Bir yapılandırma grubu seçin"
msgid "Select a configuration group to attach to the database instance."
msgstr "Veritabanı sunucusuna eklemek için bir yapılandırma grubu seçin."
msgid "Select a master instance"
msgstr "Bir ana sunucu seçin"
msgid "Select a new flavor"
msgstr "Yeni bir nitelik seçin"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr ""
"Bir parametre seçin ve yapılandırma parametresi için bir değer sağlayın."
msgid "Select backup"
msgstr "Yedek seç"
msgid "Select configuration"
msgstr "Yapılandırma seçin"
msgid "Select configuration group"
msgstr "Yapılandırma grubunu seçin"
msgid "Select datastore type and version"
msgstr "Verideposu türü ve sürümü seçin"
msgid "Select instance"
msgstr "Sunucu seçin"
msgid "Select parent backup"
msgstr "Üst yedeği seçin"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "Kümeden kaldırılacak sunucu(lar)ı seçin."
msgid "Selected networks"
msgstr "Seçili ağlar"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "Kümeyi Daralt"
msgstr[1] "Kümeyi Daralt"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "Kümeyi Daralt: {{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "Kümeyi daraltmak geri dönülebilir değildir."
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "Kapalı"
msgid "Size"
msgstr "Boyut"
msgid "Size of image to launch."
msgstr "Başlatılacak imajın boyutu."
msgid "Size of the volume in GB."
msgstr "Birimin GB olarak boyutu."
msgid "Source for Initial State"
msgstr "İlk Durum için Kaynak"
msgid "Specify a new flavor for the database instance."
msgstr "Veritabanı sunucusu için yeni nitelik belirt."
msgid "Specify a new name, new password or new host name for the user."
msgstr "Kullanıcı için yeni bir isim, yeni parola veya yeni istemci belirtin."
msgid "Specify the details for launching an instance."
msgstr "Sunucu başlatmak için ayrıntıları belirtin."
msgid "Specify the details for the database backup."
msgstr "Veritabanı yedeği için ayrıntıları belirtin."
msgid "Specify the details of the instance to be added to the cluster."
msgstr "Kümeye eklenecek sunucu ayrıntılarını belirtin."
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"Kümeye eklenecek sunucuları belirtin. Tüm sunucular belirtildiğinde büyütme "
"işlemini başlatmak için 'Kümeyi Büyüt'e tıklayın."
msgid "Specify the name of the new database."
msgstr "Yeni veritabanı ismini belirtin."
msgid "Specify the name of the new user and password."
msgstr "Yeni kullanıcının ismini ve parolasını belirtin."
msgid "Specify the new root password for vertica cluster."
msgstr "Vertica kümesi için yeni root parolasını belirtin."
msgid "Specify the new volume size for the database instance."
msgstr "Veritabanı sunucusu için yeni birim belirt."
msgid "Specify the number of replicas to be created"
msgstr "Oluşturulacak kopya sayısını belirtin"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"İlerde kopyalanan sunucuların aynı hipervizörde mi (benzeşim) farklı "
"hipervizörlerde mi (anti-benzeşim) oluşturulacağını belirt. Bu değer "
"başlatılacak sunucu bir kopya ise göz ardı edilir."
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"Kümedeki sunucuların aynı hipervizör (benzeşim) üzerinde mi farklı "
"hipervizörler üzerinde mi (anti-benzeşim) oluşturulacağını belirtin."
msgid "Specs"
msgstr "Özellikler"
msgid "Status"
msgstr "Durum"
msgid "Status if root was ever enabled for an instance."
msgstr "Root daha önce sunucu için etkinleştirilmiş mi durumu."
msgid "Successfully added parameter"
msgstr "Parametre başarıyla eklendi"
msgid "Successfully disabled root access."
msgstr "Root erişimi başarıyla kapatıldı."
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"'Sunucu Türü' ve 'İlişkili' alanları verideposuna özeldir ve isteğe "
"bağlıdır. Bu alanların kullanımıyla ilgili ek bilgi için Trove "
"belgelendirmesine göz atın."
msgid "The flavor must be specified."
msgstr "Nitelik belirtilmeli."
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr ""
"İsim alanı isteğe bağlıdır. Alan boş bırakılırsa küme büyütüldüğünde bir "
"isim üretilir."
msgid "The number of instances must be greater than 1."
msgstr "Sunucu sayısı 1'den büyük olmalı."
msgid "The number of shards must be greater than 1."
msgstr "Parça sayısı 1'den büyük olmalı."
msgid "There was a problem enabling root."
msgstr "Root etkinleştirilirken bir sorun oldu."
msgid "This action cannot be undone."
msgstr "Bu eylem geri alınamaz."
msgid "Type"
msgstr "Tür"
msgid "Type and version of datastore."
msgstr "Verideposunun türü ve sürümü."
msgid "USERNAME"
msgstr "KULLANICIADI"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "%(action)s yapılamadı: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "Yeni parametre eklenemiyor: %s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "Yapılandırma grubu eklenemiyor. %s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "Yapılandırma grubu oluşturulamadı. %s"
#, python-format
msgid "Unable to create database. %s"
msgstr "Veritabanı oluşturulamadı. %s"
msgid "Unable to create list of parameters."
msgstr "Parametre listesi oluşturulamadı."
#, python-format
msgid "Unable to create user. %s"
msgstr "Kullanıcı oluşturulamıyor. %s"
msgid "Unable to determine if instance root is enabled."
msgstr "Sunucu root'unun etkin olup olmadığı belirlenemiyor."
msgid "Unable to find backup!"
msgstr "Yedek bulunamadı!"
msgid "Unable to find configuration group!"
msgstr "Yapılandırma grubu bulunamadı!"
msgid "Unable to find master instance!"
msgstr "Ana sunucu bulunamadı!"
msgid "Unable to get configuration data."
msgstr "Yapılandırma verisi alınamıyor."
msgid "Unable to get database backup data."
msgstr "Veritabanı yedek verisi alınamadı."
msgid "Unable to get databases data."
msgstr "Veritabanı verisi alınamadı."
msgid "Unable to get instances data."
msgstr "Sunucunun verisi alınamıyor."
msgid "Unable to get user access data."
msgstr "Kullanıcı erişim verisi alınamadı."
msgid "Unable to get user data."
msgstr "Kullanıcı verisi alınamadı."
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "Küme büyütülemiyor. %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "Küme büyütülemiyor: %s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "%(count)s \"%(name)s\" isimli başlatılamadı."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "Küme başlatılamadı. %s"
msgid "Unable to list database backups for parent."
msgstr "Üst için veritabanı yedekleri listelenemedi."
msgid "Unable to list database instances to backup."
msgstr "Yedek alınacak veritabanı sunucuları listelenemedi."
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"{0} günlüğü yüklenemedi\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "\"{1}\" sunucusu için {0} günlüğü yüklenemedi."
msgid "Unable to obtain datastore versions."
msgstr "Verideposu sürümleri edinilemedi."
msgid "Unable to obtain datastores."
msgstr "Veridepoları edinilemedi."
msgid "Unable to obtain flavors."
msgstr "Nitelikler edinilemedi."
msgid "Unable to obtain information on root user"
msgstr "Kök kullanıcı hakkında bilgi edinilemedi"
msgid "Unable to obtain list of parameters."
msgstr "Parametre listesi edinilemedi."
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "Kopya yeni kopya kaynağı olarak yükseltilemedi. \"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "Sunucular kümeden kaldırılamadı: %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "Parola sıfırlanamadı. %s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "Sunucu yeniden boyutlandırılamıyor. %s"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "Birim yeniden boyutlandırılamıyor. %s"
msgid "Unable to retrieve accessible databases."
msgstr "Erişilebilir veritabanları alınamıyor."
msgid "Unable to retrieve availability zones."
msgstr "Kullanılırlık bölgesi alınamadı."
msgid "Unable to retrieve cluster details."
msgstr "Küme ayrıntıları alınamıyor."
msgid "Unable to retrieve database clusters."
msgstr "Veritabanı kümeleri alınamıyor."
msgid "Unable to retrieve database instances."
msgstr "Veritabanı sunucuları alınamadı."
msgid "Unable to retrieve database size information."
msgstr "Veritabanı boyut bilgisi alınamıyor."
msgid "Unable to retrieve databases."
msgstr "Veritabanları alınamadı."
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "Yedek için ayrıntılar alınamadı: %s"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "Yapılandırma grubu için ayrıntılar alınamadı: %s"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "Veritabanı kümesi için ayrıntılar alınamıyor: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "Veritabanı sunucusu için ayrıntılar alınamadı: %s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "Üst yedek için ayrıntılar alınamadı: %s"
msgid "Unable to retrieve flavors."
msgstr "Nitelikler alınamadı."
msgid "Unable to retrieve instance details."
msgstr "Sunucu ayrıntıları alınamadı."
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"Günlüklerin listesi alınamadı.\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "Ağlar alınamadı."
#, python-format
msgid "Unable to update user. %s"
msgstr "Kullanıcı güncellenemedi. %s"
msgid "Unknown"
msgstr "Bilinmiyor"
msgid "Updated"
msgstr "Güncellendi"
#, python-format
msgid "Updated user \"%s\"."
msgstr "\"%s\" kullanıcısı güncellendi."
msgid "User Name"
msgstr "Kullanıcı Adı"
msgid "Username (required)"
msgstr "Kullanıcı adı (gerekli)"
msgid "Users"
msgstr "Kullanıcılar"
msgid "Value"
msgstr "Değer"
msgid "Value must be \"true\" or \"false\"."
msgstr "Değer \"doğru\" ya da \"yanlış\" olmalı."
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "Değer %(min)s ve %(max)s arasında bir sayı olmalı."
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "Değer %s'e eşit ya da daha büyük bir sayı olmalı."
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "Değer %s'e eşit ya da daha küçük bir sayı olmalı."
msgid "Value must be a number."
msgstr "Değer bir sayı olmalı."
#, python-format
msgid "Value must be of type %s."
msgstr "Değer %s türünde olmalı."
msgid "Values"
msgstr "Değerler"
msgid "View Full Log"
msgstr "Tam Günlüğü Göster"
msgid "View Log"
msgstr "Günlüğü Görüntüle"
msgid "Volume"
msgstr "Birim"
msgid "Volume Size"
msgstr "Birim Boyutu"
msgid "Volume Type"
msgstr "Birim Türü"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "%(action)s için yetkili değilsiniz: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"Bir üst yedek seçerek artımlı yedek alabilirsiniz. Ancak, "
"tüm veritabanları artarak yedek alımını desteklemiyor, bu durumda bu işlem "
"hatayla sonlanır."
msgid "You must select a datastore type and version."
msgstr "Bir verideposu türü ve sürümü seçmelisiniz."
msgid "You must select a flavor."
msgstr "Bir nitelik seçmelisiniz."
msgid "You must specify a password if you create a user."
msgstr "Kullanıcı oluşturursanız bir parola belirtmelisiniz."
msgid "You must specify at least one database if you create a user."
msgstr "Kullanıcı oluşturursanız en az bir veritabanı belirtmelisiniz."
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "sunucu"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/tr_TR/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001707 00000000000 027455 0 ustar 00corey corey 0000000 0000000 # işbaran akçayır , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-05-24 02:16+0000\n"
"Last-Translator: Copied by Zanata \n"
"Language-Team: Turkish (Turkey)\n"
"Language: tr_TR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Zanata 4.3.3\n"
"X-POOTLE-MTIME: 1495635326.000000\n"
msgid "Created"
msgstr "Oluşturuldu"
msgid "Database"
msgstr "Veri tabanı"
msgid "Datastore"
msgstr "Veri deposu"
msgid "Datastore Version"
msgstr "Veri Deposu Sürümü"
msgid "Incremental"
msgstr "Artan"
msgid "Name"
msgstr "İsim"
msgid "Unable to retrieve the Backups."
msgstr "Yedekler alınamıyor."
msgid "status"
msgstr "durum"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/zh_CN/ 0000755 0001750 0001750 00000000000 00000000000 023473 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5334342
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/zh_CN/LC_MESSAGES/ 0000755 0001750 0001750 00000000000 00000000000 025260 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/zh_CN/LC_MESSAGES/django.po 0000644 0001750 0001750 00000101543 00000000000 027066 0 ustar 00corey corey 0000000 0000000 # Andreas Jaeger , 2016. #zanata
# BillXiang <1138647106@qq.com>, 2016. #zanata
# Yu Long , 2016. #zanata
# sunanchen , 2016. #zanata
# Bin , 2017. #zanata
# Gaoxiao Zhu , 2017. #zanata
# TigerFang , 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-12-28 02:42+0000\n"
"Last-Translator: TigerFang \n"
"Language-Team: Chinese (China)\n"
"Language: zh_CN\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
#, python-format
msgid "%(name)s | %(RAM)s RAM"
msgstr "%(name)s | %(RAM)s RAM"
#, python-format
msgid "%(name)s | %(RAM)s RAM | %(instances)s instances"
msgstr "%(name)s | %(RAM)s 内存 | %(instances)s 实例"
msgid "-"
msgstr "-"
msgid ""
"Please note: It may be necessary to reboot the database "
"instance for this new configuration group to take effect."
msgstr "请注意:可能需要重启数据库实例来使新配置组生效。"
msgid ""
"Please note: The value specified in the Volume Size field "
"should be greater than 0, however, some configurations do not support "
"specifying volume size. If specifying the volume size results in an error "
"stating volume support is not enabled, enter 0."
msgstr ""
"请注意: 云硬盘大小字段中指定的数字必须大于零,但是,有一些"
"配置不支持指定云硬盘大小。如果指定云硬盘大小会导致不支持云硬盘的错误,则输入"
"0。"
msgid "A backup must be selected!"
msgstr "必须选择一个备份!"
msgid "A master instance must be selected!"
msgstr "必须选择一个主实例!"
msgid "A new name or new password or new host must be specified."
msgstr "必须指定新名称、新密码或新主机。"
msgid "Access Revoked to"
msgid_plural "Access Revoked to"
msgstr[0] "撤销访问"
msgid "Accessible"
msgstr "可访问的"
msgctxt "Current status of a Database Instance"
msgid "Active"
msgstr "激活"
msgid "Add"
msgstr "添加"
msgid "Add Instance"
msgstr "添加实例"
msgid "Add Parameter"
msgstr "增加参数"
msgid ""
"Add parameters to the configuration group. When all the parameters are "
"added click 'Apply Changes' to persist changes."
msgstr ""
"给配置组增加参数。当所有参数都增加之后点击'Apply Changes'来应用这些改变"
msgid "Advanced"
msgstr "高级"
msgid ""
"Allow the user to connect from this host only. If not provided this user "
"will be allowed to connect from anywhere."
msgstr ""
"只允许用户从本机进行连接。如果不提供主机信息,用户将被允许从任何位置进行连"
"接。"
msgid "Allowed Host"
msgstr "允许的主机"
msgid "Allowed Host (optional)"
msgstr "允许主机(可选)"
msgid "Any Availability Zone"
msgstr "所有可用区"
msgid "Applicable only if the volume size is specified."
msgstr "只有卷大小指定后才可以应用。"
msgid "Applied changes to server"
msgstr "对主机应用这些改变"
msgid "Apply Changes"
msgstr "应用改变"
msgid "At least one of the new fields must be changed."
msgstr "至少修改一个新的字段。"
msgid "Attach Configuration Group"
msgstr "连接配置组"
#, python-format
msgid "Attaching Configuration group \"%s\""
msgstr "正在连接配置组\"%s\""
msgid "Availability Zone"
msgstr "可用区"
msgid "Available networks"
msgstr "可用网络"
msgid "Backup"
msgstr "备份"
msgctxt "Current status of a Database Instance"
msgid "Backup"
msgstr "备份"
msgid "Backup Database"
msgstr "备份数据库"
msgid "Backup Details"
msgstr "备份详情"
msgid "Backup Details: {{ backup.name }}"
msgstr "备份详情: {{ backup.name }}"
msgid "Backup Duration"
msgstr "备份周期"
msgid "Backup File"
msgstr "备份文件"
msgid "Backup File Location"
msgstr "备份文件位置"
msgid "Backup Name"
msgstr "备份名称"
msgid "Backup Overview"
msgstr "备份概览"
msgid "Backups"
msgstr "备份"
msgctxt "Current status of a Database Instance"
msgid "Blocked"
msgstr "阻塞"
msgctxt "Current status of a Database Backup"
msgid "Building"
msgstr "构建中"
msgctxt "Current status of a Database Instance"
msgid "Building"
msgstr "构建中"
msgid "Cancel"
msgstr "取消"
#, python-format
msgid "Cannot disable root access: %s"
msgstr "不能够即你用root用户访问:%s"
msgid "Cannot grow cluster. No instances specified."
msgstr "无法扩大集群。没有指定实例。"
msgid "Character Set"
msgstr "字符集"
msgid "Choose a new instance flavor."
msgstr "选择一新的实例类型。"
msgid "Choose initial state."
msgstr "选择初始化状态"
msgid "Close"
msgstr "关闭"
msgid "Cluster Name"
msgstr "集群名称"
msgid "Cluster Size"
msgstr "集群大小"
msgid "Clusters"
msgstr "集群"
msgid "Collation"
msgstr "排序"
msgid "Comma separated list of databases to create"
msgstr "逗号分隔的将创建数据库的列表"
msgctxt "Current status of a Database Backup"
msgid "Completed"
msgstr "完成"
msgid "Configuration Defaults"
msgstr "默认配置"
msgid "Configuration Group"
msgstr "配置组"
msgid "Configuration Group Details: {{configuration.name}}"
msgstr "配置组详情:{{configuration.name}}"
msgid "Configuration Group Instances"
msgstr "配置组实例"
msgid "Configuration Group Name"
msgstr "配置组名称"
msgid "Configuration Group Overview"
msgstr "配置组概览"
msgid "Configuration Group Values"
msgstr "配置组值"
msgid "Configuration Groups"
msgstr "配置组"
msgid ""
"Confirm the current replica is to be promoted as the new replica source."
msgstr "确认设置当前副本为新副本源"
msgid "Connection Examples"
msgstr "连接举例"
msgid "Connection Information"
msgstr "连接信息"
msgid "Container"
msgstr "容器"
msgid "Create Backup"
msgstr "创建备份"
msgid "Create Configuration Group"
msgstr "创建配置组"
msgid "Create Database"
msgstr "创建数据库"
msgid "Create User"
msgstr "创建用户"
msgid ""
"Create an optional initial user. This user will have access to all databases "
"you create."
msgstr "创建可选的初始用户。这个用户将可以访问你创建的所有数据库。"
msgid "Created"
msgstr "已创建"
msgid "Created configuration group"
msgstr "创建配置组"
#, python-format
msgid "Created database \"%s\"."
msgstr "创建的数据库 \"%s\"。"
#, python-format
msgid "Created user \"%s\"."
msgstr "创建用户\"%s\"。"
msgid "Current Replica"
msgstr "当前副本"
msgid "Current Replica Source"
msgstr "当前副本源"
msgid "Current Size (GB)"
msgstr "当前大小(GB)"
msgid "Current Task"
msgstr "当前任务"
msgid "DATABASE"
msgstr "数据库"
msgid "Database"
msgstr "数据库"
msgid "Database Access"
msgstr "数据库访问"
msgid "Database Access for: {{ user_name }}@{{user_host}}"
msgstr "使用此用户{{ user_name }}访问{{user_host}}上的数据库"
msgid "Database Backups"
msgstr "数据库备份"
msgid "Database Info"
msgstr "数据库信息"
msgid "Database Instance"
msgstr "数据库实例"
msgid "Database Name"
msgstr "数据库名称"
msgid "Database Port"
msgstr "数据库端口"
msgid "Databases"
msgstr "数据库"
msgid "Datastore"
msgstr "数据存储"
msgid "Datastore Version"
msgstr "数据存储版本"
msgid "Defaults"
msgstr "默认值"
msgid "Delete Backup"
msgid_plural "Delete Backups"
msgstr[0] "删除备份"
msgid "Delete Cluster"
msgid_plural "Delete Clusters"
msgstr[0] "删除集群"
msgid "Delete Configuration Group"
msgid_plural "Delete Configuration Groups"
msgstr[0] "删除配置组"
msgid "Delete Database"
msgid_plural "Delete Databases"
msgstr[0] "已删除的数据库"
msgctxt "Current status of a Database Backup"
msgid "Delete Failed"
msgstr "删除失败"
msgid "Delete Instance"
msgid_plural "Delete Instances"
msgstr[0] "删除实例"
msgid "Delete Parameter"
msgid_plural "Delete Parameters"
msgstr[0] "删除参数"
msgid "Delete User"
msgid_plural "Delete Users"
msgstr[0] "删除用户"
msgid "Deleted Backup"
msgid_plural "Deleted Backups"
msgstr[0] "已删除的备份"
msgid "Deleted Configuration Group"
msgid_plural "Deleted Configuration Groups"
msgstr[0] "已删除的配置组"
msgid "Deleted Database"
msgid_plural "Deleted Databases"
msgstr[0] "已删除的数据库"
msgid "Deleted Parameter"
msgid_plural "Deleted Parameters"
msgstr[0] "已删除的参数 "
msgid "Deleted User"
msgid_plural "Deleted Users"
msgstr[0] "已删除的用户"
msgid "Deleted cluster is not recoverable."
msgstr "删除的集群无法恢复。"
msgid "Deleted instances are not recoverable."
msgstr "删除实例是不可恢复的。"
msgid "Description"
msgstr "描述"
msgid "Detach Configuration Group"
msgid_plural "Detach Configuration Groups"
msgstr[0] "分离配置组"
msgid "Detach Replica"
msgid_plural "Detach Replicas"
msgstr[0] "分离镜像"
msgid "Detached Configuration Group"
msgid_plural "Detached Configuration Groups"
msgstr[0] "已分离的配置组"
msgid "Details"
msgstr "详情"
msgid "Disable Log"
msgid_plural "Disable Logs"
msgstr[0] "禁用日志"
msgid "Disable Root"
msgstr "禁用root"
msgid "Disabled Log"
msgid_plural "Disabled Logs"
msgstr[0] "已禁用日志"
msgid "Discard Changes"
msgstr "放弃改变"
msgid "Discard Log"
msgid_plural "Discard Logs"
msgstr[0] "废弃日志"
msgid "Discarded Log"
msgid_plural "Discarded Logs"
msgstr[0] "已废弃日志"
msgid "Download"
msgstr "下载"
msgid "Download Backup"
msgstr "下载备份"
msgid "Edit User"
msgstr "编辑用户"
msgid "Eject Replica Source"
msgid_plural "Eject Replica Sources"
msgstr[0] "删除副本源"
msgid "Ejected Replica Source"
msgid_plural "Ejected Replica Sources"
msgstr[0] "已删除的副本源"
msgid "Enable Log"
msgid_plural "Enable Logs"
msgstr[0] "启用日志"
msgid "Enable Root"
msgstr "启动root"
msgid "Enabled Log"
msgid_plural "Enabled Logs"
msgstr[0] "已启用日志"
msgctxt "Current status of a Database Instance"
msgid "Error"
msgstr "错误"
msgid "Error applying changes"
msgstr "应用改变错误"
msgid "Error creating database backup."
msgstr "创建数据库备份错误"
msgid "Error deleting database on instance."
msgstr "在实例上删除数据库出错。"
#, python-format
msgid "Error downloading log file: %s"
msgstr "下载日志文件: %s错误"
msgid "Error getting configuration group list."
msgstr "获取配置组列表错误"
msgid "Error getting database backup list."
msgstr "获取数据库备份列表错误。"
#, python-format
msgid "Error resetting parameters: %s"
msgstr "重置参数:%s错误"
msgctxt "Current status of a Database Backup"
msgid "Failed"
msgstr "失败"
msgctxt "Current status of a Database Instance"
msgid "Failed"
msgstr "失败"
msgid "Fault"
msgstr "故障"
msgid "Flavor"
msgstr "云主机类型"
msgid "GB"
msgstr "GB"
msgid "Go"
msgstr "执行"
msgid "Grant Access"
msgid_plural "Grant Access"
msgstr[0] "授权"
msgid "Granted Access to"
msgid_plural "Granted Access to"
msgstr[0] "授权给"
msgid "Grow Cluster"
msgstr "扩大集群"
msgid "Grow Cluster: {{cluster_name}}"
msgstr "扩大集群:{{cluster_name}}"
msgid "Has Root Ever Been Enabled"
msgstr "启用Root"
msgid "Host"
msgstr "主机"
msgid "Host or IP that the user is allowed to connect through."
msgstr "允许用户用于连接的主机或者IP。"
msgid "ID"
msgstr "ID"
msgid "Incremental"
msgstr "增量"
msgid "Incremental Backup"
msgstr "增量备份"
msgid "Info"
msgstr "信息"
msgid "Information"
msgstr "信息"
msgid "Initial Admin User"
msgstr "初始管理员"
msgid "Initial Databases"
msgstr "初始化数据库"
msgid "Initial Volume Size"
msgstr "初始云硬盘大小"
msgid "Initial admin user to add"
msgstr "增加初始管理员"
msgid "Initialize Databases"
msgstr "初始化数据库"
msgid "Instance Name"
msgstr "实例名字"
msgid "Instance Type"
msgstr "实例类型"
msgid "Instances"
msgstr "实例"
msgid "Is a Replica Of"
msgstr "副本"
msgid "Launch"
msgstr "启动"
msgid "Launch Cluster"
msgstr "启动集群"
msgid "Launch Database"
msgstr "启动数据库"
msgid "Launch Instance"
msgstr "启动实例"
#, python-format
msgid "Launched %(count)s named \"%(name)s\"."
msgstr "启动了%(count)s 名称\"%(name)s\"。"
#, python-format
msgid "Launched cluster \"%s\""
msgstr "启动集群\"%s\""
msgid "Locality"
msgstr "地域"
msgid "Log"
msgstr "日志"
msgid "Log Contents"
msgstr "日志内容"
msgid "Log Length"
msgstr "日志长度"
msgid "Log length must be a nonnegative integer."
msgstr "日志长度必须为非负整数值。"
msgid "Log: "
msgstr "日志:"
msgid "Logs"
msgstr "日志"
msgid "Manage Access"
msgstr "管理访问"
msgid "Manage Root"
msgstr "管理Root"
msgid "Manage Root Access"
msgstr "管理Root访问"
msgid "Management Console"
msgstr "管理控制台"
msgid "Master Instance Name"
msgstr "主实例名称"
msgid "Message"
msgstr "消息"
msgid ""
"Move networks from 'Available Networks' to 'Selected Networks' by clicking "
"the button, or dragging and dropping. You can change the NIC order by "
"dragging and dropping as well."
msgstr ""
"通过点击按钮来把网络从“可用网络”移动到“选中网络”,或者通过拖放。当然你也可以"
"通过拖放来改变网卡顺序。"
msgid "Name"
msgstr "名称"
msgid "Network"
msgstr "网络"
msgid "Network attached to instance."
msgstr "附加到实例的网络。"
msgctxt "Current status of a Database Backup"
msgid "New"
msgstr "新建"
msgid "New Flavor"
msgstr "新的云主机类型"
msgid "New Host"
msgstr "新主机"
msgid "New Name"
msgstr "新名称"
msgid "New Password"
msgstr "新密码"
msgid "New Size (GB)"
msgstr "新大小(GB)"
msgid "New password for cluster access."
msgstr "访问集群的新密码。"
msgid "New size for volume must be greater than current size."
msgstr "卷的新大小必须大于当前的大小。"
msgid "No availability zones found"
msgstr "未找到可用区"
msgid "No backups available"
msgstr "没有可用的备份"
msgid "No configuration groups available"
msgstr "没有可用的配置组"
msgid "No configurations available"
msgstr "没有可用的配置"
msgid "No flavors available"
msgstr "没有可用的云主机类型"
msgid "No instances available"
msgstr "无可用云主机"
msgid "No volume type"
msgstr "没有卷类型"
msgid "None"
msgstr "无"
msgid "Not Assigned"
msgstr "没有分配"
msgid "Not Found"
msgstr "找不到"
msgid "Not available"
msgstr "不可用"
msgid ""
"Note: Enable root access on an instance. If the root user is already "
"enabled then a new password is generated."
msgstr "备注:在实例上启用root访问。如果root用户已经启用,那么生成一个新密码。"
msgid "Number of Instances"
msgstr "云主机数量"
msgid "Number of Shards"
msgstr "Shard数"
msgid "Number of instances in the cluster."
msgstr "集群中的云主机数量。"
msgid "Number of instances in the cluster. (Read only)"
msgstr "集群中的实例数。(只读)"
msgid "Number of shards. (Read only)"
msgstr "Shard数。(只读)"
msgid "Old Flavor"
msgstr "旧的云主机类型"
msgid "Optional Backup Description"
msgstr "数据库备份描述"
msgid "Optional character set for the database."
msgstr "数据库的可选字符集。"
msgid "Optional collation type for the database."
msgstr "数据库的可选排序规则。"
msgid "Optional comma separated list of databases user has access to."
msgstr "可选,逗号分隔的可以访问的数据库用户列表。"
msgid "Optional datastore specific type of the instance."
msgstr "可选,实例的数据存储类型"
msgid ""
"Optional datastore specific value that defines the relationship from one "
"instance in the cluster to another."
msgstr "可选,数据存储确定值,这个值定义了集群中的实例与另一个实例的关系。"
msgid "Optional host of user."
msgstr "可选用户的主机"
msgid "Optional name of the instance."
msgstr "实例的可选名称。"
msgid "Optional parent backup"
msgstr "可选父备份"
msgid ""
"Optionally choose to create this database using a previous backup, or as a "
"replica of another database instance."
msgstr "可选择使用之前的备份来创建数据库,或使用另一个数据库实例的复制。"
msgid "Optionally provide a character set and collation for the database."
msgstr "可选,提供数据库字符集设置和字符序collation"
msgid "Optionally provide a comma separated list of databases to create:"
msgstr "也可以提供用逗号分隔的列表来创建数据库:"
msgid ""
"Optionally provide the host of the user and a list of databases the user is "
"granted access to."
msgstr "可选,提供用户主机和授权用户可访问的数据库列表。"
msgid "Overview"
msgstr "概览"
msgid "PASSWORD"
msgstr "密码"
msgid "Parameter"
msgstr "参数"
msgid "Parameters"
msgstr "参数"
msgid "Parent Backup"
msgstr "父备份"
msgid "Password"
msgstr "密码"
msgid "Password (required)"
msgstr "密码(必填)"
msgid "Password for root user must be specified."
msgstr "必须指定root用户密码。"
msgid "Password for root user."
msgstr "root用户密码"
msgid ""
"Password is only visible immediately after the root is enabled or reset."
msgstr "在root启用或重置时,密码只能临时可用。"
msgid ""
"Please note: The new value must be greater than the existing volume "
"size."
msgstr "请注意:新卷容量大小必须大于当前卷容量大小"
msgid "Promote"
msgstr "设置"
msgid "Promote to Replica Source"
msgstr "设置副本源"
#, python-format
msgid "Promoted replica \"%s\" as the new replica source."
msgstr "设置副本\"%s\" 为新副本源。"
msgid "Property"
msgstr "属性"
msgid "Publish"
msgstr "发布"
msgid "Publish Log"
msgid_plural "Publish Logs"
msgstr[0] "发行日志"
msgid "Publishable (bytes)"
msgstr "可发布的(字节)"
msgid "Published (bytes)"
msgstr "发布(字节)"
msgid "Published Log"
msgid_plural "Published Logs"
msgstr[0] "已发行日志"
msgid "RAM"
msgstr "内存"
msgctxt "Current status of a Database Instance"
msgid "Rebooting"
msgstr "重启中"
msgid "Related To"
msgstr "相关"
msgid "Remove Instance"
msgid_plural "Remove Instances"
msgstr[0] "移除实例"
msgid "Removed Instance"
msgid_plural "Removed Instances"
msgstr[0] "移除实例"
msgid "Removed instances from cluster."
msgstr "从集群中移除实例"
msgid "Replica Count"
msgstr "副本数量"
msgid "Replica Detached"
msgid_plural "Replicas Detached"
msgstr[0] "镜像已经分离"
msgid "Replicas"
msgstr "副本"
msgid "Replicate from Instance"
msgstr "从实例复制"
msgid "Replication"
msgstr "复制"
msgid "Reset Parameters"
msgstr "重置参数"
msgid "Reset Root Password"
msgstr "重置root密码"
msgid "Resize Database Instance"
msgstr "调整数据库实例大小"
msgid "Resize Database Volume"
msgstr "调整数据库卷大小"
msgid "Resize Instance"
msgstr "调整云主机大小"
msgid "Resize Volume"
msgstr "调整卷大小"
msgctxt "Current status of a Database Instance"
msgid "Resizing"
msgstr "正在调整大小"
#, python-format
msgid "Resizing instance \"%s\""
msgstr "调整实例 \"%s\" 的大小"
#, python-format
msgid "Resizing volume \"%s\""
msgstr "正在调整卷 \"%s\" 的大小"
msgid "Restart Instance"
msgid_plural "Restart Instances"
msgstr[0] "重启实例"
msgctxt "Current status of a Database Instance"
msgid "Restart Required"
msgstr "需要重启"
msgid "Restarted Instance"
msgid_plural "Restarted Instances"
msgstr[0] "已重启的实例"
msgid "Restarted instances will lose any data not saved in persistent storage."
msgstr "重启实例会丢失所有尚未保存到永久存储上的数据。"
msgid "Restore Backup"
msgstr "恢复备份"
msgid "Restore from Backup"
msgstr "从备份中恢复"
msgid "Return to Log List"
msgstr "返回日志列表"
msgid "Revoke Access"
msgid_plural "Revoke Access"
msgstr[0] "回收权限"
msgid "Root Enabled"
msgstr "启用Root"
msgid "Root Password"
msgstr "Root密码"
#, python-format
msgid "Root password updated for cluster \"%s\""
msgstr "集群\"%s\"的root密码已经更新"
msgctxt "Current status of a Database Backup"
msgid "Saving"
msgstr "保存"
msgid "Scheduled Shrinking of Cluster"
msgid_plural "Scheduled Shrinking of Cluster"
msgstr[0] "已计划缩小集群"
#, python-format
msgid "Scheduled backup \"%(name)s\"."
msgstr "已为备份\"%(name)s\"排期."
msgid "Scheduled deletion of Cluster"
msgid_plural "Scheduled deletion of Clusters"
msgstr[0] "已计划删除集群"
msgid "Scheduled deletion of Instance"
msgid_plural "Scheduled deletion of Instances"
msgstr[0] "已安排删除实例"
msgid "Scheduled growing of cluster."
msgstr "已安排扩大集群"
msgid "Select a backup to restore"
msgstr "选择一个备份来恢复"
msgid "Select a configuration group"
msgstr "选择一个配置组"
msgid "Select a configuration group to attach to the database instance."
msgstr "选择一个连接到数据库实例的配置组"
msgid "Select a master instance"
msgstr "选择一主实例"
msgid "Select a new flavor"
msgstr "选择一个新的云主机类型"
msgid "Select a parameter and provide a value for the configuration parameter."
msgstr "选择一个参数并且为这个参数的配置提供一个值"
msgid "Select backup"
msgstr "选择备份"
msgid "Select configuration"
msgstr "选择配置"
msgid "Select configuration group"
msgstr "选择配置组"
msgid "Select datastore type and version"
msgstr "选择数据存储类型和版本"
msgid "Select instance"
msgstr "选择云主机"
msgid "Select parent backup"
msgstr "选择父备份"
msgid "Select the instance(s) that will be removed from the cluster."
msgstr "选择将从集群中移除的实例。"
msgid "Selected networks"
msgstr "已选择的网络"
msgid "Shrink Cluster"
msgid_plural "Shrink Cluster"
msgstr[0] "缩小集群"
msgid "Shrink Cluster: {{cluster_name}}"
msgstr "缩小集群:{{cluster_name}}"
msgid "Shrinking a cluster is not recoverable."
msgstr "缩小集群是无法恢复的"
msgctxt "Current status of a Database Instance"
msgid "Shutdown"
msgstr "关闭"
msgid "Size"
msgstr "大小"
msgid "Size of image to launch."
msgstr "要启动的镜像大小。"
msgid "Size of the volume in GB."
msgstr "以GB为单位的云硬盘大小。"
msgid "Source for Initial State"
msgstr "初始状态来源"
msgid "Specify a new flavor for the database instance."
msgstr "指定数据库实例新的类型。"
msgid "Specify a new name, new password or new host name for the user."
msgstr "指定新名称、新密码或者用户的新主机名。"
msgid "Specify the details for launching an instance."
msgstr "指定启动实例的详细信息"
msgid "Specify the details for the database backup."
msgstr "指定数据库备份详情。"
msgid "Specify the details of the instance to be added to the cluster."
msgstr "指定将要添加到集群的实例详情。"
msgid ""
"Specify the instances to be added to the cluster. When all the instances "
"are specified click 'Grow Cluster' to perform the grow operation."
msgstr ""
"指定将要添加到集群的实例。当指定完所有实例后,点击“扩大集群”执行扩大操作。"
msgid "Specify the name of the new database."
msgstr "指定新数据库实例名称。"
msgid "Specify the name of the new user and password."
msgstr "指定新用户名称和密码。"
msgid "Specify the new root password for vertica cluster."
msgstr "为vertica集群指定新的root密码。"
msgid "Specify the new volume size for the database instance."
msgstr "指定数据库实例新的卷大小。"
msgid "Specify the number of replicas to be created"
msgstr "指定创建副本的数量"
msgid ""
"Specify whether future replicated instances will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity). This "
"value is ignored if the instance to be launched is a replica."
msgstr ""
"验证同一hypervisor(关联)或不同hypervisor(非关联)中是否创建了实例副本。如"
"果实例创建了一个副本,该值可忽略"
msgid ""
"Specify whether instances in the cluster will be created on the same "
"hypervisor (affinity) or on different hypervisors (anti-affinity)."
msgstr ""
"验证同一hypervisor(关联)或不同hypervisor(非关联)中是否创建了集群的实例"
msgid "Specs"
msgstr "规格"
msgid "Status"
msgstr "状态"
msgid "Status if root was ever enabled for an instance."
msgstr "如果实例的root被启用,状态。"
msgid "Successfully added parameter"
msgstr "成功增加参数"
msgid "Successfully disabled root access."
msgstr "成功禁用root用户访问。"
msgid ""
"The 'Instance Type' and 'Related To' fields are datastore specific and "
"optional. See the Trove documentation for more information on using these "
"fields."
msgstr ""
"‘实例类型’和‘关联’字段是具体的存储和可选。参考Trove手册了解更多使用这些字段的"
"信息。"
msgid "The flavor must be specified."
msgstr "必须指定云主机类型。"
msgid ""
"The name field is optional. If the field is left blank a name will be "
"generated when the cluster is grown."
msgstr "名称字段是可选的。如果字段不填,当集群扩大时会自动生成名称。"
msgid "The number of instances must be greater than 1."
msgstr "实例的数量必须大于1。"
msgid "The number of shards must be greater than 1."
msgstr "shard数必须大于1。"
msgid "There was a problem enabling root."
msgstr "启用root时,出现问题。"
msgid "This action cannot be undone."
msgstr "此操作无法撤销。"
msgid "Type"
msgstr "类型"
msgid "Type and version of datastore."
msgstr "数据存储的类型和版本。"
msgid "USERNAME"
msgstr "用户名"
#, python-format
msgid "Unable to %(action)s: %(objs)s"
msgstr "无法执行 %(action)s: %(objs)s"
#, python-format
msgid "Unable to add new parameter: %s"
msgstr "无法增加新参数:%s"
#, python-format
msgid "Unable to attach configuration group. %s"
msgstr "无法连接配置组%s"
#, python-format
msgid "Unable to create configuration group. %s"
msgstr "无法创建配置组%s"
#, python-format
msgid "Unable to create database. %s"
msgstr "无法创建的数据库. %s"
msgid "Unable to create list of parameters."
msgstr "无法创建参数列表"
#, python-format
msgid "Unable to create user. %s"
msgstr "无法创建用户。%s"
msgid "Unable to determine if instance root is enabled."
msgstr "无法确定实例root账号是否启用。"
msgid "Unable to find backup!"
msgstr "无法找到备份!"
msgid "Unable to find configuration group!"
msgstr "无法找到配置组"
msgid "Unable to find master instance!"
msgstr "无法找到主实例!"
msgid "Unable to get configuration data."
msgstr "无法获得配置数据"
msgid "Unable to get database backup data."
msgstr "无法获取数据库备份数据。"
msgid "Unable to get databases data."
msgstr "无法获取数据库数据。"
msgid "Unable to get instances data."
msgstr "无法获取实例数据。"
msgid "Unable to get user access data."
msgstr "无法获取用户可用数据。"
msgid "Unable to get user data."
msgstr "无法获取用户数据。"
#, python-format
msgid "Unable to grow cluster. %s"
msgstr "无法扩充集群 %s"
#, python-format
msgid "Unable to grow cluster: %s"
msgstr "无法扩大集群:%s"
#, python-format
msgid "Unable to launch %(count)s named \"%(name)s\"."
msgstr "无法启动%(count)s 名字 \"%(name)s\"."
#, python-format
msgid "Unable to launch cluster. %s"
msgstr "无法启动集群\"%s\""
msgid "Unable to list database backups for parent."
msgstr "无法获取用来做母版的数据库备份列表"
msgid "Unable to list database instances to backup."
msgstr "无法获取数据库实例进行备份。"
msgid ""
"Unable to load {0} log\n"
"{1}"
msgstr ""
"无法加载{0} 日志\n"
"{1}"
msgid "Unable to load {0} log for instance \"{1}\"."
msgstr "无法加载实例\"{1}\"的日志{0}"
msgid "Unable to obtain datastore versions."
msgstr "无法获取数据存储版本。"
msgid "Unable to obtain datastores."
msgstr "无法获取数据存储。"
msgid "Unable to obtain flavors."
msgstr "无法获取云主机类型。"
msgid "Unable to obtain information on root user"
msgstr "不能获取root用户的信息"
msgid "Unable to obtain list of parameters."
msgstr "无法获得参数列表"
#, python-format
msgid "Unable to promote replica as the new replica source. \"%s\""
msgstr "无法设置副本为新副本源。\"%s\""
#, python-format
msgid "Unable to remove instances from cluster: %s"
msgstr "无法从集群中移除实例 %s"
#, python-format
msgid "Unable to reset password. %s"
msgstr "无法重置密码。%s"
#, python-format
msgid "Unable to resize instance. %s"
msgstr "无法调整实例 %s 的大小"
#, python-format
msgid "Unable to resize volume. %s"
msgstr "无法调整卷 %s 的大小"
msgid "Unable to retrieve accessible databases."
msgstr "不能获取数据库访问权限"
msgid "Unable to retrieve availability zones."
msgstr "无法获取可用区"
msgid "Unable to retrieve cluster details."
msgstr "无法获取集群详细信息。"
msgid "Unable to retrieve database clusters."
msgstr "无法获取数据库集群。"
msgid "Unable to retrieve database instances."
msgstr "无法获取数据库实例。"
msgid "Unable to retrieve database size information."
msgstr "无法获取数据库大小信息。"
msgid "Unable to retrieve databases."
msgstr "不能获取数据库。"
#, python-format
msgid "Unable to retrieve details for backup: %s"
msgstr "无法获取备份: %s的详细信息"
#, python-format
msgid "Unable to retrieve details for configuration group: %s"
msgstr "无法检索配置组:%s详情"
#, python-format
msgid "Unable to retrieve details for database cluster: %s"
msgstr "无法获取数据库集群的详细信息: %s"
#, python-format
msgid "Unable to retrieve details for database instance: %s"
msgstr "不能获取数据库实例详情:%s"
#, python-format
msgid "Unable to retrieve details for parent backup: %s"
msgstr "无法获取父备份 :%s 的详细信息"
msgid "Unable to retrieve flavors."
msgstr "无法获取云主机类型。"
msgid "Unable to retrieve instance details."
msgstr "无法获取云主机详情。"
#, python-format
msgid ""
"Unable to retrieve list of logs.\n"
"%s"
msgstr ""
"无法获取日志列表。\n"
"%s"
msgid "Unable to retrieve networks."
msgstr "无法获取网络。"
#, python-format
msgid "Unable to update user. %s"
msgstr "无法更新用户%s"
msgid "Unknown"
msgstr "未知"
msgid "Updated"
msgstr "已更新"
#, python-format
msgid "Updated user \"%s\"."
msgstr "更新用户\"%s\"。"
msgid "User Name"
msgstr "用户名"
msgid "Username (required)"
msgstr "用户名(必填)"
msgid "Users"
msgstr "用户"
msgid "Value"
msgstr "值"
msgid "Value must be \"true\" or \"false\"."
msgstr "值必须是\"true\"或者\"false\"。"
#, python-format
msgid "Value must be a number between %(min)s and %(max)s."
msgstr "值必须是一个在%(min)s和%(max)s之间的数值"
#, python-format
msgid "Value must be a number greater than or equal to %s."
msgstr "值必须是一个大于等于%s的数值"
#, python-format
msgid "Value must be a number less than or equal to %s."
msgstr "值必须是一个小于等于%s的数值"
msgid "Value must be a number."
msgstr "值必须是一个整数"
#, python-format
msgid "Value must be of type %s."
msgstr "值必须是%s类型"
msgid "Values"
msgstr "值"
msgid "View Full Log"
msgstr "查看完整日志"
msgid "View Log"
msgstr "查看日志"
msgid "Volume"
msgstr "卷"
msgid "Volume Size"
msgstr "云硬盘大小"
msgid "Volume Type"
msgstr "卷类型"
#, python-format
msgid "You are not allowed to %(action)s: %(objs)s"
msgstr "您被禁止执行 %(action)s: %(objs)s"
msgid ""
"You can perform an incremental backup by specifying a parent backup. "
"However, not all databases support incremental backups in "
"which case this operation will result in an error."
msgstr ""
"你可以通过指定一个母版来进行增量备份。然而,不是所有的数据库"
"都支持增量备份,有些会导致备份出错。"
msgid "You must select a datastore type and version."
msgstr "你必须选择数据存储类型和版本。"
msgid "You must select a flavor."
msgstr "你必须选择一种规格"
msgid "You must specify a password if you create a user."
msgstr "如果你创建用户,必须指定一个密码。"
msgid "You must specify at least one database if you create a user."
msgstr "如果你创建用户,你必须选择至少一个数据库。"
#, python-format
msgid ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgstr ""
"[flavor=%(flavor)s, volume=%(volume)s, name=%(name)s, type=%(type)s, "
"related_to=%(related_to)s, nics=%(nics)s]"
msgid "instance"
msgstr "实例"
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/locale/zh_CN/LC_MESSAGES/djangojs.po 0000644 0001750 0001750 00000001565 00000000000 027426 0 ustar 00corey corey 0000000 0000000 # zzxwill , 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: trove-dashboard VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2018-02-28 09:39+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2016-08-25 10:46+0000\n"
"Last-Translator: zzxwill \n"
"Language-Team: Chinese (China)\n"
"Language: zh_CN\n"
"X-Generator: Zanata 4.3.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid "Created"
msgstr "已创建"
msgid "Database"
msgstr "数据库"
msgid "Datastore"
msgstr "数据存储"
msgid "Datastore Version"
msgstr "数据存储版本"
msgid "Incremental"
msgstr "增量"
msgid "Name"
msgstr "名称"
msgid "Unable to retrieve the Backups."
msgstr "无法检索备份。"
msgid "status"
msgstr "状态"
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/static/ 0000755 0001750 0001750 00000000000 00000000000 022522 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/static/app/ 0000755 0001750 0001750 00000000000 00000000000 023302 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/static/app/core/ 0000755 0001750 0001750 00000000000 00000000000 024232 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5334342
trove-dashboard-13.1.0.dev21/trove_dashboard/static/app/core/openstack-service-api/ 0000755 0001750 0001750 00000000000 00000000000 030426 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/static/app/core/openstack-service-api/trove.service.js 0000644 0001750 0001750 00000002515 00000000000 033565 0 ustar 00corey corey 0000000 0000000 /**
* Copyright 2016 IBM Corp.
*
* 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.
*/
(function () {
'use strict';
/**
* @ngdoc overview
* @name horizon.dashboard.project.ngbackups
* @description Dashboard module for the ngbackups panel.
*/
angular
.module('horizon.app.core.openstack-service-api')
.factory('horizon.app.core.openstack-service-api.trove', TroveAPI);
TroveAPI.$inject = [
'horizon.framework.util.http.service',
'horizon.framework.widgets.toast.service'
];
function TroveAPI(apiService, toastService) {
var service = {
getBackups: getBackups
};
return service;
function getBackups() {
return apiService.get('/api/trove/backups/')
.catch(function() {
toastService.add('error', gettext('Unable to retrieve the Backups.'));
});
}
}
}());
././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/ 0000755 0001750 0001750 00000000000 00000000000 024451 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000033 00000000000 011451 x ustar 00 0000000 0000000 27 mtime=1586806756.485437
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ 0000755 0001750 0001750 00000000000 00000000000 026117 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5334342
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/ 0000755 0001750 0001750 00000000000 00000000000 030074 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/backups.module.js 0000644 0001750 0001750 00000002124 00000000000 033345 0 ustar 00corey corey 0000000 0000000 /**
* Copyright 2016 IBM Corp.
*
* 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.
*/
(function() {
'use strict';
/**
* @ngdoc overview
* @name horizon.dashboard.project
*
* @description
* Dashboard module to host various backup panels.
*/
angular
.module('horizon.dashboard.project.backups', [])
.config(config);
config.$inject = ['$provide', '$windowProvider'];
function config($provide, $windowProvider) {
var path = $windowProvider.$get().STATIC_URL + 'dashboard/project/';
$provide.constant('horizon.dashboard.project.basePath', path);
}
})(); ././@PaxHeader 0000000 0000000 0000000 00000000206 00000000000 011453 x ustar 00 0000000 0000000 112 path=trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/backups.module.spec.js
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/backups.module.spec.0000644 0001750 0001750 00000001471 00000000000 033745 0 ustar 00corey corey 0000000 0000000 /**
* Copyright 2016 IBM Corp.
*
* 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.
*/
(function() {
'use strict';
describe('horizon.dashboard.project.backups', function() {
it('should exist', function() {
expect(angular.module('horizon.dashboard.project.backups')).toBeDefined();
});
});
})(); ././@PaxHeader 0000000 0000000 0000000 00000000034 00000000000 011452 x ustar 00 0000000 0000000 28 mtime=1586806756.5334342
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/table/ 0000755 0001750 0001750 00000000000 00000000000 031163 5 ustar 00corey corey 0000000 0000000 ././@PaxHeader 0000000 0000000 0000000 00000000205 00000000000 011452 x ustar 00 0000000 0000000 111 path=trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/table/table.config.js
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/table/table.config.j0000644 0001750 0001750 00000003704 00000000000 033675 0 ustar 00corey corey 0000000 0000000 /**
* Copyright 2016 IBM Corp.
*
* 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.
*/
(function() {
'use strict';
angular
.module('horizon.dashboard.project.backups')
.factory('horizon.dashboard.project.backups.tableConfigService',
tableConfigService);
tableConfigService.$inject = [
'horizon.framework.util.extensible.service'
];
/**
* @ngdoc service
* @name horizon.dashboard.project.ngbackups.tableConfigService
* @description Backup table attributes
*/
function tableConfigService(extensibleService) {
var config = {
selectAll: true,
expand: true,
trackId: 'id',
columns: [{
id: 'name',
title: gettext('Name'),
priority: 1,
sortDefault: true
},
{
id: 'datastore',
title: gettext('Datastore'),
priority: 1,
},
{
id: 'datastoreversion',
title: gettext('Datastore Version'),
priority: 1,
},
{
id: 'created',
title: gettext('Created'),
priority: 1,
},
{
id: 'database',
title: gettext('Database'),
priority: 1,
},
{
id: 'incremental',
title: gettext('Incremental'),
filters: ['yesno'],
priority: 1,
},
{
id: 'status',
title: gettext('status'),
priority: 1,
}]
};
extensibleService(config, config.columns);
return config;
}
})(); ././@PaxHeader 0000000 0000000 0000000 00000000211 00000000000 011447 x ustar 00 0000000 0000000 115 path=trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/table/table.controller.js
22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/table/table.controll0000644 0001750 0001750 00000002672 00000000000 034037 0 ustar 00corey corey 0000000 0000000 /**
* Copyright 2016 IBM Corp.
*
* 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.
*/
(function() {
'use strict';
angular
.module('horizon.dashboard.project.backups')
.controller('horizon.dashboard.project.backups.tableController', backupsTableController);
backupsTableController.$inject = [
'$scope',
'horizon.app.core.openstack-service-api.trove',
'horizon.dashboard.project.backups.tableConfigService'
];
/**
* @ngdoc controller
* @name horizon.dashboard.project.backups.tableController
*
* @description
* Controller for the backups table
*/
function backupsTableController($scope, trove, config) {
var ctrl = this;
ctrl.config = config;
ctrl.backups = [];
ctrl.backupsSrc = [];
init();
//////////
function init() {
trove.getBackups().success(getBackupsSuccess);
}
function getBackupsSuccess(response) {
ctrl.backups = response;
}
}
})();
././@PaxHeader 0000000 0000000 0000000 00000000026 00000000000 011453 x ustar 00 0000000 0000000 22 mtime=1586806755.0
trove-dashboard-13.1.0.dev21/trove_dashboard/static/dashboard/project/ngbackups/table/table.html 0000644 0001750 0001750 00000000334 00000000000 033140 0 ustar 00corey corey 0000000 0000000