From 80e7ef7b99d171b37a86c75fa1c8682f7f0b9f91 Mon Sep 17 00:00:00 2001 From: Ghanshyam Mann Date: Fri, 10 May 2024 12:32:53 -0700 Subject: [PATCH] Retire Solum: remove repo content Solum project is retiring - https://review.opendev.org/c/openstack/governance/+/919211 this commit remove the content of this project repo Change-Id: I0a4082aefb5d577af16503ea662a5e64f235ff15 --- .gitignore | 31 -- .stestr.conf | 3 - .zuul.yaml | 6 - HACKING.rst | 4 - LICENSE | 175 --------- README.rst | 31 +- babel-django.cfg | 2 - babel-djangojs.cfg | 2 - doc/requirements.txt | 2 - doc/source/conf.py | 78 ---- doc/source/index.rst | 1 - .../notes/drop-py-2-7-241c1a021379927d.yaml | 6 - requirements.txt | 18 - setup.cfg | 26 -- setup.py | 20 -- solumdashboard/__init__.py | 0 solumdashboard/api/__init__.py | 0 solumdashboard/api/client.py | 44 --- solumdashboard/applications/__init__.py | 0 solumdashboard/applications/forms.py | 197 ---------- solumdashboard/applications/panel.py | 28 -- solumdashboard/applications/tables.py | 117 ------ solumdashboard/applications/tabs.py | 81 ----- solumdashboard/applications/urls.py | 33 -- solumdashboard/applications/views.py | 138 ------- .../applications/workflows/__init__.py | 3 - .../applications/workflows/update.py | 70 ---- solumdashboard/assemblies/__init__.py | 0 solumdashboard/assemblies/panel.py | 28 -- solumdashboard/assemblies/tables.py | 79 ---- solumdashboard/assemblies/tabs.py | 37 -- solumdashboard/assemblies/urls.py | 26 -- solumdashboard/assemblies/views.py | 58 --- solumdashboard/common/workflow_parsers.py | 166 --------- solumdashboard/dashboard.py | 30 -- solumdashboard/exceptions.py | 22 -- solumdashboard/languagepacks/__init__.py | 0 solumdashboard/languagepacks/forms.py | 73 ---- solumdashboard/languagepacks/panel.py | 28 -- solumdashboard/languagepacks/tables.py | 91 ----- solumdashboard/languagepacks/urls.py | 26 -- solumdashboard/languagepacks/views.py | 98 ----- solumdashboard/local/enabled/_50_solum.py | 4 - .../locale/de/LC_MESSAGES/django.po | 339 ------------------ .../locale/en_GB/LC_MESSAGES/django.po | 339 ------------------ .../locale/id/LC_MESSAGES/django.po | 325 ----------------- .../templates/applications/_create.html | 12 - .../templates/applications/_detail.html | 52 --- .../templates/applications/_launch.html | 15 - .../templates/applications/_log.html | 37 -- .../templates/applications/_scale.html | 8 - .../templates/applications/create.html | 7 - .../templates/applications/detail.html | 15 - .../templates/applications/index.html | 11 - .../templates/applications/launch.html | 11 - .../templates/applications/scale.html | 11 - .../templates/assemblies/_detail.html | 18 - .../templates/assemblies/detail.html | 15 - .../templates/assemblies/index.html | 11 - .../templates/languagepacks/_create.html | 12 - .../templates/languagepacks/_detail.html | 42 --- .../templates/languagepacks/create.html | 7 - .../templates/languagepacks/detail.html | 15 - .../templates/languagepacks/index.html | 11 - solumdashboard/tests/__init__.py | 0 .../tests/common/test_workflow_parsers.py | 145 -------- solumdashboard/tests/settings.py | 18 - solumdashboard/tests/unit/__init__.py | 0 solumdashboard/tests/unit/test_solum.py | 19 - solumdashboard/version.py | 18 - test-requirements.txt | 13 - tox.ini | 45 --- 72 files changed, 8 insertions(+), 3445 deletions(-) delete mode 100644 .gitignore delete mode 100644 .stestr.conf delete mode 100644 .zuul.yaml delete mode 100644 HACKING.rst delete mode 100644 LICENSE delete mode 100644 babel-django.cfg delete mode 100644 babel-djangojs.cfg delete mode 100644 doc/requirements.txt delete mode 100644 doc/source/conf.py delete mode 100644 doc/source/index.rst delete mode 100644 releasenotes/notes/drop-py-2-7-241c1a021379927d.yaml delete mode 100644 requirements.txt delete mode 100644 setup.cfg delete mode 100644 setup.py delete mode 100644 solumdashboard/__init__.py delete mode 100644 solumdashboard/api/__init__.py delete mode 100644 solumdashboard/api/client.py delete mode 100644 solumdashboard/applications/__init__.py delete mode 100644 solumdashboard/applications/forms.py delete mode 100644 solumdashboard/applications/panel.py delete mode 100644 solumdashboard/applications/tables.py delete mode 100644 solumdashboard/applications/tabs.py delete mode 100644 solumdashboard/applications/urls.py delete mode 100644 solumdashboard/applications/views.py delete mode 100644 solumdashboard/applications/workflows/__init__.py delete mode 100644 solumdashboard/applications/workflows/update.py delete mode 100644 solumdashboard/assemblies/__init__.py delete mode 100644 solumdashboard/assemblies/panel.py delete mode 100644 solumdashboard/assemblies/tables.py delete mode 100644 solumdashboard/assemblies/tabs.py delete mode 100644 solumdashboard/assemblies/urls.py delete mode 100644 solumdashboard/assemblies/views.py delete mode 100644 solumdashboard/common/workflow_parsers.py delete mode 100644 solumdashboard/dashboard.py delete mode 100644 solumdashboard/exceptions.py delete mode 100644 solumdashboard/languagepacks/__init__.py delete mode 100644 solumdashboard/languagepacks/forms.py delete mode 100644 solumdashboard/languagepacks/panel.py delete mode 100644 solumdashboard/languagepacks/tables.py delete mode 100644 solumdashboard/languagepacks/urls.py delete mode 100644 solumdashboard/languagepacks/views.py delete mode 100644 solumdashboard/local/enabled/_50_solum.py delete mode 100644 solumdashboard/locale/de/LC_MESSAGES/django.po delete mode 100644 solumdashboard/locale/en_GB/LC_MESSAGES/django.po delete mode 100644 solumdashboard/locale/id/LC_MESSAGES/django.po delete mode 100644 solumdashboard/templates/applications/_create.html delete mode 100644 solumdashboard/templates/applications/_detail.html delete mode 100644 solumdashboard/templates/applications/_launch.html delete mode 100644 solumdashboard/templates/applications/_log.html delete mode 100644 solumdashboard/templates/applications/_scale.html delete mode 100644 solumdashboard/templates/applications/create.html delete mode 100644 solumdashboard/templates/applications/detail.html delete mode 100644 solumdashboard/templates/applications/index.html delete mode 100644 solumdashboard/templates/applications/launch.html delete mode 100644 solumdashboard/templates/applications/scale.html delete mode 100644 solumdashboard/templates/assemblies/_detail.html delete mode 100644 solumdashboard/templates/assemblies/detail.html delete mode 100644 solumdashboard/templates/assemblies/index.html delete mode 100644 solumdashboard/templates/languagepacks/_create.html delete mode 100644 solumdashboard/templates/languagepacks/_detail.html delete mode 100644 solumdashboard/templates/languagepacks/create.html delete mode 100644 solumdashboard/templates/languagepacks/detail.html delete mode 100644 solumdashboard/templates/languagepacks/index.html delete mode 100644 solumdashboard/tests/__init__.py delete mode 100644 solumdashboard/tests/common/test_workflow_parsers.py delete mode 100644 solumdashboard/tests/settings.py delete mode 100644 solumdashboard/tests/unit/__init__.py delete mode 100644 solumdashboard/tests/unit/test_solum.py delete mode 100644 solumdashboard/version.py delete mode 100644 test-requirements.txt delete mode 100644 tox.ini diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bb0f918..0000000 --- a/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -*.pyc -*.swp -*.sqlite3 -.environment_version -.selenium_log -.coverage* -.noseids -.DS_STORE -*.egg/ -*.egg-info/ -coverage.xml -nosetests.xml -pep8.txt -pylint.txt -reports -horizon.egg-info -.secret_key_store -doc/build/ -doc/source/sourcecode -/static/ -.venv -.tox -.idea -build -dist -AUTHORS -ChangeLog -tags -openstack_dashboard/dummydb.sqlite -.stestr/ -test diff --git a/.stestr.conf b/.stestr.conf deleted file mode 100644 index 05ac190..0000000 --- a/.stestr.conf +++ /dev/null @@ -1,3 +0,0 @@ -[DEFAULT] -test_path=./solumdashboard/tests -top_dir=./ diff --git a/.zuul.yaml b/.zuul.yaml deleted file mode 100644 index a94c083..0000000 --- a/.zuul.yaml +++ /dev/null @@ -1,6 +0,0 @@ -- project: - templates: - - check-requirements - - horizon-non-primary-django-jobs - - openstack-python3-jobs-horizon - - openstack-python3-jobs diff --git a/HACKING.rst b/HACKING.rst deleted file mode 100644 index 8b12623..0000000 --- a/HACKING.rst +++ /dev/null @@ -1,4 +0,0 @@ -Solum Style Commandments -======================== - -Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 67db858..0000000 --- a/LICENSE +++ /dev/null @@ -1,175 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/README.rst b/README.rst index 9dbc4b3..4ee2c5f 100644 --- a/README.rst +++ b/README.rst @@ -1,25 +1,10 @@ -======================== -Team and repository tags -======================== +This project is no longer maintained. -.. image:: http://governance.openstack.org/badges/solum-dashboard.svg - :target: http://governance.openstack.org/reference/tags/index.html +The contents of this repository are still available in the Git +source code management system. To see the contents of this +repository before it reached its end of life, please check out the +previous commit with "git checkout HEAD^1". -.. Change things from this point on - -solum-dashboard -=============== - -Horizon plugin for Solum -Purpose of this plugin is to add Solum capabilities to the openstack dashboard. -This plugin requires a working openstack install including solum and horizon. - -How to install solum-dashboard into Horizon. --------------------------------------------- - -Enter these commands in your terminal: - - sudo pip install -e /opt/stack/solum-dashboard - cd /opt/stack/horizon/openstack_dashboard/local/enabled - ln -s /opt/stack/solum-dashboard/solumdashboard/local/enabled/_50_solum.py _50_solum.py - sudo service apache2 restart +For any further questions, please email +openstack-discuss@lists.openstack.org or join #openstack-dev on +OFTC. diff --git a/babel-django.cfg b/babel-django.cfg deleted file mode 100644 index 9a8ac3b..0000000 --- a/babel-django.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[python: **.py] -[django: **/templates/**.html] diff --git a/babel-djangojs.cfg b/babel-djangojs.cfg deleted file mode 100644 index b92caf6..0000000 --- a/babel-djangojs.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[javascript: **.js] -[angular: **/static/**.html] diff --git a/doc/requirements.txt b/doc/requirements.txt deleted file mode 100644 index eccc937..0000000 --- a/doc/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -sphinx>=2.0.0,!=2.1.0 # BSD -openstackdocstheme>=2.2.1 # Apache-2.0 diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100644 index 08c234f..0000000 --- a/doc/source/conf.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import sys - -sys.path.insert(0, os.path.abspath('../..')) -# -- General configuration ---------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = [ - 'sphinx.ext.autodoc', - 'openstackdocstheme', -] - -# autodoc generation is a bit aggressive and a nuisance when doing heavy -# text edit cycles. -# execute "export SPHINX_DEBUG=1" in your terminal to disable - -# The suffix of source filenames. -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'solum-dashboard' -copyright = u'2013, OpenStack Foundation' - -# If true, '()' will be appended to :func: etc. cross-reference text. -add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -add_module_names = True - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'native' - -# -- Options for HTML output -------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. Major themes that come with -# Sphinx are currently 'default' and 'sphinxdoc'. -# html_theme_path = ["."] -# html_theme = '_theme' -# html_static_path = [] - -html_theme = 'openstackdocs' - -# openstackdocstheme options -openstackdocs_repo_name = 'openstack/solum-dashboard' -openstackdocs_auto_name = False -openstackdocs_bug_project = 'solum' -openstackdocs_bug_tag = '' - -# Output file base name for HTML help builder. -htmlhelp_basename = '%sdoc' % project - -# -- Options for manual page output ------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [] - -# If true, show URL addresses after external links. -man_show_urls = True diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index a6210d3..0000000 --- a/doc/source/index.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../README.rst diff --git a/releasenotes/notes/drop-py-2-7-241c1a021379927d.yaml b/releasenotes/notes/drop-py-2-7-241c1a021379927d.yaml deleted file mode 100644 index c2f9b4e..0000000 --- a/releasenotes/notes/drop-py-2-7-241c1a021379927d.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -upgrade: - - | - Python 2.7 support has been dropped. Last release of solum-dashboard - to support python 2.7 is OpenStack Train. The minimum version of Python now - supported by solum-dashboard is Python 3.6. diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7e91f03..0000000 --- a/requirements.txt +++ /dev/null @@ -1,18 +0,0 @@ -# Requirements lower bounds listed here are our best effort to keep them up to -# date but we do not test them so no guarantee of having them all correct. If -# you find any incorrect lower bounds, let us know or propose a fix. - -# The order of packages is significant, because pip processes them in the order -# of appearance. Changing the order has an impact on the overall integration -# process, which may cause wedges in the gate later. -pbr!=2.1.0,>=3.1.1 # Apache-2.0 -# Horizon Core Requirements -django-compressor>=2.2 # MIT -oslo.log>=3.37.0 # Apache-2.0 -python-keystoneclient>=3.22.0 # Apache-2.0 -python-solumclient>=2.6.1 # Apache-2.0 -PyYAML>=5.3 # MIT - -oslo.utils>=3.36.0 # Apache-2.0 - -horizon>=17.1.0 # Apache-2.0 diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index d99d9e5..0000000 --- a/setup.cfg +++ /dev/null @@ -1,26 +0,0 @@ -[metadata] -name = solum-dashboard -summary = Solum Dashboard -description-file = README.rst -license = Apache Software License -python-requires = >=3.6 -classifier = - Programming Language :: Python - Programming Language :: Python :: Implementation :: CPython - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Environment :: OpenStack - Intended Audience :: Information Technology - Intended Audience :: System Administrators - License :: OSI Approved :: Apache Software License - Operating System :: POSIX :: Linux -author = OpenStack -author-email = openstack-discuss@lists.openstack.org -home-page = https://docs.openstack.org/solum/latest/ - -[files] -packages = - solumdashboard diff --git a/setup.py b/setup.py deleted file mode 100644 index cd35c3c..0000000 --- a/setup.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import setuptools - -setuptools.setup( - setup_requires=['pbr>=2.0.0'], - pbr=True) diff --git a/solumdashboard/__init__.py b/solumdashboard/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/api/__init__.py b/solumdashboard/api/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/api/client.py b/solumdashboard/api/client.py deleted file mode 100644 index b9b2610..0000000 --- a/solumdashboard/api/client.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.conf import settings - -from horizon import exceptions - -from solumclient import client as api_client - -from openstack_dashboard.api import base -from oslo_log import log as logging - -LOG = logging.getLogger(__name__) - - -def get_solum_url(request): - endpoint = getattr(settings, 'SOLUM_URL', None) - if not endpoint: - try: - endpoint = base.url_for(request, 'application_deployment') - except exceptions.ServiceCatalogException: - endpoint = 'http://localhost:9777' - LOG.warning('Solum API location could not be found in Service ' - 'Catalog, using default: {0}'.format(endpoint)) - return endpoint - - -def client(request): - auth_url = getattr(settings, 'OPENSTACK_KEYSTONE_URL') - return api_client.Client(1, endpoint=get_solum_url(request), - token=request.user.token.id, - auth_url=auth_url) diff --git a/solumdashboard/applications/__init__.py b/solumdashboard/applications/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/applications/forms.py b/solumdashboard/applications/forms.py deleted file mode 100644 index d196ef2..0000000 --- a/solumdashboard/applications/forms.py +++ /dev/null @@ -1,197 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ -from horizon import exceptions -from horizon import forms -from horizon import messages - -from oslo_log import log as logging -from solumclient.v1 import workflow as cli_wf -import yaml - -from solumdashboard.api.client import client as solumclient - - -LOG = logging.getLogger(__name__) - - -class ScaleForm(forms.SelfHandlingForm): - target = forms.IntegerField(label=_("Target")) - - def handle(self, request, data): - app_id = self.initial.get('application_id') - LOG.info('ScaleApplication %s' % data) - - if data["target"] <= 0: - exceptions.handle(self.request, - _("Scale target must be greater than zero")) - - solum = solumclient(request) - actions = ['scale'] - cli_wf.WorkflowManager(solum, app_id=app_id).create( - actions=actions) - - return True - - -class CreateForm(forms.SelfHandlingForm): - source = forms.ChoiceField( - label=_('Source'), - choices=[ - ('app_file', _('App File')), - ('input', _('Input')) - ], - widget=forms.Select(attrs={ - 'class': 'switchable', - 'data-slug': 'source' - }) - ) - app_file = forms.FileField( - label=_("Local app file location"), - required=False, - widget=forms.FileInput(attrs={ - 'class': 'switched', - 'data-switch-on': 'source', - 'data-source-app_file': _('Local app file location') - }) - ) - name = forms.CharField(label=_("Application Name"), required=False, - max_length=100) - languagepack = forms.CharField(label=_("Languagepack"), required=False) - git_url = forms.URLField(label=_("Source repository"), required=False) - run_cmd = forms.CharField(label=_("Application entry point"), - required=False) - unittest_cmd = forms.CharField(label=_( - "Command to execute unit tests"), required=False) - port = forms.IntegerField(label=_("The port your application listens on"), - min_value=0, - required=False) - param_file = forms.FileField(label=_( - "A yaml file containing custom parameters"), required=False) - - def clean(self): - cleaned_data = super(CreateForm, self).clean() - import_type = cleaned_data.get('source') - if import_type == 'app_file' and not cleaned_data.get('app_file'): - msg = _('Please supply an app file') - raise forms.ValidationError(msg) - elif import_type == 'input': - if not (cleaned_data.get('name')): - msg = _('Please supply a name') - raise forms.ValidationError(msg) - elif not cleaned_data.get('languagepack'): - msg = _('Please supply a languagepack') - raise forms.ValidationError(msg) - elif not cleaned_data.get('git_url'): - msg = _('Please supply a github url') - raise forms.ValidationError(msg) - elif not cleaned_data.get('run_cmd'): - msg = _('Please supply a run command') - raise forms.ValidationError(msg) - return cleaned_data - - def handle(self, request, data): - LOG.info('CreateApplication %s' % data) - solum = solumclient(request) - - app_data = None - if data['source'] == 'app_file': - inf = data['app_file'].read() - app_data = yaml.load(inf) - if 'repo_token' not in app_data: - app_data['repo_token'] = '' - else: - app_data = { - 'version': 1, - 'description': 'default app description', - 'source': { - 'repository': '', - 'revision': 'master', - 'repo_token': '' - }, - 'workflow_config': { - 'test_cmd': '', - 'run_cmd': '' - } - } - - if data['name']: - app_data['name'] = data['name'] - - if data['languagepack']: - app_data['languagepack'] = data['languagepack'] - - if data['git_url']: - app_data['source'] = dict() - app_data['source']['repository'] = data['git_url'] - app_data['source']['revision'] = 'master' - - if data['run_cmd']: - if app_data.get('workflow_config') is None: - app_data['workflow_config'] = dict() - if not app_data['workflow_config']['run_cmd']: - app_data['workflow_config']['run_cmd'] = data['run_cmd'] - - if data['unittest_cmd']: - if app_data.get('workflow_config') is None: - app_data['workflow_config'] = dict() - if not app_data['workflow_config']['test_cmd']: - app_data['workflow_config']['test_cmd'] = data['unittest_cmd'] - - if not app_data.get('ports'): - app_data['ports'] = [] - if data['port']: - app_data['ports'].append(data['port']) - else: - app_data['ports'].append(80) - - if data['param_file']: - param_def = data['param_file'].read() - app_data['parameters'] = yaml.load(param_def) - - try: - solum.apps.create(**app_data) - messages.success(request, - _('Application was successfully created.')) - return True - except Exception: - msg = _('Unable to create application.') - redirect = reverse("horizon:solum:applications:index") - exceptions.handle(request, msg, redirect=redirect) - return False - - -class LaunchForm(forms.SelfHandlingForm): - du_id = forms.CharField(label=_("ID of the DU image"), required=False) - - def handle(self, request, data): - app_id = self.initial.get('application_id') - LOG.info('LaunchApplication %s' % data) - solum = solumclient(request) - - if data["du_id"]: - actions = ['deploy'] - cli_wf.WorkflowManager( - solum, app_id=app_id).create( - actions=actions, du_id=data["du_id"]) - else: - actions = ['unittest', 'build', 'deploy'] - cli_wf.WorkflowManager( - solum, app_id=app_id).create( - actions=actions) - - return True diff --git a/solumdashboard/applications/panel.py b/solumdashboard/applications/panel.py deleted file mode 100644 index f0b38ba..0000000 --- a/solumdashboard/applications/panel.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ - -import horizon - -import solumdashboard.dashboard - - -class ApplicationsPanel(horizon.Panel): - name = _("Applications") - slug = 'applications' - - -solumdashboard.dashboard.SolumPlugin.register(ApplicationsPanel) diff --git a/solumdashboard/applications/tables.py b/solumdashboard/applications/tables.py deleted file mode 100644 index 95f317b..0000000 --- a/solumdashboard/applications/tables.py +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ungettext_lazy - -from horizon import tables -from horizon.utils import filters - -from solumclient.v1 import app as cli_app - -from solumdashboard.api.client import client as solumclient -from solumdashboard.applications import tabs - - -class CreateApplication(tables.LinkAction): - name = "create" - verbose_name = _("New Application") - url = "horizon:solum:applications:create" - classes = ("btn-launch", "ajax-modal") - - -class ScaleApplication(tables.LinkAction): - name = "scale" - verbose_name = _("Scale Application") - url = "horizon:solum:applications:scale" - classes = ("btn-launch", "ajax-modal") - - -class UpdateApplication(tables.LinkAction): - name = "update" - verbose_name = _("Update Application") - url = "horizon:solum:applications:update" - classes = ("btn-launch", "ajax-modal") - - -class LaunchApplication(tables.LinkAction): - name = "build-and-deploy" - verbose_name = _("Build and Deploy Application") - url = "horizon:solum:applications:launch" - classes = ("btn-launch", "ajax-modal") - - def allowed(self, request, package): - return True - - -class DeleteApplication(tables.DeleteAction): - name = "delete" - - @staticmethod - def action_present(count): - return ungettext_lazy( - u"Delete Application", - u"Delete Applications", - count - ) - - @staticmethod - def action_past(count): - return ungettext_lazy( - u"Deleted Application", - u"Deleted Applications", - count - ) - - def allowed(self, request, template): - return True - - def delete(self, request, application_id): - solum = solumclient(request) - cli_app.AppManager(solum).delete(app_id=application_id) - - -class ViewApplicationLogs(tables.LinkAction): - name = "view" - verbose_name = _("View Application Logs") - url = "horizon:solum:applications:detail" - classes = ("btn-edit",) - - def get_link_url(self, datum): - base_url = super(ViewApplicationLogs, self).get_link_url(datum) - tab_query_string = tabs.LogTab( - tabs.AppDetailsTabs).get_query_string() - return "?".join([base_url, tab_query_string]) - - -class ApplicationsTable(tables.DataTable): - name = tables.Column('name', verbose_name=_('Name')) - id = tables.Column('id', verbose_name=_('ID'), - link=("horizon:solum:applications:detail")) - created_at = tables.Column('created_at', verbose_name=_('Created at'), - filters=(filters.parse_isotime,)) - description = tables.Column('description', verbose_name=_('Description')) - languagepack = tables.Column('languagepack', - verbose_name=_('Languagepack')) - - def get_object_id(self, app): - return app.id - - class Meta(object): - name = "applications" - verbose_name = _("Applications") - table_actions = (CreateApplication, DeleteApplication) - row_actions = (LaunchApplication, ViewApplicationLogs, - DeleteApplication, ScaleApplication, UpdateApplication) diff --git a/solumdashboard/applications/tabs.py b/solumdashboard/applications/tabs.py deleted file mode 100644 index 6f4673d..0000000 --- a/solumdashboard/applications/tabs.py +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ - -import json - -from horizon import tabs - -from solumclient.v1 import workflow as cli_wf - -from solumdashboard.api.client import client as solumclient - - -class GeneralTab(tabs.Tab): - name = _("General Info") - slug = "application_details_tab" - template_name = ("applications/_detail.html") - - def get_context_data(self, request): - app_id = self.tab_group.kwargs['application_id'] - solum = solumclient(request) - app = solum.apps.find(name_or_id=app_id) - - app.trigger = app.trigger_actions - app.workflow = app.workflow_config - if app.scale_config: - app.target_instances = app.scale_config[app.name].get('target', '') - - workflowman = cli_wf.WorkflowManager(solum, app_id=app_id) - workflows = workflowman.list() - - return {"application": app, "workflows": workflows} - - -class LogTab(tabs.Tab): - name = _("Logs") - slug = "application_logs_tab" - template_name = ("applications/_log.html") - - def get_context_data(self, request): - app_id = self.tab_group.kwargs['application_id'] - solum = solumclient(request) - app = solum.apps.find(name_or_id=app_id) - - workflowman = cli_wf.WorkflowManager(solum, app_id=app_id) - workflows = workflowman.list() - - logs_list = [] - - for workflow in workflows: - revision = workflow.wf_id - loglist = workflowman.logs(revision_or_id=revision) - for log in loglist: - logs_list.append(log) - strategy_info = json.loads(log.strategy_info) - if log.strategy == 'local': - log.local_storage = log.location - elif log.strategy == 'swift': - log.swift_container = strategy_info['container'] - log.swift_path = log.location - - return {"logs": logs_list, "application": app} - - -class AppDetailsTabs(tabs.TabGroup): - slug = "application_details" - tabs = (GeneralTab, LogTab) - sticky = True diff --git a/solumdashboard/applications/urls.py b/solumdashboard/applications/urls.py deleted file mode 100644 index dff5364..0000000 --- a/solumdashboard/applications/urls.py +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.urls import re_path - -import solumdashboard.applications.views as views - - -urlpatterns = [ - re_path(r'^$', views.IndexView.as_view(), name='index'), - re_path(r'^$', views.IndexView.as_view(), name='applications'), - re_path(r'^create$', views.CreateView.as_view(), name='create'), - re_path(r'^launch/(?P[^/]+)$', views.LaunchView.as_view(), - name='launch'), - re_path(r'^detail/(?P[^/]+)$', - views.DetailView.as_view(), name='detail'), - re_path(r'^scale/(?P[^/]+)$', views.ScaleView.as_view(), - name='scale'), - re_path(r'^update/(?P[^/]+)$', views.UpdateView.as_view(), - name='update') -] diff --git a/solumdashboard/applications/views.py b/solumdashboard/applications/views.py deleted file mode 100644 index 07687bc..0000000 --- a/solumdashboard/applications/views.py +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.urls import reverse -from django.urls import reverse_lazy -from django.utils.translation import ugettext_lazy as _ - -from horizon import exceptions -from horizon import forms -from horizon import tables -from horizon import tabs -from horizon import workflows - -from solumdashboard.api.client import client as solumclient -from solumdashboard.applications import forms as app_forms -from solumdashboard.applications import tables as app_tables -import solumdashboard.applications.tabs as _tabs -from solumdashboard.applications import workflows as update_flow - - -class IndexView(tables.DataTableView): - table_class = app_tables.ApplicationsTable - template_name = 'applications/index.html' - page_title = _("Applications") - - def get_data(self): - try: - solum = solumclient(self.request) - apps = solum.apps.list() - except Exception: - apps = [] - exceptions.handle( - self.request, - _('Unable to retrieve apps.')) - return apps - - -class CreateView(forms.ModalFormView): - form_class = app_forms.CreateForm - template_name = 'applications/create.html' - modal_header = _("Create Application") - page_title = _("Create Application") - submit_url = reverse_lazy('horizon:solum:applications:create') - success_url = reverse_lazy("horizon:solum:applications:index") - - -class ScaleView(forms.ModalFormView): - form_class = app_forms.ScaleForm - template_name = "applications/scale.html" - modal_header = _("Scale Application") - page_title = _("Scale Application") - submit_url = reverse_lazy('horizon:solum:applications:scale') - success_url = reverse_lazy("horizon:solum:applications:index") - failure_url = reverse_lazy("horizon:solum:applications:index") - - def get_context_data(self, **kwargs): - context = super(ScaleView, self).get_context_data(**kwargs) - context["application_id"] = self.kwargs["application_id"] - return context - - def get_initial(self): - application_id = self.kwargs['application_id'] - return {'application_id': application_id} - - -class UpdateView(workflows.WorkflowView): - workflow_class = update_flow.UpdateApplicationClass - success_url = "horizon:solum:applications:index" - classes = ("ajax-modal") - - def get_context_data(self, **kwargs): - context = super(UpdateView, self).get_context_data(**kwargs) - context["application_id"] = self.kwargs["application_id"] - return context - - def _get_object(self, *args, **kwargs): - application_id = self.kwargs['application_id'] - solum = solumclient(self.request) - app = solum.apps.find(name_or_id=application_id) - return app - - def get_initial(self): - app = self._get_object() - return {'application_id': app.id} - - -class DetailView(tabs.TabView): - template_name = 'applications/detail.html' - tab_group_class = _tabs.AppDetailsTabs - page_title = "{{ app.name|default:app.id }}" - - def get_context_data(self, **kwargs): - context = super(DetailView, self).get_context_data(**kwargs) - application_id = self.kwargs['application_id'] - app = None - try: - solum = solumclient(self.request) - app = solum.apps.find(name_or_id=application_id) - except Exception: - INDEX_URL = 'horizon:solum:applications:index' - exceptions.handle( - self.request, - _('Unable to retrieve application details.'), - redirect=reverse(INDEX_URL)) - context["app"] = app - table = app_tables.ApplicationsTable(self.request) - context["actions"] = table.render_row_actions(app) - return context - - -class LaunchView(forms.ModalFormView): - form_class = app_forms.LaunchForm - template_name = "applications/launch.html" - modal_header = _("Launch Application") - page_title = _("Launch Application") - success_url = reverse_lazy("horizon:solum:applications:index") - failure_url = reverse_lazy("horizon:solum:applications:index") - - def get_context_data(self, **kwargs): - context = super(LaunchView, self).get_context_data(**kwargs) - context["application_id"] = self.kwargs["application_id"] - return context - - def get_initial(self): - application_id = self.kwargs['application_id'] - return {'application_id': application_id} diff --git a/solumdashboard/applications/workflows/__init__.py b/solumdashboard/applications/workflows/__init__.py deleted file mode 100644 index 8e149b6..0000000 --- a/solumdashboard/applications/workflows/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Importing non-modules that are not used explicitly - -from .update import UpdateApplicationClass # noqa diff --git a/solumdashboard/applications/workflows/update.py b/solumdashboard/applications/workflows/update.py deleted file mode 100644 index 564b79d..0000000 --- a/solumdashboard/applications/workflows/update.py +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ -from horizon import forms -from horizon import workflows - -from solumdashboard.api.client import client as solumclient - - -class UpdateApplicationAction(workflows.Action): - name = forms.CharField(label=_("Application Name"), required=False) - description = forms.CharField(label=_("Description"), required=False) - languagepack = forms.CharField(label=_("Languagepack"), required=False) - ports = forms.IntegerField(label=_("Ports"), required=False) - - source = {} - source["repository"] = forms.CharField(label=_("Source Repository"), - required=False) - source["revision"] = forms.CharField(label=_("Source Revision"), - required=False) - - workflow_config = {} - workflow_config["test_cmd"] = forms.CharField( - label=_("Workflow Test Command"), required=False) - workflow_config["run_cmd"] = forms.CharField( - label=_("Workflow Run Command"), required=False) - - -class UpdateApplication(workflows.Step): - action_class = UpdateApplicationAction - depends_on = ("application_id",) - contributes = ("name", "description", "languagepack", "ports", "source", - "workflow_config") - - -class UpdateApplicationClass(workflows.Workflow): - slug = "update_app" - name = _("Update App") - finalize_button_name = _("Update") - success_message = _("App updated") - failure_message = _("Could not update app") - success_url = "horizon:solum:applications:index" - default_steps = (UpdateApplication,) - depends_on = ("application_id",) - contributions = ("name", "description", "languagepack", "ports", "source", - "workflow_config") - - def handle(self, request, data): - to_update = {} - for field in data: - if data[field] and field != 'application_id': - to_update[field] = data[field] - - solum = solumclient(request) - solum.apps.patch(data["application_id"], data=to_update) - - return True diff --git a/solumdashboard/assemblies/__init__.py b/solumdashboard/assemblies/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/assemblies/panel.py b/solumdashboard/assemblies/panel.py deleted file mode 100644 index d846f78..0000000 --- a/solumdashboard/assemblies/panel.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ - -import horizon - -import solumdashboard.dashboard - - -class AssembliesPanel(horizon.Panel): - name = _("Assemblies") - slug = 'assemblies' - - -solumdashboard.dashboard.SolumPlugin.register(AssembliesPanel) diff --git a/solumdashboard/assemblies/tables.py b/solumdashboard/assemblies/tables.py deleted file mode 100644 index 4f16b5a..0000000 --- a/solumdashboard/assemblies/tables.py +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ungettext_lazy - -from horizon import tables - -from solumdashboard.api.client import client as solumclient - - -class CreateAssembly(tables.LinkAction): - name = "create" - verbose_name = _("New Assembly") - url = "horizon:solum:assemblies:create" - classes = ("btn-launch", "ajax-modal") - - -class DeleteAssembly(tables.DeleteAction): - - @staticmethod - def action_present(count): - return ungettext_lazy( - u"Delete Assembly", - u"Delete Assemblies", - count - ) - - @staticmethod - def action_past(count): - return ungettext_lazy( - u"Scheduled deletion of Assembly", - u"Scheduled deletion of Assemblies", - count - ) - - def allowed(self, request, template): - return True - - def action(self, request, assembly_id): - solum = solumclient(request) - solum.assemblies.delete(assembly_id=assembly_id) - - -class ViewAssembly(tables.LinkAction): - name = "view" - verbose_name = _("View") - url = "horizon:solum:assemblies:detail" - classes = ("btn-edit",) - - -class AssembliesTable(tables.DataTable): - uuid = tables.Column('uuid', verbose_name=_('UUID'), - link=("horizon:solum:assemblies:detail")) - name = tables.Column('name', verbose_name=_('Name')) - application = tables.Column('application', verbose_name=_('Application'), - link=("horizon:solum:applications:detail")) - description = tables.Column('description', verbose_name=_('Description')) - - def get_object_id(self, app): - return app.uuid - - class Meta(object): - name = "assemblies" - verbose_name = _("Assemblies") - table_actions = (DeleteAssembly,) - row_actions = (ViewAssembly, DeleteAssembly) diff --git a/solumdashboard/assemblies/tabs.py b/solumdashboard/assemblies/tabs.py deleted file mode 100644 index 2de21c7..0000000 --- a/solumdashboard/assemblies/tabs.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ -from horizon import tabs - -from solumdashboard.api.client import client as solumclient - - -class GeneralTab(tabs.Tab): - name = _("General Info") - slug = "assembly_details_tab" - template_name = ("assemblies/_detail.html") - - def get_context_data(self, request): - assem_id = self.tab_group.kwargs['assembly_id'] - solum = solumclient(request) - assem = solum.assemblies.get(assembly_id=assem_id) - return {"assembly": assem} - - -class AssemDetailsTabs(tabs.TabGroup): - slug = "assembly_details" - tabs = (GeneralTab,) - sticky = True diff --git a/solumdashboard/assemblies/urls.py b/solumdashboard/assemblies/urls.py deleted file mode 100644 index 3a6da7b..0000000 --- a/solumdashboard/assemblies/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.urls import re_path - -import solumdashboard.assemblies.views as views - - -urlpatterns = [ - re_path(r'^$', views.IndexView.as_view(), name='index'), - re_path(r'^$', views.IndexView.as_view(), name='assemblies'), - re_path(r'^(?P[^/]+)$', views.DetailView.as_view(), - name='detail') -] diff --git a/solumdashboard/assemblies/views.py b/solumdashboard/assemblies/views.py deleted file mode 100644 index 19cf2f0..0000000 --- a/solumdashboard/assemblies/views.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ - -from horizon import exceptions -from horizon import tables -from horizon import tabs - -from solumdashboard.api.client import client as solumclient -from solumdashboard.assemblies import tables as assem_tables -import solumdashboard.assemblies.tabs as _tabs - - -class IndexView(tables.DataTableView): - table_class = assem_tables.AssembliesTable - template_name = 'assemblies/index.html' - page_title = _("Assemblies") - - def get_data(self): - try: - solum = solumclient(self.request) - assemblies = solum.assemblies.list() - except Exception: - assemblies = [] - exceptions.handle( - self.request, - _('Unable to retrieve assemblies.')) - return assemblies - - -class DetailView(tabs.TabView): - template_name = 'assemblies/detail.html' - tab_group_class = _tabs.AssemDetailsTabs - page_title = "{{ assem.name|default:assem.uuid }}" - - def get_context_data(self, **kwargs): - context = super(DetailView, self).get_context_data(**kwargs) - assem_id = kwargs['assembly_id'] - solum = solumclient(self.request) - assem = solum.assemblies.get(assembly_id=assem_id) - context["assem"] = assem - return context - - def get_data(self): - pass diff --git a/solumdashboard/common/workflow_parsers.py b/solumdashboard/common/workflow_parsers.py deleted file mode 100644 index ea970de..0000000 --- a/solumdashboard/common/workflow_parsers.py +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright 2014 - Rackspace -# -# 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. - -""" -Mistral DSL and Heat Template parsing and representation routines. - -This code does not import the original YAML representations of the Mistral DSL -and Heat Templates as the data may be in memory instead of file. PyYAML is a -good library to load the YAML and translate into a Python dictionary with code -like: - -import yaml - -with open("mistral_dsl.yaml", "r") as fptr - data = yaml.safe_load(fptr) - -Important note: -This code expects that the loading code performs some basic YAML validation -* Mistral DSLs must include a "Workflow" section with a "tasks" subsection -* Mistral DSLs must have one task with no on-success (last task) -* Heat Templates must include a "requirements" section -""" - - -def get_mistral_tasks(data, start_task_name=None): - """Returns an ordered Mistral task list from a DSL.""" - task_list = [] - task_dict = data["Workflow"]["tasks"] - for key, task in task_dict.items(): - on_success = task.get("on-finish", task.get("on-success")) - on_error = task.get("on-finish", task.get("on-error")) - task_list.append([key, on_success, on_error]) - curr_task_name = None - sorted_task_list = [] - no_suc_list = ([[name, on_suc, on_err] for (name, on_suc, on_err) in - task_list if on_suc is None]) - sorted_task_list.insert(0, no_suc_list[0]) - curr_task_name = no_suc_list[0][0] - for count in range(len(task_list) - 1): - for task in task_list: - task_name, on_success, on_error = task - if on_success == curr_task_name: - curr_task_name = task_name - sorted_task_list.insert(0, task) - break - if start_task_name: - if start_task_name == task_name: - break - return sorted_task_list - - -def create_svg_mistral_tasks(task_list, radius=45): - """Create an SVG UI diagram of Mistral task flow. - - This takes the output of get_mistral_tasks() and generates an SVG-based - graphical diagram of the ordered Mistral tasks. The code automatically - scales the SVG based on the circle radius value. Note that SVG circles - don't scale radius by percentages very well which is why this is still - pixel math. The circle radius is the diagonal length of the viewport - which is not very useful in this case. - """ - indent = radius * 1.1 - diameter = radius * 2 - num_tasks = len(task_list) - if num_tasks < 1: - return "[No Tasks Found]" - svg_output = ("\n" % - ((diameter * 1.10), ((num_tasks-1) * diameter * 1.3) + - indent * 2)) - svg_output += (" \n" % - (indent, ((num_tasks-1) * diameter * 1.2) + indent)) - svg_output += (" \n") - for counter in range(num_tasks): - svg_output += (" \n" % - ((counter * diameter * 1.2 + indent), radius)) - svg_output += " \n" - svg_output += " \n" - for counter in range(num_tasks): - svg_output += (" %s\n" % - ((counter * diameter * 1.2 + indent), - task_list[counter][0])) - svg_output += " \n" - svg_output += "\n" - return svg_output - - -def get_mistral_required_input(data, start_task_name=None): - """Returns required Mistral DSL user input field information. - - Note that this code ignores Mistral DSL values that are enumerated in the - ignore_list list below which are under the "parameters:" label. The - recommendation is to not nest sections under a "parameters:" label and - just list name/value pairs in the parameters section. - """ - input_dict = {} - task_list = get_mistral_tasks(data, start_task_name) - task_key_list = [item[0] for item in task_list] - task_dict = data["Workflow"]["tasks"] - ignore_list = ["params", "settings", "arguments"] - publish_list = [] - for task in task_key_list: - param_list = task_dict[task].get("parameters", []) - publish_list.extend(task_dict[task].get("publish", [])) - for param in param_list: - if param not in ignore_list and param not in publish_list: - if param not in input_dict: - input_dict[param] = [task] - else: - input_dict[param].append(task) - return input_dict - - -def get_heat_required_input(data): - """Returns Heat required user input fields.""" - heat_params = [] - heat_param_dict = data["parameters"] - for key, heat_param in heat_param_dict.items(): - heat_params.append([key, - heat_param.get("type"), - heat_param.get("default"), - heat_param.get("description")]) - return sorted(heat_params) - - -if __name__ == "__main__": - # This code is left for example and basic testing purposes; it is not - # intended for production use. - - import yaml - - with open("dsl.yaml", "r") as FPTR: - DATA = yaml.safe_load(FPTR) - print("\nMistral Task workflow:") - RET_DICT = get_mistral_tasks(DATA) - for VAL in RET_DICT: - print("%s - success: %s, error: %s" % (VAL[0], VAL[1], VAL[2])) - - SVG_TEXT = create_svg_mistral_tasks(RET_DICT, 45) - print("\nSVG task output:\n" + SVG_TEXT) - - # Mistral required input - print("\nMistral required inputs:") - RET_DICT = get_mistral_required_input(DATA) - for KEY, VAL in RET_DICT.items(): - print(KEY, "", VAL) - - # Heat required input - print("\nHeat required inputs:") - with open("hot.yaml", "r") as FPTR: - DATA = yaml.safe_load(FPTR) - RET_DICT = get_heat_required_input(DATA) - for VAL in RET_DICT: - print("%s - %s, %s, %s" % (VAL[0], VAL[1], VAL[2], VAL[3])) diff --git a/solumdashboard/dashboard.py b/solumdashboard/dashboard.py deleted file mode 100644 index 4e3b202..0000000 --- a/solumdashboard/dashboard.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ - -import horizon - - -class SolumPlugin(horizon.Dashboard): - name = _("Solum") - slug = "solum" - panels = ('applications', 'assemblies', 'languagepacks') - default_panel = 'applications' - nav = True - supports_tenants = True - - -horizon.register(SolumPlugin) diff --git a/solumdashboard/exceptions.py b/solumdashboard/exceptions.py deleted file mode 100644 index bef4b6d..0000000 --- a/solumdashboard/exceptions.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from openstack_dashboard import exceptions -# from solumclient.openstack.common.apiclient import exceptions as solumclient - -NOT_FOUND = exceptions.NOT_FOUND -RECOVERABLE = exceptions.RECOVERABLE -# + (solumclient.ClientException,) -UNAUTHORIZED = exceptions.UNAUTHORIZED diff --git a/solumdashboard/languagepacks/__init__.py b/solumdashboard/languagepacks/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/languagepacks/forms.py b/solumdashboard/languagepacks/forms.py deleted file mode 100644 index 6fd34f3..0000000 --- a/solumdashboard/languagepacks/forms.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json - -from django.urls import reverse -from django.utils.translation import ugettext_lazy as _ - -from horizon import exceptions -from horizon import forms -from horizon import messages - -from oslo_log import log as logging -import yaml - -from solumdashboard.api.client import client as solumclient - - -LOG = logging.getLogger(__name__) - - -class CreateForm(forms.SelfHandlingForm): - source_uri = forms.CharField(label=_("Source URI")) - name = forms.CharField(label=_("Languagepack Name"), max_length=100) - description = forms.CharField(label=_("Description"), required=False, - max_length=255) - param_file = forms.FileField(label=_("Parameter File"), - required=False) - lp_metadata = forms.FileField(label=_("Languagepack Metadata File"), - required=False) - - def handle(self, request, data): - LOG.info('CreateLanguagepack %s' % data) - solum = solumclient(request) - - param_data = {} - if data['param_file']: - inf = data['param_file'].read() - param_data = yaml.load(inf) - - lp_metadata = None - - if data['lp_metadata']: - lp_metadata = json.dumps(json.load(data['lp_metadata'])) - - try: - solum.languagepacks.create( - name=data['name'], source_uri=data['source_uri'], - lp_metadata=lp_metadata, lp_params=param_data, - description=data['description']) - message = _( - 'Languagepack %s was successfully created.') % data['name'] - messages.success(request, message) - except Exception: - redirect = reverse('horizon:solum:languagepacks:index') - exceptions.handle( - self.request, - _('Unable to create languagepack.'), - redirect=redirect) - - return True diff --git a/solumdashboard/languagepacks/panel.py b/solumdashboard/languagepacks/panel.py deleted file mode 100644 index 978dced..0000000 --- a/solumdashboard/languagepacks/panel.py +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ - -import horizon - -import solumdashboard.dashboard - - -class LanguagepacksPanel(horizon.Panel): - name = _("Languagepacks") - slug = 'languagepacks' - - -solumdashboard.dashboard.SolumPlugin.register(LanguagepacksPanel) diff --git a/solumdashboard/languagepacks/tables.py b/solumdashboard/languagepacks/tables.py deleted file mode 100644 index 1248e92..0000000 --- a/solumdashboard/languagepacks/tables.py +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ungettext_lazy - -from horizon import tables - -from solumdashboard.api.client import client as solumclient - - -class DeleteLanguagepack(tables.DeleteAction): - name = "delete" - - @staticmethod - def action_present(count): - return ungettext_lazy( - u"Delete Languagepack", - u"Delete Languagepacks", - count - ) - - @staticmethod - def action_past(count): - return ungettext_lazy( - u"Deleted Languagepack", - u"Deleted Languagepacks", - count - ) - - def allowed(self, request, template): - return True - - def delete(self, request, languagepack_id): - solum = solumclient(request) - solum.languagepacks.delete(lp_id=languagepack_id) - - -class UpdateRow(tables.Row): - ajax = True - - def get_data(self, request, languagepack_id): - solum = solumclient(request) - return solum.languagepacks.find(name_or_id=languagepack_id) - - -class CreateLanguagepack(tables.LinkAction): - name = "create" - verbose_name = _("New Languagepack") - url = "horizon:solum:languagepacks:create" - classes = ("btn-launch", "ajax-modal") - - -class LanguagepacksTable(tables.DataTable): - STATUS_CHOICES = ( - ("QUEUED", None), - ("BUILDING", None), - ("ERROR", False), - ("READY", True), - ) - uuid = tables.Column("uuid", verbose_name=_("UUID"), - link=("horizon:solum:languagepacks:detail")) - name = tables.Column("name", verbose_name=_("Name")) - description = tables.Column("description", verbose_name=_("Description")) - status = tables.Column("status", verbose_name=_("Status"), - status=True, - status_choices=STATUS_CHOICES) - source_uri = tables.Column("source_uri", verbose_name=_("Source Uri")) - - def get_object_id(self, lp): - return lp.uuid - - class Meta(object): - name = "languagepacks" - verbose_name = _("Languagepacks") - row_class = UpdateRow - status_columns = ["status"] - table_actions = (CreateLanguagepack, DeleteLanguagepack) - row_actions = (DeleteLanguagepack,) diff --git a/solumdashboard/languagepacks/urls.py b/solumdashboard/languagepacks/urls.py deleted file mode 100644 index 8ae2e2e..0000000 --- a/solumdashboard/languagepacks/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.urls import re_path - -from solumdashboard.languagepacks import views - -urlpatterns = [ - re_path(r'^$', views.IndexView.as_view(), name='index'), - re_path(r'^$', views.IndexView.as_view(), name='languagepacks'), - re_path(r'^detail/(?P[^/]+)$', - views.DetailView.as_view(), name='detail'), - re_path(r'^create$', views.CreateView.as_view(), name='create') -] diff --git a/solumdashboard/languagepacks/views.py b/solumdashboard/languagepacks/views.py deleted file mode 100644 index a956948..0000000 --- a/solumdashboard/languagepacks/views.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from django.urls import reverse -from django.urls import reverse_lazy -from django.utils.translation import ugettext_lazy as _ - -import json - -from horizon import exceptions -from horizon import forms -from horizon import tables -from horizon import views - -from solumclient.v1 import languagepack as cli_lp - -from solumdashboard.api.client import client as solumclient -from solumdashboard.languagepacks import forms as lp_forms -from solumdashboard.languagepacks import tables as lp_tables - - -class IndexView(tables.DataTableView): - table_class = lp_tables.LanguagepacksTable - template_name = 'languagepacks/index.html' - page_title = _("Languagepacks") - - def get_data(self): - try: - solum = solumclient(self.request) - languagepacks = solum.languagepacks.list() - except Exception: - languagepacks = [] - exceptions.handle( - self.request, - _('Unable to retrieve languagepacks.')) - return languagepacks - - -class DetailView(views.HorizonTemplateView): - template_name = 'languagepacks/detail.html' - page_title = "{{ languagepack.name }}" - - def get_context_data(self, **kwargs): - context = super(DetailView, self).get_context_data(**kwargs) - - languagepack, loglist = self.get_data() - context["languagepack"] = languagepack - context["loglist"] = loglist - table = lp_tables.LanguagepacksTable(self.request) - context["actions"] = table.render_row_actions(languagepack) - return context - - def get_data(self): - lp_id = self.kwargs['languagepack_id'] - solum = solumclient(self.request) - languagepack = None - loglist = [] - try: - languagepack = solum.languagepacks.find(name_or_id=lp_id) - loglist = cli_lp.LanguagePackManager(solum).logs( - lp_id=lp_id) - except Exception: - INDEX_URL = 'horizon:solum:languagepacks:index' - exceptions.handle( - self.request, - _('Unable to retrieve languagepack details.'), - redirect=reverse(INDEX_URL)) - - for log in loglist: - strategy_info = json.loads(log.strategy_info) - if log.strategy == 'local': - log.local_storage = log.location - elif log.strategy == 'swift': - log.swift_container = strategy_info['container'] - log.swift_path = log.location - - return languagepack, loglist - - -class CreateView(forms.ModalFormView): - form_class = lp_forms.CreateForm - template_name = 'languagepacks/create.html' - modal_header = _("Create Languagepack") - page_title = _("Create Languagepack") - submit_url = reverse_lazy("horizon:solum:languagepacks:create") - success_url = reverse_lazy("horizon:solum:languagepacks:index") diff --git a/solumdashboard/local/enabled/_50_solum.py b/solumdashboard/local/enabled/_50_solum.py deleted file mode 100644 index 68ba030..0000000 --- a/solumdashboard/local/enabled/_50_solum.py +++ /dev/null @@ -1,4 +0,0 @@ -DASHBOARD = 'solum' -ADD_INSTALLED_APPS = ['solumdashboard'] -DEFAULT = True -ADD_EXCEPTIONS = {} diff --git a/solumdashboard/locale/de/LC_MESSAGES/django.po b/solumdashboard/locale/de/LC_MESSAGES/django.po deleted file mode 100644 index c89d0d7..0000000 --- a/solumdashboard/locale/de/LC_MESSAGES/django.po +++ /dev/null @@ -1,339 +0,0 @@ -# Frank Kloeker , 2018. #zanata -# Andreas Jaeger , 2020. #zanata -msgid "" -msgstr "" -"Project-Id-Version: solum-dashboard VERSION\n" -"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2020-09-25 06:08+0000\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2020-10-05 06:38+0000\n" -"Last-Translator: Andreas Jaeger \n" -"Language-Team: German\n" -"Language: de\n" -"X-Generator: Zanata 4.3.3\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -msgid "A yaml file containing custom parameters" -msgstr "Eine Yaml-Datei mit benutzerdefinierten Parametern" - -msgid "App File" -msgstr "Anwendungsdatei" - -msgid "App URL" -msgstr "App-URL" - -msgid "App updated" -msgstr "App aktualisiert" - -msgid "Application" -msgstr "Anwendung" - -msgid "Application Details" -msgstr "Anwendungsdetails" - -msgid "Application Name" -msgstr "Anwendungsname" - -msgid "Application entry point" -msgstr "Anwendungseinstiegspunkt" - -msgid "Application was successfully created." -msgstr "Die Anwendung wurde erfolgreich erstellt." - -msgid "Applications" -msgstr "Anwendungen" - -msgid "Assemblies" -msgstr "Baugruppen" - -msgid "Assembly Details" -msgstr "Details zur Baugruppe" - -msgid "Build and Deploy Application" -msgstr "Erstellen und Bereitstellen von Anwendungen" - -msgid "Command to execute unit tests" -msgstr "Befehl zum Ausführen von Komponententests" - -msgid "Could not update app" -msgstr "Die App konnte nicht aktualisiert werden" - -msgid "Create Application" -msgstr "Anwendung erstellen" - -msgid "Create Languagepack" -msgstr "Sprachpaket erstellen" - -msgid "Created at" -msgstr "Hergestellt in" - -msgid "Delete Application" -msgid_plural "Delete Applications" -msgstr[0] "Lösche Anwendung" -msgstr[1] "Lösche Anwendungen" - -msgid "Delete Assembly" -msgid_plural "Delete Assemblies" -msgstr[0] "Gelöschte Baugruppe" -msgstr[1] "Gelöschte Baugruppen" - -msgid "Delete Languagepack" -msgid_plural "Delete Languagepacks" -msgstr[0] "Lösche Sprachpaket" -msgstr[1] "Lösche Sprachpakete" - -msgid "Deleted Application" -msgid_plural "Deleted Applications" -msgstr[0] "Gelöschte Anwendung" -msgstr[1] "Gelöschte Anwendungen" - -msgid "Deleted Languagepack" -msgid_plural "Deleted Languagepacks" -msgstr[0] "Gelöschtes Sprachpaket" -msgstr[1] "Gelöschte Sprachpakete" - -msgid "Deploy Application" -msgstr "Stellen Sie die Anwendung bereit" - -msgid "Description" -msgstr "Beschreibung" - -msgid "Description:" -msgstr "Beschreibung:" - -msgid "Enter the details for the application." -msgstr "Geben Sie die Details für die Anwendung ein." - -msgid "Enter the details for the languagepack." -msgstr "Geben Sie die Details für das Sprachpaket ein." - -msgid "Entry points" -msgstr "Einstiegspunkte" - -msgid "General Info" -msgstr "Allgemeine Information" - -msgid "ID" -msgstr "ID" - -msgid "ID of the DU image" -msgstr "ID des DU-Abbildes" - -msgid "Input" -msgstr "Eingang" - -msgid "Languagepack" -msgstr "Sprachpaket" - -#, python-format -msgid "Languagepack %s was successfully created." -msgstr "Sprachpaket %s wurde erfolgreich erstellt." - -msgid "Languagepack Details" -msgstr "Sprachpaket Details" - -msgid "Languagepack Metadata File" -msgstr "Sprachpaket-Metadaten-Datei" - -msgid "Languagepack Name" -msgstr "Sprachpaketname" - -msgid "Languagepacks" -msgstr "Sprachpakete" - -msgid "Launch Application" -msgstr "Programm starten" - -msgid "Local Storage" -msgstr "Lokaler Speicher" - -msgid "Local app file location" -msgstr "Speicherort der lokalen Anwendungsdatei" - -msgid "Location" -msgstr "Ort" - -msgid "Log details" -msgstr "Protokolldetails" - -msgid "Log details for " -msgstr "Protokolldetails für" - -msgid "Logs" -msgstr "Protokolle" - -msgid "Name" -msgstr "Name" - -msgid "New Application" -msgstr "Neue Anwendung" - -msgid "New Assembly" -msgstr "Neue Baugruppen" - -msgid "New Languagepack" -msgstr "Neues Sprachpaket" - -msgid "No Log details." -msgstr "Keine Protokolldetails." - -msgid "No Workflow details." -msgstr "Keine Workflowdetails." - -msgid "Parameter File" -msgstr "Parameterdatei" - -msgid "Please supply a github url" -msgstr "Bitte gib eine Github-URL an" - -msgid "Please supply a languagepack" -msgstr "Bitte liefern Sie ein Sprachpaket" - -msgid "Please supply a name" -msgstr "Bitte geben Sie einen Namen an" - -msgid "Please supply a run command" -msgstr "Bitte geben Sie einen Laufbefehl ein" - -msgid "Please supply an app file" -msgstr "Bitte geben Sie eine App-Datei an" - -msgid "Ports" -msgstr "Ports" - -msgid "Resource UUID" -msgstr "Ressourcen-UUID" - -msgid "Scale Application" -msgstr "Anwendung skalieren" - -msgid "Scale target must be greater than zero" -msgstr "Maßstabsziel muss größer als Null sein" - -msgid "Scheduled deletion of Assembly" -msgid_plural "Scheduled deletion of Assemblies" -msgstr[0] "Geplante Baugruppenlöschung" -msgstr[1] "Geplante Baugruppenlöschungen" - -msgid "Solum" -msgstr "Solum" - -msgid "Solum - Applications" -msgstr "Solum - Anwendungen" - -msgid "Solum - Assemblies" -msgstr "Solum - Baugruppen" - -msgid "Solum - Languagepacks" -msgstr "Solum - Sprachpakete" - -msgid "Source" -msgstr "Quelle" - -msgid "Source Repository" -msgstr "Quell-Repository" - -msgid "Source Revision" -msgstr "Quellversion" - -msgid "Source URI" -msgstr "Quell-URI" - -msgid "Source Uri" -msgstr "Quelle Uri" - -msgid "Source repository" -msgstr "Quell-Repository" - -msgid "Status" -msgstr "Status" - -msgid "Swift Container" -msgstr "Schneller Behälter" - -msgid "Swift Path" -msgstr "Schneller Pfad" - -msgid "Target" -msgstr "Ziel" - -msgid "Target Instances" -msgstr "Zielinstanzen" - -msgid "" -"The ID of the DU image is optional, You can deploy the applications without " -"this." -msgstr "" -"Die ID des DU-Abbildes ist optional. Sie können die Anwendungen ohne dieses " -"bereitstellen." - -msgid "The port your application listens on" -msgstr "Der Port, auf den Ihre Anwendung zugreift" - -msgid "Trigger" -msgstr "Auslösen" - -msgid "Trigger URI" -msgstr "Auslöser-URI" - -msgid "Trigger UUID" -msgstr "Auslöser UUID" - -msgid "URI" -msgstr "URI" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to create application." -msgstr "Die Anwendung konnte nicht erstellt werden." - -msgid "Unable to create languagepack." -msgstr "Kann Sprachpaket nicht erstellen." - -msgid "Unable to retrieve application details." -msgstr "Die Anwendungsdetails konnten nicht abgerufen werden." - -msgid "Unable to retrieve apps." -msgstr "Apps konnten nicht abgerufen werden." - -msgid "Unable to retrieve assemblies." -msgstr "Kann Baugruppen nicht abrufen." - -msgid "Unable to retrieve languagepack details." -msgstr "Die Sprachpaketdetails konnten nicht abgerufen werden." - -msgid "Unable to retrieve languagepacks." -msgstr "Sprachpakete konnten nicht abgerufen werden." - -msgid "Update" -msgstr "Aktualisieren" - -msgid "Update App" -msgstr "App aktualisieren" - -msgid "Update Application" -msgstr "Anwendung aktualisieren" - -msgid "Updated at" -msgstr "Aktualisiert am" - -msgid "View" -msgstr "Ansicht" - -msgid "View Application Logs" -msgstr "Anwendungsprotokolle anzeigen" - -msgid "Workflow ID" -msgstr "Arbeitsablauf-ID" - -msgid "Workflow Run Command" -msgstr "Workflow-Ausführungsbefehl" - -msgid "Workflow Test Command" -msgstr "Workflow Testbefehl" - -msgid "Workflow details for" -msgstr "Workflowdetails für" diff --git a/solumdashboard/locale/en_GB/LC_MESSAGES/django.po b/solumdashboard/locale/en_GB/LC_MESSAGES/django.po deleted file mode 100644 index 5c32742..0000000 --- a/solumdashboard/locale/en_GB/LC_MESSAGES/django.po +++ /dev/null @@ -1,339 +0,0 @@ -# Andi Chandler , 2017. #zanata -# Andi Chandler , 2020. #zanata -msgid "" -msgstr "" -"Project-Id-Version: solum-dashboard VERSION\n" -"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2020-09-25 06:08+0000\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2020-10-03 10:35+0000\n" -"Last-Translator: Andi Chandler \n" -"Language-Team: English (United Kingdom)\n" -"Language: en_GB\n" -"X-Generator: Zanata 4.3.3\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -msgid "A yaml file containing custom parameters" -msgstr "A yaml file containing custom parameters" - -msgid "App File" -msgstr "App File" - -msgid "App URL" -msgstr "App URL" - -msgid "App updated" -msgstr "App updated" - -msgid "Application" -msgstr "Application" - -msgid "Application Details" -msgstr "Application Details" - -msgid "Application Name" -msgstr "Application Name" - -msgid "Application entry point" -msgstr "Application entry point" - -msgid "Application was successfully created." -msgstr "Application was successfully created." - -msgid "Applications" -msgstr "Applications" - -msgid "Assemblies" -msgstr "Assemblies" - -msgid "Assembly Details" -msgstr "Assembly Details" - -msgid "Build and Deploy Application" -msgstr "Build and Deploy Application" - -msgid "Command to execute unit tests" -msgstr "Command to execute unit tests" - -msgid "Could not update app" -msgstr "Could not update app" - -msgid "Create Application" -msgstr "Create Application" - -msgid "Create Languagepack" -msgstr "Create Language pack" - -msgid "Created at" -msgstr "Created at" - -msgid "Delete Application" -msgid_plural "Delete Applications" -msgstr[0] "Delete Application" -msgstr[1] "Delete Applications" - -msgid "Delete Assembly" -msgid_plural "Delete Assemblies" -msgstr[0] "Delete Assembly" -msgstr[1] "Delete Assemblies" - -msgid "Delete Languagepack" -msgid_plural "Delete Languagepacks" -msgstr[0] "Delete Language pack" -msgstr[1] "Delete Language packs" - -msgid "Deleted Application" -msgid_plural "Deleted Applications" -msgstr[0] "Deleted Application" -msgstr[1] "Deleted Applications" - -msgid "Deleted Languagepack" -msgid_plural "Deleted Languagepacks" -msgstr[0] "Deleted Language pack" -msgstr[1] "Deleted Language packs" - -msgid "Deploy Application" -msgstr "Deploy Application" - -msgid "Description" -msgstr "Description" - -msgid "Description:" -msgstr "Description:" - -msgid "Enter the details for the application." -msgstr "Enter the details for the application." - -msgid "Enter the details for the languagepack." -msgstr "Enter the details for the language pack." - -msgid "Entry points" -msgstr "Entry points" - -msgid "General Info" -msgstr "General Info" - -msgid "ID" -msgstr "ID" - -msgid "ID of the DU image" -msgstr "ID of the DU image" - -msgid "Input" -msgstr "Input" - -msgid "Languagepack" -msgstr "Languagepack" - -#, python-format -msgid "Languagepack %s was successfully created." -msgstr "Language pack %s was successfully created." - -msgid "Languagepack Details" -msgstr "Languagepack Details" - -msgid "Languagepack Metadata File" -msgstr "Language pack Metadata File" - -msgid "Languagepack Name" -msgstr "Language pack Name" - -msgid "Languagepacks" -msgstr "Language packs" - -msgid "Launch Application" -msgstr "Launch Application" - -msgid "Local Storage" -msgstr "Local Storage" - -msgid "Local app file location" -msgstr "Local app file location" - -msgid "Location" -msgstr "Location" - -msgid "Log details" -msgstr "Log details" - -msgid "Log details for " -msgstr "Log details for " - -msgid "Logs" -msgstr "Logs" - -msgid "Name" -msgstr "Name" - -msgid "New Application" -msgstr "New Application" - -msgid "New Assembly" -msgstr "New Assembly" - -msgid "New Languagepack" -msgstr "New Language pack" - -msgid "No Log details." -msgstr "No Log details." - -msgid "No Workflow details." -msgstr "No Workflow details." - -msgid "Parameter File" -msgstr "Parameter File" - -msgid "Please supply a github url" -msgstr "Please supply a github url" - -msgid "Please supply a languagepack" -msgstr "Please supply a languagepack" - -msgid "Please supply a name" -msgstr "Please supply a name" - -msgid "Please supply a run command" -msgstr "Please supply a run command" - -msgid "Please supply an app file" -msgstr "Please supply an app file" - -msgid "Ports" -msgstr "Ports" - -msgid "Resource UUID" -msgstr "Resource UUID" - -msgid "Scale Application" -msgstr "Scale Application" - -msgid "Scale target must be greater than zero" -msgstr "Scale target must be greater than zero" - -msgid "Scheduled deletion of Assembly" -msgid_plural "Scheduled deletion of Assemblies" -msgstr[0] "Scheduled deletion of Assembly" -msgstr[1] "Scheduled deletion of Assemblies" - -msgid "Solum" -msgstr "Solum" - -msgid "Solum - Applications" -msgstr "Solum - Applications" - -msgid "Solum - Assemblies" -msgstr "Solum - Assemblies" - -msgid "Solum - Languagepacks" -msgstr "Solum - Languagepacks" - -msgid "Source" -msgstr "Source" - -msgid "Source Repository" -msgstr "Source Repository" - -msgid "Source Revision" -msgstr "Source Revision" - -msgid "Source URI" -msgstr "Source URI" - -msgid "Source Uri" -msgstr "Source URI" - -msgid "Source repository" -msgstr "Source repository" - -msgid "Status" -msgstr "Status" - -msgid "Swift Container" -msgstr "Swift Container" - -msgid "Swift Path" -msgstr "Swift Path" - -msgid "Target" -msgstr "Target" - -msgid "Target Instances" -msgstr "Target Instances" - -msgid "" -"The ID of the DU image is optional, You can deploy the applications without " -"this." -msgstr "" -"The ID of the DU image is optional, You can deploy the applications without " -"this." - -msgid "The port your application listens on" -msgstr "The port your application listens on" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger URI" -msgstr "Trigger URI" - -msgid "Trigger UUID" -msgstr "Trigger UUID" - -msgid "URI" -msgstr "URI" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to create application." -msgstr "Unable to create application." - -msgid "Unable to create languagepack." -msgstr "Unable to create language pack." - -msgid "Unable to retrieve application details." -msgstr "Unable to retrieve application details." - -msgid "Unable to retrieve apps." -msgstr "Unable to retrieve apps." - -msgid "Unable to retrieve assemblies." -msgstr "Unable to retrieve assemblies." - -msgid "Unable to retrieve languagepack details." -msgstr "Unable to retrieve language pack details." - -msgid "Unable to retrieve languagepacks." -msgstr "Unable to retrieve language packs." - -msgid "Update" -msgstr "Update" - -msgid "Update App" -msgstr "Update App" - -msgid "Update Application" -msgstr "Update Application" - -msgid "Updated at" -msgstr "Updated at" - -msgid "View" -msgstr "View" - -msgid "View Application Logs" -msgstr "View Application Logs" - -msgid "Workflow ID" -msgstr "Workflow ID" - -msgid "Workflow Run Command" -msgstr "Workflow Run Command" - -msgid "Workflow Test Command" -msgstr "Workflow Test Command" - -msgid "Workflow details for" -msgstr "Workflow details for" diff --git a/solumdashboard/locale/id/LC_MESSAGES/django.po b/solumdashboard/locale/id/LC_MESSAGES/django.po deleted file mode 100644 index 5745f30..0000000 --- a/solumdashboard/locale/id/LC_MESSAGES/django.po +++ /dev/null @@ -1,325 +0,0 @@ -# suhartono , 2018. #zanata -msgid "" -msgstr "" -"Project-Id-Version: solum-dashboard VERSION\n" -"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2020-09-08 06:04+0000\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2018-05-13 03:53+0000\n" -"Last-Translator: suhartono \n" -"Language-Team: Indonesian\n" -"Language: id\n" -"X-Generator: Zanata 4.3.3\n" -"Plural-Forms: nplurals=1; plural=0\n" - -msgid "A yaml file containing custom parameters" -msgstr "File yaml yang berisi parameter khusus" - -msgid "App File" -msgstr "App File" - -msgid "App URL" -msgstr "App URL" - -msgid "App updated" -msgstr "Aplikasi diperbarui" - -msgid "Application" -msgstr "Aplikasi" - -msgid "Application Details" -msgstr "Detail aplikasi" - -msgid "Application Name" -msgstr "Application Name" - -msgid "Application entry point" -msgstr "Titik masuk aplikasi" - -msgid "Application was successfully created." -msgstr "Aplikasi berhasil dibuat." - -msgid "Applications" -msgstr "Aplikasi" - -msgid "Assemblies" -msgstr "Assemblies (perakitan)" - -msgid "Assembly Details" -msgstr "Rincian Perakitan" - -msgid "Build and Deploy Application" -msgstr "Bangun dan Terapkan Aplikasi" - -msgid "Command to execute unit tests" -msgstr "Perintah untuk mengeksekusi tes unit" - -msgid "Could not update app" -msgstr "Tidak dapat memperbarui aplikasi" - -msgid "Create Application" -msgstr "Buat Aplikasi" - -msgid "Create Languagepack" -msgstr "Buat Languagepack" - -msgid "Created at" -msgstr "Created at (dibuat di)" - -msgid "Delete Application" -msgid_plural "Delete Applications" -msgstr[0] "Delete Application" - -msgid "Delete Assembly" -msgid_plural "Delete Assemblies" -msgstr[0] "Delete Assembly" - -msgid "Delete Languagepack" -msgid_plural "Delete Languagepacks" -msgstr[0] "Delete Languagepack" - -msgid "Deleted Application" -msgid_plural "Deleted Applications" -msgstr[0] "Deleted Application" - -msgid "Deleted Languagepack" -msgid_plural "Deleted Languagepacks" -msgstr[0] "Deleted Languagepack" - -msgid "Deploy Application" -msgstr "Terapkan Aplikasi" - -msgid "Description" -msgstr "Deskripsi" - -msgid "Description:" -msgstr "Deskripsi:" - -msgid "Enter the details for the application." -msgstr "Masukkan detail untuk aplikasi." - -msgid "Enter the details for the languagepack." -msgstr "Masukkan detail untuk languagepack." - -msgid "Entry points" -msgstr "Titik masuk" - -msgid "General Info" -msgstr "Informasi Umum" - -msgid "ID" -msgstr "ID" - -msgid "ID of the DU image" -msgstr "ID image DU" - -msgid "Input" -msgstr "Input" - -msgid "Languagepack" -msgstr "Languagepack" - -#, python-format -msgid "Languagepack %s was successfully created." -msgstr "Languagepack %s berhasil dibuat." - -msgid "Languagepack Details" -msgstr "Detail Languagepack" - -msgid "Languagepack Metadata File" -msgstr "File Metadata Languagepack" - -msgid "Languagepack Name" -msgstr "Nama Languagepack" - -msgid "Languagepacks" -msgstr "Languagepack" - -msgid "Launch Application" -msgstr "Launch Application" - -msgid "Local Storage" -msgstr "Penyimpanan lokal" - -msgid "Local app file location" -msgstr "Lokasi file aplikasi lokal" - -msgid "Location" -msgstr "Lokasi" - -msgid "Log details" -msgstr "Detail log" - -msgid "Log details for " -msgstr "Detail log untuk" - -msgid "Logs" -msgstr "Log" - -msgid "Name" -msgstr "Name" - -msgid "New Application" -msgstr "Aplikasi baru" - -msgid "New Assembly" -msgstr "New Assembly (perakitan baru)" - -msgid "New Languagepack" -msgstr "Languagepack baru" - -msgid "No Log details." -msgstr "Tidak ada rincian Log." - -msgid "No Workflow details." -msgstr "Tidak ada detail Alur Kerja." - -msgid "Parameter File" -msgstr "File Parameter" - -msgid "Please supply a github url" -msgstr "Harap berikan url github" - -msgid "Please supply a languagepack" -msgstr "Harap berikan languagepack" - -msgid "Please supply a name" -msgstr "Harap berikan nama" - -msgid "Please supply a run command" -msgstr "Harap berikan perintah run" - -msgid "Please supply an app file" -msgstr "Harap berikan file aplikasi" - -msgid "Ports" -msgstr "Port" - -msgid "Resource UUID" -msgstr "Sumber UUID" - -msgid "Scale Application" -msgstr "Aplikasi Skala" - -msgid "Scale target must be greater than zero" -msgstr "Target skala harus lebih besar dari nol" - -msgid "Scheduled deletion of Assembly" -msgid_plural "Scheduled deletion of Assemblies" -msgstr[0] "Scheduled deletion of Assembly" - -msgid "Solum" -msgstr "Solum" - -msgid "Solum - Applications" -msgstr "Solum - Aplikasi" - -msgid "Solum - Assemblies" -msgstr "Solum - Rakitan" - -msgid "Solum - Languagepacks" -msgstr "Solum - Languagepack" - -msgid "Source" -msgstr "Source" - -msgid "Source Repository" -msgstr "Source Repository" - -msgid "Source Revision" -msgstr "Source Revision" - -msgid "Source URI" -msgstr "Source URI" - -msgid "Source Uri" -msgstr "Source Uri" - -msgid "Source repository" -msgstr "Sumber repositori" - -msgid "Status" -msgstr "Status" - -msgid "Swift Container" -msgstr "Kontainer Swift" - -msgid "Swift Path" -msgstr "Jalur Swift" - -msgid "Target" -msgstr "Target" - -msgid "Target Instances" -msgstr "Instance sasaran" - -msgid "" -"The ID of the DU image is optional, You can deploy the applications without " -"this." -msgstr "" -"ID dari image DU adalah opsional, Anda dapat menerapkan aplikasi tanpa ini." - -msgid "The port your application listens on" -msgstr "Port aplikasi Anda mendengarkan" - -msgid "Trigger" -msgstr "Trigger (pemicu)" - -msgid "Trigger URI" -msgstr "Pemicu URI" - -msgid "Trigger UUID" -msgstr "Memicu UUID" - -msgid "URI" -msgstr "URI" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to create languagepack." -msgstr "Tidak dapat membuat languagepack." - -msgid "Unable to retrieve application details." -msgstr "Tidak dapat mengambil detail aplikasi." - -msgid "Unable to retrieve apps." -msgstr "Tidak dapat mengambil aplikasi." - -msgid "Unable to retrieve languagepack details." -msgstr "Tidak dapat mengambil detail languagepack." - -msgid "Unable to retrieve languagepacks." -msgstr "Tidak dapat mengambil languagepack." - -msgid "Update" -msgstr "Memperbarui" - -msgid "Update App" -msgstr "Perbarui Aplikasi" - -msgid "Update Application" -msgstr "Perbarui Aplikasi" - -msgid "Updated at" -msgstr "Updated at (diperbarui pada)" - -msgid "View" -msgstr "View" - -msgid "View Application Logs" -msgstr "Lihat Log Aplikasi" - -msgid "Workflow ID" -msgstr "Workflow ID" - -msgid "Workflow Run Command" -msgstr "Perintah Jalankan Alur Kerja" - -msgid "Workflow Test Command" -msgstr "Perintah Tes Alur Kerja" - -msgid "Workflow details for" -msgstr "Detail alur kerja untuk" diff --git a/solumdashboard/templates/applications/_create.html b/solumdashboard/templates/applications/_create.html deleted file mode 100644 index 0e50a1f..0000000 --- a/solumdashboard/templates/applications/_create.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "horizon/common/_modal_form.html" %} -{% load i18n %} - -{% block form_attrs %}enctype="multipart/form-data"{% endblock %} - - -{% block modal-body-right %} -

