Draft panel for SSH Hosts list.

This commit is contained in:
Pino de Candia 2018-01-09 00:09:20 -06:00
parent 73b0b9c8de
commit ae759df379
145 changed files with 470 additions and 9647 deletions

View File

@ -1,4 +1,4 @@
[gerrit]
host=review.openstack.org
port=29418
project=openstack/designate-dashboard.git
project=openstack/tatu-dashboard.git

View File

@ -1,4 +1,4 @@
- project:
name: openstack/designate-dashboard
name: openstack/tatu-dashboard
templates:
- designate-devstack-jobs
- tatu-devstack-jobs

View File

@ -14,4 +14,4 @@ Pull requests submitted through GitHub will be ignored.
Bugs should be filed on Launchpad, not GitHub:
https://bugs.launchpad.net/designatedashboard
https://bugs.launchpad.net/tatudashboard

View File

@ -1,4 +1,4 @@
designatedashboard Style Commandments
tatudashboard Style Commandments
===============================================
Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/

View File

@ -8,10 +8,10 @@ Team and repository tags
.. Change things from this point on
===============================
designatedashboard
tatudashboard
===============================
Designate Horizon UI bits
Tatu Horizon UI bits
* Free software: Apache license
@ -24,7 +24,7 @@ Features
Howto
-----
1. Package the designatedashboard by running::
1. Package the tatudashboard by running::
python setup.py sdist
@ -42,24 +42,24 @@ Howto
this seems to be a result of mismatched pbr versioning. A hacking workaround for development
purposes is replacing the pbr call with a hard-coded version (e.g. '1.0.1') in
designatedashboard/__init__.py.
tatudashboard/__init__.py.
2. Copy panel plugin files into your Horizon config. These files can be found in designatedashboard/enabled
2. Copy panel plugin files into your Horizon config. These files can be found in tatudashboard/enabled
and should be copied to /usr/share/openstack-dashboard/openstack_dashboard/local/enabled or the
equivalent directory for your openstack-dashboard install.
3. Make sure your keystone catalog contains endpoints for service type 'dns'. If no such endpoints are
found, the designatedashboard panels will not render.
found, the tatudashboard panels will not render.
4. (Optional) Copy the designate policy file into horizon's policy files folder, and add this config::
4. (Optional) Copy the tatu policy file into horizon's policy files folder, and add this config::
'dns': 'designate_policy.json',
'ssh': 'tatu_policy.json',
5. (Optional) Within your horizon settings file(s) (either the local settings or the other settings.py), add
the line below. This will make it so the record create/update screen uses a drop down of your floating ip
addresses instead of a free form text field::
DESIGNATE = { 'records_use_fips': True }
TATU = { 'records_use_fips': True }
Test

View File

@ -27,8 +27,8 @@ extensions = [
]
# openstackdocstheme options
repository_name = 'openstack/designate-dashboard'
bug_project = 'designate-dashboard'
repository_name = 'openstack/tatu-dashboard'
bug_project = 'tatu-dashboard'
bug_tag = ''
html_last_updated_fmt = '%Y-%m-%d %H:%M'
html_theme = 'openstackdocs'
@ -44,7 +44,7 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
project = u'designate_dashboard'
project = u'tatu_dashboard'
copyright = u'2013, OpenStack Foundation'
# If true, '()' will be appended to :func: etc. cross-reference text.

View File

@ -1,10 +1,10 @@
.. designate_ui documentation master file, created by
.. tatu_ui documentation master file, created by
sphinx-quickstart on Tue Jul 9 22:26:36 2013.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
================================================
Welcome to designatedashboard's documentation!
Welcome to tatudashboard's documentation!
================================================
.. toctree::

View File

@ -4,9 +4,9 @@ Installation
At the command line::
$ pip install designate_dashboard
$ pip install tatu_dashboard
Or, if you have virtualenvwrapper installed::
$ mkvirtualenv designate_dashboard
$ pip install designate_dashboard
$ mkvirtualenv tatu_dashboard
$ pip install tatu_dashboard

View File

@ -2,6 +2,6 @@
Usage
========
To use designate_dashboard in a project::
To use tatu_dashboard in a project::
import designate_dashboard
import tatu_dashboard

View File

@ -87,7 +87,7 @@ module.exports = function (config) {
* Those files have extension of `.module.js`. The order among them is
* not significant.
*/
'./designatedashboard/static/**/*.module.js',
'./tatudashboard/static/**/*.module.js',
/**
* Followed by other JavaScript files that defines angular providers
@ -95,7 +95,7 @@ module.exports = function (config) {
* files or spec files defined below. The order among them is not
* significant.
*/
'./designatedashboard/static/**/!(*.spec|*.mock).js',
'./tatudashboard/static/**/!(*.spec|*.mock).js',
/**
* Then, list files for mocks with `mock.js` extension. The order
@ -108,12 +108,12 @@ module.exports = function (config) {
* Finally, list files for spec with `spec.js` extension. The order
* among them should not be significant.
*/
'./designatedashboard/static/**/*.spec.js',
'./tatudashboard/static/**/*.spec.js',
/**
* Angular external templates
*/
'./designatedashboard/static/**/*.html',
'./tatudashboard/static/**/*.html',
],

View File

@ -18,6 +18,6 @@ import sys
if __name__ == "__main__":
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE", "designatedashboard.settings")
"DJANGO_SETTINGS_MODULE", "tatudashboard.settings")
from django.core.management import execute_from_command_line # noqa
execute_from_command_line(sys.argv)

View File

@ -3,4 +3,4 @@
# The list of modules to copy from oslo-incubator.git
# The base module to hold the copy of openstack.common
base=designatedashboard
base=tatudashboard

View File