{% trans "Description:" %}

-

- {% trans "Enter the details for the application." %} -

-{% endblock %} diff --git a/solumdashboard/templates/applications/_detail.html b/solumdashboard/templates/applications/_detail.html deleted file mode 100644 index f46d141..0000000 --- a/solumdashboard/templates/applications/_detail.html +++ /dev/null @@ -1,52 +0,0 @@ -{% load i18n %} - -
-
-
{% trans "Name" %}
-
{{ application.name }}
-
{% trans "ID" %}
-
{{ application.id }}
-
{% trans "Created at" %}
-
{{ application.created_at|parse_isotime }}
-
{% trans "Updated at" %}
-
{{ application.updated_at|parse_isotime }}
-
{% trans "Description" %}
-
{{ application.description|default:"None" }}
-
{% trans "Languagepack" %}
-
{{ application.languagepack }}
-
{% trans "Entry points" %}
-
{{ application.entry_points }}
-
{% trans "Ports" %}
-
{{ application.ports }}
-
{% trans "Source" %}
-
{{ application.source }}
-
{% trans "Trigger UUID" %}
-
{{ application.trigger_uuid }}
-
{% trans "Trigger" %}
-
{{ application.trigger }}
-
{% trans "App URL" %}
-
{{ application.app_url }}
- - {% if application.target_instances %} -
{% trans "Target Instances" %}
-
{{ application.target_instances }}
- {% endif %} - -
- -

{% trans "Workflow details for" %}: {{ application.name }}

- -
-
- {% for workflow in workflows %} -
{% trans "Workflow ID" %}
-
{{ workflow.wf_id }}
-
{% trans "ID" %}
-
{{ workflow.id }}
-
{% trans "Status" %}
-
{{ workflow.status }}
- {% empty %} -
{% trans "No Workflow details." %}
- {% endfor %} -
-
diff --git a/solumdashboard/templates/applications/_launch.html b/solumdashboard/templates/applications/_launch.html deleted file mode 100644 index 9525387..0000000 --- a/solumdashboard/templates/applications/_launch.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'horizon/common/_modal_form.html' %} -{% load i18n %} - -{% block form_id %}{% endblock %} -{% block form_action %}{% url 'horizon:solum:applications:launch' application_id %}{% endblock %} - -{% block modal-header %}{% trans "Deploy Application" %}{% endblock %} -{% block modal_id %}launch_application_modal{% endblock %} - -{% block modal-body-right %} -

{% trans "Description:" %}

-

- {% trans "The ID of the DU image is optional, You can deploy the applications without this." %} -

-{% endblock %} diff --git a/solumdashboard/templates/applications/_log.html b/solumdashboard/templates/applications/_log.html deleted file mode 100644 index acdd43d..0000000 --- a/solumdashboard/templates/applications/_log.html +++ /dev/null @@ -1,37 +0,0 @@ -{% load i18n %} -