@ -1,8 +1,8 @@
{
"version": "0.0.0",
"private": true,
"name": "designate-dashboard",
"description": "Designate Dashboard",
"name": "tatu-dashboard",
"description": "Tatu Dashboard",
"repository": "none",
"license": "Apache 2.0",
"devDependencies": {
@ -17,8 +17,8 @@
},
"scripts": {
"postinstall": "if [ ! -d .venv ]; then tox -epy27 --notest; fi",
"lint": "eslint --no-color designatedashboard/static",
"lintq": "eslint --quiet designatedashboard/static",
"lint": "eslint --no-color tatudashboard/static",
"lintq": "eslint --quiet tatudashboard/static",
"test": "karma start karma.conf.js --single-run"
},
"dependencies": {}

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
# Designate dashboard Release Notes documentation build configuration file.
# Tatu dashboard Release Notes documentation build configuration file.
#
# This file is execfile()d with the current directory set to its
# containing dir.
@ -31,8 +31,8 @@ extensions = [
]
# openstackdocstheme options
repository_name = 'openstack/designate-dashboard'
bug_project = 'designate-dashboard'
repository_name = 'openstack/tatu-dashboard'
bug_project = 'tatu-dashboard'
bug_tag = ''
html_last_updated_fmt = '%Y-%m-%d %H:%M'
html_theme = 'openstackdocs'
@ -54,8 +54,8 @@ master_doc = 'index'
# General information about the project.
project = u'Designate dashboard Client Release Notes'
copyright = u'2016, Designate dashboard developers'
project = u'Tatu dashboard Client Release Notes'
copyright = u'2016, Tatu dashboard developers'
# Release notes are version independent
# The short X.Y version.
@ -189,7 +189,7 @@ html_static_path = ['_static']
# Output file base name for HTML help builder.
htmlhelp_basename = 'DesignatedashboardReleaseNotestdoc'
htmlhelp_basename = 'TatudashboardReleaseNotestdoc'
# -- Options for LaTeX output ---------------------------------------------
@ -211,9 +211,9 @@ latex_elements = {
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'PythonDesignatedashboard.tex',
u'Designate dashboard Release Notes Documentation',
u'Designate dashboard developers', 'manual'),
('index', 'PythonTatudashboard.tex',
u'Tatu dashboard Release Notes Documentation',
u'Tatu dashboard developers', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@ -243,9 +243,9 @@ latex_documents = [
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'designatedashboard',
u'Designate dashboard Release Notes Documentation',
[u'Designate dashboard developers'], 1)
('index', 'tatudashboard',
u'Tatu dashboard Release Notes Documentation',
[u'Tatu dashboard developers'], 1)
]
# If true, show URL addresses after external links.
@ -259,9 +259,9 @@ man_pages = [
# dir menu entry, description, category)
texinfo_documents = [
('index', 'Designate dashboard',
u'Designate dashboard Release Notes Documentation',
u'Designate dashboard developers', 'Designate dashboard',
('index', 'Tatu dashboard',
u'Tatu dashboard Release Notes Documentation',
u'Tatu dashboard developers', 'Tatu dashboard',
'One line description of project.', 'Miscellaneous'),
]

View File

@ -1,4 +1,4 @@
Welcome to Designate dashboard Agent Release Notes documentation!
Welcome to Tatu dashboard Agent Release Notes documentation!
=================================================================
Contents
@ -8,10 +8,8 @@ Contents
:maxdepth: 2
unreleased
queens
pike
ocata
newton
mitaka
Indices and tables
==================

View File

@ -1,45 +0,0 @@
# Zbyněk Schwarz <zbynek.schwarz@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-21 15:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-11-17 09:17+0000\n"
"Last-Translator: Zbyněk Schwarz <zbynek.schwarz@gmail.com>\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"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "Obsah"
msgid "Current Series Release Notes"
msgstr "Poznámky k vydání současné verze"
msgid "Indices and tables"
msgstr "Rejstříky a tabulky"
msgid "Mitaka Series Release Notes"
msgstr "Poznámky k vydání verze Mitaka"
msgid "Newton Series Release Notes"
msgstr "Poznámky k vydání verze Newton"
msgid "Ocata Series Release Notes"
msgstr "Poznámky k vydání verze Ocata"
msgid "Pike Series Release Notes"
msgstr "Poznámky k vydání verze Pike"
msgid "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr "Vítejte v dokumentaci poznámek k vydání agenta nástěnky Designate!"

View File

@ -1,46 +0,0 @@
# Adriano Perri <adriano.perri@telekom.de>, 2017. #zanata
# Frank Kloeker <eumel@arcor.de>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 5.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-24 13:30+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-08-25 12:08+0000\n"
"Last-Translator: Adriano Perri <adriano.perri@telekom.de>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "Inhalt"
msgid "Current Series Release Notes"
msgstr "Aktuelle Serie Releasenotes"
msgid "Indices and tables"
msgstr "Indizes und Tabellen"
msgid "Mitaka Series Release Notes"
msgstr "Mitaka Serie Releasenotes"
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 Serien Versionshinweise"
msgid "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr "Willkommen bei den Releasenotes für den Designate Dashboard Agent"

View File

@ -1,45 +0,0 @@
# Andi Chandler <andi@gowling.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 5.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-21 16:35+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-28 02:18+0000\n"
"Last-Translator: Andi Chandler <andi@gowling.com>\n"
"Language-Team: English (United Kingdom)\n"
"Language: en-GB\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "Contents"
msgid "Current Series Release Notes"
msgstr "Current Series Release Notes"
msgid "Indices and tables"
msgstr "Indices and tables"
msgid "Mitaka Series Release Notes"
msgstr "Mitaka Series Release Notes"
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 "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr "Welcome to Designate dashboard Agent Release Notes documentation!"

View File

@ -1,21 +0,0 @@
# Gaelle <pattedeph@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-21 15:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-11-14 07:50+0000\n"
"Last-Translator: Gaelle <pattedeph@gmail.com>\n"
"Language-Team: French\n"
"Language: fr\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
msgid "Contents"
msgstr "Contenus"
msgid "Current Series Release Notes"
msgstr "Notes sur la Release Actuelle"

View File

@ -1,45 +0,0 @@
# suhartono <cloudsuhartono@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 5.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-23 14:30+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-08-23 02:39+0000\n"
"Last-Translator: suhartono <cloudsuhartono@gmail.com>\n"
"Language-Team: Indonesian\n"
"Language: id\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "Contents (Isi)"
msgid "Current Series Release Notes"
msgstr "Series Release Notes saat ini"
msgid "Indices and tables"
msgstr "Indices and tables (indeks dan tabel)"
msgid "Mitaka Series Release Notes"
msgstr "Mitaka Series Release Notes"
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 "Catatan Rilis Seri Pike"
msgid "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr "Selamat Datang di dokumentasi Designate dashboard Agent Release Notes!"

View File

@ -1,47 +0,0 @@
# Ian Y. Choi <ianyrchoi@gmail.com>, 2017. #zanata
# Sungjin Kang <gang.sungjin@gmail.com>, 2017. #zanata
# minwook-shin <minwook0106@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 5.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 03:15+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-20 05:25+0000\n"
"Last-Translator: minwook-shin <minwook0106@gmail.com>\n"
"Language-Team: Korean (South Korea)\n"
"Language: ko-KR\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "내용"
msgid "Current Series Release Notes"
msgstr "최신 시리즈에 대한 릴리즈 노트"
msgid "Indices and tables"
msgstr "인텍스 및 테이블"
msgid "Mitaka Series Release Notes"
msgstr "Mitaka 시리즈에 대한 릴리즈 노트"
msgid "Newton Series Release Notes"
msgstr "Newton 시리즈에 대한 릴리즈 노트"
msgid "Ocata Series Release Notes"
msgstr "Ocata 시리즈에 대한 릴리즈 노트"
msgid "Pike Series Release Notes"
msgstr "Pike 시리즈에 대한 릴리즈 노트"
msgid "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr "대시 보드 에이전트 릴리스 노트 문서에 오신 것을 환영합니다!"

View File

@ -1,46 +0,0 @@
# André Franciosi <andre@franciosi.org>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 5.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-22 13:02+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-08-22 10:43+0000\n"
"Last-Translator: André Franciosi <andre@franciosi.org>\n"
"Language-Team: Portuguese (Brazil)\n"
"Language: pt-BR\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "Conteúdo"
msgid "Current Series Release Notes"
msgstr "Atual - Série de Notas de Versão"
msgid "Indices and tables"
msgstr "Índices e tabelas"
msgid "Mitaka Series Release Notes"
msgstr "Mitaka - Série de Notas de Versão"
msgid "Newton Series Release Notes"
msgstr "Newton - Série de Notas de Versão"
msgid "Ocata Series Release Notes"
msgstr "Ocata - Série de Notas de Versão"
msgid "Pike Series Release Notes"
msgstr "Pike - Série de Notas de Versão"
msgid "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr ""
"Bemvindo a documentação de Notas de Versão do Agente dashboard do Designate!"

View File

@ -1,37 +0,0 @@
# Fedor Tarasenko <feodor.tarasenko@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 4.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-03 00:10+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-02-03 08:41+0000\n"
"Last-Translator: Fedor Tarasenko <feodor.tarasenko@gmail.com>\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 ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "Содержание"
msgid "Current Series Release Notes"
msgstr "Примечания к текущему релизу"
msgid "Mitaka Series Release Notes"
msgstr "Примечания к релизу Mitaka"
msgid "Newton Series Release Notes"
msgstr "Примечания к релизу Newton"
msgid "Ocata Series Release Notes"
msgstr "Примечания к релизу Ocata"

View File

@ -1,42 +0,0 @@
# TigerFang <tigerfun@126.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: Designate dashboard Client Release Notes 5.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-04 14:35+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-15 09:55+0000\n"
"Last-Translator: TigerFang <tigerfun@126.com>\n"
"Language-Team: Chinese (China)\n"
"Language: zh-CN\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ":ref:`genindex`"
msgstr ":ref:`genindex`"
msgid ":ref:`search`"
msgstr ":ref:`search`"
msgid "Contents"
msgstr "内容"
msgid "Current Series Release Notes"
msgstr "当前版本发布说明"
msgid "Indices and tables"
msgstr "索引和表格"
msgid "Mitaka Series Release Notes"
msgstr "Mitaka 版本发布说明"
msgid "Newton Series Release Notes"
msgstr "Newton版本发布说明"
msgid "Ocata Series Release Notes"
msgstr "Ocata版本发布说明"
msgid "Welcome to Designate dashboard Agent Release Notes documentation!"
msgstr "欢迎使用Designate控制台代理发布说明文档"

View File

@ -1,6 +0,0 @@
============================
Mitaka Series Release Notes
============================
.. release-notes::
:branch: origin/stable/mitaka

View File

@ -1,6 +0,0 @@
============================
Newton Series Release Notes
============================
.. release-notes::
:branch: origin/stable/newton

View File

@ -1,6 +1,6 @@
===================================
Ocata Series Release Notes
Queens Series Release Notes
===================================
.. release-notes::
:branch: origin/stable/ocata
:branch: stable/queens

View File

@ -4,4 +4,4 @@
oslo.log>=3.30.0 # Apache-2.0
pbr!=2.1.0,>=2.0.0 # Apache-2.0
Babel!=2.4.0,>=2.3.4 # BSD
python-designateclient>=2.7.0 # Apache-2.0
keystoneauth

View File

@ -1,11 +1,11 @@
[metadata]
name = designate-dashboard
summary = Designate Horizon UI bits
name = tatu-dashboard
summary = Tatu Horizon UI bits
description-file =
README.rst
author = OpenStack
author-email = openstack-dev@lists.openstack.org
home-page = http://docs.openstack.org/developer/designate-dashboard/
home-page = http://docs.openstack.org/developer/tatu-dashboard/
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@ -20,7 +20,7 @@ classifier =
[files]
packages =
designatedashboard
tatudashboard
[build_sphinx]
source-dir = doc/source
@ -32,15 +32,15 @@ warning-is-error = 1
upload-dir = doc/build/html
[compile_catalog]
directory = designatedashboard/locale
directory = tatudashboard/locale
domain = django
[update_catalog]
domain = django
output_dir = designatedashboard/locale
input_file = designatedashboard/locale/django.pot
output_dir = tatudashboard/locale
input_file = tatudashboard/locale/django.pot
[extract_messages]
keywords = _ gettext ngettext l_ lazy_gettext
mapping_file = babel-django.cfg
output_file = designatedashboard/locale/django.pot
output_file = tatudashboard/locale/django.pot

View File

@ -16,4 +16,4 @@ import pbr.version
__version__ = pbr.version.VersionInfo(
'designate-dashboard').version_string()
'tatu-dashboard').version_string()

View File

@ -1 +1 @@
from designatedashboard.api import designate # noqa
from tatudashboard.api import tatu # noqa

View File

@ -40,7 +40,7 @@ def _passthrough_request(request_method, url,
if getattr(settings, 'OPENSTACK_SSL_NO_VERIFY', False):
verify = False
service_url = _get_service_url(request, 'dns')
service_url = _get_service_url(request, 'ssh')
request_url = '{}{}'.format(
service_url,
url if service_url.endswith('/') else ('/' + url)
@ -93,7 +93,7 @@ class Passthrough(generic.View):
Horizon only adds auth and CORS proxying.
"""
url_regex = r'dns/(?P<path>.+)$'
url_regex = r'ssh/(?P<path>.+)$'
@rest_utils.ajax()
def get(self, request, path):

View File

@ -14,9 +14,9 @@
from __future__ import absolute_import
from designateclient.v1 import Client # noqa
from designateclient.v1.domains import Domain # noqa
from designateclient.v1.records import Record # noqa
from keystoneauth1 import session as keystone_session
from keystoneauth1.identity import v3
from django.conf import settings # noqa
from horizon import exceptions

View File

@ -1,549 +0,0 @@
# Copyright 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 functools
import re
import six
from designateclient import exceptions as designate_exceptions
from django.core.exceptions import ValidationError # noqa
from django.core import validators
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _ # noqa
from horizon import forms
from horizon import messages
from designatedashboard import api
from designatedashboard.dashboards.project.dns_domains.utils\
import limit_records_to_fips
from oslo_log import log as logging
LOG = logging.getLogger(__name__)
MAX_TTL = 2147483647
# These regexes were given to me by Kiall Mac Innes here:
# https://gerrit.hpcloud.net/#/c/25300/2/
DOMAIN_NAME_REGEX = r'^(?!.{255,})(?:(?!\-)[A-Za-z0-9_\-]{1,63}(?<!\-)\.)+$'
WILDCARD_DOMAIN_NAME_REGEX = r'^(?!.{255,})(?:(^\*|(?!\-)[A-Za-z0-9_\-]{1,63})(?<!\-)\.)+$' # noqa
SRV_NAME_REGEX = r'^(?:_[A-Za-z0-9_\-]{1,62}\.){2}'
SRV_DATA_REGEX = r'^(?:(?:6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])\s){2}(?!.{255,})((?!\-)[A-Za-z0-9_\-]{1,63}(?<!\-)\.)+$' # noqa
SSHFP_DATA_REGEX = r'^[1-4]\s[1-2]\s\b([0-9a-fA-F]{5,40}|[0-9a-fA-F]{64})\b$'
# The max length for a dns label
NAME_MAX_LENGTH = 63
def handle_exc(func):
@functools.wraps(func)
def wrapped(form, request, *args, **kwargs):
try:
return func(form, request, *args, **kwargs)
except designate_exceptions.RemoteError as ex:
msg = ""
data = {}
if six.text_type(ex) is not None:
data['message'] = six.text_type(ex)
msg += "Error: %(message)s"
else:
data["type"] = ex.type
msg += "Error Type: %(type)s"
if ex.code >= 500:
msg += " (Request ID: %(request_id)s"
data["request_id"] = ex.request_id
form.api_error(_(msg) % data) # noqa
return False
except Exception:
messages.error(request, form.exc_message)
return True
return wrapped
class DomainForm(forms.SelfHandlingForm):
'''Base class for DomainCreate and DomainUpdate forms.
Sets-up all of the common form fields.
'''
name = forms.RegexField(
label=_("Domain Name"),
regex=DOMAIN_NAME_REGEX,
error_messages={'invalid': _('Enter a valid domain name.')},
)
email = forms.EmailField(
label=_("Email"),
max_length=255,
)
ttl = forms.IntegerField(
label=_("TTL (seconds)"),
min_value=1,
max_value=MAX_TTL,
required=False,
)
description = forms.CharField(
label=_("Description"),
required=False,
max_length=160,
widget=forms.Textarea(),
)
class DomainCreate(DomainForm):
'''Form for creating new domain records.
Name and email address are
required.
'''
exc_message = _("Unable to create domain.")
@handle_exc
def handle(self, request, data):
domain = api.designate.domain_create(
request,
name=data['name'],
email=data['email'],
ttl=data['ttl'],
description=data['description'])
messages.success(request,
_('Domain %(name)s created.') %
{"name": domain.name})
return domain
class DomainUpdate(DomainForm):
'''Form for displaying domain record details and updating them.'''
exc_message = _('Unable to update domain.')
id = forms.CharField(
required=False,
widget=forms.HiddenInput()
)
serial = forms.CharField(
label=_("Serial"),
required=False,
widget=forms.TextInput(attrs={'readonly': 'readonly'}),
)
created_at = forms.CharField(
label=_("Created At"),
required=False,
widget=forms.TextInput(attrs={'readonly': 'readonly'}),
)
updated_at = forms.CharField(
label=_("Updated At"),
required=False,
widget=forms.TextInput(attrs={'readonly': 'readonly'}),
)
def __init__(self, request, *args, **kwargs):
super(DomainUpdate, self).__init__(request, *args, **kwargs)
# Mark name as read-only
self.fields['name'].required = False
self.fields['name'].widget.attrs['readonly'] = 'readonly'
self.fields['ttl'].required = True
# Customize display order for fields
self.fields.keyOrder = [
'id',
'name',
'serial',
'email',
'ttl',
'description',
'created_at',
'updated_at',
]
@handle_exc
def handle(self, request, data):
domain = api.designate.domain_update(
request,
domain_id=data['id'],
email=data['email'],
ttl=data['ttl'],
description=data['description'])
messages.success(request,
_('Domain %(name)s updated.') %
{"name": domain.name})
return domain
class PrefixWidget(forms.TextInput):
def render(self, name, value, attrs=None):
template_name = 'project/dns_domains/prefix_html_widget.html'
result = super(PrefixWidget, self).render(name, value, attrs)
view_data = {'input': result,
'suffix': getattr(self, "suffix", '')}
return render_to_string(template_name, view_data)
class RecordForm(forms.SelfHandlingForm):
'''Base class for RecordCreate and RecordUpdate forms.
Sets-up all of
the form fields and implements the complex validation logic.
'''
domain_id = forms.CharField(
widget=forms.HiddenInput())
domain_name = forms.CharField(
widget=forms.HiddenInput())
type = forms.ChoiceField(
label=_("Record Type"),
required=False,
choices=[
('a', _('A - Address record')),
('aaaa', _('AAAA - IPv6 address record')),
('cname', _('CNAME - Canonical name record')),
('mx', _('MX - Mail exchange record')),
('ptr', _('PTR - Pointer record')),
('spf', _('SPF - Sender Policy Framework')),
('srv', _('SRV - Service locator')),
('sshfp', _('SSHFP - SSH Public Key Fingerprint')),
('txt', _('TXT - Text record')),
],
widget=forms.Select(attrs={
'class': 'switchable',
'data-slug': 'record_type',
}),
)
name = forms.CharField(
required=False,
widget=PrefixWidget(attrs={
'class': 'switched',
'data-switch-on': 'record_type',
'data-record_type-a': _('Name'),
'data-record_type-aaaa': _('Name'),
'data-record_type-cname': _('Name'),
'data-record_type-mx': _('Name'),
'data-record_type-ns': _('Name'),
'data-record_type-ptr': _('Name'),
'data-record_type-soa': _('Name'),
'data-record_type-spf': _('Name'),
'data-record_type-srv': _('Name'),
'data-record_type-sshfp': _('Name'),
'data-record_type-txt': _('Name'),
}),
)
data = forms.CharField(
required=False,
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'record_type',
'data-record_type-a': _('IP Address'),
'data-record_type-aaaa': _('IP Address'),
'data-record_type-cname': _('Canonical Name'),
'data-record_type-ns': _('Name Server'),
'data-record_type-mx': _('Mail Server'),
'data-record_type-ptr': _('PTR Domain Name'),
'data-record_type-soa': _('Value'),
'data-record_type-srv': _('Value'),
}),
)
ip_addr = forms.ChoiceField(
required=False,
widget=forms.Select(attrs={
'class': 'switched',
'data-switch-on': 'record_type',
'data-record_type-a': _('IP Address'),
'data-record_type-aaaa': _('IP Address'),
}),
)
txt = forms.CharField(
label=_('TXT'),
required=False,
widget=forms.Textarea(attrs={
'class': 'switched',
'data-switch-on': 'record_type',
'data-record_type-txt': _('Text'),
'data-record_type-spf': _('Text'),
'data-record_type-sshfp': _('Text'),
}),
)
priority = forms.IntegerField(
min_value=0,
max_value=65535,
required=False,
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'record_type',
'data-record_type-mx': _('Priority'),
'data-record_type-srv': _('Priority'),
}),
)
ttl = forms.IntegerField(
label=_('TTL'),
min_value=1,
max_value=MAX_TTL,
required=False,
widget=forms.TextInput(attrs={
'class': 'switched',
'data-switch-on': 'record_type',
'data-record_type-a': _('TTL'),
'data-record_type-aaaa': _('TTL'),
'data-record_type-cname': _('TTL'),
'data-record_type-mx': _('TTL'),
'data-record_type-ptr': _('TTL'),
'data-record_type-soa': _('TTL'),
'data-record_type-spf': _('TTL'),
'data-record_type-srv': _('TTL'),
'data-record_type-sshfp': _('TTL'),
'data-record_type-txt': _('TTL'),
}),
)
description = forms.CharField(
label=_("Description"),
required=False,
max_length=160,
widget=forms.Textarea(),
)
def __init__(self, request, *args, **kwargs):
super(RecordForm, self).__init__(request, *args, **kwargs)
initial = kwargs.get('initial', {})
domain_suffix = "." + initial['domain_name']
self.fields['name'].widget.suffix = domain_suffix
self.fields['name'].max_length = min(NAME_MAX_LENGTH,
255 - len(domain_suffix))
if limit_records_to_fips():
del self.fields['data'].widget.attrs['data-record_type-a']
del self.fields['data'].widget.attrs['data-record_type-aaaa']
self.fields['ip_addr'].choices = \
self.populate_ip_addr_choices(request,
initial)
else:
del self.fields['ip_addr']
def _generate_fip_list(self, fips, instances):
instance_dict = {instance.id: instance for instance in instances}
for fip in fips:
instance_name = _("Unknown instance name")
if getattr(fip, "instance_id", "None") in instance_dict:
instance_name = instance_dict[getattr(fip, "instance_id")].name
yield (fip.ip, "%s (%s)" % (fip.ip, instance_name))
def populate_ip_addr_choices(self, request, initial):
results = [(None, _('Select an IP')), ]
if (initial.get('ip_addr') and
initial['ip_addr'] not in [fip.ip for fip in initial['fips']]):
"""The record is currently using an ip not in the list
of fips - this can happen when instance goes away or in
multi region setups
"""
results.append((initial['ip_addr'], initial['ip_addr']))
results.extend(self._generate_fip_list(initial['fips'],
initial['instances']))
if len(results) == 1:
messages.warning(request, _("There are no floating IP addresses "
"currently in use to select from."))
return results
def clean_type(self):
'''Type value needs to be uppercased before it is sent to the API.'''
return self.cleaned_data['type'].upper()
def clean(self):
'''Handles the validation logic for the domain record form.
Validation gets pretty complicated due to the fact that the different
record types (A, AAAA, MX, etc) have different requirements for
each of the fields.
'''
cleaned_data = super(RecordForm, self).clean()
record_type = cleaned_data['type']
domain_name = cleaned_data['domain_name']
if limit_records_to_fips():
ip_addr = cleaned_data.pop('ip_addr')
if (record_type in ['AAAA', 'A'] and limit_records_to_fips()):
cleaned_data['data'] = ip_addr
# Name field
if self._is_field_blank(cleaned_data, 'name'):
if record_type in ['CNAME', 'SRV']:
self._add_required_field_error('name')
elif record_type in ['MX', 'A', 'AAAA', 'TXT', 'PTR']:
cleaned_data['name'] = domain_name
else:
if record_type == 'SRV':
if not re.match(SRV_NAME_REGEX, cleaned_data['name']):
self._add_field_error('name', _('Enter a valid SRV name'))
else:
cleaned_data['name'] += domain_name
else:
cleaned_data['name'] += "." + domain_name
if not re.match(WILDCARD_DOMAIN_NAME_REGEX,
cleaned_data['name']):
self._add_field_error('name',
_('Enter a valid hostname. The '
'hostname should contain letters '
'and numbers, and be no more than '
'63 characters.'))
# Data field
if self._is_field_blank(cleaned_data, 'data'):
if record_type in ['A', 'AAAA', 'CNAME', 'MX', 'SRV']:
self._add_required_field_error('data')
else:
if record_type == 'A':
try:
validators.validate_ipv4_address(cleaned_data['data'])
except ValidationError:
self._add_field_error('data',
_('Enter a valid IPv4 address'))
elif record_type == 'AAAA':
try:
validators.validate_ipv6_address(cleaned_data['data'])
except ValidationError:
self._add_field_error('data',
_('Enter a valid IPv6 address'))
elif record_type in ['CNAME', 'MX', 'PTR']:
if not re.match(DOMAIN_NAME_REGEX, cleaned_data['data']):
self._add_field_error('data', _('Enter a valid hostname'))
elif record_type == 'SRV':
if not re.match(SRV_DATA_REGEX, cleaned_data['data']):
self._add_field_error('data',
_('Enter a valid SRV record'))
# Txt field
if self._is_field_blank(cleaned_data, 'txt'):
if record_type == 'TXT':
self._add_required_field_error('txt')
else:
if record_type == 'TXT':
cleaned_data['data'] = cleaned_data['txt']
if record_type == 'SSHFP':
if not re.match(SSHFP_DATA_REGEX, cleaned_data['txt']):
self._add_field_error('txt',
_('Enter a valid SSHFP record'))
cleaned_data['data'] = cleaned_data['txt']
cleaned_data.pop('txt')
# Priority field
# Check against '' instead of using _is_field_blank because we need to
# allow a valud of 0.
if ('priority' not in cleaned_data or
cleaned_data['priority'] == '' or
cleaned_data['priority'] is None):
if record_type in ['MX', 'SRV']:
self._add_required_field_error('priority')
# Rename 'id' to 'record_id'
if 'id' in cleaned_data:
cleaned_data['record_id'] = cleaned_data.pop('id')
# Remove domain_name
cleaned_data.pop('domain_name')
return cleaned_data
def _add_required_field_error(self, field):
'''Set a required field error on the specified field.'''
self._add_field_error(field, _('This field is required'))
def _add_field_error(self, field, msg):
'''Set the specified msg as an error on the field.'''
self._errors[field] = self.error_class([msg])
def _is_field_blank(self, cleaned_data, field):
'''Returns a flag indicating whether the specified field is blank.'''
return field in cleaned_data and not cleaned_data[field]
class RecordCreate(RecordForm):
'''Form for creating a new domain record.'''
exc_message = _('Unable to create record.')
@handle_exc
def handle(self, request, data):
record = api.designate.record_create(request, **data)
messages.success(request,
_('Domain record %(name)s created.') %
{"name": record.name})
return record
class RecordUpdate(RecordForm):
'''Form for editing a domain record.'''
exc_message = _('Unable to create record.')
id = forms.CharField(widget=forms.HiddenInput())
def __init__(self, request, *args, **kwargs):
super(RecordUpdate, self).__init__(request, *args, **kwargs)
# Force the type field to be read-only
self.fields['type'].widget.attrs['readonly'] = 'readonly'
if self['type'].value() in ('soa', 'ns'):
self.fields['type'].choices.append(('ns', _('NS')))
self.fields['type'].choices.append(('soa', _('SOA')))
self.fields['name'].widget.attrs['readonly'] = 'readonly'
self.fields['data'].widget.attrs['readonly'] = 'readonly'
self.fields['description'].widget.attrs['readonly'] = 'readonly'
self.fields['ttl'].widget.attrs['readonly'] = 'readonly'
# Filter the choice list so that it only contains the type for
# the current record. Ideally, we would just disable the select
# field, but that has the unfortunate side-effect of breaking
# the 'selectable' javascript code.
self.fields['type'].choices = (
[choice for choice in self.fields['type'].choices
if choice[0] == self.initial['type']])
@handle_exc
def handle(self, request, data):
if data['type'] in ('SOA', 'NS'):
return True
record = api.designate.record_update(request, **data)
messages.success(request,
_('Domain record %(name)s updated.') %
{"name": record.name})
return record

View File

@ -1,26 +0,0 @@
# Copyright 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.
from django.utils.translation import ugettext_lazy as _ # noqa
import horizon
from openstack_dashboard.dashboards.project import dashboard
class DNSDomains(horizon.Panel):
name = _("Domains")
slug = 'dns_domains'
permissions = ('openstack.services.dns',)
dashboard.Project.register(DNSDomains)

View File

@ -1,224 +0,0 @@
# Copyright 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.
from django.core import urlresolvers
from django.utils.translation import ugettext_lazy as _ # noqa
from horizon import messages
from horizon import tables
from horizon.utils import memoized
from designatedashboard import api
from openstack_dashboard import policy
from oslo_log import log as logging
LOG = logging.getLogger(__name__)
EDITABLE_RECORD_TYPES = (
"A",
"AAAA",
"CNAME",
"MX",
"PTR",
"SPF",
"SRV",
"SSHFP",
"TXT",
)
class CreateDomain(tables.LinkAction):
'''Link action for navigating to the CreateDomain view.'''
name = "create_domain"
verbose_name = _("Create Domain")
url = "horizon:project:dns_domains:create_domain"
classes = ("ajax-modal", "btn-create")
policy_rules = (("dns", "create_domain"),)
@memoized.memoized_method
def allowed(self, request, datum):
if policy.check((("dns", "get_quota"),), request):
try:
if self.table:
quota = api.designate.quota_get(request)
return quota['domains'] > len(self.table.data)
except Exception:
msg = _("The quotas could not be retrieved.")
messages.warning(request, msg)
return True
class EditDomain(tables.LinkAction):
'''Link action for navigating to the UpdateDomain view.'''
name = "edit_domain"
verbose_name = _("Edit Domain")
url = "horizon:project:dns_domains:update_domain"
classes = ("ajax-modal", "btn-edit")
policy_rules = (("dns", "update_domain"),)
class ManageRecords(tables.LinkAction):
'''Link action for navigating to the ManageRecords view.'''
name = "manage_records"
verbose_name = _("Manage Records")
url = "horizon:project:dns_domains:records"
classes = ("btn-edit")
policy_rules = (("dns", "get_records"),)
class DeleteDomain(tables.BatchAction):
'''Batch action for deleting domains.'''
name = "delete"
action_present = _("Delete")
action_past = _("Deleted")
data_type_singular = _("Domain")
data_type_plural = _("Domains")
classes = ('btn-danger', 'btn-delete')
policy_rules = (("dns", "delete_domain"),)
def action(self, request, domain_id):
api.designate.domain_delete(request, domain_id)
class CreateRecord(tables.LinkAction):
'''Link action for navigating to the CreateRecord view.'''
name = "create_record"
verbose_name = _("Create Record")
classes = ("ajax-modal", "btn-create")
policy_rules = (("dns", "create_record"),)
def get_link_url(self, datum=None):
url = "horizon:project:dns_domains:create_record"
return urlresolvers.reverse(url, kwargs=self.table.kwargs)
class EditRecord(tables.LinkAction):
'''Link action for navigating to the UpdateRecord view.'''
name = "edit_record"
verbose_name = _("Edit Record")
classes = ("ajax-modal", "btn-edit")
policy_rules = (("dns", "update_record"),)
def get_link_url(self, datum=None):
url = "horizon:project:dns_domains:update_record"
kwargs = {
'domain_id': datum.domain_id,
'record_id': datum.id,
}
return urlresolvers.reverse(url, kwargs=kwargs)
def allowed(self, request, record=None):
return record.type in EDITABLE_RECORD_TYPES
class DeleteRecord(tables.DeleteAction):
'''Link action for navigating to the UpdateRecord view.'''
data_type_singular = _("Record")
policy_rules = (("dns", "delete_record"),)
def delete(self, request, record_id):
domain_id = self.table.kwargs['domain_id']
return api.designate.record_delete(request, domain_id, record_id)
def allowed(self, request, record=None):
return record.type in EDITABLE_RECORD_TYPES
class BatchDeleteRecord(tables.BatchAction):
'''Batch action for deleting domain records.'''
name = "delete"
action_present = _("Delete")
action_past = _("Deleted")
data_type_singular = _("Record")
classes = ('btn-danger', 'btn-delete')
policy_rules = (("dns", "delete_record"),)
def action(self, request, record_id):
domain_id = self.table.kwargs['domain_id']
api.designate.record_delete(request, domain_id, record_id)
class DomainsTable(tables.DataTable):
'''Data table for displaying domain summary information.'''
name = tables.Column("name",
verbose_name=_("Name"),
link=("horizon:project:dns_domains:domain_detail"))
email = tables.Column("email",
verbose_name=_("Email"))
ttl = tables.Column("ttl",
verbose_name=_("TTL"))
serial = tables.Column("serial",
verbose_name=_("Serial"))
class Meta(object):
name = "domains"
verbose_name = _("Domains")
table_actions = (CreateDomain, DeleteDomain,)
row_actions = (ManageRecords, EditDomain, DeleteDomain,)
def record__details_link(record):
'''Returns a link to the view for updating DNS records.'''
return urlresolvers.reverse(
"horizon:project:dns_domains:view_record",
args=(record.domain_id, record.id))
class RecordsTable(tables.DataTable):
'''Data table for displaying summary information for a domains records.'''
name = tables.Column("name",
verbose_name=_("Name"),
link=record__details_link,
)
type = tables.Column("type",
verbose_name=_("Type")
)
data = tables.Column("data",
verbose_name=_("Data")
)
priority = tables.Column("priority",
verbose_name=_("Priority"),
)
ttl = tables.Column("ttl",
verbose_name=_("TTL")
)
class Meta(object):
name = "records"
verbose_name = _("Records")
table_actions = (CreateRecord,)
row_actions = (EditRecord, DeleteRecord,)
multi_select = False

View File

@ -1,38 +0,0 @@
{% extends "horizon/common/_modal_form.html" %}
{% load i18n horizon humanize %}
{% block form_id %}{% endblock %}
{% block form_action %}{% url 'horizon:project:dns_domains:create_domain' %}{% endblock %}
{% block modal_id %}create_domain_modal{% endblock %}
{% block modal-header %}{% trans "Create Domain" %}{% endblock %}
{% block modal-body %}
<div class="left">
<fieldset>
{% include "horizon/common/_form_fields.html" %}
</fieldset>
</div>
<div class="right quota-dynamic">
<h3>{% trans "Description" %}:</h3>
<p>{% blocktrans %}
The Name field should contain a full-qualified domain name (with
trailing period).
{% endblocktrans %}</p>
<p>{% blocktrans %}
The Email field should contain a valid email address to be associated
with the domain.
{% endblocktrans %}</p>
<p>{% blocktrans %}
The optional TTL field can be any value between 1 and 2147483647
seconds.
{% endblocktrans %}</p>
</div>
{% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Create Domain" %}" />
<a href="{% url 'horizon:project:dns_domains:index' %}" class="btn secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %}

View File

@ -1,37 +0,0 @@
{% extends "horizon/common/_modal_form.html" %}
{% load i18n horizon humanize %}
{% block form_id %}{% endblock %}
{% block form_action %}{% url 'horizon:project:dns_domains:create_record' domain.id %}{% endblock %}
{% block modal_id %}create_record_modal{% endblock %}
{% block modal-header %}{% trans "Create Record for" %} {{ domain.name }}{% endblock %}
{% block modal-body %}
<div id="scoped-content">
{% include 'project/dns_domains/prefix_field_style.html' %}
<fieldset>
{% include "horizon/common/_form_fields.html" %}
</fieldset>
</div>
{% blocktrans %}
<p>
<strong>TTL</strong>
The TTL is the time-to-live for the record, in seconds.
</p>
<p>
See <a href="http://en.wikipedia.org/wiki/List_of_DNS_record_types" target="_designate_record_defs">more info</a> on record types.
</p>
{% endblocktrans %}
<script type="text/javascript">
// Empty hidden form fields when the record type is switched
// https://bugs.launchpad.net/designate/+bug/1525199
$("select#id_type.form-control.switchable").eq(0).change(function() {
$(this).closest('fieldset')
.find("input[type=text], textarea").filter(":hidden")
.val("");
})
</script>
{% endblock %}

View File

@ -1,32 +0,0 @@
{% load i18n sizeformat %}
<h3>{% trans "Domain Overview" %}</h3>
<div class="info detail">
<dl class="dl-horizontal">
<dt>{% trans "ID" %}</dt>
<dd>{{ domain.id|default:_("None") }}</dd>
<dt>{% trans "Name" %}</dt>
<dd>{{ domain.name|default:_("None") }}</dd>
<dt>{% trans "Description" %}</dt>
<dd>{{ domain.description|default:_("None") }}</dd>
<dt>{% trans "Serial" %}</dt>
<dd>{{ domain.serial|yesno|capfirst }}</dd>
<dt>{% trans "Email" %}</dt>
<dd>{{ domain.email|default:_("Unknown") }}</dd>
<dt>{% trans "TTL" %}</dt>
<dd>{{ domain.ttl|default:_("Unknown") }}</dd>
<dt>{% trans "Created" %}</dt>
{% if domain.created_at %}
<dd>{{ domain.created_at|parse_isotime }}</dd>
{% else %}
<dd>{% trans "Unknown" %}</dd>
{% endif %}
<dt>{% trans "Updated" %}</dt>
{% if domain.updated_at %}
<dd>{{ domain.updated_at|parse_isotime }}</dd>
{% else %}
<dd>{% trans "Unknown" %}</dd>
{% endif %}
</dl>
</div>

View File

@ -1,36 +0,0 @@
{% load i18n sizeformat %}
<h3><a href="{% url 'horizon:project:dns_domains:records' domain_id %}">{% trans "All Records" %}</a></h3>
<h4>{{ record.name|default:_("None") }}</h4>
<div class="info detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ record.name|default:_("None") }}</dd>
<dt>{% trans "ID" %}</dt>
<dd>{{ record.id|default:_("None") }}</dd>
<dt>{% trans "Type" %}</dt>
<dd>{{ record.type|default:_("Unknown") }}</dd>
<dt>{% trans "Description" %}</dt>
<dd>{{ record.description|default:_("None") }}</dd>
<dt>{% trans "Record Data" %}</dt>
<dd>{{ record.data|default:_("None") }}</dd>
<dt>{% trans "Priority" %}</dt>
<dd>{{ record.priority|yesno|capfirst }}</dd>
<dt>{% trans "TTL" %}</dt>
<dd>{{ record.ttl|default:_("None") }}</dd>
<dt>{% trans "Created" %}</dt>
{% if record.created_at %}
<dd>{{ record.created_at|parse_isotime }}</dd>
{% else %}
<dd>{% trans "Unknown" %}</dd>
{% endif %}
<dt>{% trans "Updated" %}</dt>
{% if record.updated_at %}
<dd>{{ record.updated_at|parse_isotime }}</dd>
{% else %}
<dd>{% trans "Unknown" %}</dd>
{% endif %}
</dl>
</div>

View File

@ -1,36 +0,0 @@
{% extends "horizon/common/_modal_form.html" %}
{% load i18n %}
{% load url from future %}
{% block form_id %}update_domain_form{% endblock %}
{% block form_action %}{% url 'horizon:project:dns_domains:update_domain' domain.id %}{% endblock %}
{% block modal-header %}{% trans "Update Domain" %}{% endblock %}
{% block modal-body %}
<div class="left">
<fieldset>
{% include "horizon/common/_form_fields.html" %}
</fieldset>
</div>
<div class="right">
<h3>{% trans "Description" %}:</h3>
<p>{% blocktrans %}
From here you can edit the email address and TTL associated with a domain.
{% endblocktrans %}</p>
<p>{% blocktrans %}
The Email field should contain a valid email address to be associated
with the domain.
{% endblocktrans %}</p>
<p>{% blocktrans %}
The optional TTL field can be any value between 1 and 2147483647
seconds.
{% endblocktrans %}</p>
</div>
{% endblock %}
{% block modal-footer %}
<input class="btn btn-primary pull-right" type="submit" value="{% trans "Update Domain" %}" />
<a href="{% url 'horizon:project:dns_domains:index' %}" class="btn secondary cancel close">{% trans "Cancel" %}</a>
{% endblock %}

View File

@ -1,9 +0,0 @@
{% extends "project/dns_domains/_create_record.html" %}
{% load i18n %}
{% load url from future %}
{% block form_id %}update_record_form{% endblock %}
{% block form_action %}{% url 'horizon:project:dns_domains:update_record' record.domain_id record.id %}{% endblock %}
{% block modal-header %}{% trans "Update Domain Record" %}{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Create Domain" %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title=_("Create Domain") %}
{% endblock page_header %}
{% block main %}
{% include 'project/dns_domains/_create_domain.html' %}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Create Domain Record" %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title=_("Create Domain Record") %}
{% endblock page_header %}
{% block main %}
{% include 'project/dns_domains/_create_record.html' %}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans 'Domain Detail' %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title=_("Domain") %}
{% endblock page_header %}
{% block main %}
{% include 'project/dns_domains/_domain_detail.html' %}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Domains" %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title=_("Domains") %}
{% endblock page_header %}
{% block main %}
{{ table.render }}
{% endblock %}

View File

@ -1,4 +0,0 @@
<style type = "text/css" scoped>
.form_field_suffix { float: right; padding-top:10px; }
.form_field_prefix { display: block; overflow: hidden; }
</style>

View File

@ -1,2 +0,0 @@
<label class="form_field_suffix">{{ suffix }}</label>
<span class="form_field_prefix">{{ input }}</span>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans 'Record Detail' %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title="Record Detail" %}
{% endblock page_header %}
{% block main %}
{% include 'project/dns_domains/_record_detail.html' %}
{% endblock %}

View File

@ -1,32 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans 'Domain Records' %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title=_("Domain Records") %}
{% endblock page_header %}
{% block main %}
<div class="sub-content grid-content">
<div class="page_title table_header">
<div>
<h3>
<a href="{% url 'horizon:project:dns_domains:index' %}">{% trans "Domains" %}</a> : {{ domain.name }} &rarr;
{% trans "Records" %}
</h3>
</div>
<div class="table_actions">
<a href="{% url 'horizon:project:dns_domains:index' %}" class="close">&times;</a>
</div>
</div>
<div class="nameservers_wrapper">
<h3>{% trans "Nameservers" %}</h3>
<ul>
{% for server in servers %}
<li>{{ server.name }}</li>
{% endfor %}
</ul>
</div>
{{ table.render }}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans 'Update Domain' %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title="Domain" %}
{% endblock page_header %}
{% block main %}
{% include 'project/dns_domains/_update_domain.html' %}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans 'Update Domain Record' %}{% endblock %}
{% block page_header %}
{% include "horizon/common/_page_header.html" with title="Domain Record" %}
{% endblock page_header %}
{% block main %}
{% include 'project/dns_domains/_update_record.html' %}
{% endblock %}

View File

@ -1,52 +0,0 @@
# Copyright 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.
from django.conf.urls import url, patterns # noqa
from .views import CreateDomainView # noqa
from .views import CreateRecordView # noqa
from .views import DomainDetailView # noqa
from .views import IndexView # noqa
from .views import RecordsView # noqa
from .views import UpdateDomainView # noqa
from .views import UpdateRecordView # noqa
from .views import ViewRecordDetailsView # noqa
urlpatterns = patterns(
'',
url(r'^$',
IndexView.as_view(),
name='index'),
url(r'^create/$',
CreateDomainView.as_view(),
name='create_domain'),
url(r'^(?P<domain_id>[^/]+)/update$',
UpdateDomainView.as_view(),
name='update_domain'),
url(r'^(?P<domain_id>[^/]+)$',
DomainDetailView.as_view(),
name='domain_detail'),
url(r'^(?P<domain_id>[^/]+)/records$',
RecordsView.as_view(),
name='records'),
url(r'^(?P<domain_id>[^/]+)/records/create$',
CreateRecordView.as_view(),
name='create_record'),
url(r'^(?P<domain_id>[^/]+)/records/(?P<record_id>[^/]+)/update$',
UpdateRecordView.as_view(),
name='update_record'),
url(r'^(?P<domain_id>[^/]+)/records/(?P<record_id>[^/]+)/$',
ViewRecordDetailsView.as_view(),
name='view_record'),
)

View File

@ -1,20 +0,0 @@
# 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
def limit_records_to_fips():
# This method checks the settings to determine if the
# record creation / update screen should limit the ip input
# to be a dropdown of floating ips
return getattr(settings, "DESIGNATE",
{}).get("records_use_fips", False)

View File

@ -1,243 +0,0 @@
# Copyright 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.
from django.core.urlresolvers import reverse, reverse_lazy # noqa
from django.utils.translation import ugettext_lazy as _ # noqa
from horizon import exceptions
from horizon import forms
from horizon import tables
from horizon.views import HorizonTemplateView # noqa
from openstack_dashboard.api.network import tenant_floating_ip_list
from openstack_dashboard.api.nova import server_list
from designatedashboard import api
from designatedashboard.api import rest # noqa
from .forms import DomainCreate # noqa
from .forms import DomainUpdate # noqa
from .forms import RecordCreate # noqa
from .forms import RecordUpdate # noqa
from .tables import DomainsTable # noqa
from .tables import RecordsTable # noqa
from .utils import limit_records_to_fips # noqa
class IndexView(tables.DataTableView):
table_class = DomainsTable
template_name = 'project/dns_domains/index.html'
def get_data(self):
try:
return api.designate.domain_list(self.request)
except Exception:
exceptions.handle(self.request,
_('Unable to retrieve domain list.'))
return []
class CreateDomainView(forms.ModalFormView):
form_class = DomainCreate
template_name = 'project/dns_domains/create_domain.html'
success_url = reverse_lazy('horizon:project:dns_domains:index')
def get_object_display(self, obj):
return obj.ip
class DomainDetailView(HorizonTemplateView):
template_name = 'project/dns_domains/domain_detail.html'
def get_context_data(self, **kwargs):
context = super(DomainDetailView, self).get_context_data(**kwargs)
domain_id = self.kwargs['domain_id']
try:
context["domain"] = api.designate.domain_get(self.request,
domain_id)
table = DomainsTable(self.request)
context["actions"] = table.render_row_actions(context["domain"])
except Exception:
redirect = reverse('horizon:project:dns_domains:index')
exceptions.handle(self.request,
_('Unable to retrieve domain record.'),
redirect=redirect)
return context
class UpdateDomainView(forms.ModalFormView):
form_class = DomainUpdate
template_name = 'project/dns_domains/update_domain.html'
success_url = reverse_lazy('horizon:project:dns_domains:index')
def get_object(self):
domain_id = self.kwargs['domain_id']
try:
return api.designate.domain_get(self.request, domain_id)
except Exception:
redirect = reverse('horizon:project:dns_domains:index')
exceptions.handle(self.request,
_('Unable to retrieve domain record.'),
redirect=redirect)
def get_initial(self):
self.domain = self.get_object()
return self.domain
def get_context_data(self, **kwargs):
context = super(UpdateDomainView, self).get_context_data(**kwargs)
context["domain"] = self.domain
return context
class RecordsView(tables.DataTableView):
table_class = RecordsTable
template_name = 'project/dns_domains/records.html'
def get_data(self):
domain_id = self.kwargs['domain_id']
records = []
try:
self.domain = api.designate.domain_get(self.request, domain_id)
self.servers = api.designate.server_list(self.request, domain_id)
records = api.designate.record_list(self.request, domain_id)
except Exception:
redirect = reverse('horizon:project:dns_domains:index')
exceptions.handle(self.request,
_('Unable to retrieve record list.'),
redirect=redirect)
return records
def get_context_data(self, **kwargs):
context = super(RecordsView, self).get_context_data(**kwargs)
context['domain'] = self.domain
context['servers'] = self.servers
return context
class BaseRecordFormView(forms.ModalFormView):
cancel_label = _("Cancel")
def get_success_url(self):
return reverse('horizon:project:dns_domains:records',
args=(self.kwargs['domain_id'],))
def get_domain(self):
domain_id = self.kwargs['domain_id']
try:
return api.designate.domain_get(self.request, domain_id)
except Exception:
redirect = reverse('horizon:project:dns_domains:records',
args=(self.kwargs['domain_id'],))
exceptions.handle(self.request,
('Unable to retrieve domain record.'),
redirect=redirect)
# NotAuthorized errors won't be redirected automatically. Need
# to force the issue
raise exceptions.Http302(redirect)
def get_initial(self):
self.domain = self.get_domain()
results = {'domain_id': self.domain.id,
'domain_name': self.domain.name, }
if limit_records_to_fips():
results.update({'fips': tenant_floating_ip_list(self.request),
'instances': server_list(self.request)[0]})
return results
def get_context_data(self, **kwargs):
"""Set the cancel url
the cancel_url needs a variable in it
so we cannot do this with a simple class attr
this is critical to perform before the super.get_context_data
"""
self.cancel_url = reverse('horizon:project:dns_domains:records',
args=(self.kwargs['domain_id'],))
context = super(BaseRecordFormView, self).get_context_data(**kwargs)
context['domain'] = self.domain
return context
class CreateRecordView(BaseRecordFormView):
form_class = RecordCreate
submit_label = _("Create Record")
template_name = 'project/dns_domains/create_record.html'
class ViewRecordDetailsView(HorizonTemplateView):
template_name = 'project/dns_domains/record_detail.html'
def get_record(self):
domain_id = self.kwargs['domain_id']
record_id = self.kwargs['record_id']
try:
return api.designate.record_get(self.request, domain_id, record_id)
except Exception:
redirect = reverse('horizon:project:dns_domains:records',
args=(self.kwargs['domain_id'],))
exceptions.handle(self.request,
_('Unable to retrieve domain record.'),
redirect=redirect)
def get_context_data(self, **kwargs):
context = super(ViewRecordDetailsView, self).get_context_data(**kwargs)
self.record = self.get_record()
context["record"] = self.record
context["domain_id"] = self.kwargs['domain_id']
return context
class UpdateRecordView(BaseRecordFormView):
form_class = RecordUpdate
submit_label = _("Update Record")
template_name = 'project/dns_domains/update_record.html'
def get_record(self):
domain_id = self.kwargs['domain_id']
record_id = self.kwargs['record_id']
try:
return api.designate.record_get(self.request, domain_id, record_id)
except Exception:
redirect = reverse('horizon:project:dns_domains:records',
args=(self.kwargs['domain_id'],))
exceptions.handle(self.request,
_('Unable to retrieve domain record.'),
redirect=redirect)
def get_initial(self):
initial = super(UpdateRecordView, self).get_initial()
self.record = self.get_record()
initial.update({
'id': self.record.id,
'name': self.record.name.replace("." + initial['domain_name'], ''),
'data': self.record.data,
'txt': self.record.data,
'priority': self.record.priority,
'ttl': self.record.ttl,
'type': self.record.type.lower(),
'description': self.record.description,
})
if limit_records_to_fips():
initial.update({'ip_addr': self.record.data})
return initial
def get_context_data(self, **kwargs):
context = super(UpdateRecordView, self).get_context_data(**kwargs)
context["record"] = self.record
return context

View File

@ -17,9 +17,9 @@ import horizon
from openstack_dashboard.dashboards.project import dashboard
class Zones(horizon.Panel):
name = _("Zones")
slug = 'dnszones'
permissions = ('openstack.services.dns',)
class Hosts(horizon.Panel):
name = _("Hosts")
slug = 'ssh_hosts'
permissions = ('openstack.services.ssh',)
dashboard.Project.register(Zones)
dashboard.Project.register(Hosts)

View File

@ -14,7 +14,7 @@
from django.conf.urls import url
from designatedashboard.dashboards.project.ngdns.zones import views
from tatudashboard.dashboards.project.hosts import views
urlpatterns = [

View File

@ -1 +0,0 @@
from designatedashboard.api import rest # noqa

View File

@ -1,25 +0,0 @@
# (c) Copyright 2015 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.
from django.utils.translation import ugettext_lazy as _
import horizon
from openstack_dashboard.dashboards.project import dashboard
class ReverseDns(horizon.Panel):
name = _("Reverse DNS")
slug = 'reverse_dns'
permissions = ('openstack.services.dns',)
dashboard.Project.register(ReverseDns)

View File

@ -1,22 +0,0 @@
# (c) Copyright 2015 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.
from django.conf.urls import url
from designatedashboard.dashboards.project.ngdns.reverse_dns import views
urlpatterns = [
url('', views.IndexView.as_view(), name='index'),
]

View File

@ -1,19 +0,0 @@
# (c) Copyright 2015 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.
from django.views import generic
class IndexView(generic.TemplateView):
template_name = 'angular.html'

View File

@ -13,8 +13,8 @@
# under the License.
# The name of the panel group to be added to HORIZON_CONFIG. Required.
PANEL_GROUP = 'dns'
PANEL_GROUP = 'ssh'
# The display name of the PANEL_GROUP. Required.
PANEL_GROUP_NAME = 'DNS'
PANEL_GROUP_NAME = 'SSH'
# The name of the dashboard the PANEL_GROUP associated with. Required.
PANEL_GROUP_DASHBOARD = 'project'

View File

@ -1,40 +0,0 @@
# Copyright 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.
from designatedashboard import exceptions
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'dnszones'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'dns'
ADD_EXCEPTIONS = {
'recoverable': exceptions.RECOVERABLE,
'not_found': exceptions.NOT_FOUND,
'unauthorized': exceptions.UNAUTHORIZED,
}
ADD_INSTALLED_APPS = ['designatedashboard']
# Python panel class of the PANEL to be added.
ADD_PANEL = (
'designatedashboard.dashboards.project.ngdns.zones.panel.Zones')
ADD_ANGULAR_MODULES = ['designatedashboard']
ADD_SCSS_FILES = ['designatedashboard/designatedashboard.scss']
AUTO_DISCOVER_STATIC_FILES = True

View File

@ -1,38 +0,0 @@
# Copyright 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.
from designatedashboard import exceptions
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'reverse_dns'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'dns'
ADD_EXCEPTIONS = {
'recoverable': exceptions.RECOVERABLE,
'not_found': exceptions.NOT_FOUND,
'unauthorized': exceptions.UNAUTHORIZED,
}
# Python panel class of the PANEL to be added.
ADD_PANEL = (
'designatedashboard.dashboards.project.ngdns.reverse_dns.panel.ReverseDns')
ADD_ANGULAR_MODULES = ['designatedashboard']
ADD_SCSS_FILES = ['designatedashboard/designatedashboard.scss']
AUTO_DISCOVER_STATIC_FILES = True

View File

@ -12,16 +12,14 @@
# License for the specific language governing permissions and limitations
# under the License.
from designatedashboard import exceptions
from tatudashboard import exceptions
# The name of the panel to be added to HORIZON_CONFIG. Required.
PANEL = 'domains'
PANEL = 'ssh_hosts'
# The name of the dashboard the PANEL associated with. Required.
PANEL_DASHBOARD = 'project'
# The name of the panel group the PANEL is associated with.
PANEL_GROUP = 'dns'
ADD_INSTALLED_APPS = ['designatedashboard']
PANEL_GROUP = 'ssh'
ADD_EXCEPTIONS = {
'recoverable': exceptions.RECOVERABLE,
@ -31,6 +29,10 @@ ADD_EXCEPTIONS = {
# Python panel class of the PANEL to be added.
ADD_PANEL = (
'designatedashboard.dashboards.project.dns_domains.panel.DNSDomains')
'tatudashboard.dashboards.project.hosts.panel.Hosts')
DISABLED = True
ADD_ANGULAR_MODULES = ['tatudashboard']
ADD_SCSS_FILES = ['tatudashboard/tatudashboard.scss']
AUTO_DISCOVER_STATIC_FILES = True

View File

@ -12,18 +12,86 @@
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from designateclient import exceptions as designateclient
from openstack_dashboard import exceptions
class Base(Exception):
def __init__(self, message=None):
if not message:
message = self.__class__.__name__
super(Base, self).__init__(message)
class UnsupportedVersion(Base):
pass
class ResourceNotFound(Base):
pass
class NoUniqueMatch(Base):
pass
class RemoteError(Base):
def __init__(self, message=None, code=None, type=None, errors=None,
request_id=None, **ignore):
err_message = self._get_error_message(message, type, errors)
self.message = err_message
self.code = code
self.type = type
self.errors = errors
self.request_id = request_id
super(RemoteError, self).__init__(err_message)
def _get_error_message(self, _message, _type, _errors):
# Try to get a useful error msg if 'message' has nothing
if not _message:
if _errors and 'errors' in _errors:
err_msg = list()
for err in _errors['errors']:
if 'message' in err:
err_msg.append(err['message'])
_message = '. '.join(err_msg)
elif _type:
_message = str(_type)
return _message
class Unknown(RemoteError):
pass
class BadRequest(RemoteError):
pass
class Forbidden(RemoteError):
pass
class Conflict(RemoteError):
pass
class NotFound(RemoteError):
pass
class OverQuota(RemoteError):
pass
NOT_FOUND = exceptions.NOT_FOUND + (
designateclient.ResourceNotFound,
designateclient.NotFound,
ResourceNotFound,
NotFound,
)
RECOVERABLE = exceptions.RECOVERABLE + (
designateclient.BadRequest,
designateclient.Conflict,
BadRequest,
Conflict,
)
UNAUTHORIZED = exceptions.UNAUTHORIZED + (
designateclient.Forbidden,
Forbidden,
)

View File

@ -1,348 +0,0 @@
# Stanislav Ulrych <stanislav.ulrych@ultimum.io>, 2016. #zanata
# Zbyněk Schwarz <zbynek.schwarz@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 6.0.0.0b2.dev3\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-11-21 15:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-11-17 07:24+0000\n"
"Last-Translator: Zbyněk Schwarz <zbynek.schwarz@gmail.com>\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"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Zde můžete upravit emailovou adresu a TTL patřící k doméně.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" Pole Email by mělo obsahovat platnou emailovou adresu, která je spojená\n"
" s doménou.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" Pole Název by mělo obsahovat plně kvalifikovaný název domény (s \n"
" tečkou na \n"
" konci)."
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" TTL (volitelné) může být hodnota mezi 1 a 2147483647\n"
" sekund.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" TTL je time-to-live záznamu, v sekundách.\n"
" </p>\n"
" <p>\n"
" Viz <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">více informací</a> o typech záznamů.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - adresní záznam"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - adresní záznam IPv6"
msgid "All Records"
msgstr "Všechny záznamy"
msgid "CNAME - Canonical name record"
msgstr "CNAME - záznam kanonického jména"
msgid "Cancel"
msgstr "Zrušit"
msgid "Canonical Name"
msgstr "Kanonické jméno"
msgid "Create Domain"
msgstr "Vytvořit doménu"
msgid "Create Domain Record"
msgstr "Vytvořit doménový záznam"
msgid "Create Record"
msgstr "Vytvořit záznam"
msgid "Create Record for"
msgstr "Vytvořit záznam pro"
msgid "Created"
msgstr "Vytvořeno"
msgid "Created At"
msgstr "Vytvořeno"
msgid "Data"
msgstr "Data"
msgid "Delete"
msgstr "Smazat"
msgid "Deleted"
msgstr "Smazáno"
msgid "Description"
msgstr "Popis"
msgid "Domain"
msgstr "Doména"
#, python-format
msgid "Domain %(name)s created."
msgstr "Doména %(name)s vytvořena."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Doména %(name)s aktualizována."
msgid "Domain Detail"
msgstr "Detail domény"
msgid "Domain Name"
msgstr "Název domény"
msgid "Domain Overview"
msgstr "Přehled domén"
msgid "Domain Records"
msgstr "Doménové záznamy"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Doménový záznam %(name)s vytvořen."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Doménový záznam %(name)s aktualizován."
msgid "Domains"
msgstr "Domény"
msgid "Edit Domain"
msgstr "Upravit doménu"
msgid "Edit Record"
msgstr "Upravit záznam"
msgid "Email"
msgstr "E-mail"
msgid "Enter a valid IPv4 address"
msgstr "Zadejte platnou IPv4 adresu"
msgid "Enter a valid IPv6 address"
msgstr "Zadejte platnou IPv6 adresu"
msgid "Enter a valid SRV name"
msgstr "Zadejte platné SRV jméno"
msgid "Enter a valid SRV record"
msgstr "Zadejte platný SRV záznam"
msgid "Enter a valid SSHFP record"
msgstr "Zadejte platný SSHFP záznam"
msgid "Enter a valid domain name."
msgstr "Zadejte platný název domény."
msgid "Enter a valid hostname"
msgstr "Zadejte platné jméno hostitele"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Zadejte platný název hostitele. Název hostitele by měl obsahovat písmena a "
"číslice a musí být maximálně 63 znaků."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP adresa"
msgid "MX - Mail exchange record"
msgstr "MX - mailový záznam"
msgid "Mail Server"
msgstr "Mailový server"
msgid "Manage Records"
msgstr "Spravovat záznamy"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Název"
msgid "Name Server"
msgstr "Název serveru"
msgid "Nameservers"
msgstr "Jmenné servery"
msgid "None"
msgstr "Žádný"
msgid "PTR - Pointer record"
msgstr "PTR - záznam ukazatele"
msgid "PTR Domain Name"
msgstr "PTR doménové jméno"
msgid "Priority"
msgstr "Priorita"
msgid "Record"
msgstr "Záznam"
msgid "Record Data"
msgstr "Zaznamenat data"
msgid "Record Detail"
msgstr "Zaznamenat detail"
msgid "Record Type"
msgstr "Typ záznamu"
msgid "Records"
msgstr "Záznamy"
msgid "Reverse DNS"
msgstr "Reverzní DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - lokátor služby"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - Otisk veřejného klíče SSH"
msgid "Select an IP"
msgstr "Vyberte IP adresu"
msgid "Serial"
msgstr "Sériový"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (ve vteřinách)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - textový záznam"
msgid "Text"
msgstr "Text"
msgid "The quotas could not be retrieved."
msgstr "Nelze získat kvóty."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Žádné plovoucí IP nejsou k dispozici pro výběr."
msgid "This field is required"
msgstr "Toto pole je povinné"
msgid "Type"
msgstr "Typ"
msgid "Unable to create domain."
msgstr "Nelze vytvořit doménu."
msgid "Unable to create record."
msgstr "Nelze vytvořit záznam."
msgid "Unable to retrieve domain list."
msgstr "Nelze získat seznam domén."
msgid "Unable to retrieve domain record."
msgstr "Nelze získat doménový záznam."
msgid "Unable to retrieve record list."
msgstr "Nelze získat záznamy."
msgid "Unable to update domain."
msgstr "Nelze aktualizovat doménu."
msgid "Unknown"
msgstr "Neznámé"
msgid "Unknown instance name"
msgstr "Neznámé jméno instance"
msgid "Update Domain"
msgstr "Aktualizovat doménu"
msgid "Update Domain Record"
msgstr "Aktualizovat záznam domény"
msgid "Update Record"
msgstr "Aktualizovat záznam"
msgid "Updated"
msgstr "Aktualizováno"
msgid "Updated At"
msgstr "Aktualizováno"
msgid "Value"
msgstr "Hodnota"
msgid "Zones"
msgstr "Zóny"

View File

@ -1,351 +0,0 @@
# Frank Kloeker <eumel@arcor.de>, 2016. #zanata
# Robert Simai <robert.simai@suse.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 3.0.0.0rc2.dev5\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-09-29 13:19+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-13 04:32+0000\n"
"Last-Translator: Andreas Jaeger <jaegerandi@gmail.com>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Hier können Sie die E-Mail-Adresse und TTL mit dazugehöriger Domäne "
"editieren.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" Das E-Mail-Feld sollte eine gültige E-Mail-Adresse enthalten,\n"
" die der Domäne zugewiesen wird.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" Das Namensfeld sollte einen vollqualifizierten Domänennamen enthalten "
"(mit\n"
" abschließendem Punkt).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" Das optionale TTL Feld kann einen Wert zwischen 1 und 2147483647\n"
" Sekunden haben.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" Die TTL ist die time-to-live für den Datensatz, in Sekunden.\n"
" </p>\n"
" <p>\n"
" Hier finden Sie <a href=\"http://en.wikipedia.org/wiki/"
"List_of_DNS_record_types\" target=\"_designate_record_defs\">mehr "
"Informationen</a> zu Datensatztypen.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Adress Datensatz"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 Adress Datensatz"
msgid "All Records"
msgstr "Alle Datensätze"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Canonical Name Datensatz"
msgid "Cancel"
msgstr "Abbrechen"
msgid "Canonical Name"
msgstr "Canonical Name"
msgid "Create Domain"
msgstr "Domäne erstellen"
msgid "Create Domain Record"
msgstr "Erzeuge Datensatz für Domäne"
msgid "Create Record"
msgstr "Datensatz erzeugen"
msgid "Create Record for"
msgstr "Erzeuge Datensatz für"
msgid "Created"
msgstr "Erstellt"
msgid "Created At"
msgstr "Erstellt am"
msgid "Data"
msgstr "Daten"
msgid "Delete"
msgstr "Löschen"
msgid "Deleted"
msgstr "Gelöscht"
msgid "Description"
msgstr "Beschreibung"
msgid "Domain"
msgstr "Domäne"
#, python-format
msgid "Domain %(name)s created."
msgstr "Domäne %(name)s erstellt."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Domäne %(name)s wurde geändert."
msgid "Domain Detail"
msgstr "Domänen Details"
msgid "Domain Name"
msgstr "Domänenname"
msgid "Domain Overview"
msgstr "Domänenübersicht"
msgid "Domain Records"
msgstr "Domänendatensatz"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Domändatensatz %(name)s erstellt."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Domänendatensatz %(name)s aktualisiert."
msgid "Domains"
msgstr "Domänen"
msgid "Edit Domain"
msgstr "Domäne bearbeiten"
msgid "Edit Record"
msgstr "Datensatze bearbeiten"
msgid "Email"
msgstr "E-Mail"
msgid "Enter a valid IPv4 address"
msgstr "Geben Sie eine gültige IPv4 Addresse ein"
msgid "Enter a valid IPv6 address"
msgstr "Geben Sie eine gültige IPv6 Addresse ein"
msgid "Enter a valid SRV name"
msgstr "Geben Sie einen gültigen SRV Namen ein"
msgid "Enter a valid SRV record"
msgstr "Geben Sie einen gültigen SRV Datensatz ein"
msgid "Enter a valid SSHFP record"
msgstr "Geben Sie einen gültigen SSHFP Datensatz ein"
msgid "Enter a valid domain name."
msgstr "Geben Sie einen gültigen Domänennamen ein."
msgid "Enter a valid hostname"
msgstr "Geben Sie einen gültigen Hostnamen ein"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Geben Sie einen gültien Hostnamen ein. Der Hostname darf nur Buchstaben und "
"Nummern enthalten und darf nicht mehr als 63 Zeichen lang sein."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP-Adresse"
msgid "MX - Mail exchange record"
msgstr "MX - Mail Austausch Datensatz"
msgid "Mail Server"
msgstr "Mailserver"
msgid "Manage Records"
msgstr "Datensätze verwalten"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Name"
msgid "Name Server"
msgstr "Nameserver"
msgid "Nameservers"
msgstr "Namensserver"
msgid "None"
msgstr "Keine"
msgid "PTR - Pointer record"
msgstr "PTR - Pointer Datensatz"
msgid "PTR Domain Name"
msgstr "PTR Domänenname"
msgid "Priority"
msgstr "Priorität"
msgid "Record"
msgstr "Datensatz"
msgid "Record Data"
msgstr "Datensatz"
msgid "Record Detail"
msgstr "Datensatzdetails"
msgid "Record Type"
msgstr "Datensatztyp"
msgid "Records"
msgstr "Datensätze"
msgid "Reverse DNS"
msgstr "Reverse DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - Dienstezeiger"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH Fingerprint für öffentlichen Schlüssel"
msgid "Select an IP"
msgstr "Wähle eine IP"
msgid "Serial"
msgstr "Seriennummer"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (Sekunden)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Text Datensatz"
msgid "Text"
msgstr "Text"
msgid "The quotas could not be retrieved."
msgstr "Die Kontingente konnten nicht abgerufen werden."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Es stehen derzeit keine Floating IP-Adressen zur Auswahl."
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
msgid "Type"
msgstr "Typ"
msgid "Unable to create domain."
msgstr "Die Domäne kann nicht erstellt werden."
msgid "Unable to create record."
msgstr "Datensatz konnte nicht erzeugt werden."
msgid "Unable to retrieve domain list."
msgstr "Domänen-Liste kann nicht abgerufen werden."
msgid "Unable to retrieve domain record."
msgstr "Domänendatensatz kann nicht abgerufen werden."
msgid "Unable to retrieve record list."
msgstr "Die Datensatzliste kann nicht abgerufen werden."
msgid "Unable to update domain."
msgstr "Die Domäne kann nicht geändert werden."
msgid "Unknown"
msgstr "Unbekannt"
msgid "Unknown instance name"
msgstr "Unbekannter Instanzname"
msgid "Update Domain"
msgstr "Domain ändern"
msgid "Update Domain Record"
msgstr "Domänendatensatz aktualisieren"
msgid "Update Record"
msgstr "Datensatz aktualisieren"
msgid "Updated"
msgstr "Aktualisiert"
msgid "Updated At"
msgstr "Aktualisiert am"
msgid "Value"
msgstr "Wert"
msgid "Zones"
msgstr "Zonen"

View File

@ -1,351 +0,0 @@
# OpenStack Infra <zanata@openstack.org>, 2015. #zanata
# Rob Cresswell <robert.cresswell@outlook.com>, 2015. #zanata
# Andi Chandler <andi@gowling.com>, 2016. #zanata
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 3.0.0.0rc2.dev6\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-10-14 10:51+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-23 09:03+0000\n"
"Last-Translator: Andreas Jaeger <jaegerandi@gmail.com>\n"
"Language-Team: English (United Kingdom)\n"
"Language: en-GB\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Address record"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 address record"
msgid "All Records"
msgstr "All Records"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Canonical name record"
msgid "Cancel"
msgstr "Cancel"
msgid "Canonical Name"
msgstr "Canonical Name"
msgid "Create Domain"
msgstr "Create Domain"
msgid "Create Domain Record"
msgstr "Create Domain Record"
msgid "Create Record"
msgstr "Create Record"
msgid "Create Record for"
msgstr "Create Record for"
msgid "Created"
msgstr "Created"
msgid "Created At"
msgstr "Created At"
msgid "Data"
msgstr "Data"
msgid "Delete"
msgstr "Delete"
msgid "Deleted"
msgstr "Deleted"
msgid "Description"
msgstr "Description"
msgid "Domain"
msgstr "Domain"
#, python-format
msgid "Domain %(name)s created."
msgstr "Domain %(name)s created."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Domain %(name)s updated."
msgid "Domain Detail"
msgstr "Domain Detail"
msgid "Domain Name"
msgstr "Domain Name"
msgid "Domain Overview"
msgstr "Domain Overview"
msgid "Domain Records"
msgstr "Domain Records"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Domain record %(name)s created."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Domain record %(name)s updated."
msgid "Domains"
msgstr "Domains"
msgid "Edit Domain"
msgstr "Edit Domain"
msgid "Edit Record"
msgstr "Edit Record"
msgid "Email"
msgstr "Email"
msgid "Enter a valid IPv4 address"
msgstr "Enter a valid IPv4 address"
msgid "Enter a valid IPv6 address"
msgstr "Enter a valid IPv6 address"
msgid "Enter a valid SRV name"
msgstr "Enter a valid SRV name"
msgid "Enter a valid SRV record"
msgstr "Enter a valid SRV record"
msgid "Enter a valid SSHFP record"
msgstr "Enter a valid SSHFP record"
msgid "Enter a valid domain name."
msgstr "Enter a valid domain name."
msgid "Enter a valid hostname"
msgstr "Enter a valid hostname"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP Address"
msgid "MX - Mail exchange record"
msgstr "MX - Mail exchange record"
msgid "Mail Server"
msgstr "Mail Server"
msgid "Manage Records"
msgstr "Manage Records"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Name"
msgid "Name Server"
msgstr "Name Server"
msgid "Nameservers"
msgstr "Nameservers"
msgid "None"
msgstr "None"
msgid "PTR - Pointer record"
msgstr "PTR - Pointer record"
msgid "PTR Domain Name"
msgstr "PTR Domain Name"
msgid "Priority"
msgstr "Priority"
msgid "Record"
msgstr "Record"
msgid "Record Data"
msgstr "Record Data"
msgid "Record Detail"
msgstr "Record Detail"
msgid "Record Type"
msgstr "Record Type"
msgid "Records"
msgstr "Records"
msgid "Reverse DNS"
msgstr "Reverse DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - Service locator"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH Public Key Fingerprint"
msgid "Select an IP"
msgstr "Select an IP"
msgid "Serial"
msgstr "Serial"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (seconds)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Text record"
msgid "Text"
msgstr "Text"
msgid "The quotas could not be retrieved."
msgstr "The quotas could not be retrieved."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "There are no floating IP addresses currently in use to select from."
msgid "This field is required"
msgstr "This field is required"
msgid "Type"
msgstr "Type"
msgid "Unable to create domain."
msgstr "Unable to create domain."
msgid "Unable to create record."
msgstr "Unable to create record."
msgid "Unable to retrieve domain list."
msgstr "Unable to retrieve domain list."
msgid "Unable to retrieve domain record."
msgstr "Unable to retrieve domain record."
msgid "Unable to retrieve record list."
msgstr "Unable to retrieve record list."
msgid "Unable to update domain."
msgstr "Unable to update domain."
msgid "Unknown"
msgstr "Unknown"
msgid "Unknown instance name"
msgstr "Unknown instance name"
msgid "Update Domain"
msgstr "Update Domain"
msgid "Update Domain Record"
msgstr "Update Domain Record"
msgid "Update Record"
msgstr "Update Record"
msgid "Updated"
msgstr "Updated"
msgid "Updated At"
msgstr "Updated At"
msgid "Value"
msgstr "Value"
msgid "Zones"
msgstr "Zones"

View File

@ -1,342 +0,0 @@
# Marian Tort <marian.tort@gmail.com>, 2015. #zanata
# OpenStack Infra <zanata@openstack.org>, 2015. #zanata
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Eugènia Torrella <tester03@es.ibm.com>, 2016. #zanata
# Alberto Molina Coballes <alb.molina@gmail.com>, 2017. #zanata
# Zeus Arias Lucero <zeusariaslucero@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 5.0.0.0rc2.dev4\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-08-23 14:30+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-08-24 09:39+0000\n"
"Last-Translator: Zeus Arias Lucero <zeusariaslucero@gmail.com>\n"
"Language-Team: Spanish\n"
"Language: es\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Desde aquí puede editar la dirección de correo y el TTL asociado a un "
"dominio.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" El campo nombre debe contener un full-qualified domain name (con \n"
" punto final).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" El campo opcional TTL puede tener un valor entre 1 y 2147483647\n"
" segundos.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" El TTL es el tiempo de vida del registro en segundos.\n"
" </p>\n"
" <p>\n"
" Vea <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">más info</a> sobre tipos de registros.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Registro de dirección IPv4"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - Registro de dirección IPv6"
msgid "All Records"
msgstr "Todos los registros"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Registro de nombre canónico"
msgid "Cancel"
msgstr "Cancelar "
msgid "Canonical Name"
msgstr "Nombre canónico"
msgid "Create Domain"
msgstr "Crear dominio"
msgid "Create Domain Record"
msgstr "Crear registro del dominio"
msgid "Create Record"
msgstr "Crear registro"
msgid "Create Record for"
msgstr "Crear registro para"
msgid "Created"
msgstr "Creado"
msgid "Created At"
msgstr "Creado el"
msgid "Data"
msgstr "Datos"
msgid "Delete"
msgstr "Eliminar"
msgid "Deleted"
msgstr "Eliminado"
msgid "Description"
msgstr "Descripción"
msgid "Domain"
msgstr "Dominio"
#, python-format
msgid "Domain %(name)s created."
msgstr "Dominio %(name)s creado."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Dominio %(name)s actualizado."
msgid "Domain Detail"
msgstr "Detalles del dominio"
msgid "Domain Name"
msgstr "Nombre de dominio"
msgid "Domain Overview"
msgstr "Visión general del dominio"
msgid "Domain Records"
msgstr "Registros del dominio"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Registro de dominio %(name)s creado"
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Registro de dominio %(name)s actualizado"
msgid "Domains"
msgstr "Dominios"
msgid "Edit Domain"
msgstr "Editar dominio"
msgid "Edit Record"
msgstr "Editar registro"
msgid "Email"
msgstr "Correo electrónico"
msgid "Enter a valid IPv4 address"
msgstr "Introduzca una dirección IPv4 válida"
msgid "Enter a valid IPv6 address"
msgstr "Introduzca una dirección IPv6 válida"
msgid "Enter a valid SRV name"
msgstr "Introduzca un nombre SRV válido"
msgid "Enter a valid SRV record"
msgstr "Introduzca un registro SRV válido"
msgid "Enter a valid SSHFP record"
msgstr "Introduzca un registro SSHFP válido"
msgid "Enter a valid domain name."
msgstr "Introduzca un nombre de dominio válido."
msgid "Enter a valid hostname"
msgstr "Introduzca un hostname válido"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Introduzca un hostname válido. El hostname puede incluir letras, números y "
"no tener más de 63 caracteres."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "Dirección IP"
msgid "MX - Mail exchange record"
msgstr "MX - Registro de Mail exchange"
msgid "Mail Server"
msgstr "Servidor de correo"
msgid "Manage Records"
msgstr "Gestionar registros"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Nombre"
msgid "Name Server"
msgstr "Servidor de nombres"
msgid "Nameservers"
msgstr "Servidores de nombres"
msgid "None"
msgstr "Ninguno"
msgid "PTR - Pointer record"
msgstr "PTR - Registro de puntero"
msgid "PTR Domain Name"
msgstr "Nombre de dominio PTR"
msgid "Priority"
msgstr "Prioridad"
msgid "Record"
msgstr "Registro"
msgid "Record Data"
msgstr "Registro"
msgid "Record Detail"
msgstr "Detalles del registro"
msgid "Record Type"
msgstr "Tipo de registro"
msgid "Records"
msgstr "Registros"
msgid "Reverse DNS"
msgstr "DNS inverso"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - Servicio locator"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - Huella digital de clave SSH pública"
msgid "Select an IP"
msgstr "Seleccione una IP"
msgid "Serial"
msgstr "Serial"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (segundos)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Registro de texto"
msgid "Text"
msgstr "Texto"
msgid "The quotas could not be retrieved."
msgstr "No ha sido posible obtener las cuotas."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Actualmente no hay direcciones IP flotantes en uso para seleccionar."
msgid "This field is required"
msgstr "Este campo es obligatorio"
msgid "Type"
msgstr "Tipo"
msgid "Unable to create domain."
msgstr "No ha sido posible crear el dominio."
msgid "Unable to create record."
msgstr "No ha sido posible crear el registro."
msgid "Unable to retrieve domain list."
msgstr "No ha sido posible obtener la lista de dominios."
msgid "Unable to retrieve domain record."
msgstr "No ha sido posible obtener el registro del dominio."
msgid "Unable to retrieve record list."
msgstr "No ha sido posible obtener la lista de registros."
msgid "Unable to update domain."
msgstr "No ha sido posible actualizar el dominio."
msgid "Unknown"
msgstr "Desconocido"
msgid "Unknown instance name"
msgstr "Nombre de instancia desconicodo"
msgid "Update Domain"
msgstr "Actualizar dominio"
msgid "Update Domain Record"
msgstr "Actualizar registro del dominio"
msgid "Update Record"
msgstr "Actualizar registro"
msgid "Updated"
msgstr "Actualizada"
msgid "Updated At"
msgstr "Actualizado el"
msgid "Value"
msgstr "Valor"
msgid "Zones"
msgstr "Zonas"

View File

@ -1,362 +0,0 @@
# Translations template for designate-dashboard.
# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the designate-dashboard
# project.
#
# Translators:
# Lucas Mascaro <mascaro.lucas@yahoo.fr>, 2015
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Gael Rehault <gael_rehault@dell.com>, 2016. #zanata
# Gérald LONLAS <g.lonlas@gmail.com>, 2016. #zanata
# Gaelle <pattedeph@gmail.com>, 2017. #zanata
# JF Taltavull <jftalta@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 6.0.0.0b2.dev3\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-11-21 15:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-11-14 07:52+0000\n"
"Last-Translator: Gaelle <pattedeph@gmail.com>\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Generated-By: Babel 2.0\n"
"X-Generator: Zanata 3.9.6\n"
"Language-Team: French\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Ici vous pouvez éditer l'adresse email e t le TTL associés à un "
"domaine.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" Le champ Email doit contenir un email valide qui sera associé \n"
" avec le domaine.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" Le champ Nom doit contenir un nom de domaine (FQDN avec le\n"
" point \".\" de terminaison).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" La valeur du champ optionnel TTL doit être comprise entre 1 et "
"2147483647\n"
" secondes.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" Le TTL est le time-to-live de l'enregistrement, en secondes.\n"
" </p>\n"
" <p>\n"
" Voir <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">plus de détails</a> sur les types "
"d'enregistrement.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Enregistrement d'Adresse"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - Enregistrement d'Adresse IPv6"
msgid "All Records"
msgstr "Tous les enregistrements"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Enregistrement de Nom Canonique"
msgid "Cancel"
msgstr "Annuler"
msgid "Canonical Name"
msgstr "Nom canonique"
msgid "Create Domain"
msgstr "Créer un domaine"
msgid "Create Domain Record"
msgstr "Créer un enregistrement de domaine"
msgid "Create Record"
msgstr "Créer un enregistrement"
msgid "Create Record for"
msgstr "Créer un enregistrement pour"
msgid "Created"
msgstr "Créé"
msgid "Created At"
msgstr "Créé le"
msgid "Data"
msgstr "Données"
msgid "Delete"
msgstr "Supprimer"
msgid "Deleted"
msgstr "Supprimé"
msgid "Description"
msgstr "Description"
msgid "Domain"
msgstr "Domaine"
#, python-format
msgid "Domain %(name)s created."
msgstr "Domaine %(name)s créé."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Domaine %(name)s mis à jour."
msgid "Domain Detail"
msgstr "Détail du domaine"
msgid "Domain Name"
msgstr "Nom de domaine"
msgid "Domain Overview"
msgstr "Vue d'ensemble du domaine"
msgid "Domain Records"
msgstr "Enregistrements de domaine"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Enregistrement Domaine %(name)s créé"
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Enregistrement Domaine %(name)s mis à jour."
msgid "Domains"
msgstr "Domaines"
msgid "Edit Domain"
msgstr "Editer le domaine"
msgid "Edit Record"
msgstr "Editer l'enregistrement"
msgid "Email"
msgstr "Courriel"
msgid "Enter a valid IPv4 address"
msgstr "Entrer une adresse IPv4 valide"
msgid "Enter a valid IPv6 address"
msgstr "Entrer une adresse IPv6 valide"
msgid "Enter a valid SRV name"
msgstr "Entrer un nom SRV valide"
msgid "Enter a valid SRV record"
msgstr "Entrer un enregistrement SRV valide"
msgid "Enter a valid SSHFP record"
msgstr "Entrer un enregistrement SSHFP valide"
msgid "Enter a valid domain name."
msgstr "Entrer un nom de domaine valide."
msgid "Enter a valid hostname"
msgstr "Entrer un nom d'hôte valide"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Entrer un nom d'hôte valide. Le nom d'hôte ne doit contenir que des lettres "
"et des chiffres, et ne doit pas dépasser 63 caractères."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "Adresse IP"
msgid "MX - Mail exchange record"
msgstr "MX - Enregistrement de Serveur de messagerie"
msgid "Mail Server"
msgstr "Serveur de messagerie"
msgid "Manage Records"
msgstr "Gérer les enregistrements"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Nom"
msgid "Name Server"
msgstr "Nom de serveur"
msgid "Nameservers"
msgstr "Serveurs de nom"
msgid "None"
msgstr "Aucun"
msgid "PTR - Pointer record"
msgstr "PTR - Enregistrement de Pointeur"
msgid "PTR Domain Name"
msgstr "Nom de domaine PTR"
msgid "Priority"
msgstr "Priorité"
msgid "Record"
msgstr "Enregistrement"
msgid "Record Data"
msgstr "Enregistrer les données"
msgid "Record Detail"
msgstr "Détail de l'enregistrement"
msgid "Record Type"
msgstr "Type d'enregistrement"
msgid "Records"
msgstr "Enregistrements"
msgid "Reverse DNS"
msgstr "Reverse DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Politique démission"
msgid "SRV - Service locator"
msgstr "SRV - Enregistrement de Service"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - Somme de contrôle de la clé SSH publique"
msgid "Select an IP"
msgstr "Sélectionner une IP"
msgid "Serial"
msgstr "Numéro de série"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (secondes)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Enregistrement Texte"
msgid "Text"
msgstr "Texte"
msgid "The quotas could not be retrieved."
msgstr "Les quotas n'ont pas pu être récupérés."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Aucune adresse IP flottante en cours d'utilisation à sélectionner."
msgid "This field is required"
msgstr "Ce champ est requis"
msgid "Type"
msgstr "Type"
msgid "Unable to create domain."
msgstr "Impossible de créer le domaine."
msgid "Unable to create record."
msgstr "Impossible de créer un enregistrement"
msgid "Unable to retrieve domain list."
msgstr "Impossible de récupérer la liste des domaines."
msgid "Unable to retrieve domain record."
msgstr "Impossible de récupérer l'enregistrement de domaine."
msgid "Unable to retrieve record list."
msgstr "Impossible de récupérer la liste des enregistrements."
msgid "Unable to update domain."
msgstr "Impossible de mettre à jour le domaine."
msgid "Unknown"
msgstr "Inconnu"
msgid "Unknown instance name"
msgstr "Nom d'instance inconnu"
msgid "Update Domain"
msgstr "Mettre à jour le domaine"
msgid "Update Domain Record"
msgstr "Mettre à jour l'enregistrement de domaine"
msgid "Update Record"
msgstr "Mettre à jour l'enregistrement"
msgid "Updated"
msgstr "Mis à jour"
msgid "Updated At"
msgstr "Mis à jour le"
msgid "Value"
msgstr "Valeur"
msgid "Zones"
msgstr "Zones"

View File

@ -1,350 +0,0 @@
# OpenStack Infra <zanata@openstack.org>, 2015. #zanata
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# suhartono <cloudsuhartono@gmail.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 3.0.0.0rc2.dev5\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-09-29 13:19+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-13 04:32+0000\n"
"Last-Translator: suhartono <cloudsuhartono@gmail.com>\n"
"Language-Team: Indonesian\n"
"Language: id\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Dari sini Anda dapat mengedit alamat email dan TTL terkait dengan "
"domain.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
"Kolom email harus berisi alamat email yang valid terkait\n"
"       dengan domain.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" Kolom TTL opsional dapat berupa nilai antara 1 dan 2147483647\n"
" detik.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" TTL adalah time-to-live untuk rekor, dalam hitungan detik.\n"
" </p>\n"
" <p>\n"
" Lihat <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> pada tipe rekor.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Address record"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 address record"
msgid "All Records"
msgstr "All Records (semua rekor)"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Canonical name record"
msgid "Cancel"
msgstr "Batal"
msgid "Canonical Name"
msgstr "Canonical Name (nama canonical)"
msgid "Create Domain"
msgstr "Membuat Domain"
msgid "Create Domain Record"
msgstr "Create Domain Record (buat rekor domain)"
msgid "Create Record"
msgstr "Buat rekor"
msgid "Create Record for"
msgstr "Buat rekor"
msgid "Created"
msgstr "Created (dibuat)"
msgid "Created At"
msgstr "Created At (dibuat pada)"
msgid "Data"
msgstr "Data"
msgid "Delete"
msgstr "Hapus"
msgid "Deleted"
msgstr "Terhapus"
msgid "Description"
msgstr "Deskripsi"
msgid "Domain"
msgstr "Domain"
#, python-format
msgid "Domain %(name)s created."
msgstr "Domain %(name)s dibuat."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Domain %(name)s diperbaharui."
msgid "Domain Detail"
msgstr "Domain Detail (rincian domain)"
msgid "Domain Name"
msgstr "Nama domain"
msgid "Domain Overview"
msgstr "Domain Overview (ikhtisar domain)"
msgid "Domain Records"
msgstr "Domain Records (rekor domain)"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Rekor domain %(name)s dibuat."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Rekor domain %(name)s diperbaharui"
msgid "Domains"
msgstr "Domain"
msgid "Edit Domain"
msgstr "Mengedit domain"
msgid "Edit Record"
msgstr "Mengedit recor"
msgid "Email"
msgstr "Surat elektronik"
msgid "Enter a valid IPv4 address"
msgstr "Masukkan alamat IPv4 yang valid"
msgid "Enter a valid IPv6 address"
msgstr "Masukkan alamat IPv6 yang valid"
msgid "Enter a valid SRV name"
msgstr "Masukkan nama SRV valid"
msgid "Enter a valid SRV record"
msgstr "Masukkan rekor SRV valid"
msgid "Enter a valid SSHFP record"
msgstr "Masukkan rekor SSHFP valid"
msgid "Enter a valid domain name."
msgstr "Masukkan nama domain yang valid."
msgid "Enter a valid hostname"
msgstr "Masukkan hostname yang valid"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Masukkan hostname yang valid. Hostname harus berisi huruf dan angka, dan "
"tidak lebih dari 63 karakter."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP Address (alamat IP)"
msgid "MX - Mail exchange record"
msgstr "MX - Mail exchange record"
msgid "Mail Server"
msgstr "Mail Server (server mail)"
msgid "Manage Records"
msgstr "Mengelola rekor"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Name (nama)"
msgid "Name Server"
msgstr "Name Server (server nama)"
msgid "Nameservers"
msgstr "Nameservers"
msgid "None"
msgstr "None (tak satupun)"
msgid "PTR - Pointer record"
msgstr "PTR - Pointer record"
msgid "PTR Domain Name"
msgstr "PTR Domain Name (nama domain PTR)"
msgid "Priority"
msgstr "Priority (prioritas)"
msgid "Record"
msgstr "Record (rekor)"
msgid "Record Data"
msgstr "Record Data (data rekam)"
msgid "Record Detail"
msgstr "Record Detail (rincian rekor)"
msgid "Record Type"
msgstr "Record Type (tipe rekam)"
msgid "Records"
msgstr "Records (rekor)"
msgid "Reverse DNS"
msgstr "Reverse DNS "
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - Service locator"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH Public Key Fingerprint"
msgid "Select an IP"
msgstr "Pilih IP"
msgid "Serial"
msgstr "Serial (serial)"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (detik)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Text record"
msgid "Text"
msgstr "Text"
msgid "The quotas could not be retrieved."
msgstr "Kuota tidak dapat diambil."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Tidak ada alamat IP mengambang saat ini yang digunakan untuk memilih."
msgid "This field is required"
msgstr "Bagian ini diperlukan"
msgid "Type"
msgstr "Tipe"
msgid "Unable to create domain."
msgstr "Tidak dapat membuat domain."
msgid "Unable to create record."
msgstr "Tidak dapat membuat rekor."
msgid "Unable to retrieve domain list."
msgstr "Tidak dapat mengambil daftar domain."
msgid "Unable to retrieve domain record."
msgstr "Tidak dapat mengambil rekor domain."
msgid "Unable to retrieve record list."
msgstr "Tidak dapat mengambil daftar rekor."
msgid "Unable to update domain."
msgstr "Tidak dapat memperbarui domain."
msgid "Unknown"
msgstr "Unknown (tidak diketahui)"
msgid "Unknown instance name"
msgstr " nama instance tidak diketahui"
msgid "Update Domain"
msgstr "Update Domain (pembaharui domain)"
msgid "Update Domain Record"
msgstr "Update Domain Record (pembaharuan rekor domain)"
msgid "Update Record"
msgstr "Pembaruan rekor"
msgid "Updated"
msgstr "Updated (sudah di perbaharui)"
msgid "Updated At"
msgstr "Diperbarui pada"
msgid "Value"
msgstr "Value (nilai)"
msgid "Zones"
msgstr "Zones (zona)"

View File

@ -1,347 +0,0 @@
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Mie Yamamoto <myamamot@redhat.com>, 2016. #zanata
# Yoshiki Eguchi <yoshiki.eguchi@gmail.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 3.0.0.0rc2.dev5\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-09-29 13:19+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-13 04:32+0000\n"
"Last-Translator: Akihiro Motoki <amotoki@gmail.com>\n"
"Language-Team: Japanese\n"
"Language: ja\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" ここでドメインに関連付けられたメールアドレスと TTL を編集できます。\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" メールフィールドには、ドメインに関連付ける\n"
" 有効なメールアドレスを指定する必要があります。\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" 名前フィールドには、\n"
" (末尾がピリオドの) 完全修飾ドメイン名を指定する必要があります。\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" オプションの TTL フィールドは\n"
" 1 秒から 2147483647 秒までの任意の値にできます。\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" TTL はこのレコードの生存時間 (time-to-live) で、単位は秒です。\n"
" </p>\n"
" <p>\n"
" レコードタイプの詳細は<a href=\"http://en.wikipedia.org/wiki/"
"List_of_DNS_record_types\" target=\"_designate_record_defs\">こちら</a>を参照"
"してください。\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - アドレスレコード"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 アドレスレコード"
msgid "All Records"
msgstr "全レコード"
msgid "CNAME - Canonical name record"
msgstr "CNAME - 別名レコード"
msgid "Cancel"
msgstr "取り消し"
msgid "Canonical Name"
msgstr "正規名"
msgid "Create Domain"
msgstr "ドメインの作成"
msgid "Create Domain Record"
msgstr "ドメインレコードの作成"
msgid "Create Record"
msgstr "レコードの作成"
msgid "Create Record for"
msgstr "レコードの作成: ドメイン"
msgid "Created"
msgstr "作成時刻"
msgid "Created At"
msgstr "作成時刻"
msgid "Data"
msgstr "データ"
msgid "Delete"
msgstr "削除"
msgid "Deleted"
msgstr "削除"
msgid "Description"
msgstr "説明"
msgid "Domain"
msgstr "ドメイン"
#, python-format
msgid "Domain %(name)s created."
msgstr "ドメイン %(name)s が作成されました。"
#, python-format
msgid "Domain %(name)s updated."
msgstr "ドメイン %(name)s が更新されました。"
msgid "Domain Detail"
msgstr "ドメインの詳細"
msgid "Domain Name"
msgstr "ドメイン名"
msgid "Domain Overview"
msgstr "ドメインの概要"
msgid "Domain Records"
msgstr "ドメインレコード"
#, python-format
msgid "Domain record %(name)s created."
msgstr "ドメインレコード %(name)s が作成されました。"
#, python-format
msgid "Domain record %(name)s updated."
msgstr "ドメインレコード %(name)s が更新されました。"
msgid "Domains"
msgstr "ドメイン"
msgid "Edit Domain"
msgstr "ドメインの編集"
msgid "Edit Record"
msgstr "レコードの編集"
msgid "Email"
msgstr "メール"
msgid "Enter a valid IPv4 address"
msgstr "有効な IPv4 アドレスを入力してください。"
msgid "Enter a valid IPv6 address"
msgstr "有効な IPv6 アドレスを入力してください。"
msgid "Enter a valid SRV name"
msgstr "有効な SRV 名を入力してください。"
msgid "Enter a valid SRV record"
msgstr "有効な SRV レコードを入力してください。"
msgid "Enter a valid SSHFP record"
msgstr "有効な SSHFP レコードを入力してください。"
msgid "Enter a valid domain name."
msgstr "有効なドメイン名を入力してください。"
msgid "Enter a valid hostname"
msgstr "有効なホスト名を入力してください。"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"有効なホスト名を入力してください。ホスト名は、文字と数字で 63 文字以内に設定"
"してください。"
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP アドレス"
msgid "MX - Mail exchange record"
msgstr "MX - Mail exchange レコード"
msgid "Mail Server"
msgstr "メールサーバー"
msgid "Manage Records"
msgstr "レコードの管理"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "名前"
msgid "Name Server"
msgstr "ネームサーバー"
msgid "Nameservers"
msgstr "ネームサーバー"
msgid "None"
msgstr "なし"
msgid "PTR - Pointer record"
msgstr "PTR - ポインターレコード"
msgid "PTR Domain Name"
msgstr "PTR ドメイン名"
msgid "Priority"
msgstr "優先度"
msgid "Record"
msgstr "レコード"
msgid "Record Data"
msgstr "レコードデータ"
msgid "Record Detail"
msgstr "レコードの詳細"
msgid "Record Type"
msgstr "レコード種別"
msgid "Records"
msgstr "レコード"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - サービスロケーター"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH 公開鍵フィンガープリント"
msgid "Select an IP"
msgstr "IP を選択してください"
msgid "Serial"
msgstr "シリアル"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (秒)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - テキストレコード"
msgid "Text"
msgstr "テキスト"
msgid "The quotas could not be retrieved."
msgstr "クォータを取得できませんでした。"
msgid "There are no floating IP addresses currently in use to select from."
msgstr "選択可能な現在使用中の Floating IP がありません。"
msgid "This field is required"
msgstr "このフィールドは必須です"
msgid "Type"
msgstr "種別"
msgid "Unable to create domain."
msgstr "ドメインを作成できません。"
msgid "Unable to create record."
msgstr "レコードを作成できません。"
msgid "Unable to retrieve domain list."
msgstr "ドメインの一覧を取得できません。"
msgid "Unable to retrieve domain record."
msgstr "ドメインレコードを取得できません。"
msgid "Unable to retrieve record list."
msgstr "レコードの一覧を取得できません。"
msgid "Unable to update domain."
msgstr "ドメインを更新できません。"
msgid "Unknown"
msgstr "不明"
msgid "Unknown instance name"
msgstr "不明なインスタンス名"
msgid "Update Domain"
msgstr "ドメインの更新"
msgid "Update Domain Record"
msgstr "ドメインレコードの更新"
msgid "Update Record"
msgstr "レコードの更新"
msgid "Updated"
msgstr "更新時刻"
msgid "Updated At"
msgstr "最終更新"
msgid "Value"
msgstr "値"
msgid "Zones"
msgstr "ゾーン"

View File

@ -1,350 +0,0 @@
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Ian Y. Choi <ianyrchoi@gmail.com>, 2016. #zanata
# Sungjin Kang <gang.sungjin@gmail.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 3.0.0.0rc2.dev5\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2016-09-29 13:19+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-20 12:11+0000\n"
"Last-Translator: Ian Y. Choi <ianyrchoi@gmail.com>\n"
"Language-Team: Korean (South Korea)\n"
"Language: ko-KR\n"
"X-Generator: Zanata 3.7.3\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" 여기서부터 도메인과 연결된 이메일 주소와 TTL을 편집할 수 있습니다.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" 이메일 피드는 도메인에 연결된 유료한 이메일 주소 값을\n"
" 포함해야 합니다.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" 이름 필드는 정규화된 도메인 이름 (끝 마침표와 함께)을\n"
" 포함해야 합니다.\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" 옵션인 TTL 필드는 1 에서 2147483647 초 사이 임의의 값을\n"
" 사용할 수 있습니다.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" TTL은 초 단위의 레코드에 대한 time-to-live 값입니다.\n"
" </p>\n"
" <p>\n"
" 레코드 유형에 관한 <a href=\"http://en.wikipedia.org/wiki/"
"List_of_DNS_record_types\" target=\"_designate_record_defs\">자세한 정보를</"
"a> 살펴봅니다.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - 주소 레코드"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 주소 레코드"
msgid "All Records"
msgstr "모든 레코드"
msgid "CNAME - Canonical name record"
msgstr "CNAME - 대체 이름 레코드"
msgid "Cancel"
msgstr "취소"
msgid "Canonical Name"
msgstr "대체 이름"
msgid "Create Domain"
msgstr "도메인 생성"
msgid "Create Domain Record"
msgstr "도메인 레코드 생성"
msgid "Create Record"
msgstr "레코드 생성"
msgid "Create Record for"
msgstr "다음에 대한 레코드 생성"
msgid "Created"
msgstr "생성됨"
msgid "Created At"
msgstr "생성 시점"
msgid "Data"
msgstr "데이터"
msgid "Delete"
msgstr "삭제"
msgid "Deleted"
msgstr "삭제됨"
msgid "Description"
msgstr "설명"
msgid "Domain"
msgstr "도메인"
#, python-format
msgid "Domain %(name)s created."
msgstr "도메인 %(name)s 이 생성되었습니다."
#, python-format
msgid "Domain %(name)s updated."
msgstr "도메인 %(name)s 이 수정되었습니다."
msgid "Domain Detail"
msgstr "도메인 세부 사항"
msgid "Domain Name"
msgstr "도메인 이름"
msgid "Domain Overview"
msgstr "도메인 개요"
msgid "Domain Records"
msgstr "도메인 레코드"
#, python-format
msgid "Domain record %(name)s created."
msgstr "도메인 레코드 %(name)s 가 생성되었습니다."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "도메인 레코드 %(name)s 가 업데이트되었습니다."
msgid "Domains"
msgstr "도메인"
msgid "Edit Domain"
msgstr "도메인 수정"
msgid "Edit Record"
msgstr "레코드 수정"
msgid "Email"
msgstr "이메일"
msgid "Enter a valid IPv4 address"
msgstr "유효한 IPv4 주소를 입력합니다"
msgid "Enter a valid IPv6 address"
msgstr "유요한 IPv6 주소를 입력합니다"
msgid "Enter a valid SRV name"
msgstr "유효한 SRV 이름을 입력합니다"
msgid "Enter a valid SRV record"
msgstr "유효한 SRV 레코드를 입력합니다"
msgid "Enter a valid SSHFP record"
msgstr "유효한 SSHFP 레코드를 입력합니다"
msgid "Enter a valid domain name."
msgstr "유효한 도메인 이름을 입력하시오."
msgid "Enter a valid hostname"
msgstr "유효한 호스트명을 입력합니다"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"유효한 호스트명을 입력합니다. 호스트명은 문자 및 숫자로 구성되어야 하며, 63 "
"문자를 초과할 수 없습니다."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP 주소"
msgid "MX - Mail exchange record"
msgstr "MX - 메일 교환 레코드"
msgid "Mail Server"
msgstr "메일 서버"
msgid "Manage Records"
msgstr "레코드 관리"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "이름"
msgid "Name Server"
msgstr "네임 서버"
msgid "Nameservers"
msgstr "이름 서버"
msgid "None"
msgstr "없음"
msgid "PTR - Pointer record"
msgstr "PTR - 포인터 레코드"
msgid "PTR Domain Name"
msgstr "PTR 도메인 이름"
msgid "Priority"
msgstr "우선순위"
msgid "Record"
msgstr "레코드"
msgid "Record Data"
msgstr "레코드 데이터"
msgid "Record Detail"
msgstr "레코드 세부 사항"
msgid "Record Type"
msgstr "레코드 타입"
msgid "Records"
msgstr "레코드"
msgid "Reverse DNS"
msgstr "Reverse DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - 발송자 정책 프레임워크"
msgid "SRV - Service locator"
msgstr "SRV - 서비스 위치"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH 공개키 Fingerprint"
msgid "Select an IP"
msgstr "IP를 선택합니다"
msgid "Serial"
msgstr "시리얼"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (초)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - 텍스트 레코드"
msgid "Text"
msgstr "텍스트"
msgid "The quotas could not be retrieved."
msgstr "할당량을 가져올 수 없습니다."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "선택할 수 있는 사용 중인 floating IP 주소가 없습니다."
msgid "This field is required"
msgstr "해당 필드는 필수입니다"
msgid "Type"
msgstr "타입"
msgid "Unable to create domain."
msgstr "도메인을 생성할 수 없습니다."
msgid "Unable to create record."
msgstr "레코드를 생성할 수 없습니다."
msgid "Unable to retrieve domain list."
msgstr "도메인 목록을 가져올 수 없습니다."
msgid "Unable to retrieve domain record."
msgstr "도메인 레코드를 가져올 수 없습니다."
msgid "Unable to retrieve record list."
msgstr "레코드 목록을 가져올 수 없습니다."
msgid "Unable to update domain."
msgstr "도메인을 업데이트할 수 없습니다."
msgid "Unknown"
msgstr "알 수 없음"
msgid "Unknown instance name"
msgstr "알려지지 않은 인스턴스 이름"
msgid "Update Domain"
msgstr "도메인 업데이트"
msgid "Update Domain Record"
msgstr "도메인 레코드 업데이트"
msgid "Update Record"
msgstr "레코드 업데이트"
msgid "Updated"
msgstr "업데이트됨"
msgid "Updated At"
msgstr "갱신 시점"
msgid "Value"
msgstr "값"
msgid "Zones"
msgstr "존"

View File

@ -1,352 +0,0 @@
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Eric Baum <ecbaum@gmail.com>, 2016. #zanata
# Marcio <marciofoz@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 4.0.0.0rc2.dev10\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-03-10 19:52+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-03-15 07:16+0000\n"
"Last-Translator: Marcio <marciofoz@gmail.com>\n"
"Language-Team: Portuguese (Brazil)\n"
"Language: pt-BR\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Aqui você pode editar o endereço de e-mail e o TTL associado ao "
"domínio.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" O campo de Email deve conter um endereço de e-mail válido para ser\n"
" associado ao domínio.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" O campo de nome deve conter um nome de domínio completamente "
"qualificado\n"
" ( com ponto final).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" O campo opcional de TTL pode ter qualquer valor entre 1 e 2147483647\n"
" segundos.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" O TTL é o tempo de vida do registro, em segundos.\n"
" </p>\n"
" <p>\n"
" Veja <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\"> para mais informações </a> nos tipos de "
"registro.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Registro do endereço"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - Registro do endereço IPv6"
msgid "All Records"
msgstr "Todos os Registros"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Registro Canonical name "
msgid "Cancel"
msgstr "Cancelar"
msgid "Canonical Name"
msgstr "Canonical Name"
msgid "Create Domain"
msgstr "Criar Domínio"
msgid "Create Domain Record"
msgstr "Criar Registro do Domínio"
msgid "Create Record"
msgstr "Criar Registro"
msgid "Create Record for"
msgstr "Criar Registro para"
msgid "Created"
msgstr "Criado"
msgid "Created At"
msgstr "Criado em"
msgid "Data"
msgstr "Dados"
msgid "Delete"
msgstr "Remover"
msgid "Deleted"
msgstr "Removido"
msgid "Description"
msgstr "Descrição"
msgid "Domain"
msgstr "Domínio"
#, python-format
msgid "Domain %(name)s created."
msgstr "Domínio %(name)s criado."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Domínio %(name)s atualizado."
msgid "Domain Detail"
msgstr "Detalhes do Domínio"
msgid "Domain Name"
msgstr "Nome do Domínio"
msgid "Domain Overview"
msgstr "Visão Geral do Domínio"
msgid "Domain Records"
msgstr "Registros do Domínio"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Registro de domínio %(name)s criado."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Registro de domínio %(name)s atualizado."
msgid "Domains"
msgstr "Domínios"
msgid "Edit Domain"
msgstr "Editar Domínio"
msgid "Edit Record"
msgstr "Editar Registro"
msgid "Email"
msgstr "Email"
msgid "Enter a valid IPv4 address"
msgstr "Entre com um endereço IPv4 válido"
msgid "Enter a valid IPv6 address"
msgstr "Entre com um endereço IPv6 válido"
msgid "Enter a valid SRV name"
msgstr "Entre com um nome SRV válido."
msgid "Enter a valid SRV record"
msgstr "Entre com um registro SRV válido"
msgid "Enter a valid SSHFP record"
msgstr "Entre com um registro SSHFP válido"
msgid "Enter a valid domain name."
msgstr "Entre com um nome de domínio válido."
msgid "Enter a valid hostname"
msgstr "Entre com um nome de host válido"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Insira um nome de host válido. O Nome de host deve conter letras e números, "
"e não pode ter mais de 63 caracteres."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "Endereço IP"
msgid "MX - Mail exchange record"
msgstr "MX - Registro Mail exchange"
msgid "Mail Server"
msgstr "Servidor de Email"
msgid "Manage Records"
msgstr "Gerenciar Registros"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Nome"
msgid "Name Server"
msgstr "Servidor de Nome"
msgid "Nameservers"
msgstr "Servidores de Nome"
msgid "None"
msgstr "Nenhum"
msgid "PTR - Pointer record"
msgstr "PTR - Registro Pointer record"
msgid "PTR Domain Name"
msgstr "PTR Nome do Domínio"
msgid "Priority"
msgstr "Prioridade"
msgid "Record"
msgstr "Registro"
msgid "Record Data"
msgstr "Dados do Registro"
msgid "Record Detail"
msgstr "Detalhes do Registro"
msgid "Record Type"
msgstr "Tipo de Registro"
msgid "Records"
msgstr "Registros"
msgid "Reverse DNS"
msgstr "DNS Reverso"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Sender Policy Framework"
msgid "SRV - Service locator"
msgstr "SRV - Service locator"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH Public Key Fingerprint"
msgid "Select an IP"
msgstr "Selecione um IP"
msgid "Serial"
msgstr "Serial"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (segundos)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Text record"
msgid "Text"
msgstr "Text"
msgid "The quotas could not be retrieved."
msgstr "Não foi possível recuperar as cotas."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Nenhum endereço IP flutuante atualmente em uso para ser selecionado."
msgid "This field is required"
msgstr "Este campo é necessário"
msgid "Type"
msgstr "Tipo"
msgid "Unable to create domain."
msgstr "Não foi possível criar o domínio."
msgid "Unable to create record."
msgstr "Não é possível criar o registro."
msgid "Unable to retrieve domain list."
msgstr "Não foi possível recuperar a lista de domínios."
msgid "Unable to retrieve domain record."
msgstr "Não foi possível recuperar o registro de domínio."
msgid "Unable to retrieve record list."
msgstr "Não é possível recuperar lista de registros."
msgid "Unable to update domain."
msgstr "Não foi possível atualizar o domínio."
msgid "Unknown"
msgstr "Desconhecido"
msgid "Unknown instance name"
msgstr "Nome de Instância desconhecida"
msgid "Update Domain"
msgstr "Atualizar Domínio"
msgid "Update Domain Record"
msgstr "Atualizar Registro do Domínio"
msgid "Update Record"
msgstr "Atualizar Registro"
msgid "Updated"
msgstr "Atualizado"
msgid "Updated At"
msgstr "Atualizado em"
msgid "Value"
msgstr "Valor"
msgid "Zones"
msgstr "Zonas"

View File

@ -1,361 +0,0 @@
# Translations template for designate-dashboard.
# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the designate-dashboard
# project.
#
# Translators:
# Denis Gubanov <v12aml@gmail.com>, 2015
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Ivan Startsev <istartsev67@gmail.com>, 2016. #zanata
# Ilya Alekseyev <ilyaalekseyev@acm.org>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 4.0.0.0rc2.dev10\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-03-10 19:52+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-03-23 08:04+0000\n"
"Last-Translator: Ilya Alekseyev <ilyaalekseyev@acm.org>\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
"Generated-By: Babel 2.0\n"
"X-Generator: Zanata 3.9.6\n"
"Language-Team: Russian\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Отсюда вы можете отредактировать адрес почты и ассоциированный с "
"доменом TTL \n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" Поле Почта должно содержать валидный почтовый адрес\n"
" который может быть ассоциирован с доменом.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" Поле Имя должно содержать полностью определённое имя домена (FQDN) "
"( с\n"
" завершающей точкой).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" Опциональное поле TTL может принимать любое значение \n"
" между 1 и 2147483647 секундами.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" TTL - это time-to-live для записи, в секундах.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">больше информации</a> на типах записи.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - IPv4 адрес"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 адрес"
msgid "All Records"
msgstr "Все Записи"
msgid "CNAME - Canonical name record"
msgstr "CNAME - каноническое имя"
msgid "Cancel"
msgstr "Отмена"
msgid "Canonical Name"
msgstr "Каноническое имя"
msgid "Create Domain"
msgstr "Создать домен"
msgid "Create Domain Record"
msgstr "Создать Доменную Запись"
msgid "Create Record"
msgstr "Создать запись"
msgid "Create Record for"
msgstr "Создать запись для"
msgid "Created"
msgstr "Создано"
msgid "Created At"
msgstr "Создано"
msgid "Data"
msgstr "Данные"
msgid "Delete"
msgstr "Удалить"
msgid "Deleted"
msgstr "Удалено"
msgid "Description"
msgstr "Описание"
msgid "Domain"
msgstr "Домен"
#, python-format
msgid "Domain %(name)s created."
msgstr "Домен %(name)s создан."
#, python-format
msgid "Domain %(name)s updated."
msgstr "Домен %(name)s обновлен."
msgid "Domain Detail"
msgstr "Детали Домена"
msgid "Domain Name"
msgstr "Имя домена"
msgid "Domain Overview"
msgstr "Обзор Домена"
msgid "Domain Records"
msgstr "Записи Домена"
#, python-format
msgid "Domain record %(name)s created."
msgstr "Доменная запись %(name)s создана."
#, python-format
msgid "Domain record %(name)s updated."
msgstr "Доменная запись %(name)s обновлена."
msgid "Domains"
msgstr "Домены"
msgid "Edit Domain"
msgstr "Редактировать домен"
msgid "Edit Record"
msgstr "Редактировать запись"
msgid "Email"
msgstr "Email"
msgid "Enter a valid IPv4 address"
msgstr "Введите корректный IPv4 адрес"
msgid "Enter a valid IPv6 address"
msgstr "Введите корректный IPv6 адрес"
msgid "Enter a valid SRV name"
msgstr "Введите верное SRV имя"
msgid "Enter a valid SRV record"
msgstr "Введите корректную SRV запись"
msgid "Enter a valid SSHFP record"
msgstr "Введите корректныю SSHFP запись"
msgid "Enter a valid domain name."
msgstr "Введите корректное имя домена"
msgid "Enter a valid hostname"
msgstr "Введите корректное имя узла"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Введите верное имя узла. Имя узла должно содержать буквы, цифры и быть не "
"длиннее 63 символов."
msgid "ID"
msgstr "ID"
msgid "IP Address"
msgstr "IP адрес"
msgid "MX - Mail exchange record"
msgstr "MX - почтовый узел"
msgid "Mail Server"
msgstr "Почтовый сервер"
msgid "Manage Records"
msgstr "Управление записями"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "Имя"
msgid "Name Server"
msgstr "Сервер имен"
msgid "Nameservers"
msgstr "сервера"
msgid "None"
msgstr "Нет"
msgid "PTR - Pointer record"
msgstr "PTR - указатель на каноническое имя"
msgid "PTR Domain Name"
msgstr "Имя домена PTR"
msgid "Priority"
msgstr "Приоритет"
msgid "Record"
msgstr "Запись"
msgid "Record Data"
msgstr "Запись Данных"
msgid "Record Detail"
msgstr "Детали Записи"
msgid "Record Type"
msgstr "Тип записи"
msgid "Records"
msgstr "Записи"
msgid "Reverse DNS"
msgstr "Обратный DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - инфраструктура политики отправителя"
msgid "SRV - Service locator"
msgstr "SRV - указатель сервиса"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - отпечаток публичного ключа SSH"
msgid "Select an IP"
msgstr "Выберите IP"
msgid "Serial"
msgstr "Серийный номер"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (секунды)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - тестовая запись"
msgid "Text"
msgstr "Текст"
msgid "The quotas could not be retrieved."
msgstr "Невозможно получить квоты."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Отсутствуют используемые плавающие IP-адреса для выбора."
msgid "This field is required"
msgstr "Это поле обязательно"
msgid "Type"
msgstr "Тип"
msgid "Unable to create domain."
msgstr "Невозможно создать домен."
msgid "Unable to create record."
msgstr "Невозможно создать запись."
msgid "Unable to retrieve domain list."
msgstr "Невозможно получить список доменов."
msgid "Unable to retrieve domain record."
msgstr "Невозможно получить список записей."
msgid "Unable to retrieve record list."
msgstr "Невозможно получить список записей."
msgid "Unable to update domain."
msgstr "Невозможно обновить домен."
msgid "Unknown"
msgstr "Неизвестно"
msgid "Unknown instance name"
msgstr "Неизвестное имя инстанса"
msgid "Update Domain"
msgstr "Обновить Домен"
msgid "Update Domain Record"
msgstr "Обновить Доменную Запись"
msgid "Update Record"
msgstr "Обновить запись"
msgid "Updated"
msgstr "Обновлено"
msgid "Updated At"
msgstr "Обновлено"
msgid "Value"
msgstr "Значение"
msgid "Zones"
msgstr "Зоны"

View File

@ -1,360 +0,0 @@
# Translations template for designate-dashboard.
# Copyright (C) 2015 ORGANIZATION
# This file is distributed under the same license as the designate-dashboard
# project.
#
# Translators:
# Alper Çiftçi <alprciftci@gmail.com>, 2015
# Mücahit Büyükyılmaz <mucahit@deltanoc.com>, 2015. #zanata
# OpenStack Infra <zanata@openstack.org>, 2015. #zanata
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# işbaran akçayır <isbaran@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 5.0.0.0b2.dev8\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-05-18 22:12+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-22 08:57+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language: tr-TR\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Generated-By: Babel 2.0\n"
"X-Generator: Zanata 3.9.6\n"
"Language-Team: Turkish (Turkey)\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
" Burdan alan ile ilişkili eposta adresini ve TTL değerini "
"düzenleyebilirsiniz.\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
" Eposta alanı alan ile ilişkilendirilecek geçerli bir\n"
" eposta adresi içermelidir.\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
" İsim alanı tam-nitelikli alan adı içermelidir\n"
" (sonunda nokta ile).\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
" İsteğe bağlı TTL alanı 1 ve 2147483647 saniye arasında\n"
" bir sayı olabilir.\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" TTL kaydın yaşam süresidir, saniye olarak.\n"
" </p>\n"
" <p>\n"
" Kayıt türleri hakkında <a href=\"http://en.wikipedia.org/wiki/"
"List_of_DNS_record_types\" target=\"_designate_record_defs\">daha fazla "
"bilgi için</a> bakınız.\n"
" </p>\n"
" "
msgid "A - Address record"
msgstr "A - Adres kaydı"
msgid "AAAA - IPv6 address record"
msgstr "AAAA - IPv6 adres kaydı"
msgid "All Records"
msgstr "Tüm Kayıtlar"
msgid "CNAME - Canonical name record"
msgstr "CNAME - Meşru isim kaydı"
msgid "Cancel"
msgstr "İptal"
msgid "Canonical Name"
msgstr "Meşru isim"
msgid "Create Domain"
msgstr "Alan Oluştur"
msgid "Create Domain Record"
msgstr "Alan Kaydı Oluştur"
msgid "Create Record"
msgstr "Kayıt Oluştur"
msgid "Create Record for"
msgstr "Kayıt oluştur"
msgid "Created"
msgstr "Oluşturuldu"
msgid "Created At"
msgstr "Oluşturulduğu zaman"
msgid "Data"
msgstr "Veri"
msgid "Delete"
msgstr "Sil"
msgid "Deleted"
msgstr "Silindi"
msgid "Description"
msgstr "Açıklama"
msgid "Domain"
msgstr "Alan"
#, python-format
msgid "Domain %(name)s created."
msgstr "%(name)s alanı oluşturuldu"
#, python-format
msgid "Domain %(name)s updated."
msgstr "%(name)s alanı güncellendi"
msgid "Domain Detail"
msgstr "Alan Ayrıntısı"
msgid "Domain Name"
msgstr "Alan Adı"
msgid "Domain Overview"
msgstr "Alan Genel Görünümü"
msgid "Domain Records"
msgstr "Alan Kayıtları"
#, python-format
msgid "Domain record %(name)s created."
msgstr "%(name)s alan kaydı oluşturuldu"
#, python-format
msgid "Domain record %(name)s updated."
msgstr "%(name)s alan kaydı güncellendi"
msgid "Domains"
msgstr "Alanlar"
msgid "Edit Domain"
msgstr "Alan Değiştir"
msgid "Edit Record"
msgstr "Kaydı Düzenle"
msgid "Email"
msgstr "E-posta"
msgid "Enter a valid IPv4 address"
msgstr "Geçerli bir IPv4 adresi girin"
msgid "Enter a valid IPv6 address"
msgstr "Geçerli bir IPv6 adresi girin"
msgid "Enter a valid SRV name"
msgstr "Geçerli bir SRV adı girin"
msgid "Enter a valid SRV record"
msgstr "Geçerli bir SRV kaydı girin"
msgid "Enter a valid SSHFP record"
msgstr "Geçerli bir SSHFP kaydı girin"
msgid "Enter a valid domain name."
msgstr "Geçerli bir alan adı girin"
msgid "Enter a valid hostname"
msgstr "Geçerli bir sunucu adı girin"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr ""
"Geçerli bir sunucu adı girin. Sunucu adı 63 karakterden az olmayan harf ve "
"sayılar içermektedir."
msgid "ID"
msgstr "KİMLİK"
msgid "IP Address"
msgstr "IP Adresi"
msgid "MX - Mail exchange record"
msgstr "MX - Posta değişim kaydı"
msgid "Mail Server"
msgstr "Posta Sunucusu"
msgid "Manage Records"
msgstr "Kayıtları Yönet"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "İsim"
msgid "Name Server"
msgstr "İsim Sunucusu"
msgid "Nameservers"
msgstr "İsim sunucular"
msgid "None"
msgstr "Yok"
msgid "PTR - Pointer record"
msgstr "PTR - İşaretçi kaydı"
msgid "PTR Domain Name"
msgstr "PTR Alan Adı"
msgid "Priority"
msgstr "Öncelik"
msgid "Record"
msgstr "Kayıt"
msgid "Record Data"
msgstr "Kayıt Verisi"
msgid "Record Detail"
msgstr "Kayıt Ayrıntısı"
msgid "Record Type"
msgstr "Kayıt Tipi"
msgid "Records"
msgstr "Kayıtlar"
msgid "Reverse DNS"
msgstr "Ters DNS"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF - Gönderen İlkesi Çatısı"
msgid "SRV - Service locator"
msgstr "SRV - Servis konumlandırıcı"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP - SSH Açık Anahtar Parmakizi"
msgid "Select an IP"
msgstr "Bir IP seçiniz"
msgid "Serial"
msgstr "Seri"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "TTL (saniye)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT - Yazı Kaydı"
msgid "Text"
msgstr "Yazı"
msgid "The quotas could not be retrieved."
msgstr "Kotalar alınamadı."
msgid "There are no floating IP addresses currently in use to select from."
msgstr "Seçilecek kullanılabilir değişken IP adresi yok."
msgid "This field is required"
msgstr "Bu alanın doldurulması gerekmektedir."
msgid "Type"
msgstr "Tip"
msgid "Unable to create domain."
msgstr "Alan yaratılamıyor"
msgid "Unable to create record."
msgstr "Kayıt oluşturulamıyor"
msgid "Unable to retrieve domain list."
msgstr "Alan listesi alınamıyor."
msgid "Unable to retrieve domain record."
msgstr "Alan kaydı alınamadı."
msgid "Unable to retrieve record list."
msgstr "Kayıt listesi alınamadı."
msgid "Unable to update domain."
msgstr "Alan güncellenemiyor."
msgid "Unknown"
msgstr "Bilinmeyen"
msgid "Unknown instance name"
msgstr "Bilinmeyen mesafe adı"
msgid "Update Domain"
msgstr "Alanı Güncelle"
msgid "Update Domain Record"
msgstr "Alan Kaydını Güncelle"
msgid "Update Record"
msgstr "Kaydı Güncelle"
msgid "Updated"
msgstr "Güncellendi"
msgid "Updated At"
msgstr "Güncellendiği Zaman"
msgid "Value"
msgstr "Değer"
msgid "Zones"
msgstr "Bölgeler"

View File

@ -1,353 +0,0 @@
# OpenStack Infra <zanata@openstack.org>, 2015. #zanata
# Andreas Jaeger <jaegerandi@gmail.com>, 2016. #zanata
# Gaoxiao Zhu <zhu.gaoxiao@h3c.com>, 2016. #zanata
# Linda <duleish@cn.ibm.com>, 2016. #zanata
# Wu Han <wu.han@h3c.com>, 2016. #zanata
# ZHIYUAN SU <suzhiyuan@inspur.com>, 2016. #zanata
# vuuv <froms2008@gmail.com>, 2016. #zanata
# zzxwill <zzxwill@gmail.com>, 2016. #zanata
# vuuv <froms2008@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: designate-dashboard 4.0.0.0rc2.dev10\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
"POT-Creation-Date: 2017-03-10 19:52+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2017-03-23 08:04+0000\n"
"Last-Translator: vuuv <froms2008@gmail.com>\n"
"Language-Team: Chinese (China)\n"
"Language: zh-CN\n"
"X-Generator: Zanata 3.9.6\n"
"Plural-Forms: nplurals=1; plural=0\n"
msgid ""
"\n"
" From here you can edit the email address and TTL associated with a "
"domain.\n"
" "
msgstr ""
"\n"
"从这里可以编辑邮件地址和关联到一个域的TTL\n"
" "
msgid ""
"\n"
" The Email field should contain a valid email address to be associated\n"
" with the domain.\n"
" "
msgstr ""
"\n"
"电子邮件项应包括一个有效的邮件地址来\n"
"跟域名进行关联。\n"
" "
msgid ""
"\n"
" The Name field should contain a full-qualified domain name (with\n"
" trailing period).\n"
" "
msgstr ""
"\n"
"名称项应该包含一个完全合格的域名(有一个\n"
"尾随句点)。\n"
" "
msgid ""
"\n"
" The optional TTL field can be any value between 1 and 2147483647\n"
" seconds.\n"
" "
msgstr ""
"\n"
"可选的TTL项可以是1到2147483647之间的任何\n"
"秒数。\n"
" "
msgid ""
"\n"
" <p>\n"
" <strong>TTL</strong>\n"
" The TTL is the time-to-live for the record, in seconds.\n"
" </p>\n"
" <p>\n"
" See <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types\" "
"target=\"_designate_record_defs\">more info</a> on record types.\n"
" </p>\n"
" "
msgstr ""
"\n"
"<p>\n"
"<strong>TTL</strong>\n"
"TTL是指 记录的存活时间或者存在时间,单位为秒。\n"
"</p>\n"
"<p>\n"
"见记录类型的 <a href=\"http://en.wikipedia.org/wiki/List_of_DNS_record_types"
"\" target=\"_designate_record_defs\">更多信息</a>。\n"
"</p>\n"
" "
msgid "A - Address record"
msgstr "A-地址记录"
msgid "AAAA - IPv6 address record"
msgstr "AAAA-IPv6地址记录"
msgid "All Records"
msgstr "所有记录"
msgid "CNAME - Canonical name record"
msgstr "CNAME-标准名称记录"
msgid "Cancel"
msgstr "取消"
msgid "Canonical Name"
msgstr "规范名称"
msgid "Create Domain"
msgstr "创建域"
msgid "Create Domain Record"
msgstr "创建域记录"
msgid "Create Record"
msgstr "创建记录"
msgid "Create Record for"
msgstr "创建记录为:"
msgid "Created"
msgstr "已创建"
msgid "Created At"
msgstr "创建于"
msgid "Data"
msgstr "数据"
msgid "Delete"
msgstr "删除"
msgid "Deleted"
msgstr "已删除"
msgid "Description"
msgstr "描述"
msgid "Domain"
msgstr "域"
#, python-format
msgid "Domain %(name)s created."
msgstr "域 %(name)s 已创建"
#, python-format
msgid "Domain %(name)s updated."
msgstr "域%(name)s已更新"
msgid "Domain Detail"
msgstr "域明细"
msgid "Domain Name"
msgstr "域名"
msgid "Domain Overview"
msgstr "域概览"
msgid "Domain Records"
msgstr "域记录"
#, python-format
msgid "Domain record %(name)s created."
msgstr "创建的域记录数 %(name)s "
#, python-format
msgid "Domain record %(name)s updated."
msgstr "更新的域记录数 %(name)s"
msgid "Domains"
msgstr "域"
msgid "Edit Domain"
msgstr "编辑域"
msgid "Edit Record"
msgstr "编辑记录"
msgid "Email"
msgstr "邮箱"
msgid "Enter a valid IPv4 address"
msgstr "输入一个有效的IPv4地址"
msgid "Enter a valid IPv6 address"
msgstr "输入一个有效的IPv6地址"
msgid "Enter a valid SRV name"
msgstr "输入一个有效的SRV名"
msgid "Enter a valid SRV record"
msgstr "输入一个有效的SRV记录"
msgid "Enter a valid SSHFP record"
msgstr "输入一个有效的SSHFP记录"
msgid "Enter a valid domain name."
msgstr "输入一个有效域名"
msgid "Enter a valid hostname"
msgstr "输入一个有效的主机名"
msgid ""
"Enter a valid hostname. The hostname should contain letters and numbers, and "
"be no more than 63 characters."
msgstr "输入一个有效的主机名。该主机名应包含字母和数字且不多余63个字符。"
msgid "ID"
msgstr "标识"
msgid "IP Address"
msgstr "IP 地址"
msgid "MX - Mail exchange record"
msgstr "MX-邮件交换记录"
msgid "Mail Server"
msgstr "邮件服务器"
msgid "Manage Records"
msgstr "管理记录"
msgid "NS"
msgstr "NS"
msgid "Name"
msgstr "名称"
msgid "Name Server"
msgstr "域名服务器"
msgid "Nameservers"
msgstr "名称服务器数"
msgid "None"
msgstr "无"
msgid "PTR - Pointer record"
msgstr "PTR-指针记录"
msgid "PTR Domain Name"
msgstr "域名"
msgid "Priority"
msgstr "优先级"
msgid "Record"
msgstr "记录"
msgid "Record Data"
msgstr "记录数据"
msgid "Record Detail"
msgstr "记录明细"
msgid "Record Type"
msgstr "记录类型"
msgid "Records"
msgstr "记录数"
msgid "Reverse DNS"
msgstr "反向解析域名"
msgid "SOA"
msgstr "SOA"
msgid "SPF - Sender Policy Framework"
msgstr "SPF-发送方策略框架"
msgid "SRV - Service locator"
msgstr "SRV-服务定位器"
msgid "SSHFP - SSH Public Key Fingerprint"
msgstr "SSHFP-SSH公钥指纹"
msgid "Select an IP"
msgstr "选择一个IP"
msgid "Serial"
msgstr "序列号"
msgid "TTL"
msgstr "TTL"
msgid "TTL (seconds)"
msgstr "生存时间(秒)"
msgid "TXT"
msgstr "TXT"
msgid "TXT - Text record"
msgstr "TXT-文本记录"
msgid "Text"
msgstr "文本"
msgid "The quotas could not be retrieved."
msgstr "无法获取配额"
msgid "There are no floating IP addresses currently in use to select from."
msgstr "没有可以从中选择的使用中的浮动IP地址"
msgid "This field is required"
msgstr "需要此字段"
msgid "Type"
msgstr "类型"
msgid "Unable to create domain."
msgstr "无法创建域"
msgid "Unable to create record."
msgstr "不能创建记录。"
msgid "Unable to retrieve domain list."
msgstr "无法获取域列表。"
msgid "Unable to retrieve domain record."
msgstr "无法获取域记录"
msgid "Unable to retrieve record list."
msgstr "无法获取记录列表"
msgid "Unable to update domain."
msgstr "无法更新域"
msgid "Unknown"
msgstr "未知"
msgid "Unknown instance name"
msgstr "未知实例名"
msgid "Update Domain"
msgstr "更新域"
msgid "Update Domain Record"
msgstr "更新域记录"
msgid "Update Record"
msgstr "更新记录"
msgid "Updated"
msgstr "已更新"
msgid "Updated At"
msgstr "已更新于"
msgid "Value"
msgstr "值"
msgid "Zones"
msgstr "区域"

View File

@ -1,66 +0,0 @@
/**
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
*
* 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
* @ngname designatedashboard.resources.os-designate-floatingip.actions
*
* @description
* Provides all of the actions for DNS Floating IPs.
*/
angular.module('designatedashboard.resources.os-designate-floatingip.actions', [
'horizon.framework.conf',
'horizon.app.core'
])
.run(run);
run.$inject = [
'horizon.framework.conf.resource-type-registry.service',
'designatedashboard.resources.os-designate-floatingip.resourceType',
'designatedashboard.resources.os-designate-floatingip.actions.set',
'designatedashboard.resources.os-designate-floatingip.actions.unset'
];
function run(
registry,
resourceTypeString,
setAction,
unsetAction)
{
var resourceType = registry.getResourceType(resourceTypeString);
resourceType
.itemActions
.append({
id: 'setFloatingIp',
service: setAction,
template: {
text: gettext('Set')
}
})
.append({
id: 'unsetFloatingIp',
service: unsetAction,
template: {
text: gettext('Unset')
}
});
}
})();

View File

@ -1,170 +0,0 @@
/**
*
* (c) Copyright 2016 Hewlett Packard Enterprise Development Company LP
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use self 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('designatedashboard.resources.os-designate-floatingip.actions')
.factory('designatedashboard.resources.os-designate-floatingip.actions.set', action);
action.$inject = [
'$q',
'designatedashboard.resources.os-designate-floatingip.api',
'designatedashboard.resources.os-designate-floatingip.resourceType',
'designatedashboard.resources.util',
'horizon.app.core.openstack-service-api.serviceCatalog',
'horizon.framework.widgets.form.ModalFormService',
'horizon.framework.widgets.toast.service',
'horizon.framework.widgets.modal-wait-spinner.service'
];
/**
* @ngDoc factory
* @name designatedashboard.resources.os-designate-floatingip.actions.set
*
* @Description
* Brings up the Set Floating IP modal.
*/
function action($q,
api,
resourceTypeName,
util,
serviceCatalog,
schemaFormModalService,
toast,
waitSpinner) {
var dnsServiceEnabled;
var title = null; // Set once perform is called
var formConfig = {
"schema": {
"type": "object",
"properties": {
"ptrdname": {
"type": "string",
"pattern": /^.+\.$/
},
"description": {
"type": "string"
},
"ttl": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
}
},
"form": [
{
"key": "ptrdname",
"title": gettext("Domain Name"),
"description": gettext("Domain name ending in '.'"),
"validationMessage": gettext("Domain must end with '.'"),
"placeholder": "smtp.example.com.",
"type": "text",
"required": true
},
{
"key": "description",
"type": "textarea",
"title": gettext("Description"),
"description": gettext("Details about the PTR record.")
},
{
"key": "ttl",
"title": gettext("TTL"),
"description": gettext("Time To Live in seconds."),
"type": "number"
}
]
};
var message = {
success: gettext('Domain name PTR %s was successfully set.')
};
var service = {
initScope: initScope,
allowed: allowed,
perform: perform
};
return service;
/////////////////
function initScope() {
dnsServiceEnabled = serviceCatalog.ifTypeEnabled('dns');
}
function allowed(item) {
return $q.all([
// TODO (tyr) designate currently has no floating ips policy rules
dnsServiceEnabled,
util.notPending(item)
]);
}
function perform(item) {
// Initialize the per-item title for use now and during submit
title = gettext("Set Domain Name PTR for ") + item.address;
formConfig.title = title;
// Get a form model based on the current item
formConfig.model = util.getModel(formConfig.form, item);
// Initialize default data
formConfig.model.ttl = formConfig.model.ttl || 3600;
// Remember the ID for use during submit
formConfig.model.floatingIpId = item.id;
return schemaFormModalService.open(formConfig).then(onSubmit, onCancel);
}
function onSubmit(context) {
var model = angular.copy(context.model);
var floatingIpId = formConfig.model.floatingIpId;
waitSpinner.showModalSpinner(title);
return api.set(floatingIpId, model).then(onSuccess, onFailure);
}
function onCancel() {
waitSpinner.hideModalSpinner();
}
function onSuccess(response) {
waitSpinner.hideModalSpinner();
var floatingIp = response.data;
toast.add('success', interpolate(message.success, [floatingIp.ptrdname]));
// To make the result of this action generically useful, reformat the return
// from the deleteModal into a standard form
return {
created: [],
updated: [{type: resourceTypeName, id: floatingIp.id}],
deleted: [],
failed: []
};
}
function onFailure() {
waitSpinner.hideModalSpinner();
}
}
})();

View File

@ -1,139 +0,0 @@
/**
*
* (c) Copyright 2016 Hewlett Packard Enterprise Development Company LP
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use self 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('designatedashboard.resources.os-designate-floatingip.actions')
.factory('designatedashboard.resources.os-designate-floatingip.actions.unset', action);
action.$inject = [
'$q',
'designatedashboard.resources.os-designate-floatingip.api',
'designatedashboard.resources.os-designate-floatingip.resourceType',
'designatedashboard.resources.util',
'horizon.app.core.openstack-service-api.serviceCatalog',
'horizon.framework.util.q.extensions',
'horizon.framework.widgets.form.ModalFormService',
'horizon.framework.widgets.toast.service',
'horizon.framework.widgets.modal-wait-spinner.service'
];
/**
* @ngDoc factory
* @name designatedashboard.resources.os-designate-floatingip.actions.unset
*
* @Description
* Brings up the Unset Floating IP modal.
*/
function action($q,
api,
resourceTypeName,
util,
serviceCatalog,
$qExtensions,
schemaFormModalService,
toast,
waitSpinner) {
var dnsServiceEnabled;
var title = null; // Set on perform
var currentFloatingIpId; // Used to remember the ID we are modifying since it isn't returned by the unset API call
// Unset it just a simple case of "set", but with ptrdname of 'null'
var formConfig = {
"schema": {
"type": "object",
"properties": {
}
},
"form": [
],
"model": {
}
};
var message = {
success: gettext('Domain name PTR successfully unset.')
};
var service = {
initScope: initScope,
allowed: allowed,
perform: perform
};
return service;
/////////////////
function initScope() {
dnsServiceEnabled = serviceCatalog.ifTypeEnabled('dns');
}
function allowed(item) {
return $q.all([
// TODO (tyr) designate currently has no floating ip policy rules
dnsServiceEnabled,
domainNameSet(item),
util.notPending(item)
]);
}
function domainNameSet(item) {
return $qExtensions.booleanAsPromise(
angular.isString(item.ptrdname)
);
}
function perform(item) {
title = gettext("Unset Domain Name PTR for ") + item.address;
// Store the zone ID so it can be used on submit
formConfig.model.floatingIpId = item.id;
formConfig.title = title;
return schemaFormModalService.open(formConfig).then(onSubmit, onCancel);
}
function onSubmit(context) {
waitSpinner.showModalSpinner(title);
currentFloatingIpId = context.model.floatingIpId;
return api.unset(currentFloatingIpId).then(onSuccess, onFailure);
}
function onCancel() {
waitSpinner.hideModalSpinner();
}
function onSuccess(response) {
waitSpinner.hideModalSpinner();
toast.add('success', message.success);
// To make the result of this action generically useful, reformat the return
// from the deleteModal into a standard form
return {
created: [],
updated: [{type: resourceTypeName, id: currentFloatingIpId}],
deleted: [],
failed: []
};
}
function onFailure() {
waitSpinner.hideModalSpinner();
}
}
})();

View File

@ -1,121 +0,0 @@
/**
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
*
* 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('designatedashboard.resources.os-designate-floatingip')
.factory('designatedashboard.resources.os-designate-floatingip.api', apiService);
apiService.$inject = [
'designatedashboard.apiPassthroughUrl',
'horizon.framework.util.http.service',
'horizon.framework.widgets.toast.service'
];
/**
* @ngdoc service
* @param {Object} httpService
* @param {Object} toastService
* @name apiService
* @description Provides direct access to Designate Floating IP APIs.
* @returns {Object} The service
*/
function apiService(apiPassthroughUrl, httpService, toastService) {
var service = {
list: list,
get: get,
set: set,
unset: unset
};
return service;
///////////////
/**
* @name list
* @description
* Get a list of DNS floating ips.
*
* The listing result is an object with property "items." Each item is
* a floating IP PTR record.
*
* @param {Object} params
* Query parameters. Optional.
*
* @returns {Object} The result of the API call
*/
function list(params) {
var config = params ? {'params': params} : {};
return httpService.get(apiPassthroughUrl + 'v2/reverse/floatingips', config)
.error(function () {
toastService.add('error', gettext('Unable to retrieve the floating ip PTRs.'));
});
}
function get(id, params) {
var config = params ? {'params': params} : {};
return httpService.get(apiPassthroughUrl + 'v2/reverse/floatingips/' + id, config)
.error(function () {
toastService.add('error', gettext('Unable to get the floating ip PTR ' + id));
});
}
/**
* @name set
* @description
* Set a floating ip PTR record
*
* @param {string} floatingIpID - ID of PTR record to unset
* @param {Object} data
* Specifies the PTR information to set
*
* @returns {Object} The updated DNS floating IP object
*/
function set(floatingIpID, data) {
// The update API will not accept extra data. Restrict the input to only the allowed
// fields
var apiData = {
ptrdname: data.ptrdname,
description: data.description,
ttl: data.ttl
};
return httpService.patch(apiPassthroughUrl + 'v2/reverse/floatingips/' + floatingIpID, apiData)
.error(function () {
toastService.add('error', gettext('Unable to set the floating IP PTR record.'));
})
}
/**
* @name unset
* @description
* Unset a floating ip PTR record
*
* @param {string} floatingIpID - ID of PTR record to unset
*
* @returns {Object} The updated DNS floating IP object
*/
function unset(floatingIpID) {
// Unset is just a special case of 'set'
return set(floatingIpID, {
ptrdname: null,
description: null,
ttl: null
})
}
}
}());

View File

@ -1,66 +0,0 @@
/**
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
*
* 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
* @ngname designatedashboard.resources.os-designate-floatingip.details
*
* @description
* Provides details features for floating IPs.
*/
angular.module('designatedashboard.resources.os-designate-floatingip.details',
['horizon.framework.conf', 'horizon.app.core'])
.run(run);
run.$inject = [
'designatedashboard.resources.os-designate-floatingip.resourceType',
'designatedashboard.resources.os-designate-floatingip.api',
'designatedashboard.resources.os-designate-floatingip.basePath',
'horizon.framework.conf.resource-type-registry.service'
];
function run(
resourceTypeName,
api,
basePath,
registry
) {
var resourceType = registry.getResourceType(resourceTypeName);
resourceType
.setLoadFunction(loadFunction)
.setSummaryTemplateUrl(basePath + 'details/drawer.html')
.setItemNameFunction(itemNameFunction);
resourceType.detailsViews
.prepend({
id: 'floatingIpDetailsOverview',
name: gettext('Overview'),
template: basePath + 'details/overview.html'
}, 0);
function loadFunction(identifier) {
return api.get(identifier);
}
function itemNameFunction(floatingIp) {
return floatingIp.address;
}
}
})();

View File

@ -1,10 +0,0 @@
<hz-resource-property-list
ng-if="item"
resource-type-name="OS::Designate::FloatingIp"
item="item"
cls="dl-horizontal"
property-groups="[
['description'],
['id']
]">
</hz-resource-property-list>

Some files were not shown because too many files have changed in this diff Show More