{% trans "Application" %}

-
-
-

{% trans "Log details for " %}: {{ application.name }}

- - {% for log in loglist %} - -
-
{% trans "Resource UUID" %}
-
{{ log.resource_uuid }}
- -
{% trans "Created at" %}
-
{{ log.created_at|parse_isotime }}
- - {% if log.local_storage %} -
{% trans "Local Storage" %}
-
{{ log.local_storage }}
- - {% elif log.swift_container %} -
{% trans "Swift Container" %}
-
{{ log.swift_container }}
-
{% trans "Swift Path" %}
-
{{ log.swift_path }}
- - {% else %} -
{% trans "Location" %}
-
{{ log.location }}
- - {% endif %} -
- - {% empty %} -
None
- {% endfor %} -
-
diff --git a/solumdashboard/templates/applications/_scale.html b/solumdashboard/templates/applications/_scale.html deleted file mode 100644 index 4dcb992..0000000 --- a/solumdashboard/templates/applications/_scale.html +++ /dev/null @@ -1,8 +0,0 @@ -{% extends 'horizon/common/_modal_form.html' %} -{% load i18n %} - -{% block form_id %}{% endblock %} -{% block form_action %}{% url 'horizon:solum:applications:scale' application_id %}{% endblock %} - -{% block modal-header %}{% trans "Scale Application" %}{% endblock %} -{% block modal_id %}scale_application_modal{% endblock %} diff --git a/solumdashboard/templates/applications/create.html b/solumdashboard/templates/applications/create.html deleted file mode 100644 index 27ca846..0000000 --- a/solumdashboard/templates/applications/create.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Create Application" %}{% endblock %} - -{% block main %} - {% include 'applications/_create.html' %} -{% endblock %} diff --git a/solumdashboard/templates/applications/detail.html b/solumdashboard/templates/applications/detail.html deleted file mode 100644 index 0831108..0000000 --- a/solumdashboard/templates/applications/detail.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Application Details" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_detail_header.html" with title=_("Application Details") %} -{% endblock page_header %} - -{% block main %} -
-
- {{ tab_group.render }} -
-
-{% endblock %} diff --git a/solumdashboard/templates/applications/index.html b/solumdashboard/templates/applications/index.html deleted file mode 100644 index c9ab5dc..0000000 --- a/solumdashboard/templates/applications/index.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Solum" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Solum - Applications") %} -{% endblock page_header %} - -{% block main %} - {{ table.render }} -{% endblock %} diff --git a/solumdashboard/templates/applications/launch.html b/solumdashboard/templates/applications/launch.html deleted file mode 100644 index 5a385d6..0000000 --- a/solumdashboard/templates/applications/launch.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Deploy Application" %}{% endblock %} - -{% block page_header %} - {% include 'horizon/common/_page_header.html' with title=_('Deploy Application') %} -{% endblock page_header %} - -{% block main %} - {% include 'applications/_launch.html' %} -{% endblock %} \ No newline at end of file diff --git a/solumdashboard/templates/applications/scale.html b/solumdashboard/templates/applications/scale.html deleted file mode 100644 index fccd00e..0000000 --- a/solumdashboard/templates/applications/scale.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Scale Application" %}{% endblock %} - -{% block page_header %} - {% include 'horizon/common/_page_header.html' with title=_('Scale Application') %} -{% endblock page_header %} - -{% block main %} - {% include 'applications/_scale.html' %} -{% endblock %} diff --git a/solumdashboard/templates/assemblies/_detail.html b/solumdashboard/templates/assemblies/_detail.html deleted file mode 100644 index 374ce73..0000000 --- a/solumdashboard/templates/assemblies/_detail.html +++ /dev/null @@ -1,18 +0,0 @@ -{% load i18n sizeformat %} -

{% trans "Application" %}

-
-
-
{% trans "Name" %}
-
{{ assembly.name }}
-
{% trans "ID" %}
-
{{ assembly.uuid }}
-
{% trans "Description" %}
-
{{ assembly.description|default:"None" }}
-
{% trans "Status" %}
-
{{ assembly.status|default:"None" }}
-
{% trans "URI" %}
-
{{ assembly.application_uri|default:"None" }}
-
{% trans "Trigger URI" %}
-
{{ assembly.trigger_uri|default:"None" }}
-
-
diff --git a/solumdashboard/templates/assemblies/detail.html b/solumdashboard/templates/assemblies/detail.html deleted file mode 100644 index 6077440..0000000 --- a/solumdashboard/templates/assemblies/detail.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'base.html' %} -{% load i18n sizeformat %} -{% block title %}{% trans "Assembly Details" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Assembly Details") %} -{% endblock page_header %} - -{% block main %} -
-
- {{ tab_group.render }} -
-
-{% endblock %} diff --git a/solumdashboard/templates/assemblies/index.html b/solumdashboard/templates/assemblies/index.html deleted file mode 100644 index d84e723..0000000 --- a/solumdashboard/templates/assemblies/index.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Solum" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Solum - Assemblies") %} -{% endblock page_header %} - -{% block main %} - {{ table.render }} -{% endblock %} diff --git a/solumdashboard/templates/languagepacks/_create.html b/solumdashboard/templates/languagepacks/_create.html deleted file mode 100644 index da78b7c..0000000 --- a/solumdashboard/templates/languagepacks/_create.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "horizon/common/_modal_form.html" %} -{% load i18n %} - -{% block form_attrs %}enctype="multipart/form-data"{% endblock %} - - -{% block modal-body-right %} -

{% trans "Description:" %}

-

- {% trans "Enter the details for the languagepack." %} -

-{% endblock %} diff --git a/solumdashboard/templates/languagepacks/_detail.html b/solumdashboard/templates/languagepacks/_detail.html deleted file mode 100644 index ad806d6..0000000 --- a/solumdashboard/templates/languagepacks/_detail.html +++ /dev/null @@ -1,42 +0,0 @@ -{% load i18n %} - -
-
-
{% trans "Name" %}
-
{{ languagepack.name }}
-
{% trans "ID" %}
-
{{ languagepack.uuid }}
-
{% trans "Description" %}
-
{{ languagepack.description|default:"None" }}
-
{% trans "Status" %}
-
{{ languagepack.status }}
-
{% trans "Source Uri" %}
-
{{ languagepack.source_uri }}
-
- -

{% trans "Log details" %}

- -
-
- {% for log in loglist %} -
{% trans "Resource UUID" %}
-
{{ log.resource_uuid }}
-
{% trans "Created at" %}
-
{{ log.created_at|parse_isotime }}
- {% if log.local_storage %} -
{% trans "Local Storage" %}
-
{{ log.local_storage }}
- {% elif log.swift_container %} -
{% trans "Swift Container" %}
-
{{ log.swift_container }}
-
{% trans "Swift Path" %}
-
{{ log.swift_path }}
- {% else %} -
{% trans "Location" %}
-
{{ log.location }}
- {% endif %} - {% empty %} -
{% trans "No Log details." %}
- {% endfor %} -
-
diff --git a/solumdashboard/templates/languagepacks/create.html b/solumdashboard/templates/languagepacks/create.html deleted file mode 100644 index 4eecd9e..0000000 --- a/solumdashboard/templates/languagepacks/create.html +++ /dev/null @@ -1,7 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Create Languagepack" %}{% endblock %} - -{% block main %} - {% include 'languagepacks/_create.html' %} -{% endblock %} diff --git a/solumdashboard/templates/languagepacks/detail.html b/solumdashboard/templates/languagepacks/detail.html deleted file mode 100644 index 2a75f90..0000000 --- a/solumdashboard/templates/languagepacks/detail.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Languagepack Details" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_detail_header.html" with title=_("Languagepack Details") %} -{% endblock page_header %} - -{% block main %} -
-
- {% include "languagepacks/_detail.html" %} -
-
-{% endblock %} diff --git a/solumdashboard/templates/languagepacks/index.html b/solumdashboard/templates/languagepacks/index.html deleted file mode 100644 index bbf0d8e..0000000 --- a/solumdashboard/templates/languagepacks/index.html +++ /dev/null @@ -1,11 +0,0 @@ -{% extends 'base.html' %} -{% load i18n %} -{% block title %}{% trans "Solum" %}{% endblock %} - -{% block page_header %} - {% include "horizon/common/_page_header.html" with title=_("Solum - Languagepacks") %} -{% endblock page_header %} - -{% block main %} - {{ table.render }} -{% endblock %} diff --git a/solumdashboard/tests/__init__.py b/solumdashboard/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/tests/common/test_workflow_parsers.py b/solumdashboard/tests/common/test_workflow_parsers.py deleted file mode 100644 index 8453274..0000000 --- a/solumdashboard/tests/common/test_workflow_parsers.py +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright 2014 - Rackspace -# -# 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 unittest - -from solumdashboard.common import workflow_parsers - - -MISTRAL_DSL = { - "Namespaces": { - "Nova": { - "actions": "random data" - } - }, - "Workflow": { - "tasks": { - "createVM": { - "action": "Nova.createVM", - "parameters": { - "nova_url": "$.nova_url", - "auth_token": "$.auth_token" - }, - "publish": { - "vm_id": "vm_id" - }, - "on-success": "waitForIP" - }, - "waitForIP": { - "action": "Nova.getIP", - "publish": { - "vm_ip": "vm_ip" - }, - "parameters": { - "nova_url": "$.nova_url", - "project_id": "$.project_id", - "auth_token": "$.auth_token" - }, - "on-error": "errorTask" - } - } - } -} - -HEAT_TEMPLATE = { - "heat_template_version": "2013-05-23", - "description": "Basic app deploy.", - "parameters": { - "app_name": { - "type": "string", - "default": "solum-app", - "description": "app name desc" - }, - "key_name": { - "type": "string", - "default": "mykey" - } - }, - "randomstuff": "blah blah blah" -} - - -class TestWorkflowParsers(unittest.TestCase): - """Test routines for workflow parsing code.""" - def test_get_mistral_tasks(self): - """Test get Mistral Tasks functionality.""" - # Correct operation test case - task_list = workflow_parsers.get_mistral_tasks(MISTRAL_DSL) - self.assertEqual(task_list, - [["createVM", "waitForIP", None], - ["waitForIP", None, "errorTask"]]) - # Missing "tasks" section from Workflow - dsl_copy = MISTRAL_DSL.copy() - dsl_copy["Workflow"] = {"garbage": "here", "nothing": "useful"} - self.assertRaises(KeyError, workflow_parsers.get_mistral_tasks, - dsl_copy) - # All tasks have an on-success condition (invalid DSL) - dsl_copy = MISTRAL_DSL.copy() - dsl_copy["Workflow"]["tasks"]["waitForIP"]["on-success"] = "noTask" - self.assertRaises(IndexError, workflow_parsers.get_mistral_tasks, - dsl_copy) - # None data test case - self.assertRaises(TypeError, workflow_parsers.get_mistral_tasks, None) - - def test_get_mistral_required_input(self): - """Test get Mistral required user input functionality.""" - # Handle None data - self.assertRaises(TypeError, workflow_parsers.get_mistral_tasks, None) - # Correct operation test case - input_dict = workflow_parsers.get_mistral_required_input(MISTRAL_DSL) - self.assertEqual(input_dict, - {"nova_url": ["createVM", "waitForIP"], - "auth_token": ["createVM", "waitForIP"], - "project_id": ["waitForIP"]}) - # Remove the "tasks" section from Workflow - dsl_copy = MISTRAL_DSL.copy() - dsl_copy["Workflow"] = {"garbage": "here", "nothing": "useful"} - self.assertRaises(KeyError, - workflow_parsers.get_mistral_required_input, - dsl_copy) - # Verify that a publish removes the input from the next task - dsl_copy = MISTRAL_DSL.copy() - dsl_copy["Workflow"]["tasks"]["createVM"]["publish"] = ( - {"project_id": "test project"}) - input_dict = workflow_parsers.get_mistral_required_input(dsl_copy) - self.assertEqual(input_dict, - {"nova_url": ["createVM", "waitForIP"], - "auth_token": ["createVM", "waitForIP"]}) - # Test ignoring of odd tags like "arguments" - dsl_copy["Workflow"]["tasks"]["createVM"]["parameters"] = ( - {"key": "value", "arguments": {"random arguments"}}) - input_dict = workflow_parsers.get_mistral_required_input(dsl_copy) - self.assertEqual(input_dict, - {"key": ["createVM"], "nova_url": ["waitForIP"], - "auth_token": ["waitForIP"]}) - - def test_get_heat_required_input(self): - """Test get Heat required user input functionality.""" - # Handle None data - self.assertRaises(TypeError, workflow_parsers.get_heat_required_input, - None) - # Remove the "parameters" section from the HoT - hot_copy = {"nothing_here": "error time"} - self.assertRaises(KeyError, - workflow_parsers.get_heat_required_input, - hot_copy) - # Correct operation test case - heat_list = workflow_parsers.get_heat_required_input(HEAT_TEMPLATE) - self.assertEqual(heat_list, - [["app_name", "string", "solum-app", "app name desc"], - ["key_name", "string", "mykey", None]]) - - -if __name__ == "__main__": - unittest.main() diff --git a/solumdashboard/tests/settings.py b/solumdashboard/tests/settings.py deleted file mode 100644 index 47234fb..0000000 --- a/solumdashboard/tests/settings.py +++ /dev/null @@ -1,18 +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 horizon.test.settings import * # noqa -from openstack_dashboard.test.settings import * # noqa - - -DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', - 'NAME': 'test'}} diff --git a/solumdashboard/tests/unit/__init__.py b/solumdashboard/tests/unit/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/solumdashboard/tests/unit/test_solum.py b/solumdashboard/tests/unit/test_solum.py deleted file mode 100644 index ff2d81e..0000000 --- a/solumdashboard/tests/unit/test_solum.py +++ /dev/null @@ -1,19 +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 import test as django_test - - -class TestSolum(django_test.TestCase): - - def test_add_here(self): - pass diff --git a/solumdashboard/version.py b/solumdashboard/version.py deleted file mode 100644 index d9df8f9..0000000 --- a/solumdashboard/version.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2014 Rackspace Hosting. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from pbr import version - -version_info = version.VersionInfo('solum-dashboard') diff --git a/test-requirements.txt b/test-requirements.txt deleted file mode 100644 index fd6456f..0000000 --- a/test-requirements.txt +++ /dev/null @@ -1,13 +0,0 @@ -# The order of packages is significant, because pip processes them in the order -# of appearance. Changing the order has an impact on the overall integration -# process, which may cause wedges in the gate later. -hacking>=3.0.1,<3.1.0 # Apache-2.0 - -coverage>=4.5.1 # Apache-2.0 -oslo.config>=5.2.0 # Apache-2.0 -pylint==1.4.5 # GPLv2 -selenium>=3.11.0 # Apache-2.0 -stestr>=2.0.0 # Apache-2.0 - -testtools>=2.3.0 # MIT -unittest2>=1.1.0 # BSD diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 28273a9..0000000 --- a/tox.ini +++ /dev/null @@ -1,45 +0,0 @@ -[tox] -minversion = 3.2.0 -envlist = py3,pep8 - -[testenv] -usedevelop = True -setenv = - VIRTUAL_ENV={envdir} - DJANGO_SETTINGS_MODULE=solumdashboard.tests.settings -deps = - -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} - -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt - -commands = - stestr run --concurrency 1 {posargs} - stestr slowest - -[testenv:cover] -setenv = - {[testenv]setenv} - PYTHON=coverage run --source solumdashboard --parallel-mode -commands = - stestr run --concurrency 1 {posargs} - coverage combine - coverage html -d cover - coverage xml -o cover/coverage.xml - -[testenv:pep8] -commands = flake8 - -[testenv:venv] -commands = {posargs} - -[flake8] -show-source = true -builtins = _ -exclude=.git,.tox,dist,doc,*lib/python*,*egg,tools,horizon,node_modules - -[testenv:docs] -deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} - -r{toxinidir}/doc/requirements.txt -commands = sphinx-build -W -b html doc/source doc/build/html -allowlist_externals = - sphinx-build