From f0738be0c40fa97bb43ec3e5477f91a7057391a8 Mon Sep 17 00:00:00 2001 From: Christopher Aedo <doc@aedo.net> Date: Sun, 10 Dec 2017 10:12:12 -0800 Subject: [PATCH] Retiring App Catalog This commit removes content associated with the app catalog. This is part of the first step, following the guide at: https://docs.openstack.org/infra/manual/drivers.html#retiring-a-project Earlier this year the TC agreed to retire this project: https://review.openstack.org/#/c/452086/ In July, Fungi sent a note to the operators list as well: http://lists.openstack.org/pipermail/openstack-operators/2017-July/013965.html Depends-On: I52ce13057643d69a0fd87bce20ee460c6b7c2f17 Change-Id: Idd69df495663e5ab6466c8d06945c9257a93842a --- .coveragerc | 7 - .eslintrc | 13 - .gitignore | 53 - .gitreview | 4 - .mailmap | 3 - .testr.conf | 7 - CONTRIBUTING.rst | 16 - HACKING.rst | 4 - LICENSE | 180 - MANIFEST.in | 6 - README.rst | 54 +- babel.cfg | 2 - bindep.txt | 40 - deployment/README.md | 48 - .../catalog-ci-jenkins/manifests/site.pp | 1 - .../modules/catalog_ci/files/config.xml | 45 - .../catalog_ci/files/gerrit-trigger.xml | 67 - .../modules/catalog_ci/files/jobs/job.yaml | 67 - .../catalog_ci/files/scripts/app-catalog.sh | 96 - .../files/scripts/generate_names.py | 50 - .../modules/catalog_ci/manifests/init.pp | 123 - .../catalog_ci/templates/jenkins_jobs.ini.erb | 8 - deployment/deploy.sh | 19 - doc/source/conf.py | 75 - doc/source/contributing.rst | 4 - doc/source/index.rst | 24 - doc/source/installation.rst | 12 - doc/source/readme.rst | 1 - doc/source/usage.rst | 7 - manage.py | 25 - openstack_catalog/__init__.py | 19 - openstack_catalog/api/__init__.py | 39 - openstack_catalog/api/v1.py | 52 - openstack_catalog/settings.py | 107 - openstack_catalog/static_settings.py | 28 - openstack_catalog/templates/_scripts.html | 6 - openstack_catalog/templates/index.html | 523 -- openstack_catalog/tests/__init__.py | 0 .../tests/test_openstack_catalog.py | 61 - openstack_catalog/urls.py | 8 - openstack_catalog/views.py | 5 - .../web/static/assets.schema.yaml | 274 - openstack_catalog/web/static/assets.yaml | 4787 ----------------- openstack_catalog/web/static/assets_dead.yaml | 2 - openstack_catalog/web/static/blank.json | 0 openstack_catalog/web/static/css/theme.css | 225 - .../web/static/images/Chef-124x90-logo.png | Bin 3479 -> 0 bytes .../web/static/images/favicon.ico | Bin 1150 -> 0 bytes .../static/images/featured-corner-glance.png | Bin 1424 -> 0 bytes .../static/images/featured-corner-heat.png | Bin 1412 -> 0 bytes .../static/images/featured-corner-murano.png | Bin 1705 -> 0 bytes .../web/static/images/glance-diagram.png | Bin 8024 -> 0 bytes .../web/static/images/heat-diagram.png | Bin 20401 -> 0 bytes .../web/static/images/logo-cloudfoundry.png | Bin 19328 -> 0 bytes .../web/static/images/logo-coreos.png | Bin 3402 -> 0 bytes .../web/static/images/logo-debian.png | Bin 10314 -> 0 bytes .../web/static/images/logo-f5.png | Bin 18333 -> 0 bytes .../web/static/images/logo-fedora.png | Bin 9798 -> 0 bytes .../web/static/images/logo-kubernetes.png | Bin 8680 -> 0 bytes .../web/static/images/logo-lamp.png | Bin 8372 -> 0 bytes .../web/static/images/logo-openshift.png | Bin 4340 -> 0 bytes .../web/static/images/logo-oracle.png | Bin 5147 -> 0 bytes .../web/static/images/logo-pivotal.png | Bin 12126 -> 0 bytes .../web/static/images/logo-redis.png | Bin 8819 -> 0 bytes .../web/static/images/logo-wordpress.png | Bin 7977 -> 0 bytes .../web/static/images/murano-diagram.png | Bin 11642 -> 0 bytes .../web/static/images/openstack-icon.png | Bin 6755 -> 0 bytes .../web/static/images/openstack-logo.png | Bin 5628 -> 0 bytes .../web/static/images/plugin-icon.png | Bin 3437 -> 0 bytes .../web/static/images/tosca-diagram.png | Bin 62182 -> 0 bytes .../web/static/js/apps-catalog.js | 418 -- openstack_catalog/web/testicons.html | 116 - openstack_catalog/wsgi.py | 7 - openstack_catalog/wsgi_django.py | 28 - package.json | 16 - requirements.txt | 13 - run_tests.sh | 70 - setup.cfg | 45 - setup.py | 30 - test-requirements.txt | 19 - tools/asset_history.sh | 10 - tools/check_app_catalog_yaml.py | 137 - tools/testserver.py | 41 - tools/update_assets.sh | 19 - tools/yaml2json.py | 51 - tox.ini | 50 - 86 files changed, 8 insertions(+), 8259 deletions(-) delete mode 100644 .coveragerc delete mode 100644 .eslintrc delete mode 100644 .gitignore delete mode 100644 .gitreview delete mode 100644 .mailmap delete mode 100644 .testr.conf delete mode 100644 CONTRIBUTING.rst delete mode 100644 HACKING.rst delete mode 100644 LICENSE delete mode 100644 MANIFEST.in delete mode 100644 babel.cfg delete mode 100644 bindep.txt delete mode 100644 deployment/README.md delete mode 100644 deployment/catalog-ci-jenkins/manifests/site.pp delete mode 100644 deployment/catalog-ci-jenkins/modules/catalog_ci/files/config.xml delete mode 100644 deployment/catalog-ci-jenkins/modules/catalog_ci/files/gerrit-trigger.xml delete mode 100644 deployment/catalog-ci-jenkins/modules/catalog_ci/files/jobs/job.yaml delete mode 100755 deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/app-catalog.sh delete mode 100755 deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/generate_names.py delete mode 100644 deployment/catalog-ci-jenkins/modules/catalog_ci/manifests/init.pp delete mode 100644 deployment/catalog-ci-jenkins/modules/catalog_ci/templates/jenkins_jobs.ini.erb delete mode 100755 deployment/deploy.sh delete mode 100755 doc/source/conf.py delete mode 100644 doc/source/contributing.rst delete mode 100644 doc/source/index.rst delete mode 100644 doc/source/installation.rst delete mode 100644 doc/source/readme.rst delete mode 100644 doc/source/usage.rst delete mode 100644 manage.py delete mode 100644 openstack_catalog/__init__.py delete mode 100644 openstack_catalog/api/__init__.py delete mode 100644 openstack_catalog/api/v1.py delete mode 100644 openstack_catalog/settings.py delete mode 100644 openstack_catalog/static_settings.py delete mode 100644 openstack_catalog/templates/_scripts.html delete mode 100644 openstack_catalog/templates/index.html delete mode 100644 openstack_catalog/tests/__init__.py delete mode 100644 openstack_catalog/tests/test_openstack_catalog.py delete mode 100644 openstack_catalog/urls.py delete mode 100644 openstack_catalog/views.py delete mode 100644 openstack_catalog/web/static/assets.schema.yaml delete mode 100644 openstack_catalog/web/static/assets.yaml delete mode 100644 openstack_catalog/web/static/assets_dead.yaml delete mode 100644 openstack_catalog/web/static/blank.json delete mode 100644 openstack_catalog/web/static/css/theme.css delete mode 100644 openstack_catalog/web/static/images/Chef-124x90-logo.png delete mode 100644 openstack_catalog/web/static/images/favicon.ico delete mode 100644 openstack_catalog/web/static/images/featured-corner-glance.png delete mode 100644 openstack_catalog/web/static/images/featured-corner-heat.png delete mode 100644 openstack_catalog/web/static/images/featured-corner-murano.png delete mode 100644 openstack_catalog/web/static/images/glance-diagram.png delete mode 100644 openstack_catalog/web/static/images/heat-diagram.png delete mode 100644 openstack_catalog/web/static/images/logo-cloudfoundry.png delete mode 100644 openstack_catalog/web/static/images/logo-coreos.png delete mode 100644 openstack_catalog/web/static/images/logo-debian.png delete mode 100644 openstack_catalog/web/static/images/logo-f5.png delete mode 100644 openstack_catalog/web/static/images/logo-fedora.png delete mode 100644 openstack_catalog/web/static/images/logo-kubernetes.png delete mode 100644 openstack_catalog/web/static/images/logo-lamp.png delete mode 100644 openstack_catalog/web/static/images/logo-openshift.png delete mode 100644 openstack_catalog/web/static/images/logo-oracle.png delete mode 100644 openstack_catalog/web/static/images/logo-pivotal.png delete mode 100644 openstack_catalog/web/static/images/logo-redis.png delete mode 100644 openstack_catalog/web/static/images/logo-wordpress.png delete mode 100644 openstack_catalog/web/static/images/murano-diagram.png delete mode 100644 openstack_catalog/web/static/images/openstack-icon.png delete mode 100644 openstack_catalog/web/static/images/openstack-logo.png delete mode 100644 openstack_catalog/web/static/images/plugin-icon.png delete mode 100644 openstack_catalog/web/static/images/tosca-diagram.png delete mode 100644 openstack_catalog/web/static/js/apps-catalog.js delete mode 100644 openstack_catalog/web/testicons.html delete mode 100644 openstack_catalog/wsgi.py delete mode 100644 openstack_catalog/wsgi_django.py delete mode 100644 package.json delete mode 100644 requirements.txt delete mode 100755 run_tests.sh delete mode 100644 setup.cfg delete mode 100755 setup.py delete mode 100644 test-requirements.txt delete mode 100755 tools/asset_history.sh delete mode 100755 tools/check_app_catalog_yaml.py delete mode 100644 tools/testserver.py delete mode 100755 tools/update_assets.sh delete mode 100644 tools/yaml2json.py delete mode 100644 tox.ini diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index 49e2bd4..0000000 --- a/.coveragerc +++ /dev/null @@ -1,7 +0,0 @@ -[run] -branch = True -source = openstack_catalog -omit = openstack_catalog/tests/*,openstack_catalog/openstack/* - -[report] -ignore_errors = True diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index f6306b7..0000000 --- a/.eslintrc +++ /dev/null @@ -1,13 +0,0 @@ -# use standard openstack linting profile -extends: openstack - -env: - # browser global variables. - browser: true - -rules: - # Require camel case names - # http://eslint.org/docs/rules/camelcase - camelcase: - - 1 # report camelcase properties as warnings - - properties: "never" diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8a3c704..0000000 --- a/.gitignore +++ /dev/null @@ -1,53 +0,0 @@ -*.py[cod] - -# C extensions -*.so - -# Packages -*.egg -*.egg-info -dist -build -eggs -parts -bin -var -sdist -develop-eggs -.installed.cfg -lib -lib64 - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox -nosetests.xml -.testrepository -.venv - -# Translations -*.mo - -# Mr Developer -.mr.developer.cfg -.project -.pydevproject - -# Complexity -output/*.html -output/*/index.html - -# Sphinx -doc/build - -# pbr generates these -AUTHORS -ChangeLog - -# Editors -*~ -.*.swp -.*sw? diff --git a/.gitreview b/.gitreview deleted file mode 100644 index 6c28323..0000000 --- a/.gitreview +++ /dev/null @@ -1,4 +0,0 @@ -[gerrit] -host=review.openstack.org -port=29418 -project=openstack/app-catalog.git diff --git a/.mailmap b/.mailmap deleted file mode 100644 index 516ae6f..0000000 --- a/.mailmap +++ /dev/null @@ -1,3 +0,0 @@ -# Format is: -# <preferred e-mail> <other e-mail 1> -# <preferred e-mail> <other e-mail 2> diff --git a/.testr.conf b/.testr.conf deleted file mode 100644 index 6d83b3c..0000000 --- a/.testr.conf +++ /dev/null @@ -1,7 +0,0 @@ -[DEFAULT] -test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \ - OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \ - OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \ - ${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION -test_id_option=--load-list $IDFILE -test_list_option=--list diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst deleted file mode 100644 index 50ba90f..0000000 --- a/CONTRIBUTING.rst +++ /dev/null @@ -1,16 +0,0 @@ -If you would like to contribute to the development of OpenStack, -you must follow the steps in this page: - - http://docs.openstack.org/infra/manual/developers.html - -Once those steps have been completed, changes to OpenStack -should be submitted for review via the Gerrit tool, following -the workflow documented at: - - http://docs.openstack.org/infra/manual/developers.html#development-workflow - -Pull requests submitted through GitHub will be ignored. - -Bugs should be filed on Launchpad, not GitHub: - - https://bugs.launchpad.net/catalog diff --git a/HACKING.rst b/HACKING.rst deleted file mode 100644 index 2a9957c..0000000 --- a/HACKING.rst +++ /dev/null @@ -1,4 +0,0 @@ -catalog Style Commandments -=============================================== - -Read the OpenStack Style Commandments http://docs.openstack.org/developer/hacking/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 43648d2..0000000 --- a/LICENSE +++ /dev/null @@ -1,180 +0,0 @@ -Some files from: -http://www.iconarchive.com/show/beautiful-flat-icons-by-elegantthemes/plugin-icon.html - -Everything else: - - 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/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index c978a52..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1,6 +0,0 @@ -include AUTHORS -include ChangeLog -exclude .gitignore -exclude .gitreview - -global-exclude *.pyc diff --git a/README.rst b/README.rst index 41c5871..d98af48 100644 --- a/README.rst +++ b/README.rst @@ -1,48 +1,10 @@ -=============================== -OpenStack Community App Catalog -=============================== -Application Catalog for OpenStack +This project is no longer maintained. -The OpenStack Community App Catalog will help you make -applications available on your OpenStack cloud by providing -a community driven catalog containing Glance images, Heat -templates and Murano applications. +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". -Overview --------- - -By providing a public location where OpenStack users can -publish and consume artifacts to share and add additional -capabilities, all OpenStack clouds become more valuable. For -example vendors can publish Glance images for launching new -VMs, Heat templates for creating new stacks, or Murano app -packages for installing complete applications. When many -OpenStack community members are publishing artifacts that -users can easily download and install into their clouds this -will multiply the value of their OpenStack cloud. Easy -access to images, templates and apps will solve the "what -now" question some user consider after successfully -deploying an OpenStack environment. - -* Free software: Apache 2.0 License. See LICENSE file. -* Documentation: http://wiki.openstack.org/wiki/App-Catalog - -Getting started with the Community App Catalog ----------------------------------------------- - -See the wiki page to see how to get started using or -contributing to the App Catalog. Visit -https://wiki.openstack.org/wiki/App-Catalog for more -details. - -Project Info ------------- - - * Web-site: http://apps.openstack.org - * Source: http://git.openstack.org/cgit/openstack/app-catalog - * Wiki: https://wiki.openstack.org/wiki/App-Catalog - * Launchpad: https://launchpad.net/app-catalog - * Blueprints: https://blueprints.launchpad.net/app-catalog - * Bugs: http://bugs.launchpad.net/app-catalog - * Code Reviews: https://review.openstack.org/#q,status:open+app-catalog,n,z - * IRC: #openstack-app-catalog at freenode +For any further questions, please email +openstack-dev@lists.openstack.org or join #openstack-dev on +Freenode. diff --git a/babel.cfg b/babel.cfg deleted file mode 100644 index 15cd6cb..0000000 --- a/babel.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[python: **.py] - diff --git a/bindep.txt b/bindep.txt deleted file mode 100644 index 872e6a3..0000000 --- a/bindep.txt +++ /dev/null @@ -1,40 +0,0 @@ -# This is a cross-platform list tracking distribution packages needed by tests; -# see http://docs.openstack.org/infra/bindep/ for additional information. - -apt-transport-https -lsb-release -ant -build-essential [platform:dpkg] -curl -cyrus-sasl-devel [platform:rpm] -dbus -firefox [!platform:debian] -gawk -iceweasel [platform:debian] -language-pack-en [platform:ubuntu] -libcurl-devel [platform:rpm] -libcurl4-gnutls-dev [platform:dpkg] -libffi-dev [platform:dpkg] -libffi-devel [platform:rpm] -libjpeg-dev [platform:dpkg] -libjpeg-turbo-devel [platform:rpm] -libldap2-dev [platform:dpkg] -libsasl2-dev [platform:dpkg] -libselinux-python [platform:rpm] -libuuid-devel [platform:rpm] -locales [platform:debian] -pkg-config [platform:dpkg] -pkgconfig [platform:rpm] -python-dev [platform:dpkg] -python-devel [platform:rpm] -python-libvirt [platform:dpkg] -python-lxml -python3-all-dev [platform:ubuntu-trusty] -python3-dev [platform:dpkg] -python3-devel [platform:fedora] -python3.4 [platform:ubuntu-trusty] -python34-devel [platform:centos] -unzip -uuid-dev [platform:dpkg] -xorg-x11-server-Xvfb [platform:rpm] -xvfb [platform:dpkg] diff --git a/deployment/README.md b/deployment/README.md deleted file mode 100644 index 2305719..0000000 --- a/deployment/README.md +++ /dev/null @@ -1,48 +0,0 @@ -app-catalog-ci -=============== - -Description ------------ - -This is a collection of deployment scripts for app-catalog CI project. -It consists of Puppet module catalog_ci and an additional shell script. -The scripts allow to setup Jenkins with access to Gerrit to trigger -appropriate jobs on a commit to the app-catalog project. - -Deployment ----------- - -Execute deploy.sh script to begin deployment: -(some operations require superuser access rights) - -./deploy.sh - -The script will install necessary packages and deploy/configure Jenkins. -You will be able to access it at http://server_ip:8080 -The following steps are required after deployment: -- Setup access rights. By default Jenkins uses Launchpad OpenID and all users - have full access to Jenkins. - Proceed to Manage Jenkins -> Configure Global Security and setup security. -- Finish Gerrit auth setup: - Add a private key file (id_rsa) to Jenkins ssh directory: - * sudo mkdir -p /var/lib/jenkins/.ssh - * sudo cp id_rsa /var/lib/jenkins/.ssh - * sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh - * sudo chmod 600 /var/lib/jenkins/.ssh/id_rsa - Then proceed to Manage Jenkins -> Gerrit Trigger and press the button - in 'Status' column. If button will change its color to green, your connection - to Gerrit works OK and Jenkins is receiving Gerrit events. Otherwise please - check Gerrit server parameters. -- rclone (http://rclone.org/) is used to upload images to CDN. - Please install and configure it manually, if it's required. - 'jenkins' user should be able to access default rclone configuration file - in order to use it. - -Jenkins Jobs ------------- - -Jenkins Job Builder is used to configure Jenkins jobs. It will be automatically -installed by deployment scripts. Jobs configuration files will be placed to -/etc/jenkins_jobs/jobs. You can use the following command to apply your changes - -jenkins-jobs update /etc/jenkins_jobs/jobs diff --git a/deployment/catalog-ci-jenkins/manifests/site.pp b/deployment/catalog-ci-jenkins/manifests/site.pp deleted file mode 100644 index ed619c1..0000000 --- a/deployment/catalog-ci-jenkins/manifests/site.pp +++ /dev/null @@ -1 +0,0 @@ -include catalog_ci diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/config.xml b/deployment/catalog-ci-jenkins/modules/catalog_ci/files/config.xml deleted file mode 100644 index c5d8377..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/config.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<hudson> - <disabledAdministrativeMonitors/> - <version>1.596.2</version> - <numExecutors>3</numExecutors> - <mode>NORMAL</mode> - <useSecurity>true</useSecurity> - <authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy"> - <permission>hudson.model.Hudson.Administer:anonymous</permission> - <permission>hudson.model.Hudson.Read:anonymous</permission> - <permission>hudson.model.Item.Read:anonymous</permission> - </authorizationStrategy> - <securityRealm class="hudson.plugins.openid.OpenIdSsoSecurityRealm" plugin="openid@2.1.1"> - <endpoint>https://login.launchpad.net/+openid</endpoint> - </securityRealm> - <disableRememberMe>false</disableRememberMe> - <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/> - <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir> - <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir> - <markupFormatter class="hudson.markup.RawHtmlMarkupFormatter" plugin="antisamy-markup-formatter@1.1"> - <disableSyntaxHighlighting>false</disableSyntaxHighlighting> - </markupFormatter> - <jdks/> - <viewsTabBar class="hudson.views.DefaultViewsTabBar"/> - <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/> - <clouds/> - <slaves/> - <quietPeriod>5</quietPeriod> - <scmCheckoutRetryCount>0</scmCheckoutRetryCount> - <views> - <hudson.model.AllView> - <owner class="hudson" reference="../../.."/> - <name>All</name> - <filterExecutors>false</filterExecutors> - <filterQueue>false</filterQueue> - <properties class="hudson.model.View$PropertyList"/> - </hudson.model.AllView> - </views> - <primaryView>All</primaryView> - <slaveAgentPort>0</slaveAgentPort> - <label></label> - <nodeProperties/> - <globalNodeProperties/> - <noUsageStatistics>true</noUsageStatistics> -</hudson> diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/gerrit-trigger.xml b/deployment/catalog-ci-jenkins/modules/catalog_ci/files/gerrit-trigger.xml deleted file mode 100644 index c5bf289..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/gerrit-trigger.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl plugin="gerrit-trigger@2.13.0"> - <servers class="java.util.concurrent.CopyOnWriteArrayList"> - <com.sonyericsson.hudson.plugins.gerrit.trigger.GerritServer> - <name>review.openstack.org</name> - <noConnectionOnStartup>false</noConnectionOnStartup> - <config class="com.sonyericsson.hudson.plugins.gerrit.trigger.config.Config"> - <gerritHostName>review.openstack.org</gerritHostName> - <gerritSshPort>29418</gerritSshPort> - <gerritProxy></gerritProxy> - <gerritUserName>catalog-ci</gerritUserName> - <gerritEMail>catalog-ci@mirantis.com</gerritEMail> - <gerritAuthKeyFile>/var/lib/jenkins/.ssh/id_rsa</gerritAuthKeyFile> - <useRestApi>false</useRestApi> - <restCodeReview>false</restCodeReview> - <restVerified>false</restVerified> - <gerritBuildCurrentPatchesOnly>false</gerritBuildCurrentPatchesOnly> - <gerritVerifiedCmdBuildSuccessful>gerrit review <CHANGE>,<PATCHSET> --message 'Build Successful <BUILDS_STATS>' --verified <VERIFIED> --code-review <CODE_REVIEW></gerritVerifiedCmdBuildSuccessful> - <gerritVerifiedCmdBuildUnstable>gerrit review <CHANGE>,<PATCHSET> --message 'Build Unstable <BUILDS_STATS>' --verified <VERIFIED> --code-review <CODE_REVIEW></gerritVerifiedCmdBuildUnstable> - <gerritVerifiedCmdBuildFailed>gerrit review <CHANGE>,<PATCHSET> --message 'Build Failed <BUILDS_STATS>' --verified <VERIFIED> --code-review <CODE_REVIEW></gerritVerifiedCmdBuildFailed> - <gerritVerifiedCmdBuildStarted></gerritVerifiedCmdBuildStarted> - <gerritVerifiedCmdBuildNotBuilt>gerrit review <CHANGE>,<PATCHSET> --message 'No Builds Executed <BUILDS_STATS>' --verified <VERIFIED> --code-review <CODE_REVIEW></gerritVerifiedCmdBuildNotBuilt> - <gerritFrontEndUrl>https://review.openstack.org/</gerritFrontEndUrl> - <gerritBuildStartedVerifiedValue>0</gerritBuildStartedVerifiedValue> - <gerritBuildStartedCodeReviewValue>0</gerritBuildStartedCodeReviewValue> - <gerritBuildSuccessfulVerifiedValue>1</gerritBuildSuccessfulVerifiedValue> - <gerritBuildSuccessfulCodeReviewValue>0</gerritBuildSuccessfulCodeReviewValue> - <gerritBuildFailedVerifiedValue>-1</gerritBuildFailedVerifiedValue> - <gerritBuildFailedCodeReviewValue>0</gerritBuildFailedCodeReviewValue> - <gerritBuildUnstableVerifiedValue>0</gerritBuildUnstableVerifiedValue> - <gerritBuildUnstableCodeReviewValue>0</gerritBuildUnstableCodeReviewValue> - <gerritBuildNotBuiltVerifiedValue>0</gerritBuildNotBuiltVerifiedValue> - <gerritBuildNotBuiltCodeReviewValue>0</gerritBuildNotBuiltCodeReviewValue> - <enableManualTrigger>true</enableManualTrigger> - <enablePluginMessages>true</enablePluginMessages> - <buildScheduleDelay>3</buildScheduleDelay> - <dynamicConfigRefreshInterval>30</dynamicConfigRefreshInterval> - <categories class="linked-list"> - <com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory> - <verdictValue>CRVW</verdictValue> - <verdictDescription>Code Review</verdictDescription> - </com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory> - <com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory> - <verdictValue>VRIF</verdictValue> - <verdictDescription>Verified</verdictDescription> - </com.sonyericsson.hudson.plugins.gerrit.trigger.VerdictCategory> - </categories> - <replicationConfig> - <enableReplication>false</enableReplication> - <slaves class="linked-list"/> - <enableSlaveSelectionInJobs>false</enableSlaveSelectionInJobs> - </replicationConfig> - <watchdogTimeoutMinutes>0</watchdogTimeoutMinutes> - <watchTimeExceptionData> - <daysOfWeek/> - <timesOfDay class="linked-list"/> - </watchTimeExceptionData> - <notificationLevel>ALL</notificationLevel> - </config> - </com.sonyericsson.hudson.plugins.gerrit.trigger.GerritServer> - </servers> - <pluginConfig> - <numberOfReceivingWorkerThreads>3</numberOfReceivingWorkerThreads> - <numberOfSendingWorkerThreads>1</numberOfSendingWorkerThreads> - <replicationCacheExpirationInMinutes>360</replicationCacheExpirationInMinutes> - </pluginConfig> -</com.sonyericsson.hudson.plugins.gerrit.trigger.PluginImpl> diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/jobs/job.yaml b/deployment/catalog-ci-jenkins/modules/catalog_ci/files/jobs/job.yaml deleted file mode 100644 index dbf2e9e..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/jobs/job.yaml +++ /dev/null @@ -1,67 +0,0 @@ -- job: - name: check-image - node: master - project-type: freestyle - description: "This job checks glance images" - defaults: global - disabled: false - concurrent: true - - scm: - - git: - url: https://git.openstack.org/openstack/app-catalog - refspec: $GERRIT_REFSPEC - name: - choosing-strategy: gerrit - skip-tag: false - wipe-workspace: true - branches: - - "$GERRIT_BRANCH" - - triggers: - - gerrit: - server-name: "review.openstack.org" - trigger-on-patchset-uploaded-event: true - projects: - - project-compare-type: 'PLAIN' - project-pattern: 'openstack/app-catalog' - branch-compare-type: 'PLAIN' - branch-pattern: master - - builders: - - shell: "git checkout $FETCH_HEAD\ - \n$JENKINS_HOME/scripts/app-catalog.sh" - -- job: - name: merge-image - node: master - project-type: freestyle - description: "This job checks and uploads glance images to CDN" - defaults: global - disabled: false - concurrent: true - - scm: - - git: - url: https://git.openstack.org/openstack/app-catalog - refspec: $GERRIT_REFSPEC - name: - choosing-strategy: gerrit - skip-tag: false - wipe-workspace: true - branches: - - "$GERRIT_BRANCH" - - triggers: - - gerrit: - server-name: "review.openstack.org" - trigger-on-change-merged-event: true - projects: - - project-compare-type: 'PLAIN' - project-pattern: 'openstack/app-catalog' - branch-compare-type: 'PLAIN' - branch-pattern: master - - builders: - - shell: "git checkout $FETCH_HEAD\ - \n$JENKINS_HOME/scripts/app-catalog.sh" diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/app-catalog.sh b/deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/app-catalog.sh deleted file mode 100755 index 46b912c..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/app-catalog.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash -x - -WDIR=$JENKINS_HOME/scripts -PATCH=$GERRIT_CHANGE_NUMBER -CODES=(100 200 302) -TMP_DIR=$(mktemp -d) -TMP_FILE=$(mktemp) -EVENT=$GERRIT_EVENT_TYPE -FILE_LIST=$(git diff HEAD~1 --name-only) -IMAGE_CONFIG="openstack_catalog/web/static/glance_images.yaml" -IMAGE_CDN_PATH="catalog_ci:catalog/images" - -clean() { - rm -rf $TMP_DIR - rm -f $TMP_FILE -} - -upload_image () { - local CONFIG - local OLD_CONFIG - local IMAGE_NAME - local IMAGE_PATH - - IMAGE_PATH=$1 - CONFIG=$TMP_DIR/$(basename $IMAGE_CONFIG) - OLD_CONFIG=$TMP_DIR/$(basename $IMAGE_CONFIG).old - IMAGE_NAME=$(python $WDIR/generate_names.py glance $OLD_CONFIG $CONFIG) - if [ -z "$IMAGE_NAME" ]; then - echo "Image file can't be generated" - exit 1 - fi - - echo "Uploading image $IMAGE_NAME from $IMAGE_PATH" - mv $IMAGE_PATH $(dirname $IMAGE_PATH)/$IMAGE_NAME - rclone copy $(dirname $IMAGE_PATH)/$IMAGE_NAME $IMAGE_CDN_PATH - clean -} - -main() { - local URL - local HASH - local REAL_HASH - local HTTP_CODE - local IMAGE - - ssh -p 29418 catalog-ci@review.openstack.org gerrit query $PATCH > $TMP_FILE - URL=$(cat $TMP_FILE | egrep "^\s*Image-URL:\s(https?|ftp)://.*" | egrep -o "(https?|ftp)://.*$") - HASH=$(cat $TMP_FILE | egrep "^\s*Image-hash:\s[A-Za-z0-9]*$" | egrep -o "[A-Za-z0-9]*$") - - cat $TMP_FILE | grep Image-URL | grep -q Unknown && exit 0 -# if [ $(cat $TMP_FILE | grep Image-URL | grep Unknown) ]; then -# echo "Image URL is unknown, no checks and changes will be performed" -# exit 0 -# fi - - if [ -z "$URL" -o -z "$HASH" ]; then - echo "Image URL or hash wasn't found" - clean - exit 0 - else - HTTP_CODE=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' $URL) - if ! [[ " ${CODES[*]} " == *" $HTTP_CODE "* ]]; then - echo "File wasn't found" - clean - exit 1 - fi - fi - - wget $URL -P $TMP_DIR - if [ "$HASH" == "Unknown" ]; then - echo "Image hash is unknown, skipping checks..." - else - REAL_HASH=$(md5sum $TMP_DIR/* | awk '{print $1}') - if [ "$REAL_HASH" != "$HASH" ]; then - echo "Hash mismatch" - clean - exit 1 - else - echo "Image hash is correct" - fi - fi - - if [ "$EVENT" == "change-merged" ]; then - IMAGE=$(ls $TMP_DIR/*) - cp $IMAGE_CONFIG $TMP_DIR - git checkout HEAD~1 - cp $IMAGE_CONFIG $TMP_DIR/$(basename $IMAGE_CONFIG).old - upload_image $IMAGE - else - clean - fi -} - -if [[ ${FILE_LIST[*]} =~ "$IMAGE_CONFIG" ]]; then - main "$@" -fi diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/generate_names.py b/deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/generate_names.py deleted file mode 100755 index 6468abd..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/files/scripts/generate_names.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/python -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import itertools -import re -from sys import argv -import yaml - - -def yaml_to_dict(infile, k): - stream = open(infile, 'r') - rdict = yaml.safe_load(stream)[k] - return rdict - - -def diff_images_config(images1, images2): - if images1 == images2: - return '' - intersec = [item for item in images1 if item in images2] - sym_diff = [item for item in itertools.chain( - images1, images2) if item not in intersec] - name = '' - d_size = len(sym_diff) - if d_size <= 2: - i = d_size - 1 - else: - return '' - - if 'name' in sym_diff[i].keys() and 'format' in sym_diff[i].keys(): - i_name = re.sub('[(){}<>]', '', sym_diff[i]['name']) - i_type = sym_diff[i]['format'] - name = i_name + '.' + i_type - name = name.lower().replace(" ", "_") - return name - -if __name__ == '__main__': - if argv[1] == 'glance': - images1 = yaml_to_dict(argv[2], 'images') - images2 = yaml_to_dict(argv[3], 'images') - print(diff_images_config(images1, images2)) diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/manifests/init.pp b/deployment/catalog-ci-jenkins/modules/catalog_ci/manifests/init.pp deleted file mode 100644 index 88b0010..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/manifests/init.pp +++ /dev/null @@ -1,123 +0,0 @@ -class catalog_ci { - - $user = 'admin' - $password = 'adminpassword' - $jenkins_config = '/var/lib/jenkins/config.xml' - $gerrit_config = '/var/lib/jenkins/gerrit-trigger.xml' - - class{ 'jenkins': - lts => true, - install_java => true, - plugin_hash => { - 'git' => {}, - 'parameterized-trigger' => {}, - 'token-macro' => {}, - 'mailer' => {}, - 'scm-api' => {}, - 'promoted-builds' => {}, - 'matrix-project' => {}, - 'git-client' => {}, - 'ssh-credentials' => {}, - 'credentials' => {}, - 'gerrit-trigger' => {}, - 'rebuild' => {}, - 'git-client' => {}, - 'rabbitmq-consumer' => {}, - 'openid' => {}, - 'openid4java' => {}, - } - } - - jenkins::user { "$user": - email => 'admin@example.com', - password => "$password", - } - - class{ 'jenkins::security': - security_model => 'full_control', - } - - Class['jenkins'] -> Jenkins::User["$user"] -> Class['jenkins::security'] - -> Exec['create_jobs'] -> File["$jenkins_config"] - - package {'python-pip': - ensure => present, - } - - package {'deepdiff': - ensure => present, - provider => 'pip', - } - - package {'pyyaml': - ensure => present, - provider => 'pip', - } - - package {'jenkins-job-builder': - ensure => present, - provider => 'pip', - } - - file {'/var/lib/jenkins/scripts': - owner => 'root', - group => 'root', - ensure => directory, - source => 'puppet:///modules/catalog_ci/scripts', - recurse => true, - require => File['/etc/jenkins_jobs'], - } - - file {'/etc/jenkins_jobs': - owner => 'root', - group => 'root', - ensure => directory, - require => Package['jenkins-job-builder'], - } - - file {'/etc/jenkins_jobs/jenkins_jobs.ini': - owner => 'root', - group => 'root', - content => template('catalog_ci/jenkins_jobs.ini.erb'), - require => File['/etc/jenkins_jobs'], - } - - file {'/etc/jenkins_jobs/jobs': - owner => 'root', - group => 'root', - ensure => directory, - source => 'puppet:///modules/catalog_ci/jobs', - recurse => true, - require => File['/etc/jenkins_jobs'], - } - - file {"$jenkins_config": - owner => 'jenkins', - group => 'jenkins', - ensure => present, - source => 'puppet:///modules/catalog_ci/config.xml', - } - - file {"$gerrit_config": - owner => 'jenkins', - group => 'jenkins', - ensure => present, - source => 'puppet:///modules/catalog_ci/gerrit-trigger.xml', - require => File["$jenkins_config"], - } - - exec {'create_jobs': - command => 'jenkins-jobs update /etc/jenkins_jobs/jobs', - path => '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin', - require => File['/etc/jenkins_jobs/jobs'], - } - - exec{'restart_jenkins': - command => 'service jenkins restart', - path => '/bin:/sbin:/usr/bin:/usr/sbin', - subscribe => [ File["$jenkins_config"], File["$gerrit_config"] ], - } - - Package['python-pip'] -> Package['deepdiff'] -> - Package['pyyaml'] -> Package['jenkins-job-builder'] -} diff --git a/deployment/catalog-ci-jenkins/modules/catalog_ci/templates/jenkins_jobs.ini.erb b/deployment/catalog-ci-jenkins/modules/catalog_ci/templates/jenkins_jobs.ini.erb deleted file mode 100644 index ff07d41..0000000 --- a/deployment/catalog-ci-jenkins/modules/catalog_ci/templates/jenkins_jobs.ini.erb +++ /dev/null @@ -1,8 +0,0 @@ -[job_builder] -ignore_cache=True - -[jenkins] -user=<%= @user %> -password=<%= @password %> -url=http://127.0.0.1:8080 -query_plugins_info=False diff --git a/deployment/deploy.sh b/deployment/deploy.sh deleted file mode 100755 index 5a1717b..0000000 --- a/deployment/deploy.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -e - -# Generate a password for service account -ADMIN_PASS=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c10) -sed -i "s/adminpassword/$ADMIN_PASS/g" catalog-ci-jenkins/modules/catalog_ci/manifests/init.pp - -sudo apt-get update -sudo apt-get install git puppet -y - -# Using custom (forked) puppet-jenkins module -# due to critical problem in the upstream one -git clone https://github.com/skolekonov/puppet-jenkins.git -tar czf rtyler-jenkins-1.3.0.tar.gz puppet-jenkins/* -sudo puppet module install rtyler-jenkins-1.3.0.tar.gz - -sudo puppet apply -vd --modulepath catalog-ci-jenkins/modules:/etc/puppet/modules catalog-ci-jenkins/manifests/site.pp - -echo "Deployment completed" -echo "WARNING. Please open Jenkins WebUI and setup user access matrix" diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100755 index cf6409a..0000000 --- a/doc/source/conf.py +++ /dev/null @@ -1,75 +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', - #'sphinx.ext.intersphinx', - 'oslosphinx' -] - -# 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'catalog' -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 = 'sphinx' - -# -- 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 = ['static'] - -# Output file base name for HTML help builder. -htmlhelp_basename = '%sdoc' % project - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass -# [howto/manual]). -latex_documents = [ - ('index', - '%s.tex' % project, - u'%s Documentation' % project, - u'OpenStack Foundation', 'manual'), -] - -# Example configuration for intersphinx: refer to the Python standard library. -#intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/source/contributing.rst b/doc/source/contributing.rst deleted file mode 100644 index 1728a61..0000000 --- a/doc/source/contributing.rst +++ /dev/null @@ -1,4 +0,0 @@ -============ -Contributing -============ -.. include:: ../../CONTRIBUTING.rst diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index f5d461b..0000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. catalog documentation master file, created by - sphinx-quickstart on Tue Jul 9 22:26:36 2013. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to catalog's documentation! -======================================================== - -Contents: - -.. toctree:: - :maxdepth: 2 - - readme - installation - usage - contributing - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`search` - diff --git a/doc/source/installation.rst b/doc/source/installation.rst deleted file mode 100644 index c58509a..0000000 --- a/doc/source/installation.rst +++ /dev/null @@ -1,12 +0,0 @@ -============ -Installation -============ - -At the command line:: - - $ pip install catalog - -Or, if you have virtualenvwrapper installed:: - - $ mkvirtualenv catalog - $ pip install catalog diff --git a/doc/source/readme.rst b/doc/source/readme.rst deleted file mode 100644 index a6210d3..0000000 --- a/doc/source/readme.rst +++ /dev/null @@ -1 +0,0 @@ -.. include:: ../../README.rst diff --git a/doc/source/usage.rst b/doc/source/usage.rst deleted file mode 100644 index 715d30d..0000000 --- a/doc/source/usage.rst +++ /dev/null @@ -1,7 +0,0 @@ -======== -Usage -======== - -To use catalog in a project:: - - import openstack_catalog diff --git a/manage.py b/manage.py deleted file mode 100644 index 7984dd3..0000000 --- a/manage.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -# -*- 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 - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", - "openstack_catalog.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/openstack_catalog/__init__.py b/openstack_catalog/__init__.py deleted file mode 100644 index 4e2a8c3..0000000 --- a/openstack_catalog/__init__.py +++ /dev/null @@ -1,19 +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 pbr.version - - -__version__ = pbr.version.VersionInfo( - 'openstack_catalog').version_string() diff --git a/openstack_catalog/api/__init__.py b/openstack_catalog/api/__init__.py deleted file mode 100644 index 423a660..0000000 --- a/openstack_catalog/api/__init__.py +++ /dev/null @@ -1,39 +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. - -from flask import Flask -from flask import Response - -api = Flask('api') -api.debug = True - - -def cors_allow(resp): - h = ['Origin', - 'Accept-Encoding', - 'Content-Type', - 'X-App-Catalog-Versions'] - resp.headers['Access-Control-Allow-Origin'] = '*' - resp.headers['Access-Control-Allow-Headers'] = ', '.join(h) - - -@api.route('/') -def index(): - data = "v1\n" - resp = Response(data, status=200, mimetype='plain/text') - cors_allow(resp) - return resp - -# Pull in v1 api into the server. -from openstack_catalog.api.v1 import * # noqa diff --git a/openstack_catalog/api/v1.py b/openstack_catalog/api/v1.py deleted file mode 100644 index e4e5265..0000000 --- a/openstack_catalog/api/v1.py +++ /dev/null @@ -1,52 +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. - -from flask import request -from flask import Response - -from openstack_catalog.api import api -from openstack_catalog.api import cors_allow - -from openstack_catalog import settings - - -@api.route('/v1') -def v1_index(): - data = "assets\nmurano_repo\n" - resp = Response(data, status=200, mimetype='plain/text') - cors_allow(resp) - return resp - - -@api.route('/v1/assets', methods=['GET', 'OPTIONS']) -def assets_index(): - if request.method == 'OPTIONS': - data = '' - else: - f = open(settings.ASSETS_FILE, 'r') - data = f.read() - f.close() - resp = Response(data, status=200, mimetype='application/json') - resp.headers['Access-Control-Max-Age'] = '3600' - resp.headers['Cache-Control'] = 'max-age=3600' - cors_allow(resp) - return resp - - -@api.route('/v1/murano_repo/<release>/<path:path>') -def murano_repo_index(release, path): - resp = Response('', status=302) - resp.headers['Location'] = \ - "http://storage.apps.openstack.org/{}".format(path) - return resp diff --git a/openstack_catalog/settings.py b/openstack_catalog/settings.py deleted file mode 100644 index 71cccd9..0000000 --- a/openstack_catalog/settings.py +++ /dev/null @@ -1,107 +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. - -""" -Django settings for openstack_catalog project. - -For more information on this file, see -https://docs.djangoproject.com/en/1.6/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/1.6/ref/settings/ -""" - -import os.path - -from openstack_catalog.static_settings import get_staticfiles_dirs - -ASSETS_FILE = 'openstack_catalog/web/api/v1/assets' -STATIC_URL = '/static/' -STATIC_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), - 'web', - 'static')) -STATICFILES_DIRS = get_staticfiles_dirs(STATIC_URL) - -BASE_DIR = os.path.dirname(os.path.dirname(__file__)) - -SECRET_KEY = 'notused' - -DEBUG = True -ALLOWED_HOSTS = [] - -PROJECT_PATH = os.path.realpath(os.path.dirname(__file__)) -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [ - PROJECT_PATH + '/templates/' - ], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.contrib.auth.context_processors.auth', - 'django.template.context_processors.debug', - 'django.template.context_processors.i18n', - 'django.template.context_processors.media', - 'django.template.context_processors.static', - 'django.template.context_processors.tz', - 'django.contrib.messages.context_processors.messages', - ], - 'debug': True - }, - }, -] - -COMPRESS_ENABLED = False -COMPRESS_CSS_HASHING_METHOD = 'hash' -COMPRESS_PARSER = 'compressor.parser.HtmlParser' - -COMPRESS_OFFLINE_CONTEXT = { - 'STATIC_URL': STATIC_URL, -} - - -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - 'compressor.finders.CompressorFinder', -) - -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.staticfiles', - 'compressor', -) - -MIDDLEWARE_CLASSES = ( - 'django.middleware.common.CommonMiddleware', -) - -ROOT_URLCONF = 'openstack_catalog.urls' -WSGI_APPLICATION = 'openstack_catalog.wsgi.application' - -LANGUAGE_CODE = 'en-us' -TIME_ZONE = 'UTC' -USE_I18N = True -USE_L10N = True -USE_TZ = True - -# Override some values from local_settings.py if found -try: - from openstack_catalog.local_settings import * # noqa -except ImportError: - pass -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.6/howto/static-files/ diff --git a/openstack_catalog/static_settings.py b/openstack_catalog/static_settings.py deleted file mode 100644 index 0c7b0ec..0000000 --- a/openstack_catalog/static_settings.py +++ /dev/null @@ -1,28 +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 xstatic.main -import xstatic.pkg.angular -import xstatic.pkg.magic_search - - -def get_staticfiles_dirs(webroot='/'): - return [ - ('lib/angular', - xstatic.main.XStatic(xstatic.pkg.angular, - root_url=webroot).base_dir), - ('lib/magic_search', - xstatic.main.XStatic(xstatic.pkg.magic_search, - root_url=webroot).base_dir), - ] diff --git a/openstack_catalog/templates/_scripts.html b/openstack_catalog/templates/_scripts.html deleted file mode 100644 index 3cea14a..0000000 --- a/openstack_catalog/templates/_scripts.html +++ /dev/null @@ -1,6 +0,0 @@ -{% load compress %} - -{% compress js %} -<script src="{{ STATIC_URL }}lib/angular/angular.js" type='text/javascript' charset="utf-8"></script> -<script src="{{ STATIC_URL }}lib/magic_search/magic_search.js" type='text/javascript' charset="utf-8"></script> -{% endcompress %} diff --git a/openstack_catalog/templates/index.html b/openstack_catalog/templates/index.html deleted file mode 100644 index 690df35..0000000 --- a/openstack_catalog/templates/index.html +++ /dev/null @@ -1,523 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <meta http-equiv="X-UA-Compatible" content="IE=edge" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - - <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> - - <meta name="description" content="OpenStack market place" /> - <meta name="keywords" content="openstack, glance images, heat templates, murano applications, tosca templates, tosca csar" /> - <meta name="author" content="Mirantis on behalf of OpenStack Foundation" /> - - <title>Community App Catalog</title> - - <link href="/static/images/favicon.ico" rel="shortcut icon" type="image/x-icon" /> - -{% include "_scripts.html" %} -{% verbatim %} - <!-- Bootstrap core CSS --> - <link href="//cdn.jsdelivr.net/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> - - <!-- Custom styles for this template --> - <link href="static/css/theme.css" rel="stylesheet" type="text/css" /> - <link href="//cdn.jsdelivr.net/fontawesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> - <link href="//fonts.googleapis.com/css?family=Open+Sans:400italic,400,700" rel="stylesheet" type="text/css" /> - - <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.11.4/themes/cupertino/jquery-ui.css" /> - <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.datatables/1.10.4/css/jquery.dataTables.min.css" /> - <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/select2/3.5.2/select2.css" /> - - <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> - <!--[if lt IE 9]> - <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> - <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> - <![endif]--> - </head> - - <body role="document"> - - <!-- Google Tag Manager --> - <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-K2J65K" - height="0" width="0" - style="display:none;visibility:hidden"></iframe></noscript> - <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': - new Date().getTime(),event:'gtm.js'});var - f=d.getElementsByTagName(s)[0], - j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= - '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); - })(window,document,'script','dataLayer','GTM-K2J65K');</script> - <!-- End Google Tag Manager --> - <script> - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', 'UA-17511903-16', {'allowAnchor': true}); - ga('send', 'pageview', { 'page': location.pathname + location.search + location.hash}); - </script> - <!-- Fixed navbar --> - <div class="masthead navbar-fixed-top"> - <div class="container"> - <a class="navbar-brand" href="https://www.openstack.org" target="_blank"></a> - <h1><a href="#">Community App Catalog <sup><small>[beta]</small></sup></a></h1> - <a href="https://wiki.openstack.org/wiki/App-Catalog#FAQ" target="_blank" class="btn btn-default pull-right">FAQ</a> - </div> - - <nav class="navbar navbar-inverse"> - <div class="container"> - <div class="navbar-collapse collapse"> - <ul id="navbar" class="nav navbar-nav"> - <li><a href="#murano-apps">Murano packages</a></li> - <li><a href="#heat-templates">Heat Templates</a></li> - <li><a href="#glance-images">Glance Images</a></li> - <li><a href="#tosca-templates">TOSCA Templates</a></li> - <li><a href="#addContent">Add New Content</a></li> - </ul> - </div> - </div> - </nav> - - </div> - - <div class="container" role="main"> - - <!-- Main jumbotron for a primary marketing message or call to - action --> - - <div id="landing-page" class="content" style="display:none"> - - <h1>The OpenStack Application Catalog will help you make applications available on your cloud. </h1> - <div class="row featured"> - - <div class="col-md-2 col-sm-6"> - <div class="inner title"> - <div>Recently Added Apps</div> - <p>(Requires OpenStack)</p> - </div> - </div> - </div> - <div class="row pluginbox"> - <div class="col-sm-2"> - <a href="https://wiki.openstack.org/wiki/App-Catalog#Horizon_Plugin_for_Native_Access" target="_blank"> - <img src="static/images/plugin-icon.png"> - <div class='lbl'>Horizon Plugin</div> - </a> - </div><div class="col-sm-10"> - <p><strong>Want this catalog included in your OpenStack environment?</strong></p> - <p>There is a Horizon plugin available at <a href="https://git.openstack.org/cgit/openstack/app-catalog-ui" target="_blank">https://git.openstack.org/cgit/openstack/app-catalog-ui</a> which gives users the ability to search and retrieve App Catalog contents directly from Horizon — see <a href="https://wiki.openstack.org/wiki/App-Catalog#Horizon_Plugin_for_Native_Access" target="_blank">https://wiki.openstack.org/wiki/App-Catalog#Horizon_Plugin_for_Native_Access</a> for more details. Add it to your environment today!</p> - </div> - </div> - <p><strong>Don't have OpenStack yet?</strong></p> - <p>Visit the <a href="https://www.openstack.org/marketplace/" target="_blank">OpenStack Marketplace</a> and select tools and methods for building your cloud. Then come back to the OpenStack Application Catalog to make your cloud sing with applications.</p> - - <div class="row"> - - <div class="col-md-4 bluebox"> - <div class="inner"> - <a href="#tab=murano-apps"> - <h2>Murano Packages</h2> - <img src="static/images/murano-diagram.png"> - </a> - <p> - In Murano Packages you will find complete - applications, in both simple and clustered configurations, ready to deploy - on your cloud. To use them: - </p> - <ol> - <li>Verify that you have <A href="http://docs.openstack.org/developer/murano/" target="_blank">Murano</a> installed</li> - <li>Browse the list and find the app package you want</li> - <li>Highlight and copy the name of the app package</li> - <li>In Horizon, navigate to Murano > Manage > Package Definitions and click Import Package</li> - <li>Paste the app package name into the labeled text field, and click Next. This will download and install the package components.</li> - <li>Now deploy the app on your cloud by navigating to Application Catalog > Environments, then creating and deploying that environment.</li> - </ol> - </div> - </div> - - <div class="col-md-4 bluebox"> - <div class="inner"> - <a href="#tab=heat-templates"> - <h2>Heat Templates</h2> - <img src="static/images/heat-diagram.png" - class="text-center"> - </a> - <p> - In Heat Templates you will find templates for creating - complete stacks in your cloud. To use them: - </p> - <ol> - <li>Browse the list and find the one you want</li> - <li>Download the template yaml (.yml) file to your local machine</li> - <li>Use Horizon to add the template to Heat (by uploading it via file selector, or copy/pasting it into the editable field)</li> - <li>Use the <a href="http://docs.openstack.org/cli-reference/heat.html" target="_blank">Heat client</a> to create a stack</li> - </ol> - </div> - </div> - - <div class="col-md-4 bluebox"> - <div class="inner"> - <a href="#tab=glance-images"> - <h2>Glance Images</h2> - <img src="static/images/glance-diagram.png"> - </a> - <br/><br/> - <p> - In Glance Images you will find a library of - preconfigured images ready to launch virtual machines - on your cloud. To use them: - </p> - <ol> - <li>Browse the list and find the one you want</li> - <li>Copy the URL for the image file</li> - <li>Use the <a href="http://docs.openstack.org/cli-reference/glance.html" target="_blank">Glance client</a> to add it to your cloud with the --copy-from option, or add the image from Horizon by creating a new image, and specifying the URL as the image location.</li> - <li>You can use Nova to launch a VM from the new image; or, you can choose an image to launch from the Glance images list shown in Horizon. Of course, if a service is preconfigured to launch VMs by itself directly from specific guest images, you're good to go. - </li> - </ol> - </div> - </div> - - <div class="col-md-4 bluebox"> - <div class="inner"> - <a href="#tab=tosca-templates"> - <h2>TOSCA Templates</h2> - <img src="static/images/tosca-diagram.png" - class="text-center"> - </a> - <p> - In TOSCA Templates you will find templates and Cloud Service Archives (CSAR). To use them: - </p> - <ol> - <li>Browse the list and find the one you want</li> - <li>Download the raw template file or CSAR to your local machine</li> - <li>Use the template or CSAR per your need</li> - <li>To deploy template with OpenStack Heat, provide the template or CSAR to the OpenStack <a href="http://docs.openstack.org/developer/heat-translator/usage.html" target="_blank">Heat-Translator</a> which will produce a Heat Orchestration Template (HOT) as an output.</li> - <li>To simply parse the template, use it with OpenStack <a href="http://docs.openstack.org/developer/tosca-parser/usage.html" target="_blank">TOSCA-Parser</a> project.</li> - </ol> - </div> - </div> - - </div> - - <div class="row"> - <p><strong>Contributing to the OpenStack Application Catalog</strong></p> - <p> - The application catalog is built from the YAML files found in the - <a href="https://git.openstack.org/cgit/openstack/app-catalog" target="_blank">repository</a>. - Consistent with other OpenStack projects, additions to the - catalog take the form of git commits which are reviewed with Gerrit - prior to being merged. Detailed instructions for adding to - the YAML files can be found on the - <a href="https://wiki.openstack.org/wiki/App-Catalog" target="_blank"> - OpenStack wiki</a>. - </p> - <p><strong>Catalogue Disclaimer</strong></p> - <p>Please keep in mind that this catalog contains content from many sources, - contributed by the community, for the community. The OpenStack Foundation is not endorsing any particular item listed. Read the <a href="https://wiki.openstack.org/wiki/App-Catalog/Catalogue_Disclaimer" target="_blank">Catalog Disclaimer</a> for additional information.</p> - </div> - - </div> - - - <div id="glance-images" class="content" style="display:none"> - - <div class="row"> - <div class="col-md-6 filters"> - - </div> - </div> - - <div class="row"> - <div class="col-md-12"> - <table id="glance-images-table" class="table table-striped"> - <thead> - <tr> - <th>Image Name</th> - <th>Description</th> - <th>Format</th> - <th>License</th> - </tr> - </thead> - </table> - </div> - </div> - - </div> - - <div id="heat-templates" class="content" style="display:none"> - - <div class="row"> - <div class="col-md-6 filters"> - <form class="form-inline"> - <div class="form-group"> - <label>Release</label> - <input type="hidden" id="heat-release" - style="width:10em" data-placeholder="Any release"/> - </div> - </form> - </div> - </div> - - <div class="row"> - <div class="col-md-12"> - <table id="heat-templates-table" class="table table-striped"> - <thead> - <tr> - <th>Template Name</th> - <th>Description</th> - <th>Release</th> - <th>Format</th> - </tr> - </thead> - </table> - </div> - </div> - - </div> - - <div id="murano-apps" class="content" style="display:none"> - - <div class="row"> - <div class="col-md-6 filters"> - <form class="form-inline"> - <div class="form-group"> - <label>Release</label> - <input type="hidden" id="murano-release" - style="width:10em" data-placeholder="Any release"/> - </div> - </form> - </div> - </div> - - <div class="row"> - <div class="col-md-12"> - <table id="murano-apps-table" class="table table-striped"> - <thead> - <tr> - <th>Package Name</th> - <th>Description</th> - <th>Release</th> - <th>Format</th> - </tr> - </thead> - </table> - </div> - </div> - - </div> - - <div id="tosca-templates" class="content" style="display:none"> - - <div class="row"> - <div class="col-md-6 filters"> - <form class="form-inline"> - <div class="form-group"> - <label>Release</label> - <input type="hidden" id="tosca-release" - style="width:10em" data-placeholder="Any release"/> - </div> - </form> - </div> - </div> - - <div class="row"> - <div class="col-md-12"> - <table id="tosca-templates-table" class="table table-striped"> - <thead> - <tr> - <th>Template Name</th> - <th>Description</th> - <th>Release</th> - <th>Format</th> - </tr> - </thead> - </table> - </div> - </div> - - </div> - - <div id="info-page" class="content"> - <div class="row"> - <div class="col-md-12"> - <div id="info-content"></div> - </div> - </div> - </div> - - <div id="info-dialog" title="Details"> - <div id="info-container"></div> - </div> - - </div> - - <!-- core JavaScript - ================================================== --> - <!-- Placed at the end of the document so the pages load faster --> - <script type="text/javascript" src="//cdn.jsdelivr.net/jquery/2.1.3/jquery.min.js"></script> - <script type="text/javascript" src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> - <script type="text/javascript" src="//cdn.jsdelivr.net/jquery.datatables/1.10.4/js/jquery.dataTables.min.js"></script> - <script type="text/javascript" src="//cdn.jsdelivr.net/select2/3.5.2/select2.min.js"></script> - <script type="text/javascript" src="//ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script> - <script type="text/javascript" src="//cdn.jsdelivr.net/jquery.timeago/1.4.1/jquery.timeago.js"></script> - <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.6.0/jquery.matchHeight-min.js"></script> - - <script type="text/javascript" src="static/js/apps-catalog.js"></script> - - <script type="text/javascript"> - $(function() { initMarketPlace (); }); - $(document).ready(function () { ; } ); - </script> - - <script id="glance-images-info" type="text/x-jquery-tmpl"> - - <h2>${name} (${service['disk_format']})</h2> - <div> - <span class="label">Last modified: </span><span class="value">${last_modified}</span> - </div> - <div> - {{if attributes['url']}} - <span class="label">glance image-create:</span> - <input type="text" value="glance --os-image-api-version 1 image-create --copy-from ${attributes['url']} --disk-format ${service['disk_format']} --container-format ${service['container_format']} --name '${name}'" onfocus="this.select();" onmouseup="return false;"> - {{else}} - <span class="label">Website where the image can be downloaded:</span> - <a href="${attributes['indirect_url']}">Link...</a> - {{/if}} - </div> - {{if supported_by}} - <div><span class="label">Supported by</span> <span class="value">${supported_by.name}</span></div> - {{/if}} - {{if license}} - {{if license_url}} - <div><span class="label">License</span> <a href="${license_url}"> <span class="value">${license}</span></a></div> - {{else}} - <div><span class="label">License</span> <span class="value">${license}</span></div> - {{/if}} - {{/if}} - {{if cloud_user}} - <div><span class="label">Cloud User</span> <span class="value">${cloud_user}</span></div> - {{/if}} - <div><span class="label">Description:</span> <span class="value">${description}</span></div> - {{if hash }} - <div><span class="label">Hash:</span> <span class="value">${hash}</span></div> - {{/if}} - - <h3>Author</h3> - <div><span class="label">Contact: - </span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div> - <div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div> - - {{if attributes }} - <h3>Attributes</h3> - {{each( key, value ) attributes }} - <div><span class="label">${key}:</span> <span class="value">${value}</span></div> - {{/each}} - {{/if}} - - </script> - - <script id="heat-templates-info" type="text/x-jquery-tmpl"> - - <h2>${name} (${service['format']})</h2> - <div> - <span class="label">Last modified: </span><span class="value">${last_modified}</span> - </div> - {{if supported_by}} - <div><span class="label">Supported by</span> <span class="value">${supported_by.name}</span></div> - {{/if}} - <div><span class="label">Description:</span> <span class="value">${description}</span></div> - <div><span class="label">Available in Releases:</span> <span class="value">${release_html}</span></div> - - <h3>Author</h3> - <div><span class="label">Contact: - </span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div> - <div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div> - - {{if attributes }} - <h3>Attributes</h3> - {{each( key, value ) attributes }} - <div><span class="label">${key}:</span> <span class="value">${value}</span></div> - {{/each}} - {{/if}} - - </script> - - <script id="murano-apps-info" type="text/x-jquery-tmpl"> - - <h2>${name} ({{if service.type == "bundle"}}bundle{{else}}${service.format}{{/if}})</h2> - <div> - <span class="label">Last modified: </span><span class="value">${last_modified}</span> - </div> - <div> - <span class="label">{{if service.format == 'package'}}Package{{else}}Bundle{{/if}} name:</span> - {{if service.type == 'bundle'}} - <input type="text" value="${service.murano_package_name}" onfocus="this.select();" onmouseup="return false;"> - {{else}} - <input type="text" value="${service.package_name}" onfocus="this.select();" onmouseup="return false;"> - {{/if}} - </div> - - <h3>Description</h3> - <div><span class="value">${description}</span></div> - - <h3>Supported OpenStack Releases</h3> - <div><span class="value">${release_html}</span></div> - - <h3>Author</h3> - <div><span class="label">Contact: </span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div> - <div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div> - - {{if depends }} - <h3>Depends On</h3> - <p>Package may depend on image and on other packages, during import of - this package to Murano following dependencies will be also downloaded - and imported, but existing entries will not be overwritten.</p> - {{if depends }} - Dependencies: - <ul> - {{each depends }} - <li>${depends[$index]['name']}</li> - {{/each}} - </ul> - {{/if}} - {{/if}} - - {{if attributes }} - <h3>Attributes</h3> - {{each( key, value ) attributes }} - <div><span class="label">${key}:</span> <span class="value">${value}</span></div> - {{/each}} - {{/if}} - - </script> - - <script id="tosca-templates-info" type="text/x-jquery-tmpl"> - - <h2>${name} (${service['template_format']})</h2> - <div> - <span class="label">Last modified: </span><span class="value">${last_modified}</span> - </div> - {{if supported_by}} - <div><span class="label">Supported by</span> <span class="value">${supported_by.name}</span></div> - {{/if}} - <div><span class="label">Description:</span> <span class="value">${description}</span></div> - <div><span class="label">Available in Releases:</span> <span class="value">${release_html}</span></div> - - <h3>Author</h3> - <div><span class="label">Contact: - </span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div> - <div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div> - - {{if attributes }} - <h3>Attributes</h3> - {{each( key, value ) attributes }} - <div><span class="label">${key}:</span> <span class="value">${value}</span></div> - {{/each}} - {{/if}} - - </script> - </body> -</html> -{% endverbatim %} diff --git a/openstack_catalog/tests/__init__.py b/openstack_catalog/tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/openstack_catalog/tests/test_openstack_catalog.py b/openstack_catalog/tests/test_openstack_catalog.py deleted file mode 100644 index 2ce5f77..0000000 --- a/openstack_catalog/tests/test_openstack_catalog.py +++ /dev/null @@ -1,61 +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. - -""" -test_openstack_catalog ----------------------------------- - -Tests for `openstack_catalog` module. -""" - -import functools -import jsonschema -import six -import testtools -import yaml - - -class TestOpenstack_catalog(testtools.TestCase): - def setUp(self): - super(TestOpenstack_catalog, self).setUp() - - def _read_raw_file(self, file_name): - if six.PY3: - opener = functools.partial(open, encoding='utf8') - else: - opener = open - with opener(file_name, 'r') as content_file: - return content_file.read() - - def _read_file(self, file_name): - return yaml.safe_load(self._read_raw_file(file_name)) - - def _verify_by_schema(self, file_name, schema): - data = self._read_file(file_name) - schema = self._read_file(schema) - names = {} - for asset in data['assets']: - name = asset['name'] - if name in names: - self.fail("Duplicate asset name: %s" % name) - names[name] = True - try: - jsonschema.validate(data, schema) - except jsonschema.ValidationError as e: - self.fail(e) - - def test_asset_schema_conformance(self): - self._verify_by_schema( - 'openstack_catalog/web/static/assets.yaml', - 'openstack_catalog/web/static/assets.schema.yaml') diff --git a/openstack_catalog/urls.py b/openstack_catalog/urls.py deleted file mode 100644 index 1f13add..0000000 --- a/openstack_catalog/urls.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.conf.urls import url -from django.contrib.staticfiles.urls import staticfiles_urlpatterns - -from openstack_catalog import views - -urlpatterns = [url(r'^$', views.index)] - -urlpatterns += staticfiles_urlpatterns() diff --git a/openstack_catalog/views.py b/openstack_catalog/views.py deleted file mode 100644 index d072275..0000000 --- a/openstack_catalog/views.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.shortcuts import render - - -def index(request): - return render(request, 'index.html', {}) diff --git a/openstack_catalog/web/static/assets.schema.yaml b/openstack_catalog/web/static/assets.schema.yaml deleted file mode 100644 index 2798440..0000000 --- a/openstack_catalog/web/static/assets.schema.yaml +++ /dev/null @@ -1,274 +0,0 @@ ---- - $schema: http://json-schema.org/draft-04/schema# - type: object - required: - - assets - properties: - assets: - type: array - items: - type: object - required: - - service - - name - - provided_by - - description - - license - additionalProperties: false - properties: - active: - type: boolean - hash_url: - type: string - hash: - type: string - service: - oneOf: - - $ref: "#/definitions/glance" - - $ref: "#/definitions/heat" - - $ref: "#/definitions/murano" - - $ref: "#/definitions/bundle" - - $ref: "#/definitions/tosca" - name: - type: string - tags: - type: array - items: - enum: - - app - depends: - type: array - items: - type: object - required: - - name - additionalProperties: false - properties: - name: - type: string - release: - type: array - items: - enum: - - Austin - - Bexar - - Cactus - - Diablo - - Essex - - Folsom - - Grizzly - - Havana - - Icehouse - - Juno - - Kilo - - Liberty - - Mitaka - - Newton - - Ocata - - Pike - minItems: 1 - provided_by: - type: object - required: - - name - - href - - company - additionalProperties: false - properties: - name: - type: string - href: - type: string - pattern: "^((https?://)[a-z][a-z0-9_-]+(\\.[a-z][a-z0-9_-]+)+(/[a-z0-9\\._/~%\\-\\+&\\#\\?!=\\(\\)@]*)?)|(mailto:[a-z][a-z0-9._-]+@[a-z][a-z0-9_-]+(\\.[a-z][a-z0-9_-]+)+)$" - company: - type: string - supported_by: - type: object - required: - - name - additionalProperties: false - properties: - name: - type: string - href: - type: string - pattern: "^((https?://)[a-z][a-z0-9_-]+(\\.[a-z][a-z0-9_-]+)+(/[a-z0-9\\._/~%\\-\\+&\\#\\?!=\\(\\)@]*)?)|(mailto:[a-z][a-z0-9._-]+@[a-z][a-z0-9_-]+(\\.[a-z][a-z0-9_-]+)+)$" - company: - type: string - icon: - type: object - required: - - top - - left - - height - - url - additionalProperties: false - properties: - top: - type: number - left: - type: number - height: - type: number - url: - type: string - pattern: "^((https?://)[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+(/[a-z0-9\\._/~%\\-\\+&\\#\\?!=\\(\\)@]*)?)" - description: - type: string - license: - type: string - pattern: "^(GPL .*)|(Apache .*)|(BSD .*)|(MIT)|(Free <= [0-9]+ (Users|Nodes))|(Multi-licensed OpenSource)|(Other)|(Unknown)$" - license_url: - type: string - pattern: "^((https?://)[a-z][a-z0-9_-]+(\\.[a-z][a-z0-9_-]+)+(/[a-z0-9\\._/~%\\-\\+&\\#\\?!=\\(\\)@]*)?)$" - cloud_user: - type: string - attributes: - type: object - additionalProperties: true - patternProperties: - .*: - type: - - string - - number - definitions: - glance: - required: - - type - - container_format - - disk_format - properties: - type: - type: string - enum: - - glance - container_format: - enum: - - ami - - ari - - aki - - bare - - ovf - disk_format: - enum: - - ami - - ari - - aki - - vhd - - vmdk - - raw - - qcow2 - - vdi - - iso - min_ram: - type: number - min_disk: - type: number - additionalProperties: false - heat: - required: - - type - properties: - type: - type: string - enum: - - heat - environment: - type: object - additionalProperties: true - ever: - type: array - items: - type: object - additionalProperties: false - properties: - min: - type: array - items: - type: number - minItems: 3 - maxItems: 3 - max: - type: array - items: - type: number - minItems: 3 - maxItems: 3 - murano: - required: - - type - additionalProperties: false - properties: - type: - type: string - enum: - - murano - format: - type: string - enum: - - package - package_name: - type: string - ever: - type: array - items: - type: object - additionalProperties: false - properties: - min: - type: array - items: - type: number - minItems: 3 - maxItems: 3 - max: - type: array - items: - type: number - minItems: 3 - maxItems: 3 - bundle: - required: - - type - additionalProperties: false - properties: - type: - type: string - enum: - - bundle - murano_package_name: - type: string - - tosca: - required: - - type - - template_format - additionalProperties: false - properties: - type: - type: string - enum: - - tosca - template_format: - type: string - enum: - - yaml - - csar - ever: - type: array - items: - type: object - additionalProperties: false - properties: - min: - type: array - items: - type: number - minItems: 3 - maxItems: 3 - max: - type: array - items: - type: number - minItems: 3 - maxItems: 3 diff --git a/openstack_catalog/web/static/assets.yaml b/openstack_catalog/web/static/assets.yaml deleted file mode 100644 index 91d1734..0000000 --- a/openstack_catalog/web/static/assets.yaml +++ /dev/null @@ -1,4787 +0,0 @@ ---- - assets: - - - name: Hyperglance (500 node 14 day free trial) - tags: ['app'] - provided_by: - name: Hyperglance - href: https://www.hyperglance.com - company: Hyperglance LTD. - description: > - The Hyperglance application has pre-integrated - with OpenStack APIs to automatically provide - an interactive, data-rich, 3D topology - visualization of current OpenStack compute and - networking resources. The browser client - allows users to easily navigate through - topology(ies) in 360°. Clearly see network - segments, dive into data details, analyze - Ceilometer metrics, plus take immediate - actions such as: suspend, terminate, resize, - etc. directly from our topology view. If - using Nagios with OpenStack, Hyperglance - includes the ability to layer Nagios data so - you can see where alerts are occurring and - immediately tend to the alerts. Hyperglance - also includes integration with AWS for true - hybrid cloud visibility on the same screen. - Through RBAC security, cloud managers can - enjoy multi-tenant views and actions, while - tenants can enjoy their own relevant views and - actions. Hyperglance provides greater cloud - resource clarity and control. - service: - type: glance - disk_format: qcow2 - container_format: bare - min_ram: 2048 - min_disk: 8 - icon: - url: https://hyperglance.com/wp-content/uploads/2016/03/HG-logo-320x72.png - top: 15 - left: -25 - height: 72 - license: Other - hash: c2449bfccc9c61aa9d73d6749fa02b5a - license_url: https://hyperglance.com/eula/ - attributes: - url: http://cdn.hyperglance.com/Hyperglance-OpenStack-Marketplace.qcow2 - hyperglance docs: https://support.hyperglance.com - install instructions: https://support.hyperglance.com/support/solutions/folders/11000001005 - - - name: Fedora 21 Atomic (for use with Magnum) - provided_by: - name: OpenStack Magnum Project - href: https://wiki.openstack.org/wiki/Magnum - company: OpenStack - description: > - Magnum is an OpenStack API service developed - by the OpenStack Containers Team making - container orchestration engines such as - Docker Swarm and Kubernetes available as first - class resources in OpenStack. Magnum uses - Heat to orchestrate an OS image which - contains Docker and Kubernetes and runs that - image in either virtual machines or bare - metal in a cluster configuration. - - This image is intended to be used with an - environment running Magnum. - See https://wiki.openstack.org/wiki/Magnum - for more information on using this image and - Magnum in your OpenStack environment. - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: cebefc0c21fb8567e662bf9f2d5b78b0 - attributes: - url: https://fedorapeople.org/groups/magnum/fedora-21-atomic-5.qcow2 - - - name: Ubuntu 14.04 x64 (pre-installed Kubernetes and murano-agent) - provided_by: - name: Dmytro Dovbii - href: mailto:ddovbii@mirantis.com - company: Mirantis, Inc. - description: > - Ubuntu 14.04 x64 with Docker & Kubernetes pre-installed - used by Kubernetes Cluster application. - - This image contains the following packages: - - * etcd v3.0.4; - * kubernetes v1.3.0; - * flannel v0.5.5; - * Go v1.6.2; - * confd v0.7.1; - * docker v1.11.2. - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 23f37d3d9d73740cf12e68b998e53338 - attributes: - url: http://storage.apps.openstack.org/images/ubuntu14.04-x64-kubernetes.qcow2 - - - name: Debian 8 x64 (pre-installed Kubernetes and murano-agent) - provided_by: - name: Dmytro Dovbii - href: mailto:ddovbii@mirantis.com - company: Mirantis, Inc. - description: > - Debian 8 x64 with Docker & Kubernetes pre-installed - used by Kubernetes Cluster application. - - This image contains the following packages: - - * etcd v3.0.4; - * kubernetes v1.3.0; - * flannel v0.5.5; - * Go v1.6.2; - * confd v0.7.1; - * docker v1.11.2. - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: e77f172ede183f8ab98ba1725ecb78c2 - attributes: - url: http://storage.apps.openstack.org/images/debian8-x64-kubernetes.qcow2 - size: 2.8 Gb - - - name: Ubuntu 14.04 x64 (pre-installed Docker and murano-agent) - provided_by: - name: Dmytro Dovbii - href: mailto:ddovbii@mirantis.com - company: Mirantis, Inc. - description: Ubuntu 14.04 x64 with docker and murano-agent pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 34a1e87d2d685b98f4ba222fb3d75012 - attributes: - url: http://storage.apps.openstack.org/images/ubuntu14.04-x64-docker.qcow2 - - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - provided_by: - name: Alexey Deryugin - href: mailto:aderyugin@mirantis.com - company: Mirantis, Inc. - description: > - Ubuntu 14.04 x64 with murano-agent pre-installed - used by Murano applications that does not rely on - pre-installed software in the image and instead provision - applications using murano-agent. - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 393d4f2a7446ab9804fc96f98b3c9ba1 - attributes: - url: http://storage.apps.openstack.org/images/ubuntu-14.04-m-agent.qcow2 - - - name: Debian 8 x64 (pre-installed murano-agent) - provided_by: - name: Alexey Deryugin - href: mailto:aderyugin@mirantis.com - company: Mirantis, Inc. - description: Base Debian Jessie x64 image with murano-agent pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 0070bf11fd7ee9c32bc060d8c49b0283 - attributes: - url: http://storage.apps.openstack.org/images/debian-8-m-agent.qcow2 - - - name: Debian 8 x64 (pre-installed Docker) - provided_by: - name: Alexey Deryugin - href: mailto:aderyugin@mirantis.com - company: Mirantis, Inc. - description: Base Debian Jessie x64 image with murano-agent & Docker pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: f9f2466c39dac98a1e4ed03fb5701225 - attributes: - url: http://storage.apps.openstack.org/images/debian-8-docker.qcow2 - - - name: Ubuntu 14.04 x64 (pre-installed packages to be used with CloudBees PSE) - provided_by: - name: CloudBees - href: http://cloudbees.com - company: CloudBees, Inc. - description: Ubuntu 14.04 x64 with various publicly-available packages - for use with CloudBees PSE. All pre-installed packages are opensource (logstash, - nfs, xfs, mesos, marathon, docker, Elasticsearch) with the exception of three - docker containers which contain mostly opensource bits (Jenkins) and some CloudBees-specific - bits (less than 30%). - - This image is used to provision VMs that are to be part of the PSE computational - infrastructure. However, the pre-installed packages also make this image useful - as a stand-alone appliance - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Other - hash: da21abcd47b08632ea39191bb34df3fab148f9fd - attributes: - url: http://pse-vm-images.s3-us-west-1.amazonaws.com/images/cloudbees-pse-ubuntu-juno-20151030011613.qcow2 - - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - provided_by: - name: Andrii Bubyr - href: mailto:abubyr@mirantis.com - company: Mirantis, Inc. - description: Ubuntu 16.04 ppc64le with murano-agent pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 0e7ee26b18731e8c342d3c35f6c973c6 - attributes: - url: http://storage.apps.openstack.org/images/ubuntu-16.04-ppc64le-m-agent.qcow2 - - - name: Ubuntu 16.04 ppc64le (pre-installed Docker and murano-agent) - provided_by: - name: Andrii Bubyr - href: mailto:abubyr@mirantis.com - company: Mirantis, Inc. - description: Ubuntu 16.04 ppc64le with docker and murano-agent pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 052bf448e6f2a0290a986efdd3081586 - attributes: - url: http://storage.apps.openstack.org/images/ubuntu-16.04-ppc64le-docker.qcow2 - - - name: Ubuntu Trusty 14 - tags: ['app'] - provided_by: - name: Canonical - href: http://ubuntu.com - company: Canonical - description: Base Ubuntu 14.04 with cloud_init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://design.ubuntu.com/wp-content/uploads/ubuntu-logo32.png - top: 0 - left: 6 - height: 110 - hash: 742ec3c3d8a6b4f8caa7f14569d58eef - license: Multi-licensed OpenSource - cloud_user: ubuntu - attributes: - url: https://cloud-images.ubuntu.com/releases/14.04/14.04.4/ubuntu-14.04-server-cloudimg-amd64-disk1.img - - - name: Ubuntu Utopic 14 - tags: ['app'] - provided_by: - name: Canonical - href: http://ubuntu.com - company: Canonical - description: Base Ubuntu 14.10 with cloud_init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://design.ubuntu.com/wp-content/uploads/ubuntu-logo32.png - top: 0 - left: 6 - height: 110 - license: Multi-licensed OpenSource - cloud_user: ubuntu - attributes: - url: http://uec-images.ubuntu.com/utopic/current/utopic-server-cloudimg-amd64-disk1.img - - - name: Ubuntu Vivid 15 - tags: ['app'] - provided_by: - name: Canonical - href: http://ubuntu.com - company: Canonical - description: Base Ubuntu 15.04 with cloud_init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://design.ubuntu.com/wp-content/uploads/ubuntu-logo32.png - top: 0 - left: 6 - height: 110 - license: Multi-licensed OpenSource - cloud_user: ubuntu - attributes: - url: http://uec-images.ubuntu.com/vivid/current/vivid-server-cloudimg-amd64-disk1.img - - - name: CentOS 6 - tags: ['app'] - provided_by: - name: CentOS - href: http://centos.org - company: CentOS - description: > - The CentOS Linux distribution is a stable, - predictable, manageable and reproducible platform - derived from the sources of Red Hat Enterprise - Linux (RHEL). We are now looking to expand on that - by creating the resources needed by other - communities to come together and be able to build - on the CentOS Linux platform. And today we start - the process by delivering a clear governance - model, increased transparency and access. In the - coming weeks we aim to publish our own roadmap - that includes variants of the core CentOS Linux. - - This is a Base CentOS 6 image with cloud_init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://wiki.centos.org/ArtWork/Brand/Logo?action=AttachFile&do=get&target=centos-logo-dark.svg - top: -12 - left: -12 - height: 150 - hash: 62ac2565e3527377860361f57639f334 - license: Multi-licensed OpenSource - cloud_user: centos - attributes: - url: http://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-20141129_01.qcow2 - - - name: CentOS 7 - tags: ['app'] - provided_by: - name: CentOS - href: http://centos.org - company: CentOS - description: > - The CentOS Linux distribution is a stable, - predictable, manageable and reproducible platform - derived from the sources of Red Hat Enterprise - Linux (RHEL). We are now looking to expand on that - by creating the resources needed by other - communities to come together and be able to build - on the CentOS Linux platform. And today we start - the process by delivering a clear governance - model, increased transparency and access. In the - coming weeks we aim to publish our own roadmap - that includes variants of the core CentOS Linux. - - Base CentOS 7 with cloud_init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://wiki.centos.org/ArtWork/Brand/Logo?action=AttachFile&do=get&target=centos-logo-dark.svg - top: -12 - left: -12 - height: 150 - license: Multi-licensed OpenSource - cloud_user: centos - hash: c2ebde45f03aa35c6d996c3de984a9d6 - attributes: - url: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1608.qcow2 - - - name: Centos 7 ppc64le (pre-installed murano-agent) - provided_by: - name: Andrii Bubyr - href: mailto:abubyr@mirantis.com - company: Mirantis, Inc. - description: Centos 7 ppc64le with murano-agent pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: af16644e47de1793a4d3e2f68913a648 - attributes: - url: http://storage.apps.openstack.org/images/centos-7-ppc64le-m-agent.qcow2 - - - name: CirrOS - tags: ['app'] - provided_by: - name: CirrOS - href: http://cirros-cloud.net - company: CirrOS Community - description: Tiny OS meant to run on a cloud - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://raw.githubusercontent.com/docker-library/docs/master/cirros/logo.png - top: 0 - left: -2 - height: 130 - hash: ee1eca47dc88f4879d8a229cc70a07c6 - license: Multi-licensed OpenSource - cloud_user: cirros - attributes: - url: http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img - - - name: Fedora 23 - tags: ['app'] - provided_by: - name: Fedora Project - href: http://fedoraproject.org - company: Fedora Project Community - description: > - The Fedora Project is a global partnership of - free software community members. The Fedora - Project is sponsored by Red Hat, which invests in - our infrastructure and resources to encourage - collaboration and incubate innovative new - technologies. Some of these technologies may later - be integrated into Red Hat products. They are - developed in Fedora and produced under a free and - open source license from inception, so other free - software communities and projects are free to - study, adopt, and modify them. - - This is a Fedora 23 base image with cloud_init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://fedoraproject.org/w/uploads/e/e5/Fedora_infinity.png - top: -50 - left: -40 - height: 210 - license: Multi-licensed OpenSource - cloud_user: fedora - hash: 38d62e2e1909c89f72ba4d5f5c0005d5 - attributes: - url: https://download.fedoraproject.org/pub/fedora/linux/releases/23/Cloud/x86_64/Images/Fedora-Cloud-Base-23-20151030.x86_64.qcow2 - docs: https://docs.fedoraproject.org/en-US/index.html - gpg: https://getfedora.org/static/fedora.gpg - digest: https://getfedora.org/static/checksums/Fedora-Cloud-Images-x86_64-23-CHECKSUM - pubkey: https://getfedora.org/static/34EC9CBA.txt - releases: https://getfedora.org/en/cloud/download/index.html - - - name: Debian Jessie 8.0.0 x64 - tags: ['app'] - provided_by: - name: Debian - href: http://debian.org - company: Debian Community - description: > - Debian is a Unix-like computer operating system - and a Linux distribution that is composed entirely - of free and open-source software, most of which is - under the GNU General Public License, and packaged - by a group of individuals known as the Debian - project. - - This is a Debian Stable 8.0.0 (aka Jessie) official - base image with cloud_init, cloud-utils, and - cloud-initramfs-growroot pre-installed. - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://www.debian.org/logos/openlogo-nd-100.jpg - top: 0 - left: 10 - height: 124 - license: Multi-licensed OpenSource - cloud_user: debian - hash: 63e449dce64d86c9e97da74673656857 - attributes: - url: http://cdimage.debian.org/cdimage/openstack/archive/8.0.0/debian-8.0.0-openstack-amd64.qcow2 - - - name: Debian Jessie 8.5.0 x64 - tags: ['app'] - provided_by: - name: Debian - href: http://debian.org - company: Debian Community - description: > - Debian is a Unix-like computer operating system - and a Linux distribution that is composed entirely - of free and open-source software, most of which is - under the GNU General Public License, and packaged - by a group of individuals known as the Debian - project. - - This is a Debian Stable 8.5.0 (aka Jessie) official - base image with cloud_init, cloud-utils, and - cloud-initramfs-growroot pre-installed. - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://www.debian.org/logos/openlogo-nd-100.jpg - top: 0 - left: 10 - height: 124 - license: Multi-licensed OpenSource - cloud_user: debian - hash: 740726dfbcea90768cad44ce20eaae51 - attributes: - url: http://cdimage.debian.org/cdimage/openstack/current/debian-8.5.0-openstack-amd64.qcow2 - - - name: Debian Testing weekly build x64 - tags: ['app'] - provided_by: - name: Debian - href: http://debian.org - company: Debian Community - description: > - Debian is a Unix-like computer operating system - and a Linux distribution that is composed entirely - of free and open-source software, most of which is - under the GNU General Public License, and packaged - by a group of individuals known as the Debian - project. - - This is a Debian Testing (currently Stretch) official - weekly built base image with cloud_init, cloud-utils, - and cloud-initramfs-growroot pre-installed. - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://www.debian.org/logos/openlogo-nd-100.jpg - top: 0 - left: 10 - height: 124 - license: Multi-licensed OpenSource - cloud_user: debian - hash_url: http://cdimage.debian.org/cdimage/openstack/testing/MD5SUMS - attributes: - url: http://cdimage.debian.org/cdimage/openstack/testing/debian-testing-openstack-amd64.qcow2 - - - name: Windows Server 2012 R2 - tags: ['app'] - provided_by: - name: Cloudbase - href: http://www.cloudbase.it/ - company: Cloudbase - description: Windows Server 2012 R2 image with cloud_init - attributes: - indirect_url: http://www.cloudbase.it/ws2012r2/ - icon: - url: https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Windows_logo_-_2012.svg/240px-Windows_logo_-_2012.svg.png - top: 0 - left: 0 - height: 128 - license: Other - license_url: http://www.cloudbase.it/windows-cloud-images/ - service: - type: glance - disk_format: vhd - container_format: bare - - - name: Apcera HCOS Trial Edition - tags: ['app'] - provided_by: - name: Austin Mills - href: mailto:austin@apcera.com - company: Apcera, Inc. - description: Apcera HCOS Trial Edition image, built on Ubuntu 14.04 x64 image with murano-agent pre-installed - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Unknown - hash: 1055116f26f2ea36a51217ab33ddec3f - attributes: - url: http://storage.apps.openstack.org/images/continuum-trial-openstack-1431536104.qcow2 - - - name: Wordpress powered by Bitnami - tags: ['app'] - provided_by: - name: Bitnami - href: https://www.bitnami.com/ - company: Bitnami - description: > - WordPress is one of the world’s most popular web - publishing platforms for building blogs and - websites. It can be customized via a wide - selection of themes, extensions and plug-ins. - - The Bitnami WordPress Stack provides a one-click - install solution for WordPress. - - You can find more details on this image at - https://bitnami.com/stack/wordpress - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://s.w.org/about/images/logos/wordpress-logo-notext-rgb.png - top: 0 - left: 0 - height: 128 - license: Multi-licensed OpenSource - hash: 412fe8d31ecd69ec91d1bb1fbc4c84ac - attributes: - url: https://downloads.bitnami.com/files/download/openstack/bitnami-wordpress-4.2.2-0-ubuntu-14.04.qcow - - - name: LAMP Stack powered by Bitnami - tags: ['app'] - provided_by: - name: Bitnami - href: https://www.bitnami.com/ - company: Bitnami - description: > - Bitnami LAMP Stack provides a complete, fully-integrated - and ready to run LAMP development environment. In - addition to PHP, MySQL and Apache, it includes FastCGI, - OpenSSL, phpMyAdmin, ModSecurity, SQLite, Varnish, - ImageMagick, xDebug, Xcache, OpenLDAP, ModSecurity, - Memcache, OAuth, PEAR, PECL, APC, GD, cURL and - other components and the following frameworks: Zend - Framework, Symfony, CodeIgniter, CakePHP, Smarty, - Laravel. - - You can find more details on this image at - https://bitnami.com/stack/lamp - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://d0.awsstatic.com/logos/Developer/lamp_logo.gif - top: 20 - left: 8 - height: 64 - license: Multi-licensed OpenSource - hash: 8dfa316d4037fb192882fa7500db61f8 - attributes: - url: https://downloads.bitnami.com/files/download/openstack/bitnami-lampstack-5.4.40-0-ubuntu-14.04.qcow - - - name: Ruby Stack powered by Bitnami - tags: ['app'] - provided_by: - name: Bitnami - href: http://bitnami.com/ - company: Bitnami - description: > - Bitnami Ruby Stack provides a complete, ready-to-run - development environment for Ruby on Rails. It - includes the latest stable release of Ruby, Rails, - RVM, MySQL, SQLite, NGINX, Apache, Memcache and - Varnish, Git and Subersion, Sphinx, PHP and - phpMyAdmin. - - It also includes most popular gems for building - Rails applications: Thin, RMagick, Rake, Mongrel, - Passenger, Nokogiri and more. It also includes - libraries such as OpenSSL, openLDAP, CURL, - ImageMagick and more. - - You can find more details on this image at - https://bitnami.com/stack/ruby - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://www.ruby-lang.org/images/header-ruby-logo.png - top: 0 - left: 0 - height: 128 - license: Multi-licensed OpenSource - hash: dbd3308da442c3a479621f03d3857b2c - attributes: - url: https://downloads.bitnami.com/files/download/openstack/bitnami-rubystack-2.0.0-26-ubuntu-14.04.qcow - - - name: Jenkins powered by Bitnami - tags: ['app'] - provided_by: - name: Bitnami - href: http://bitnami.com/ - company: Bitnami - description: > - Bitnami Jenkins is a feature-rich Continuous - Integration (CI) solution with easy configuration, - continuous delivery and continuous integration - support, easily test, build and stage your app, - and more. It supports multiple SCM tools including - CVS, Subversion and Git. - - Out of the box, the Bitnami Jenkins includes Jenkins, Apache, Tomcat, and Git. - - You can find more details on this image at - https://bitnami.com/stack/jenkins - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://wiki.jenkins-ci.org/download/attachments/2916393/logo.png?version=1&modificationDate=1302753947000 - top: 0 - left: 20 - height: 128 - hash: a9899d51e5667118d7a91f84438062a4 - license: Multi-licensed OpenSource - attributes: - url: https://downloads.bitnami.com/files/download/openstack/bitnami-jenkins-1.613-0-ubuntu-14.04.qcow - - - name: MEAN Stack powered by Bitnami - tags: ['app'] - provided_by: - name: Bitnami - href: http://bitnami.com/ - company: Bitnami - description: > - The Bitnami MEAN Stack provides a complete - development environment for the leading noSQL - database, MongoDB. It includes the latest - stable release of MongoDB, Express, Angular, - Node.js, Git, PHP and RockMongo. - - You can find more details on this image at - https://bitnami.com/stack/mean - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://mean.io/system/assets/img/logos/meanlogo.png - top: 0 - left: 0 - height: 128 - license: Multi-licensed OpenSource - hash: 6ca3c138289b2f969448063e076ab297 - attributes: - url: https://downloads.bitnami.com/files/download/openstack/bitnami-meanstack-3.0.2-0-ubuntu-14.04.qcow - - - name: stackato-3.4.2-murano-agent - provided_by: - name: John Wetherill - href: mailto:johnw@activestate.com - company: ActiveState - description: Stackato v3.4.2 PaaS image with the murano-agent pre-installed. - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Other - license_url: http://www.activestate.com/stackato/get_stackato?intcmp=pageheaderbutton - hash: 7a7baf53a90c1afd9bb375bf7b26af5b - attributes: - url: http://downloads.activestate.com/stackato/vm/v3.4.2/stackato-node-murano-v1.qcow2 - - - name: Sahara HDP 2.0.6 (CentOS 6.6) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - Hortonworks Data Platform (HDP) is the open source - Apache Hadoop data platform, architected for the - enterprise. This CentOS 6.6 based image includes - HDP 2.0.6 with Ambari 1.4.1 management console and - built for usage with Sahara HDP plugin. The list - of supported services includes: Oozie, Pig, Hive, - Sqoop, Hue, HBase. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: e463b989880f91c373f9b97af8a0bb83 - attributes: - url: http://sahara-files.mirantis.com/images/upstream/kilo/sahara-kilo-hdp-2.0-centos-6.6.qcow2 - - - name: Sahara CDH 5.3.0 (CentOS 6.6) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - Cloudera Distribution including Apache Hadoop (CDH) - is the open source distribution of Apache Hadoop - and related projects. This CentOS 6.6 based image - includes CDH 5.3.0 and built for usage with Sahara - CDH plugin. The list of supported services includes: - Oozie, Pig, Hive, Hue, Spark, Flume, Scoop. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 568698419b85d9c9279e4c5335ffe3e6 - attributes: - url: http://sahara-files.mirantis.com/images/upstream/kilo/sahara-kilo-cloudera-5.3.0-centos-6.6.qcow2 - - - name: Sahara CDH 5.3.0 (Ubuntu 12.04) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - Cloudera Distribution including Apache Hadoop (CDH) - is the open source distribution of Apache Hadoop - and related projects. This Ubuntu 12.04 based image - includes CDH 5.3.0 and built for usage with Sahara - CDH plugin. The list of supported services includes: - Oozie, Pig, Hive, Hue, Spark, Flume, Scoop. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: e7f1190bb4952dfc1a72716987076577 - attributes: - url: http://sahara-files.mirantis.com/images/upstream/kilo/sahara-kilo-cloudera-5.3.0-ubuntu-12.04.qcow2 - - - name: Sahara MapR 4.0.2 (CentOS 6.6) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - The MapR Distribution including Apache Hadoop - provides an enterprise-grade distributed data - platform to reliably store and process big data. - This CentOS 6.6 based image includes MapR 4.0.2 - and built for usage with Sahara MapR plugin. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 47ff252fc7859dde36ebc3a28fea3819 - attributes: - url: http://sahara-files.mirantis.com/images/upstream/kilo/sahara-kilo-mapr-4.0.2-centos-6.6.qcow2 - - - name: Sahara Apache Spark 1.0.0 (Ubuntu 14.04) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - Apache Spark is a fast and general engine for - large-scale data processing. This Ubuntu 14.04 - based image includes Apache Spark 1.0.0 and - built for usage with Sahara Spark plugin. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: ce07050ecdfa67115c0ea8b66435bf53 - attributes: - url: http://sahara-files.mirantis.com/images/upstream/kilo/sahara-kilo-spark-1.0.0-ubuntu-14.04.qcow2 - - - name: Sahara Apache Storm 0.9.1 (Ubuntu 14.04) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - Apache Storm is a distributed realtime computation - system and makes it easy to reliably process - unbounded streams of data, doing for realtime - processing what Hadoop did for batch processing. - This Ubuntu 14.04 based image includes Apache Storm - 0.9.1 and built for usage with Sahara Storm plugin. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: 600584fa4d0dac8be3a571fdbee75e09 - attributes: - url: http://sahara-files.mirantis.com/images/upstream/kilo/sahara-kilo-storm-0.9.1-ubuntu-14.04.qcow2 - - - name: Sahara with Ambari pre-installed (Centos 7.2 ppc64le) - provided_by: - name: Mirantis - href: https://www.mirantis.com/ - company: Mirantis, Inc. - description: > - The Apache Ambari project is aimed at making - Hadoop management simpler by developing software - for provisioning, managing, and monitoring Apache - Hadoop clusters. - - This image is meant to be used with the Sahara - project https://wiki.openstack.org/wiki/Sahara - and you can find more details on how to use this - image at - https://wiki.openstack.org/wiki/Sahara/AppsCatalogHowTo - service: - type: glance - disk_format: qcow2 - container_format: bare - license: Multi-licensed OpenSource - hash: b566b48a9b47be7845eccfbaf5da8223 - attributes: - url: http://storage.apps.openstack.org/images/centos-7.2-ppc64le-sahara-ambari.qcow2 - - - name: CoreOS v647.0.0 - tags: ['app'] - provided_by: - name: CoreOS - href: https://coreos.com/ - company: CoreOS - description: CoreOS version 647.0.0, released 2015-04-08 - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://raw.githubusercontent.com/coreos/coreos-web/master/src/img/apple-touch-icon-114-precomposed.png - top: 2 - left: 10 - height: 114 - license: Multi-licensed OpenSource - hash: 37f5c22f13527d0c5c3a146370d39eb6 - attributes: - url: http://stable.release.core-os.net/amd64-usr/647.0.0/coreos_production_openstack_image.img.bz2 - docs: https://coreos.com/docs/ - gpg: http://stable.release.core-os.net/amd64-usr/647.0.0/coreos_production_openstack_image.img.bz2.sig - digest: http://stable.release.core-os.net/amd64-usr/647.0.0/coreos_production_openstack_image.img.bz2.DIGESTS.asc - pubkey: https://coreos.com/security/image-signing-key - releases: https://coreos.com/releases/ - - - name: CoreOS v668.3.0 - tags: ['app'] - provided_by: - name: CoreOS - href: https://coreos.com/ - company: CoreOS - description: CoreOS version 668.3.0, released 2015-05-12 - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://raw.githubusercontent.com/coreos/coreos-web/master/src/img/apple-touch-icon-114-precomposed.png - top: 2 - left: 10 - height: 114 - license: Multi-licensed OpenSource - hash: f63dbd117fce4ee66bd4850ae2d8081e - attributes: - url: http://beta.release.core-os.net/amd64-usr/668.3.0/coreos_production_openstack_image.img.bz2 - docs: https://coreos.com/docs/ - gpg: http://beta.release.core-os.net/amd64-usr/668.3.0/coreos_production_openstack_image.img.bz2.sig - digest: http://beta.release.core-os.net/amd64-usr/668.3.0/coreos_production_openstack_image.img.bz2.DIGESTS.asc - pubkey: https://coreos.com/security/image-signing-key - releases: https://coreos.com/releases/ - - - name: CoreOS v681.0.0 - tags: ['app'] - provided_by: - name: CoreOS - href: https://coreos.com/ - company: CoreOS - description: CoreOS version 681.0.0, released 2015-05-14 - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://raw.githubusercontent.com/coreos/coreos-web/master/src/img/apple-touch-icon-114-precomposed.png - top: 2 - left: 10 - height: 114 - license: Multi-licensed OpenSource - hash: fef1a26baa9ffca9883aa3ba234e8580 - attributes: - url: http://alpha.release.core-os.net/amd64-usr/681.0.0/coreos_production_openstack_image.img.bz2 - docs: https://coreos.com/docs/ - gpg: http://alpha.release.core-os.net/amd64-usr/681.0.0/coreos_production_openstack_image.img.bz2.sig - digest: http://alpha.release.core-os.net/amd64-usr/681.0.0/coreos_production_openstack_image.img.bz2.DIGESTS.asc - pubkey: https://coreos.com/security/image-signing-key - releases: https://coreos.com/releases/ - - - name: Fedora Atomic - tags: ['app'] - provided_by: - name: Project Atomic - href: http://www.projectatomic.io - company: Project Atomic, sponsored by Red Hat - description: > - Project Atomic integrates the tools and patterns of - container-based application and service deployment with - trusted operating system platforms to deliver an end-to-end - hosting architecture that's modern, reliable, and secure. - This Atomic image is based on Fedora 25 and was released - 2016-12-21. - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://fedoraproject.org/w/uploads/e/e5/Fedora_infinity.png - top: -50 - left: -40 - height: 210 - license: Multi-licensed OpenSource - cloud_user: fedora - hash: bba22a5f831413bb5fcf096b110baf88 - attributes: - url: https://getfedora.org/atomic_qcow2_latest - docs: http://www.projectatomic.io/docs/ - gpg: https://getfedora.org/static/fedora.gpg - digest: https://download.fedoraproject.org/pub/alt/atomic/stable/Fedora-Atomic-25-20161221.0/CloudImages/x86_64/images/Fedora-CloudImages-25-20161221.0-x86_64-CHECKSUM - pubkey: https://getfedora.org/static/FDB19C98.txt - releases: https://getfedora.org/en/cloud/download/atomic.html - - - name: ManageIQ Darga (stable) - tags: ['app'] - provided_by: - name: ManageIQ - href: http://www.manageiq.org - company: ManageIQ, sponsored by Red Hat - description: > - Drive your complete virtual infrastructure with ManageIQ. - Manage the lifecycle of your applications, place virtual - workloads according to your business priorities, and — - automatically through policies you set — balance your costs, - performance, security, and reliability across cloud - platforms. ManageIQ lets you control everything, completely, - from one end of a virtual machine lifecycle to the other. - ManageIQ is the open source project that powers Red Hat - CloudForms. This is the stable version of the 'Darga' - release. - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: http://manageiq.org/images/logo/manageiq-logo-glyph.png - top: 0 - left: 0 - height: 128 - license: Multi-licensed OpenSource - hash: 2c5d026004faaffbeeb4bfa9179f1df2 - attributes: - url: http://manageiq.org/download/manageiq-openstack-darga-3.qc2 - docs: http://manageiq.org/documentation/ - releases: http://releases.manageiq.org/ - - - name: openSUSE 13.2 - tags: ['app'] - provided_by: - name: openSUSE Project - href: http://www.opensuse.org - company: openSUSE Project Community - description: Base openSUSE 13.2 with cloud-init - service: - type: glance - disk_format: qcow2 - container_format: bare - icon: - url: https://en.opensuse.org/images/a/ac/Geeko-button-bling.png - top: -10 - left: -10 - height: 140 - hash: abec1b30081cd299663bf497f9bdd2f1 - license: Multi-licensed OpenSource - attributes: - url: http://download.opensuse.org/repositories/Cloud:/Images:/openSUSE_13.2/images/openSUSE-13.2-OpenStack-Guest.x86_64.qcow2 - - - name: AeroFS Private Cloud - tags: ['app'] - provided_by: - name: AeroFS - href: http://aerofs.com - company: Air Computing Inc. - description: > - The AeroFS Private Cloud is a file sharing and collaboration - platform for OpenStack. AeroFS provides the same experience - as Dropbox, but it integrates with Swift and can be run on - your own infrastructure. This is the current stable release. - service: - type: glance - disk_format: qcow2 - container_format: bare - min_ram: 4096 - min_disk: 10 - icon: - url: http://subiectiv.com/wp-content/uploads/2014/03/aerofs-280x225.png - top: 15 - left: -25 - height: 150 - hash: 94f490a2c30540a6a8277e0a84e46373 - license: Free <= 30 Users - license_url: https://www.aerofs.com/ - attributes: - url: https://enterprise.aerofs.com/aerofs-appliance.qcow2 - docs: https://support.aerofs.com - - - name: Chef Server - tags: ['app'] - provided_by: - name: Chef - href: https://chef.io/openstack - company: Chef Software Inc. - description: > - The Chef server acts as a hub for configuration data. The Chef - server stores cookbooks, the policies that are applied to nodes, - and metadata that describes each registered node that is being - managed by the chef-client. Nodes use the chef-client to ask the - Chef server for configuration details, such as recipes, - templates, and file distributions. - - The user to login is openstack-user. - - This is a CentOS 6.6 base image with cloud_init using - https://github.com/chef-partners/marketplace_image - service: - type: glance - disk_format: qcow2 - container_format: bare - min_ram: 4096 - min_disk: 10 - icon: - url: http://apps.openstack.org/static/images/Chef-124x90-logo.png - top: 5 - left: -45 - height: 170 - license: Free <= 25 Nodes - license_url: https://www.chef.io/online-master-agreement/ - hash: e6b964572be00a845bd53d6033a780f4 - attributes: - url: https://chef-server-glance-images.s3-us-west-2.amazonaws.com/chef-server-12.1.2-1437522600.qcow2 - docs: https://docs.chef.io - - - name: KloudBuster Image v6 - provided_by: - name: KloudBuster Team - href: https://github.com/openstack/kloudbuster - company: Cisco Systems, Inc. - description: > - KloudBuster is a tool that can load the data or storage plane - of any OpenStack cloud at massive scale and can measure how - well the cloud behaves under load. This image is launched by - the KloudBuster application in potentially large number of - VMs. This image also includes a Web UI which offers a nice - and straight forward way to interactive with KloudBuster. - Refer to the documentation for installation and usage. - - This image is based off Ubuntu 16.04.1 with pre-installed - software required to run the KloudBuster scale test: - KloudBuster agent, Redis server, Nginx HTTP server, wrk2 - HTTP traffic generator, and FIO I/O tester. - service: - type: glance - disk_format: qcow2 - container_format: bare - min_ram: 2048 - min_disk: 10 - license: Multi-licensed OpenSource - hash: 5b5f7b0cce406b9c25e7f84919bb110b - attributes: - url: http://storage.apps.openstack.org/images/kloudbuster_v6.qcow2 - docs: http://kloudbuster.readthedocs.io - - - name: Hello World - provided_by: - name: '?' - href: mailto:support@mirantis.com - company: Mirantis - description: This is a hello world HOT template just defining a single compute server. - release: - - Icehouse - - Juno - - Kilo - service: - type: heat - format: HOT - environment: - parameters: - db_port: 1000 - supported_by: - name: Mirantis - license: Apache 2.0 - attributes: - url: http://storage.catalog.mirantis.com/hot/hello_world.yaml - - - name: OpenShift-CentOS65 - tags: ['app'] - provided_by: - name: Red Hat - href: http://www.redhat.com - company: Red Hat - description: > - This is an OpenShift template for deploying an OpenShift - cluster on a CentOS 6.5 VM. More details on usage and - options can be found at: - https://github.com/openstack/heat-templates/tree/master/openshift-origin/centos65 - release: - - Juno - - Kilo - service: - type: heat - format: HOT - supported_by: - name: Red Hat - icon: - url: https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/OpenShift-LogoType.svg/200px-OpenShift-LogoType.svg.png - top: -10 - left: -30 - height: 180 - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/heat-templates/master/openshift-origin/centos65/OpenShift.yaml - height: 110 - - - name: OpenShift-F19 - tags: ['app'] - provided_by: - name: Red Hat - href: http://www.redhat.com - company: Red Hat - description: > - This is an OpenShift template for deploying an OpenShift - cluster on a Fedora 19 VM. More details on usage and - options can be found at: - https://github.com/openstack/heat-templates/tree/master/openshift-origin/F19 - release: - - Juno - - Kilo - service: - type: heat - format: HOT - supported_by: - name: Red Hat - icon: - url: https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/OpenShift-LogoType.svg/200px-OpenShift-LogoType.svg.png - top: -10 - left: -30 - height: 180 - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/heat-templates/master/openshift-origin/F19/hot-template/openshift/openshift.yaml - - - name: Lattice - tags: ['app'] - provided_by: - name: Layne Peng - href: mailto:appamail@hotmail.com - company: EMC - description: > - Lattice is an open source project for running containerized workloads on a cluster (http://lattice.cf/docs ). Lattice bundles up http load-balancing, a cluster scheduler, log aggregation/streaming and health management into an easy-to-deploy and easy-to-use package. - - This is a Lattice template for deploying a Lattice cluster on a Ubuntu Cloud VM. More details on usage and options can be found at: https://github.com/LaynePeng/heat-lattice - release: - - Icehouse - - Juno - - Kilo - service: - type: heat - format: HOT - supported_by: - name: Layne Peng - icon: - url: http://lattice.cf/images/logo/latticeLogo-bf855393.png - top: 0 - left: 0 - height: 128 - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/LaynePeng/heat-lattice/master/lattice.yaml - - - name: OpenShift Origin 3 - tags: ['app'] - provided_by: - name: OpenShift - href: http://www.openshift.org/ - company: Red Hat - description: > - OpenShift 3 is a free and open source platform as a service tool - designed on top of Docker and Kubernetes. The templates have been - tested with CentOS 7.1. - - For more details on how to configure and use them, see: - - https://github.com/redhat-openstack/openshift-on-openstack - release: - - Kilo - - Liberty - - Mitaka - service: - type: heat - format: HOT - supported_by: - name: Community - icon: - url: https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/OpenShift-LogoType.svg/200px-OpenShift-LogoType.svg.png - top: -10 - left: -30 - height: 180 - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/redhat-openstack/openshift-on-openstack/master/openshift.yaml - - - name: Chef - Standalone Server - tags: ['app'] - provided_by: - name: Chef - href: https://chef.io/openstack - company: Chef - service: - type: heat - format: HOT - description: > - This is a template to build a Standalone Chef server instance. - It uses Ubuntu 14.04 as the base image to build it. - Documentation on how to install it located here: - http://docs.chef.io/server/install_server.html - If you would like more details on how to configure the image - please take a look at the https://github.com/chef-partners/chef-heat-templates/blob/master/README.md. - release: - - Kilo - supported_by: - name: Community and Chef Partner Engineering - icon: - url: http://apps.openstack.org/static/images/Chef-124x90-logo.png - top: 5 - left: -45 - height: 170 - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/chef-partners/chef-heat-templates/master/single_chef_server-HOT.yml - - - name: Pivotal Ops Manager - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - This application allows the user to deploy Pivotal Operations Manager - and configure Manager Director. To deploy this application you need to - download Ops Manager image from network.pivotal.io and upload it to - OpenStack with name "Ops Manager" and then mark it as a Murano image. - After that create environment, add application to it, complete steps - of configuring and start deployment. - - Note, you need to manually remove all VMs spawned by Ops Manager before - deleting its environment. - - Application supports 1.6.x.x releases of Ops Manager and was tested with - version 1.6.2.0 - - Requirements for your OpenStack tenant: - - - 70 GB of RAM - - 22 available instances - - 16 small VMs (1 vCPU, 1024 MB of RAM, 10 GB of root disk) - - 3 large VMs (4 vCPU, 16384 MB of RAM, 10 GB root disk) - - 32 vCPUs - - 1 TB of storage - - Neutron networking with floating IP support - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.pivotal.OpsManager - release: - - Kilo - license: Multi-licensed OpenSource - hash: ee054e4e19cd276aba5b82e0f3a69da9 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.pivotal.OpsManager.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/stable/kilo/PivotalOperationsManager" - - - name: SqlDatabase Library - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Library package containing base interface for all SQL database - implementations. - - Provides API to create a database, its users and to retrieve its - connection string. Implementations of this interface will override - those methods to provide DBMS-specific implementation of this interface. - - Using this interface overrides methods native to a - specific database for these - three basic functions (creating a database, users, or retrieving a - connection string). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.databases - release: - - Kilo - - Liberty - - Mitaka - license: Apache 2.0 - hash: 900187847439c43ddcdaf0b62f4dfcfd - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.databases.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/SQLDatabaseLibrary/package" - - - name: Docker Interfaces Library - provided_by: - name: Stan Lagun - href: "mailto:slagun@mirantis.com" - company: Mirantis, Inc. - description: > - Library package containing all base classes and interfaces for docker - applications and docker hosts. - - Contains definitions of DockerApplication, DockerContainer, - DockerHost, DockerVolume, ApplicationPort and all other classes - that are used to pass information between docker - applications and docker host providers. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.mirantis.docker.Interfaces - release: - - Kilo - - Liberty - - Mitaka - license: Apache 2.0 - hash: 2082512a727a1ec3999287ba6e4e169a - attributes: - "Source URL": "https://github.com/openstack/murano-apps" - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.docker.Interfaces.zip" - Documentation: "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Kubernetes/README.rst" - - - name: Apache HTTP Server - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - The Apache HTTP Server, colloquially called Apache, is a Web server - application notable for playing a key role in the initial growth of - the World Wide Web. Originally based on the NCSA HTTPd server, - development of Apache began in early 1995 after work on the NCSA code - stalled. - - Apache quickly overtook NCSA HTTPd as the dominant HTTP server, and - has remained the most popular HTTP server in use since April 1996. - - Murano creates one or more VM(s) for you from the image listed in the dependencies. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.apache.ApacheHttpServer - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Debian 8 x64 (pre-installed murano-agent) - hash: 750769703ab070e32cd7fcd017fa3688 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.apache.ApacheHttpServer.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/ApacheHTTPServer/package" - - - name: Apache HTTP Server ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - The Apache HTTP Server Project is an effort to develop and maintain an - open-source HTTP server for modern operating systems including UNIX and - Windows NT. The goal of this project is to provide a secure, efficient and - extensible server that provides HTTP services in sync with the current HTTP - standards. - service: - type: murano - format: package - package_name: io.murano.apps.ApacheHttpServerPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: d30817f67a591237ed2eb24e85b45693 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.ApacheHttpServerPPC64LE.zip" - - - name: Apache Tomcat - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Apache Tomcat is an open source software implementation of the - Java Servlet and JavaServer Pages technologies. It provides provides - a 'pure Java' HTTP web server environment for Java code to run in. - - In the simplest config Tomcat runs in a single operating system - process. The process runs a Java virtual machine (JVM). Every - single HTTP request from a browser to Tomcat is processed in - the Tomcat process in a separate thread. - - Murano creates one or more VM(s) for you from the image listed in the dependencies. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.apache.Tomcat - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Debian 8 x64 (pre-installed murano-agent) - hash: 800a3f707dec01bf7eff7ea9705f945b - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.apache.Tomcat.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/Tomcat/package" - - - name: Apache Tomcat ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Apache Tomcat is an open source software implementation of the Java Servlet - and JavaServer Pages technologies. - service: - type: murano - format: package - package_name: io.murano.apps.TomcatPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: a6c9402bd3447a7e293112bd37ac681f - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.TomcatPPC64LE.zip" - - - name: Apcera - tags: ['app'] - provided_by: - name: Austin Mills - href: "mailto:austin@apcera.com" - company: Apcera, Inc. - description: > - Apcera Hybrid Cloud Operating System (HCOS) delivers seamless workload - mobility and pervasive policy and governance across any cloud - public - or private. Built on a foundation of trust, Apcera HCOS enables you to - securely develop, deploy, orchestrate and govern diverse workloads - across multiple cloud providers resulting in lower cost, simplified - operations and assured compliance. - service: - type: murano - format: package - package_name: com.apcera.Apcera - release: - - Kilo - - Liberty - - Mitaka - license: Unknown - depends: - - name: Apcera HCOS Trial Edition - hash: a87e91df5f0c166f9336253f63c318d1 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.apcera.Apcera.zip" - - - name: Cloud Foundry - tags: ['app'] - provided_by: - name: Andrey Shestakov - href: "mailto:ashestakov@mirantis.com" - company: Mirantis, Inc. - description: > - Cloud Foundry is an open source Platform-as-a-Service (PaaS) - solution. It allows users to develop, run and manage - web-based software applications and services. Application - code written through a PaaS can avoid much of the complexity - of building and maintaining the infrastructure, such as is - typically associated with developing and launching a web or - cloud-based service. - - Cloud Foundry is the industry’s Open PaaS and enables choice - of clouds, programming frameworks and application services. - As an open source project, there is a broad community both - contributing code and supporting the project, with - sponsorship provided via the Cloud Foundry Foundation, - http://www.cloudfoundry.org - - Changes: - July 2016 - The package name was changed. You can still access - the application with the old name by the link. But now it is - preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.paas.CloudFoundry - release: - - Kilo - - Liberty - - Mitaka - license: Unknown - depends: - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - hash: e506f99f09de587854a5899b7cb0eff7 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.paas.CloudFoundry.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/CloudFoundry/package" - - - name: EDB Postgres Advanced Server ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - EDB Postgres Advanced Server is EDB’s enhanced Postgres database - designed to meet the needs of the digital enterprise. EDB Advanced - Server incorporates all of PostgreSQL’s features with additional - enterprise-class functionality for enhanced performance and security - requirements for enterprise workloads. - service: - type: murano - format: package - package_name: io.murano.databases.EDBPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Centos 7 ppc64le (pre-installed murano-agent) - hash: dfacb76b893228a568058eb7da195a76 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.databases.EDBPPC64LE.zip" - - - name: IBM NodeJs ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - IBM NodeJs is an open-source, cross-platform JavaScript runtime environment for - developing a diverse variety of tools and applications. - service: - type: murano - format: package - package_name: io.murano.apps.IBMNodeJsPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 047e76116d1a44f228209398ffa955ae - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.IBMNodeJsPPC64LE.zip" - - - name: Jenkins ppc64le (standalone) - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Jenkins is an open source continuous integration tool written in Java. - service: - type: murano - format: package - package_name: io.murano.apps.JenkinsPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 6c8d5a2cfb16eebd628a62445119994d - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.JenkinsPPC64LE.zip" - - - name: Maven ppc64le (standalone) - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Maven is a software project management and comprehension tool. Based on the concept - of a project object model (POM), Maven can manage a project's build, reporting and - documentation from a central piece of information. - service: - type: murano - format: package - package_name: io.murano.apps.MavenPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 79dc6137ff1a19653c59484f66bac7a2 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.MavenPPC64LE.zip" - - - name: MongoDB ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - MongoDB is a cross-platform document-oriented database. Classified as a NoSQL database, - MongoDB eschews the traditional table-based relational database structure in favor of - JSON-like documents with dynamic schemas. - service: - type: murano - format: package - package_name: io.murano.databases.MongoDBPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: d0454dd6deaa02fbac1ef266b3a7ebe7 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.databases.MongoDBPPC64LE.zip" - - - name: MySQL ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - MySQL is a relational database management system (RDBMS), and ships with no GUI tools to - administer MySQL databases or manage data contained within the databases. - service: - type: murano - format: package - package_name: io.murano.databases.MySQLPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 105c59510e6428d71f71aa99bc5559d0 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.databases.MySQLPPC64LE.zip" - - - name: MySQL - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - MySQL is a freely available open source Relational Database - Management System (RDBMS) that uses Structured Query Language (SQL). - - SQL is the most popular language for adding, accessing and managing - content in a database. It is most noted for its quick processing, - proven reliability, ease and flexibility of use. - - Murano creates one or more VM(s) for you from the image listed in the dependencies. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.databases.MySql - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: SqlDatabase Library - - name: Debian 8 x64 (pre-installed murano-agent) - hash: bf717d552d3a040f819960ef237cfcba - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.databases.MySql.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/MySQL/package" - - - name: PostgreSql - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - PostgreSQL is a powerful, open source object-relational database - system. It has more than 15 years of active development and - a proven architecture that has earned it a strong reputation - for reliability, data integrity, and correctness. - - Murano creates one or more VM(s) for you from the image listed in the dependencies. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.databases.PostgreSql - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: SqlDatabase Library - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - hash: 861136bbbad18b5cb0623c72adfbf10b - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.databases.PostgreSql.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/PostgreSQL/package" - - - name: PostgreSQL ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: PostgreSQL is a powerful, open source object-relational database system. - service: - type: murano - format: package - package_name: io.murano.databases.PostgreSQLPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: b40b39d3d9de87fb85e38edd4c6d3798 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.databases.PostgreSQLPPC64LE.zip" - - - name: Rally - tags: ['app'] - provided_by: - name: Boris Pavlovic - href: "mailto:bpavlovic@mirantis.com" - company: Mirantis, Inc. - description: > - Rally is an official OpenStack benchmarking and performance analysis tool. - Rally is intended to provide the community with a benchmarking tool - that is capable of performing specific, complicated and reproducible - test cases on real deployment scenarios. - service: - type: murano - format: package - package_name: org.openstack.Rally - release: - - Icehouse - - Juno - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - hash: cdd93e6977fefabab763f3af12bad893 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.Rally.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/Rally/package" - - - name: Redis ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Redis is a flexible, open-source, key value data store. - service: - type: murano - format: package - package_name: io.murano.databases.RedisPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 3150693f8a877ef0c53394c9fbfd7d2b - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.databases.RedisPPC64LE.zip" - - - name: Travis ppc64le (standalone) - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Travis CI is a hosted, distributed continuous integration service used to build - and test software projects hosted at GitHub. - service: - type: murano - format: package - package_name: io.murano.apps.TravisPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: cbcd0265053a112cf17ad3a151c3068e - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.TravisPPC64LE.zip" - - - name: WebSphere ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - WebSphere Application Server (WAS) is a software product that performs the role - of a web application server. More specifically, it is a software framework and - middleware that hosts Java based web applications. - service: - type: murano - format: package - package_name: io.murano.apps.WebSpherePPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: dc5e368da634e70068fc6f064e340c87 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.WebSpherePPC64LE.zip" - - - name: WordPress - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - WordPress is a free and open source blogging tool and a content management system (CMS) based on PHP and MySQL. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.WordPress - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: MySQL - - name: Apache HTTP Server - - name: Zabbix Agent - hash: 712b7fa9a798693f298f843aa94b4bf6 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.WordPress.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/WordPress/package" - - - name: Zabbix Agent - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Zabbix Agent is deployed on a monitoring target to actively monitor - local resources and applications (hard drives, memory, processor - statistics etc). - - Zabbix is the ultimate open source availability and performance - monitoring solution. Zabbix offer advance monitoring, alerting, and - visualization features today which are missing in other monitoring - system, even some of the best commercial ones. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.ZabbixAgent - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Zabbix - hash: 293fc61b2ee068e73db6988636c7e77e - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.ZabbixAgent.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/ZabbixAgent/package" - - - name: Zabbix - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Zabbix is the ultimate open source availability and performance - monitoring solution. Zabbix offer advance monitoring, alerting, and - visualization features today which are missing in other monitoring - system, even some of the best commercial ones. - - Murano creates one or more VM(s) for you from the image listed in the dependencies. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.ZabbixServer - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Debian 8 x64 (pre-installed murano-agent) - hash: c3144545f899282472f5aaf46c92f37d - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.ZabbixServer.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/ZabbixServer/package" - - - name: Stackato - tags: ['app'] - provided_by: - name: John Wetherill - href: "http://activestate.com" - company: ActiveState - description: > - Stackato is a secure, stable, and commercially supported - Platform-as-a-Service (PaaS) that is built with and on top of - various open source components such as Cloud Foundry and - Docker. Stackato allows agile enterprises to develop and - deploy software solutions faster than ever before and manage - them more effectively. It provides development teams with - built-in languages, frameworks and services on one single - cloud application platform, while providing enterprise-level - security and world-class support. - service: - type: murano - format: package - package_name: io.murano.apps.activestate.StackatoNode - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - supported_by: - name: ActiveState - hash: 6b5221c9c30a8fe63d3926cf3bba7bc7 - attributes: - "Source URL": "https://github.com/ActiveState/stackato-node-murano" - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.activestate.StackatoNode.zip" - "Documentation": "https://github.com/ActiveState/stackato-node-murano/blob/master/README.md" - - - name: Nexus ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Nexus is a software repository manager. - service: - type: murano - format: package - package_name: io.murano.apps.NexusPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 2cc2ec54b90966625673601381a0bd18 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.NexusPPC64LE.zip" - - - name: Nginx ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Nginx (pronounced “engine-x”) is an open source reverse proxy server - for HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load - balancer, HTTP cache, and a web server (origin server). - service: - type: murano - format: package - package_name: io.murano.apps.NginxPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 8fceae2dbf05209977c433fb92a79791 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.NginxPPC64LE.zip" - - - name: Docker Standalone Host - provided_by: - name: Stan Lagun - href: "mailto:slagun@mirantis.com" - company: Mirantis, Inc. - description: > - Docker is an open platform for developers and sysadmins to build, - ship, and run distributed applications. Consisting of Docker Engine, - a portable, lightweight runtime and packaging tool, and Docker Hub, - a cloud service for sharing applications and automating workflows, - Docker enables apps to be quickly assembled from components and - eliminates the friction between development, QA, and production - environments. - - Standalone docker implementation; employs single VM running docker service. - - Implements DockerHost interface (along with Kubernetes Pod), to unify - docker hosting solutions, and make docker applications independent - of one another on hosting platform. - - The Docker service is accessed using CLI client from within the same - VM, so the docker API is not exposed outside that VM. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.mirantis.docker.DockerStandaloneHost - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/DockerStandaloneHost/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Interfaces Library - - name: Debian 8 x64 (pre-installed Docker) - - name: Ubuntu 14.04 x64 (pre-installed Docker and murano-agent) - hash: 03c2cb5f3695bc675748764bc82d6162 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.docker.DockerStandaloneHost.zip" - "Source URL": "https://github.com/openstack/murano-apps" - Documentation: "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Kubernetes/README.rst" - - - name: Docker Standalone Host ppc64le - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Docker is an open platform for developers and sysadmins to build, - ship, and run distributed applications. Consisting of Docker Engine, - a portable, lightweight runtime and packaging tool, and Docker Hub, - a cloud service for sharing applications and automating workflows, - Docker enables apps to be quickly assembled from components and - eliminates the friction between development, QA, and production - environments. - - Standalone docker implementation; employs single VM running docker service. - - Implements DockerHost interface (along with Kubernetes Pod), to unify - docker hosting solutions, and make docker applications independent - of one another on hosting platform. - - The Docker service is accessed using CLI client from within the same - VM, so the docker API is not exposed outside that VM. - service: - type: murano - format: package - package_name: com.mirantis.docker.DockerStandaloneHostPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Interfaces Library - - name: Ubuntu 16.04 ppc64le (pre-installed Docker and murano-agent) - hash: d14a67946d3b2e8ecf4cc2d6b9b9a5e9 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.docker.DockerStandaloneHostPPC64LE.zip" - - - name: Kubernetes Cluster - provided_by: - name: Stan Lagun - href: "mailto:slagun@mirantis.com" - company: Mirantis, Inc. - description: > - Kubernetes is an open source system for managing containerized - applications across multiple hosts, providing basic mechanisms - for deployment, maintenance, and scaling of applications. - - Kubernetes application; deploys a Kubernetes cluster with 3 different - node types: - * 1 master node VM running the Kubernetes API - * 1 or more minion nodes to be used to host user applications - * 0 or more gateway nodes running HAProxy to route external - traffic to provide access to services running - in the Kubernetes cluster. - - This application deploys all Kubernetes prerequisites, builds the - etcd cluster and the flannel networking cluster and then configures - Kubernetes API and other services, as appropriate for each node type. - - The application also provides API access to other applications, so - they can create/delete Kubernetes services and Pods/Replication - Controllers from its JSON definitions. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - - This application uses image with follow components: - * etcd v3.0.4; - * kubernetes v1.3.0; - * flannel v0.5.5; - * Go v1.6.2; - * confd v0.7.1; - * docker v1.11.2. - - service: - type: murano - format: package - package_name: com.mirantis.docker.kubernetes.KubernetesCluster - release: - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Kubernetes/KubernetesCluster/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Interfaces Library - - name: Ubuntu 14.04 x64 (pre-installed Kubernetes and murano-agent) - - name: Debian 8 x64 (pre-installed Kubernetes and murano-agent) - hash: 6ebbc00d73ce730e13abdeb986a10ef8 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.docker.kubernetes.KubernetesCluster.zip" - "Source URL": "https://github.com/openstack/murano-apps" - Documentation: "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Kubernetes/README.rst" - - - name: Kubernetes Pod - provided_by: - name: Stan Lagun - href: "mailto:slagun@mirantis.com" - company: Mirantis, Inc. - description: > - Application representing a Kubernetes Pod on a given Kubernetes Cluster - - This Pod is a co-located set of docker containers which are deployed - together on a single node and share single network space. Containers - within a single pod can access each other using 127.0.0.1 (localhost). - Kubernetes treats Pods as an indivisible deployment unit. - - This application also encapsulates Kubernetes Replication Controller. - User needs to provide a count of replicas; if the number is greater - than zero, the Replication Controller is created automatically with - the desired number of replicas. - - The Replication Controller creates clones of the Pod (copies with the - same container list). If a Pod dies for any reason (for example, due - to hosting minion failure) Replication Controller will create - additional Pod replicas on available resources. - - The Kubernetes Pod provides an API to the host docker container that - is compatible with Docker Standalone Host so that any Docker - Application can be hosted on any one of them. - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - - Depended application - "Kubernetes Cluster" uses image with follow - components: - * etcd v3.0.4; - * kubernetes v1.3.0; - * flannel v0.5.5; - * Go v1.6.2; - * confd v0.7.1; - * docker v1.11.2. - service: - type: murano - format: package - package_name: com.mirantis.docker.kubernetes.KubernetesPod - release: - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Kubernetes/KubernetesPod/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Interfaces Library - - name: Kubernetes Cluster - hash: 2d181c34691d49ed2eba26404b7f8f8e - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.docker.kubernetes.KubernetesPod.zip" - "Source URL": "https://github.com/openstack/murano-apps" - Documentation: "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Kubernetes/README.rst" - - - name: Docker Container - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - This application can run any arbitrary docker container, and deploy one of - the 13,000+ apps available on Docker Hub at https://registry.hub.docker.com - on any supported host implementation (i.e. Kubernetes Pod or - Docker Standalone Host). - - To deploy an application, the user need only choose any image from the Docker Hub and - configure the deployment requirements by specifying environment variables and ports. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerApp - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/DockerApp/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 7eeb7fb26a0eb98fcd2d9f36c334495f - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerApp.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/DockerApp/package" - - - name: Docker Container ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - This application can run any arbitrary docker container, and deploy one of - the 13,000+ apps available on Docker Hub at https://registry.hub.docker.com - on any supported host implementation (i.e. Kubernetes Pod or - Docker Standalone Host). - - To deploy an application, the user need only choose any image from the Docker Hub and - configure the deployment requirements by specifying environment variables and ports. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - service: - type: murano - format: package - package_name: io.murano.docker.DockerAppPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host ppc64le - - name: Docker Interfaces Library - hash: 2ed53203730171bc2de4f4148f2d44f6 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.docker.DockerAppPPC64LE.zip" - - - name: Docker Apache HTTP Server ppc64le - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - The Apache HTTP Server Project is an effort to develop and maintain an - open-source HTTP server for modern operating systems including UNIX and - Windows NT. The goal of this project is to provide a secure, efficient and - extensible server that provides HTTP services in sync with the current HTTP - standards. - service: - type: murano - format: package - package_name: io.murano.docker.DockerApacheHttpServerPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host ppc64le - - name: Docker Interfaces Library - hash: 5d5b927d8b2965064a8560679e389cdd - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.docker.DockerApacheHttpServerPPC64LE.zip" - - - name: Docker Crate - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Crate is an Elastic SQL Data Store. Distributed by design, - Crate makes centralized database servers obsolete. Realtime - non-blocking SQL engine with full blown search. Highly available, - massively scalable yet simple to use. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerCrate - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/Crate/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 8206b643fe62906a5ae923293fba24d9 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerCrate.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/Crate/package" - - - name: Docker DashDB ppc64le - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: DashDB is a data warehousing and analytics solution. - service: - type: murano - format: package - package_name: io.murano.docker.DockerDashDBPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed Docker and murano-agent) - hash: 51d1a3785aed8c25d20fa0bdd4cecabc - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.docker.DockerDashDBPPC64LE.zip" - - - name: Docker GlassFish - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - GlassFish is an open-source application server project started by - Sun Microsystems for the Java EE platform and now sponsored by - Oracle Corporation. - - The supported version is called Oracle GlassFish Server. GlassFish is - free software, dual-licensed under two free software licenses: - the Common Development and Distribution License (CDDL) and - the GNU General Public License (GPL) with the classpath exception. - - GlassFish is the reference implementation of Java EE and as such - supports Enterprise JavaBeans, JPA, JavaServer Faces, JMS, RMI, - JavaServer Pages, servlets, etc. This allows developers to create - enterprise applications that are portable and scalable, and that - integrate with legacy technologies. Optional components can also be - installed for additional services. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerGlassFish - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/GlassFish/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 1c5bf911605d10a9f38e2b6d14d942f5 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerGlassFish.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/GlassFish/package" - - - name: Docker Grafana - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Grafana is a leading open source applications for visualizing large-scale - measurement data. It provides a powerful and elegant way to create, share, - and explore data and dashboards from your disparate metric databases, - either with your team or the world. - - Grafana is most commonly used for Internet infrastructure and application - analytics, but many use it in other domains including industrial sensors, - home automation, weather, and process control. - - Grafana features pluggable panels and data sources allowing easy - extensibility. There is currently rich support for Graphite, InfluxDB - and OpenTSDB. There is also experimental support for KairosDB, and SQL - is on the roadmap. Grafana has a variety of panels, including a fully - featured graph panel with rich visualization options. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerGrafana - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/Grafana/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker InfluxDB - - name: Docker Interfaces Library - hash: 73eb553f2ee025111866664c051b74e2 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerGrafana.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/Grafana/package" - - - name: Docker GuestBook - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - GuestBook is a simple application which demonstrates deployment - process using Kubernetes services. User should only configure - Kubernetes Cluster because rest part of backend is hidden in application - implementation. To use 'GuestBook' you need to import following - applications to the catalog: - Docker Redis, Kubernetes Pod, Kubernetes Cluster - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.GuestBook - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/GuestBook/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Kubernetes Cluster - - name: Kubernetes Pod - - name: Docker Redis - - name: Docker Interfaces Library - hash: 873b741bb7be325ba6ee35e669ec9b32 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.GuestBook.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/GuestBook/package" - - - name: Docker HTTPd - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - The Apache HTTP Server, colloquially called Apache, is a Web server - application notable for playing a key role in the initial growth of the - World Wide Web. Originally based on the NCSA HTTPd server, development of - Apache began in early 1995 after work on the NCSA code stalled. Apache - quickly overtook NCSA HTTPd as the dominant HTTP server, and has remained - the most popular HTTP server in use since April 1996. - Murano will deploy this in the docker service of your choice; you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerHTTPd - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/HTTPdServer/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 97c0e62b98b21e525a9aad9b4079e83e - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerHTTPd.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/HTTPdServer/package" - - - name: Docker HTTPd Site - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - The Apache HTTP Server, colloquially called Apache, is a Web server - application notable for playing a key role in the initial growth of the - World Wide Web. Originally based on the NCSA HTTPd server, development of - Apache began in early 1995 after work on the NCSA code stalled. Apache - quickly overtook NCSA HTTPd as the dominant HTTP server, and has remained - the most popular HTTP server in use since April 1996. - - This applications deploys a web-site from a git URL using Apache HTTPd as - the web server. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerHTTPdSite - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/HTTPdSite/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: c7098e7a7c77c9ce5c0e0f0df35b4575 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerHTTPdSite.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/HTTPdSite/package" - - - name: Docker InfluxDB - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - InfluxDB is a time series, metrics, and analytics database. It’s written - in Go and has no external dependencies. That means once you install it - there’s nothing else to manage (like Redis, ZooKeeper, HBase, or whatever). - - InfluxDB is targeted at use cases for DevOps, metrics, sensor data, - and real-time analytics. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerInfluxDB - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/InfluxDB/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 3981adf1a484df76d0991ed5d90f4bd4 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerInfluxDB.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/InfluxDB/package" - - - name: Docker Jenkins - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Jenkins is an award-winning application that monitors executions of - repeated jobs, such as building a software project or jobs run by cron. - Among those things, current Jenkins focuses on the following two jobs: - 1. Building/testing software projects continuously, just like - CruiseControl or DamageControl. In a nutshell, Jenkins provides - what's known as a 'continuous integration system', to make - it easier for developers to integrate changes to the project, - and easier for users to obtain a fresh build. The automated, continuous - build approach simplifies how new code gets integrated and consumed. - 2. Monitoring executions of externally-run jobs, such as cron jobs and - procmail jobs, even those that are run on a remote machine. - For example, with cron, all you receive is regular e-mails that - capture the output, and it is up to you to look at them diligently - and notice when it broke. Jenkins keeps those outputs and makes it - easy for you to notice when something is wrong. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerJenkins - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/Jenkins/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 5635241b7e0373777fa785c6bd737800 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerJenkins.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/Jenkins/package" - - - name: Docker MariaDB - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - MariaDB is a community-developed fork of the MySQL relational database - management system intended to remain free under the GNU GPL. Being a fork - of a leading open source software system, it is notable for being led by - the original developers of MySQL, who forked it due to concerns over - its acquisition by Oracle. Contributors are required to share their - copyright with the MariaDB Foundation. - - The intent is also to maintain high compatibility with MySQL, - ensuring a “drop-in” replacement capability with library binary equivalency - and exact matching with MySQL APIs and commands. It includes the XtraDB - storage engine for replacing InnoDB, as well as a new storage engine, Aria, - that intends to be both a transactional and non-transactional engine - perhaps even included in future versions of MySQL. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerMariaDB - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/MariaDB/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 5721494a219313c7cea4acf5599eb080 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerMariaDB.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/MariaDB/package" - - - name: Docker MongoDB - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - MongoDB (as in “humongous”) is a cross-platform document-oriented database. - Classified as a NoSQL database, MongoDB eschews the traditional table-based - relational database structure in favor of JSON-like documents with dynamic - schemas (MongoDB calls the format BSON), making the integration of data in - certain types of applications easier and faster. Released under a - combination of the GNU Affero General Public License and - the Apache License, MongoDB is free and open-source software. - - First developed by the software company 10gen (now MongoDB Inc.) in - October 2007 as a component of a planned platform as a service product, - the company shifted to an open source development model in 2009, with - 10gen offering commercial support and other services. Since then, MongoDB - has been adopted as backend software by a number of major websites - and services, including Craigslist, eBay, Foursquare, SourceForge, Viacom, - and the New York Times, among others. MongoDB is the most popular - NoSQL database system. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerMongoDB - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/MongoDB/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 153863e2a09daebf1b3ecc39d61e8cf0 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerMongoDB.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/MongoDB/package" - - - name: Docker MySQL - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - MySQL is a freely available open source Relational Database Management - System (RDBMS) that uses Structured Query Language (SQL). - - SQL is the most popular language for adding, accessing and managing content - in a database. It is most noted for its quick processing, proven - reliability, ease and flexibility of use. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerMySQL - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/MySQL/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 3a20ad21ad812995a9bbad51e9705e52 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerMySQL.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/MySQL/package" - - - name: Docker Nginx - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Nginx (pronounced “engine-x”) is an open source reverse proxy server for - HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, - HTTP cache, and a web server (origin server). - - The Nginx project started with a strong focus on high concurrency, - high performance and low memory usage. It is licensed under - the 2-clause BSD-like license and it runs on Linux, BSD variants, - Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerNginx - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/Nginx/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 9c18fc83ac35a206f5eb1620b527d742 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerNginx.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/Nginx/package" - - - name: Docker Nginx Site - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Nginx (pronounced “engine-x”) is an open source reverse proxy server for - HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, - HTTP cache, and a web server (origin server). - - The Nginx project started with a strong focus on high concurrency, - high performance and low memory usage. It is licensed under - the 2-clause BSD-like license and it runs on Linux, BSD variants, - Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavors. - - This applications deploys a web-site from a git URL using Nginx as - the web server. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerNginxSite - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/NginxSite/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 0acbbab1b8d98416c734a4e713e25cb2 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerNginxSite.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/NginxSite/package" - - - name: Docker Nginx ppc64le - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Nginx (pronounced “engine-x”) is an open source reverse proxy server for - HTTP, HTTPS, SMTP, POP3, and IMAP protocols, as well as a load balancer, - HTTP cache, and a web server (origin server). - service: - type: murano - format: package - package_name: io.murano.docker.DockerNginxPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host ppc64le - - name: Docker Interfaces Library - hash: ce86cba2f35a4b7b913770f5e35dc940 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.docker.DockerNginxPPC64LE.zip" - - - name: Docker PostgreSQL - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - PostgreSQL, often simply “Postgres”, is an object-relational database - management system (ORDBMS) with an emphasis on extensibility and - standards-compliance. As a database server, its primary function is to - store data, securely and supporting best practices, and retrieve it - later, as requested by other software applications, be it those on the - same computer or those running on another computer across a network - (including the Internet). It can handle workloads ranging from small - single-machine applications to large Internet-facing applications with many - concurrent users. Recent versions also provide replication of the database - itself for security and scalability. - - PostgreSQL implements the majority of the SQL:2011 standard, is - ACID-compliant and transactional (including most DDL statements) avoiding - locking issues using multiversion concurrency control (MVCC), provides - immunity to dirty reads and full serializability; handles complex SQL - queries using many indexing methods that are not available in other - databases; has updateable views and materialized views, triggers, - foreign keys; supports functions and stored procedures, and other - expandability, and has a large number of extensions written by - third parties. - - In addition to the possibility of working with the major proprietary - and open source databases, PostgreSQL supports migration from them, - by its extensive standard SQL support and available migration tools. - And if proprietary extensions had been used, by its extensibility that - can emulate many through some built-in and third-party open source. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerPostgreSQL - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/PostgreSQL/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 3bba519011243cdfc705c76af6dc72e2 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerPostgreSQL.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/PostgreSQL/package" - - - name: Docker Redis - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Redis is an open-source, networked, in-memory, key-value data store with - optional durability. It is written in ANSI C. The development of Redis - has been sponsored by Pivotal since May 2013; before that, it - was sponsored by VMware. According to the monthly ranking by DB-Engines.com, - Redis is the most popular key-value store. - - The name Redis means REmote DIctionary Server. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerRedis - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/Redis/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 7902cbabd16f08daa50147caf56366d9 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerRedis.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/Redis/package" - - - name: Docker Tomcat - tags: ['app'] - provided_by: - name: Dmytro Dovbii - href: "mailto:ddovbii@mirantis.com" - company: Mirantis, Inc. - description: > - Apache Tomcat (or simply Tomcat) is an open source web server and - servlet container developed by the Apache Software Foundation (ASF). - Tomcat implements the Java Servlet and the JavaServer Pages (JSP) - specifications from Oracle, and provides a “pure Java” HTTP web server - environment for Java code to run in. In the simplest config Tomcat - runs in a single operating system process. The process runs a Java - virtual machine (JVM). Every single HTTP request from a browser to - Tomcat is processed in the Tomcat process in a separate thread. - - Murano will deploy this in the docker service of your choice; - you'll be prompted to create a docker service or choose one - you have deployed (e.g., via Kubernetes Pod). - - Changes: - July 2016 - The package name was changed. You can still access the application with - the old name by the link. But now it is preferable to use the new application. - service: - type: murano - format: package - package_name: com.example.docker.DockerTomcat - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/k8s-docker-suite-app-murano/master/Applications/Tomcat/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 1d7a3477d386ce1ffcad890a242c9237 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerTomcat.zip" - "Source URL": "https://github.com/openstack/k8s-docker-suite-app-murano/tree/master/Applications/Tomcat/package" - - - name: Docker Tomcat ppc64le - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Apache Tomcat is an open source software implementation of the Java Servlet - and JavaServer Pages technologies. - service: - type: murano - format: package - package_name: io.murano.docker.DockerTomcatPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host ppc64le - - name: Docker Interfaces Library - hash: f0cc81331aa94f30c51d1b22914f6b7c - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.docker.DockerTomcatPPC64LE.zip" - - - name: Application Servers Bundle - provided_by: - name: Serg Melikyan - href: "mailto:smelikyan@mirantis.com" - company: Mirantis, Inc. - description: > - A bundle is the collection of Murano applications and - their dependencies. Bundles are designed to allow the - user to consume a group of related applications to - address a particular use-case. Adding a bundle to - Murano provides automated download of all the - applications associated with that bundle at the same - time. - - This bundle contains the Apache HTTP Server and Apache Tomcat: an - open source server-side executive for Java Servlets and JavaServer - Pages. The bundle provides a flexible, familiar environment for - developing websites and applications that use Java for server-side - processing. Each request from a browser is processed by - Tomcat in a separate thread. - service: - type: bundle - murano_package_name: app-servers - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Apache HTTP Server - - name: Apache Tomcat - - - name: Container-based Apps Bundle - provided_by: - name: Serg Melikyan - href: "mailto:smelikyan@mirantis.com" - company: Mirantis, Inc. - description: > - A bundle is the collection of Murano applications and - their dependencies. Bundles are designed to allow the - user to consume a group of related applications to - address a particular use-case. Adding a bundle to - Murano provides automated download of all the - applications associated with that bundle at the same - time. - - This bundle contains a wide range of apps for building - (from Git), continuously-integrating, deploying and testing - container-native, resilient and scalable data-driven and - transaction-driven websites and applications. All components in - this bundle can be deployed on DockerStandaloneHost or - KubernetesPod/Cluster. - Included in the bundle are: - * Web server options: Market-leading Apache and high-performing, - tunable Nginx, in simplex versions as well as versions rigged - to automatically deploy a website from a given Git repository. - * Java engine options: Glassfish application server - (open source Java EE) and Tomcat. - * NoSQL and specialized databases: InfluxDB for storing - metrics and sensor data (with no external dependencies). - MongoDB for object/document storage, Redis for key/value storage. - * Leading SQL databases: MySQL, the increasingly-popular MariaDB - and Crate for massively-scalable elastic SQL storage. - * Grafana for visualizing large-scale measurement data. - * Plus: Jenkins for automating continuous builds - and monitoring remote job execution. - service: - type: bundle - murano_package_name: container-based-apps - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Crate - - name: Docker Container - - name: Docker GlassFish - - name: Docker Grafana - - name: Docker HTTPd - - name: Docker HTTPd Site - - name: Docker InfluxDB - - name: Docker Jenkins - - name: Docker MariaDB - - name: Docker MongoDB - - name: Docker MySQL - - name: Docker Nginx - - name: Docker Nginx Site - - name: Docker PostgreSQL - - name: Docker Redis - - name: Docker Tomcat - - - name: Databases Bundle - provided_by: - name: Serg Melikyan - href: "mailto:smelikyan@mirantis.com" - company: Mirantis, Inc. - description: > - A bundle is the collection of Murano applications and - their dependencies. Bundles are designed to allow the - user to consume a group of related applications to - address a particular use-case. Adding a bundle to - Murano provides automated download of all the - applications associated with that bundle at the same - time. - - This bundle groups popular database solutions that are - useful for developling applications. Currently this - bundle contains Postgres and MySQL, but as new - databases are added to the catalog this bundle will - grow to include them. - service: - type: bundle - murano_package_name: databases - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: MySQL - - name: PostgreSql - - - name: Docker & Kubernetes Bundle - provided_by: - name: Serg Melikyan - href: "mailto:smelikyan@mirantis.com" - company: Mirantis, Inc. - description: > - A bundle is the collection of Murano applications and - their dependencies. Bundles are designed to allow the - user to consume a group of related applications to - address a particular use-case. Adding a bundle to - Murano provides automated download of all the - applications associated with that bundle at the same - time. - - This bundle contains Docker Standalone Host and Kubernetes Pod: two - ways (both compatible with any Docker-containerized app and - both offering access to standard Docker APIs) of aggregating groups - of related Docker containers on host compute/storage and network - infrastructure, and treating these aggregations as indivisible - deployment units. Kubernetes Pod also contains the Kubernetes - Replication Controller, which can auto-replicate and redeploy a - Pod with given contents in the event of Pod failure. - - With this bundle automatically will be installed application - - "Kubernetes Cluster". It uses image with follow components: - * etcd v3.0.4; - * kubernetes v1.3.0; - * flannel v0.5.5; - * Go v1.6.2; - * confd v0.7.1; - * docker v1.11.2. - service: - type: bundle - murano_package_name: docker-n-kubernetes - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - - name: Monitoring Bundle - provided_by: - name: Serg Melikyan - href: "mailto:smelikyan@mirantis.com" - company: Mirantis, Inc. - description: > - A bundle is the collection of Murano applications and - their dependencies. Bundles are designed to allow the - user to consume a group of related applications to - address a particular use-case. Adding a bundle to - Murano provides automated download of all the - applications associated with that bundle at the same - time. - - This bundle contains the Zabbix Agent and Server. - Zabbix is the ultimate enterprise-level software - designed for monitoring availability and performance - of IT infrastructure components. - - With Zabbix it is possible to gather virtually - limitless types of data from the network. High - performance real-time monitoring means that tens of - thousands of servers, virtual machines and network - devices can be monitored simultaneously. Along with - storing the data, visualization features are - available (overviews, maps, graphs, screens, etc), - as well as very flexible ways of analyzing the data - for the purpose of alerting. - service: - type: bundle - murano_package_name: monitoring - release: - - Kilo - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Zabbix Agent - - name: Zabbix - - - name: TOSCA Hello World - provided_by: - name: OpenStack - href: https://wiki.openstack.org/wiki/TOSCA-Parser - company: OpenStack TOSCA-Parser and Heat-Translator Project Community - description: > - TOSCA template for deploying a single server with predefined - properties. It contains a very simple topology template with single - TOSCA Compute node template that declares some basic values for - properties within two of the several capabilities that are built into - the TOSCA Compute node type definition. - service: - type: tosca - template_format: yaml - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/tosca_helloworld.yaml - - - name: TOSCA Hello World Cloud Service Archive - provided_by: - name: OpenStack - href: https://wiki.openstack.org/wiki/TOSCA-Parser - company: OpenStack TOSCA-Parser and Heat-Translator Project Community - description: > - TOSCA template for deploying a single server with predefined - properties. It contains a very simple topology template with single - TOSCA Compute node template that declares some basic values for - properties within two of the several capabilities that are built into - the TOSCA Compute node type definition. This demonstrates a simple - example of packaging TOSCA template in to TOSCA CSAR format. - service: - type: tosca - template_format: csar - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/CSAR/csar_hello_world.zip - - - name: TOSCA Single Instance WordPress - provided_by: - name: OpenStack - href: https://wiki.openstack.org/wiki/TOSCA-Parser - company: OpenStack TOSCA-Parser and Heat-Translator Project Community - description: > - TOSCA simple profile with wordpress, web server and mysql on the same server. - service: - type: tosca - template_format: yaml - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/tosca_single_instance_wordpress.yaml - - - name: TOSCA Single Instance WordPress Cloud Service Archive - provided_by: - name: OpenStack - href: https://wiki.openstack.org/wiki/TOSCA-Parser - company: OpenStack TOSCA-Parser and Heat-Translator Project Community - description: > - TOSCA simple profile with wordpress, web server and mysql on the same server. - service: - type: tosca - template_format: csar - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/CSAR/csar_wordpress.zip - - - name: TOSCA ELK Monitoring - provided_by: - name: OpenStack - href: https://wiki.openstack.org/wiki/TOSCA-Parser - company: OpenStack TOSCA-Parser and Heat-Translator Project Community - description: > - This TOSCA simple profile deploys nodejs, mongodb, elasticsearch, - logstash and kibana each on a separate server with monitoring - enabled for nodejs server where a sample nodejs application is - running. The rsyslog and collectd are installed on a nodejs server. - service: - type: tosca - template_format: yaml - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/tosca_elk.yaml - - - name: TOSCA ELK Monitoring Cloud Service Archive - provided_by: - name: OpenStack - href: https://wiki.openstack.org/wiki/TOSCA-Parser - company: OpenStack TOSCA-Parser and Heat-Translator Project Community - description: > - This TOSCA simple profile deploys nodejs, mongodb, elasticsearch, - logstash and kibana each on a separate server with monitoring - enabled for nodejs server where a sample nodejs application is - running. The rsyslog and collectd are installed on a nodejs server. - service: - type: tosca - template_format: csar - license: Apache 2.0 - attributes: - url: https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/CSAR/csar_elk.zip - - - name: Gerrit - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - Gerrit it's an application written in Java which provides web based code - review and repository management for the Git version control system. - Beta version for opaas initiative and still in development. - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.Gerrit - release: - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/murano-apps/Gerrit/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Puppet - - name: SystemConfig - - name: OpenLDAP - hash: e76a43f7ddbc23e918be8c220e773081 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.Gerrit.zip" - - - name: Puppet - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - Puppet is an open-source configuration management tool. It runs on - many Unix-like systems as well as on Microsoft Windows, and includes - its own declarative language to describe system configuration. - Beta version for opaas initiative and still in development. - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.puppet.Puppet - release: - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: CiCdUtils - hash: 197a53a72eb03b059fe04474fe212894 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.puppet.Puppet.zip" - - - name: Jenkins - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - Jenkins is an open source continuous integration tool written in Java. - Beta version for opaas initiative and still in development. - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.Jenkins - release: - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/murano-apps/Jenkins/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Puppet - - name: SystemConfig - - name: OpenLDAP - - name: Gerrit - hash: 797ade25d9d135bd10ca64e226661adf - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.Jenkins.zip" - - - name: OpenLDAP - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - OpenLDAP is an open source implementation of the Lightweight - Directory Access Protocol. - Beta version for opaas initiative and still in development. - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.OpenLDAP - release: - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/murano-apps/OpenLDAP/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Puppet - hash: 5ee48baf536d756b2038d4a6ef60def7 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.OpenLDAP.zip" - - - name: SystemConfig - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - Tools for opaas environment. - Beta version for opaas initiative and still in development. - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.puppet.SystemConfig - release: - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Puppet - hash: 65592272455e3ff6aef1da3836adc100 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.puppet.SystemConfig.zip" - - - name: CiCdUtils - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - Library for opaas environment. - Beta version for opaas initiative and still in development. - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.utils.CiCdUtils - release: - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Puppet - hash: b4372a5fcbc3b31727f1c570a1daf483 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.utils.CiCdUtils.zip" - - - name: CiCdEnvironment - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: | - The One-click CI/CD installer. - Beta version for opaas initiative and still in development. - - Demonstration videos: - Demo CI/CD Murano application - https://www.youtube.com/watch?v=waTqsHfnVSo - Demo CI/CD Murano application (with Zuul & Nodepool) - https://www.youtube.com/watch?v=p8ce-j2-a1M - - IRC: #murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.CiCdEnvironment - release: - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/murano-apps/CiCdEnvironment/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: OpenLDAP - - name: Jenkins - - name: Gerrit - - name: Puppet - - name: Nodepool - - name: ZuulNodepoolHelper - - name: Zuul - hash: cd38f06eeedba45b2c9ea6b90d6f4aaf - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.CiCdEnvironment.zip" - - - name: Nodepool - tags: ['app'] - provided_by: - name: Nikolay Makhotkin - href: "mailto:nmakhotkin@mirantis.com" - company: Mirantis, Inc. - description: > - Nodepool is a system for launching single-use test nodes on demand based on - images built with cached data. It is designed to work with any OpenStack - based cloud, and is part of a suite of tools that form a comprehensive - test system including Jenkins and Zuul. - - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.Nodepool - release: - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/murano-apps/Nodepool/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: SystemConfig - - name: Puppet - - name: Jenkins - - name: Zuul - hash: b826a70f6d04719cb9a40c4ff847f7bf - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.Nodepool.zip" - - - name: Zuul - tags: ['app'] - provided_by: - name: Nikolay Makhotkin - href: "mailto:nmakhotkin@mirantis.com" - company: Mirantis, Inc. - description: > - Zuul is a pipeline oriented project gating and automation system. - - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.Zuul - release: - - Liberty - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Puppet - - name: SystemConfig - - name: Gerrit - hash: 9a02dca9e366fb1914f1807308d6a211 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.Zuul.zip" - - - name: ZuulNodepoolHelper - tags: ['app'] - provided_by: - name: Nikolay Makhotkin - href: "mailto:nmakhotkin@mirantis.com" - company: Mirantis, Inc. - description: > - Zuul and Nodepool Install Helper for CI/CD application. - - IRC:#murano-apps on freenode.net - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.ZuulNodepoolHelper - release: - - Liberty - - Mitaka - license: Multi-licensed OpenSource - hash: e958895a54bb00756bdd8cdf62eea947 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.ZuulNodepoolHelper.zip" - - - name: CiCdEnvironment ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: The One-click CI/CD installer. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.CiCdEnvironmentPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - - name: SystemConfigPPC64LE - - name: OpenLDAPPPC64LE - - name: JenkinsPPC64LE - - name: GerritPPC64LE - - name: ZuulPPC64LE - - name: NodepoolPPC64LE - - name: MavenPPC64LE - - name: TravisPPC64LE - - name: ZuulNodepoolHelperPPC64LE - - name: CiCdUtilsPPC64LE - hash: 9248ba86e7591a3f15ff3d7d757ddc81 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.CiCdEnvironmentPPC64LE.zip" - - - name: Puppet ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Puppet is an open-source configuration management tool. It runs on - many Unix-like systems as well as on Microsoft Windows, and includes - its own declarative language to describe system configuration. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.puppet.PuppetPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: Ubuntu 16.04 ppc64le (pre-installed murano-agent) - hash: 0b5fd0d1ccbd828c0e413b251c5fb595 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.puppet.PuppetPPC64LE.zip" - - - name: System Config ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Tools for opaas environment. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.puppet.SystemConfigPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - hash: 2dec1f11143c29e970837a69258e95ca - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.puppet.SystemConfigPPC64LE.zip" - - - name: OpenLDAP ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - OpenLDAP is an open source implementation of the Lightweight - Directory Access Protocol. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.OpenLDAPPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - hash: d71a8de9b828042e7b32c499eeeb7c01 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.OpenLDAPPPC64LE.zip" - - - name: Gerrit ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Gerrit it's an application written in Java which provides web based code - review and repository management for the Git version control system. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.GerritPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - - name: SystemConfigPPC64LE - - name: OpenLDAPPPC64LE - hash: e26b0c04afa43defcd6e2b4fdb58d8e5 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.GerritPPC64LE.zip" - - - name: Jenkins ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Jenkins is an open source continuous integration tool written in Java. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.JenkinsPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - - name: SystemConfigPPC64LE - - name: OpenLDAPPPC64LE - - name: GerritPPC64LE - hash: 94ab95de075bd6b3a07a00cc06116d69 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.JenkinsPPC64LE.zip" - - - name: Zuul ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Zuul is a pipeline oriented project gating and automation system. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.ZuulPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - - name: SystemConfigPPC64LE - - name: GerritPPC64LE - hash: 761bb15834098fad0b0909aaeed2127e - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.ZuulPPC64LE.zip" - - - name: Nodepool ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Nodepool is a system for launching single-use test nodes on demand based on - images built with cached data. It is designed to work with any OpenStack - based cloud, and is part of a suite of tools that form a comprehensive - test system including Jenkins and Zuul. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.NodepoolPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - - name: SystemConfigPPC64LE - - name: JenkinsPPC64LE - - name: ZuulPPC64LE - hash: 957eba5d4f1dd63e92f829885fd5d785 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.NodepoolPPC64LE.zip" - - - name: Maven ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Maven is a software project management and comprehension tool. Based on the concept - of a project object model (POM), Maven can manage a project's build, reporting and - documentation from a central piece of information. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.MavenPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - hash: 00bf8b57515cb337d3e91134af33350a - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.MavenPPC64LE.zip" - - - name: Travis ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: > - Travis CI is a hosted, distributed continuous integration service used to build - and test software projects hosted at GitHub. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.TravisPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - depends: - - name: PuppetPPC64LE - hash: 1a2ebbd05f0f878a6eb0c6c200186a24 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.TravisPPC64LE.zip" - - - name: ZuulNodepoolHelper ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Zuul and Nodepool Install Helper for CI/CD application. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.ZuulNodepoolHelperPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - hash: d28c00c0738558f689501835887fff88 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.ZuulNodepoolHelperPPC64LE.zip" - - - name: CiCdUtils ppc64le - tags: ['app'] - provided_by: - name: Alexander Bochkarev - href: "mailto:abochkarev@mirantis.com" - company: Mirantis, Inc. - description: Library for opaas environment. - service: - type: murano - format: package - package_name: org.openstack.ci_cd_pipeline_murano_app.utils.CiCdUtilsPPC64LE - release: - - Mitaka - license: Multi-licensed OpenSource - hash: bc07c6c38a841c9a3249025891bd8bb6 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.ci_cd_pipeline_murano_app.utils.CiCdUtilsPPC64LE.zip" - - - name: MagnumBayApp - tags: ['app'] - provided_by: - name: Madhuri Kumari - href: "mailto:madhuri.kumari@intel.com" - company: Intel, Inc. - description: > - App to deploy Kubernetes cluster using Magnum. - service: - type: murano - format: package - package_name: io.murano.apps.magnum.plugin.MagnumBayApp - release: - - Mitaka - license: Multi-licensed OpenSource - hash: 561b664b51802696c90625ccc6d02365 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.murano.apps.magnum.plugin.MagnumBayApp.zip" - "Source URL": "https://github.com/openstack/murano/tree/master/contrib/plugins/magnum_plugin/magnum-app/io.murano.apps.MagnumApp" - - - name: IronMQ - tags: ['app'] - provided_by: - name: Iron.io - href: https://iron.io - company: Iron.io - description: > - IronMQ is a cloud native message queue solution built for modern - distributed applications. It provides the backbone for a microservices - architecture by allowing services to communicate. Legacy message queue - and ESB solutions are difficult to operate and can weigh down the entire - system. IronMQ is a lightweight containerized service that communicates - via HTTP through a REST API. - service: - type: murano - format: package - package_name: io.iron.IronMQ - release: - - Liberty - - Mitaka - license: Apache 2.0 - depends: - - name: Docker Standalone Host - - name: Docker Interfaces Library - hash: 8445a88d56eb558c0751b46290554898 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.iron.IronMQ.zip" - - - name: IronWorker - tags: ['app'] - provided_by: - name: Iron.io - href: https://iron.io - company: Iron.io - description: > - IronWorker provides the muscle for modern applications by efficiently isolating - the code and dependencies of individual tasks to be processed on demand. - Run in a multi-language containerized environment with streamlined - orchestration, IronWorker gives you the flexibility to power any task - in parallel at massive scale. - service: - type: murano - format: package - package_name: io.iron.IronWorker - release: - - Liberty - - Mitaka - license: Apache 2.0 - depends: - - name: Docker Standalone Host - - name: Docker Interfaces Library - hash: 27ba40000dc1885b830d3d370b3fb5b2 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.iron.IronWorker.zip" - - - name: IronFunctions - tags: ['app'] - provided_by: - name: Iron.io - href: https://iron.io - company: Iron.io - description: > - IronFunctions is an open source serverless platform, or as we like to refer to it, - Functions as a Service (FaaS) platform that you can run anywhere. - service: - type: murano - format: package - package_name: io.iron.IronFunctions - release: - - Mitaka - license: Apache 2.0 - depends: - - name: Docker Standalone Host - - name: Docker Interfaces Library - hash: 35511b4cece9b6f375fc90630790e7af - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/io.iron.IronFunctions.zip" - "Source URL": "https://github.com/iron-io/ironfunctions-murano/tree/master/package" - - - name: F5 BIG-IP VE Onboard - tags: ['app'] - provided_by: - name: F5 Networks - href: https://f5.com/openstack - company: F5 Networks - service: - type: heat - format: HOT - description: > - This is a template that can be use to prepare a F5 Networks BIG-IP - Virtual Edition (VE) image for use in an OpenStack cloud. This - template will add the required functionality for OpenStack - compatibility and upload the image into the Glance service. Prior to - using this template a VE image with a version of 11.5, 11.6, or 12.0 - must have been downloaded from the F5 Networks downloads site - (https://downloads.f5.com). More information on this template - can be found at - http://f5-openstack-heat.readthedocs.io/en/latest/templates/supported/ref_images_patch-upload-ve-image.html - General information on F5 Networks' Heat templates can be found at - http://f5-openstack-heat.readthedocs.io - Information on F5's OpenStack support policy can be found at - https://support.f5.com/kb/en-us/solutions/public/k/80/sol80012344.html - release: - - Kilo - - Liberty - supported_by: - name: F5 Networks, with a valid support contract. - icon: - url: http://apps.openstack.org/static/images/logo-f5.png - top: 5 - left: -45 - height: 170 - license: Apache 2.0 - attributes: - url: https://github.com/F5Networks/f5-openstack-heat/blob/liberty/f5_supported/ve/images/patch_upload_ve_image.yaml - - - name: F5 BIG-IP VE Standalone 2 Interface - tags: ['app'] - provided_by: - name: F5 Networks - href: https://f5.com/openstack - company: F5 Networks - service: - type: heat - format: HOT - description: > - This template can be used to deploy and license an F5 Networks - BIG-IP Virtual Edition (VE) and configure it with two interfaces. - In this deployment, generally referred to as 'single-arm', it is - assumed that one interface will be used for management of the BIG-IP - VE, while the other will be used for load balancing or other - traffic. Use of this template requires an existing VE glance image - that has been properly onboarded. - To onboard an image see our F5 BIG-IP VE Onboard HOT template in the - OpenStack Application Catalog at https://apps.openstack.org/. - More information on this template can be found at - http://f5-openstack-heat.readthedocs.io/en/latest/templates/supported/ref_common_f5-ve-standalone-2nic.html - General information on F5 Networks' Heat templates can be found at - http://f5-openstack-heat.readthedocs.io - Information on F5's OpenStack support policy can be found at - https://support.f5.com/kb/en-us/solutions/public/k/80/sol80012344.html - release: - - Kilo - - Liberty - supported_by: - name: F5 Networks, with a valid support contract. - icon: - url: http://apps.openstack.org/static/images/logo-f5.png - top: 5 - left: -45 - height: 170 - license: Apache 2.0 - attributes: - url: https://github.com/F5Networks/f5-openstack-heat/blob/liberty/f5_supported/ve/standalone/f5_ve_standalone_2_nic.yaml - - - name: F5 BIG-IP VE Standalone 3 Interface - tags: ['app'] - provided_by: - name: F5 Networks - href: https://f5.com/openstack - company: F5 Networks - service: - type: heat - format: HOT - description: > - This template can be used to deploy and license an F5 Networks - BIG-IP Virtual Edition (VE) and configure it with three interfaces. - In this deployment, generally referred to as 'single-arm', it is - assumed that one interface will be used for management of the BIG-IP - VE, while the other two will be used for load balancing or other - traffic. Use of this template requires an existing VE glance image - that has been properly onboarded. - To onboard an image see our F5 BIG-IP VE Onboard HOT template in the - OpenStack Application Catalog at https://apps.openstack.org/. - More information on this template can be found at - http://f5-openstack-heat.readthedocs.io/en/latest/templates/supported/ref_common_f5-ve-standalone-3nic.html - General information on F5 Networks' Heat templates can be found at - http://f5-openstack-heat.readthedocs.io - Information on F5's OpenStack support policy can be found at - https://support.f5.com/kb/en-us/solutions/public/k/80/sol80012344.html - release: - - Kilo - - Liberty - supported_by: - name: F5 Networks, with a valid support contract. - icon: - url: http://apps.openstack.org/static/images/logo-f5.png - top: 5 - left: -45 - height: 170 - license: Apache 2.0 - attributes: - url: https://github.com/F5Networks/f5-openstack-heat/blob/liberty/f5_supported/ve/standalone/f5_ve_standalone_3_nic.yaml - - - - name: Elasticsearch-Logstash-Kibana - tags: ['app'] - provided_by: - name: lakshminarayanan np - href: http://www.imaginea.com - company: Imaginea Technologies Inc. - description: > - This is a template for deploying Elasticsearch, Logstash - and Kibana on Ubuntu 14.04 VM. This template also includes filebeat which is used to gather syslog of your servers. - More details on usage can be found at: - https://github.com/lnarayanan68/ELK-Heat-Template/blob/master/README.md - release: - - Kilo - - Liberty - service: - type: heat - format: HOT - supported_by: - name: Imaginea Technologies Inc. - license: Apache 2.0 - attributes: - url: https://github.com/lnarayanan68/ELK-Heat-Template/blob/master/elkstack.yml - - - - - name: Clearwater vIMS - tags: ['app'] - provided_by: - name: Konstantin Snihyr - href: "mailto:ksnihyr@mirantis.com" - company: Mirantis, Inc. - description: > - Clearwater is an open source implementation of IMS (the IP Multimedia - Subsystem) designed from the ground up for massively scalable deployment - in the Cloud to provide voice, video and messaging services to millions - of users. Clearwater combines the economics of over-the-top style service - platforms with the standards compliance expected of telco-grade communications - network solutions, and its Cloud-oriented design makes it extremely - well suited for deployment in a - Network Functions Virtualization (NFV) environment. - - This application can be used for quick and easy Clearwater deploy in - Openstack. It is possible to provide settings via Horizon dashboard. - Also application provides easy scaling possibilies after deployment. - service: - type: murano - format: package - package_name: com.mirantis.clearwater.Clearwater - release: - - Newton - license: Multi-licensed OpenSource - depends: - - name: BIND DNS server - - name: Ubuntu Trusty 14 - hash: 23e90ca8ea130b18d3bf7afc458075a1 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.clearwater.Clearwater.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/Clearwater/package" - - - - - name: BIND DNS server - tags: ['app'] - provided_by: - name: Konstantin Snihyr - href: "mailto:ksnihyr@mirantis.com" - company: Mirantis, Inc. - description: > - BIND is open source software that implements the Domain Name System (DNS) - protocols for the Internet. - It is a reference implementation of those protocols, - but it is also production-grade software, suitable for use in high-volume - and high-reliability applications. - The name BIND stands for “Berkeley Internet Name Domain”, - because the software originated in the early 1980s - at the University of California at Berkeley. - - BIND is by far the most widely used DNS software on the Internet, - providing a robust and stable platform on top of which organizations - can build distributed computing systems with the knowledge that those - systems are fully compliant with published DNS standards. - service: - type: murano - format: package - package_name: com.mirantis.network.dns.Bind - release: - - Newton - license: Apache License, Version 2.0 - depends: - - name: Ubuntu Trusty 14 - hash: cf0594e1c808fcef06d7d31e765a1f0e - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.network.dns.Bind.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/BIND/package" - - - - name: RefStack client - tags: ['app'] - provided_by: - name: Sergey Slipushenko - href: "mailto:sslypushenko@mirantis.com" - company: Mirantis, Inc. - description: > - refstack-client is a command line utility that allows you to execute - Tempest test runs based on configurations you specify. When finished - running Tempest it can send the passed test data to a RefStack API server. - More information about restack-client and how to use it can be found in README - https://github.com/openstack/refstack-client. To become more familiar - with RefStack project it self, please visit https://refstack.openstack.org/ - - Murano creates one VM with assigned floating IP from the image - listed in the dependencies. After deployment, you can just ssh to this - VM and use installed refstack-client. NOTE: Installation script uses - as a source the master branch from refstack-client repository. - service: - type: murano - format: package - package_name: org.openstack.RefStackClient - release: - - Liberty - - Mitaka - license: Apache 2.0 - depends: - - name: Debian 8 x64 (pre-installed murano-agent) - hash: ae5fe88faa2f556c552a56950323e605 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.RefStackClient.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/RefStackClient/package" - - - name: Docker Artifactory - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - The world's most advanced repository manager. Artifactory offers - powerful enterprise feature and fine-grained permission control - behind a sleek and easy-to-use UI. - Free OSS version powered by Oracle jre8 and Tomcat8 - service: - type: murano - format: package - package_name: com.example.docker.DockerArtifactory - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/Docker/Artifactory/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: 4231750291184b827c360ae0bbf6bf0c - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerArtifactory.zip" - - - name: Docker ELK - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - Elasticsearch-Logstash-Kibana bundle. - service: - type: murano - format: package - package_name: com.example.docker.DockerELK - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/Docker/Elk/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: beefbcc0e4f2092c24fc8811815d022a - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerELK.zip" - - - name: Docker Nexus - tags: ['app'] - provided_by: - name: Artem Silenkov - href: "mailto:asilenkov@mirantis.com" - company: Mirantis, Inc. - description: > - The world's most popular solution for managing software binaries, Repository OSS is - completely free and includes support for all popular formats including - Java, NPM, Docker, RubyGems, NuGet, Bower, and more. - service: - type: murano - format: package - package_name: com.example.docker.DockerNexus - release: - - Kilo - - Liberty - - Mitaka - icon: - url: https://raw.githubusercontent.com/openstack/ci-cd-pipeline-app-murano/master/Docker/Nexus/package/logo.png - top: -10 - left: -30 - height: 180 - license: Multi-licensed OpenSource - depends: - - name: Docker Standalone Host - - name: Kubernetes Pod - - name: Docker Interfaces Library - hash: f8e6d0ddf8e0527d6027a583e6e955c2 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.example.docker.DockerNexus.zip" - - - name: GoCD - tags: ['app'] - provided_by: - name: Bartosz Kupidura - href: "mailto:bkupidura@mirantis.com" - company: Mirantis, Inc. - description: > - GoCD is open source continuous delivery server specializing in advanced - workflow modeling and visualization. - - This application will deploy GoCD server and number of GoCD agents. - service: - type: murano - format: package - package_name: com.mirantis.GoCDApp - release: - - Liberty - - Mitaka - license: Apache 2.0 - depends: - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - hash: bbb45a220c3f0a1e21b2e7fe77a4bc23 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.GoCDApp.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/GoCD/package" - - - name: Plone Standalone Server - tags: ['app'] - provided_by: - name: Evgeniy Mashkin - href: "mailto:e.n.mashkin@gmail.com" - company: OpenStack community - description: > - Plone is the Ultimate Enterprise Open Source CMS. The Plone CMS is one of the - most secure website systems available. This high security standard has - garnered the attention of many security conscious organizations and government - agencies including NASA and the FBI, who picked Plone for their Enterprise Web - CMS solution. - service: - type: murano - format: package - package_name: org.openstack.apps.plone.PloneServer - release: - - Mitaka - license: GPL version 2.0 - depends: - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - hash: cfa8d48dac18a6564c8dba87bc785715 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/org.openstack.apps.plone.PloneServer.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/Plone/package" - - - name: PaloAlto - tags: ['app'] - provided_by: - name: Damian Szeluga - href: "mailto:dszeluga@mirantis.com" - company: Mirantis, Inc. - description: > - PaloAlto Networks virtual Firewall application with http loadbalancer and configurable number of backends. - - service: - type: murano - format: package - package_name: com.mirantis.PaloAltoApp - release: - - Liberty - - Mitaka - license: Apache 2.0 - depends: - - name: Ubuntu 14.04 x64 (pre-installed murano-agent) - hash: c600d1a57a535d712d857df717a6b3b4 - attributes: - "Package URL": "http://storage.apps.openstack.org/apps/com.mirantis.PaloAltoApp.zip" - "Source URL": "https://github.com/openstack/murano-apps/tree/master/PaloAlto/package" - - - name: 3-tier Web Application - WordPress/LAMP - provided_by: - name: Craig Sterrett - href: "mailto:craig.sterrett@intel.com" - company: OpenStack Enterprise Working Group - description: > - This is the Heat template associated with the OpenStack Workload - Reference Architecture for Web Applications, at - http://www.openstack.org/software/sample-configs/#web-applications. - The Heat template deploys a sample three-tier web application - environment: WordPress on LAMP. There are two versions of the - template – one creates a static environment which does not require - Ceilometer; the other provides auto-scaling of the web and - application tiers based on CPU load, and requires Ceilometer. Please - refer to the README file in the zip file for more details on using - the templates. The templates have been tested on Mitaka release of - OpenStack, and Ubuntu Server 14.04 and Centos 7. - release: - - Mitaka - service: - type: heat - format: HOT - supported_by: - name: OpenStack Enterprise Working Group - license: Apache 2.0 - attributes: - url: https://a9913b12a4cd2c87c95f-589461742fc8c857ce7a37ebc26061be.ssl.cf1.rackcdn.com/web-application.zip - - - name: eCommerce Application - OpenCart/LAMP - provided_by: - name: Craig Sterrett - href: "mailto:craig.sterrett@intel.com" - company: OpenStack Enterprise Working Group - description: > - This is the Heat template associated with the OpenStack Workload - Reference Architecture for eCommerce, coming soon to - http://www.openstack.org/software/sample-configs/#ecommerce. - The Heat template deploys a sample eCommerce app on three-tier web - application environment: OpenCart on LAMP. There are two versions of - the template – one creates a static environment which does not require - Ceilometer; the other provides auto-scaling of the web and application - tiers based on CPU load, and requires Ceilometer. Please refer to the - README file in the zip file for more details on how to use the - template. The templates have been tested on Mitaka release of - OpenStack, and Ubuntu Server 14.04 and Centos 7. - release: - - Mitaka - service: - type: heat - format: HOT - supported_by: - name: OpenStack Enterprise Working Group - license: Apache 2.0 - attributes: - url: https://a9913b12a4cd2c87c95f-589461742fc8c857ce7a37ebc26061be.ssl.cf1.rackcdn.com/ecommerce.zip - - - name: Big Data Application - Hadoop - provided_by: - name: Thomas Bludau - href: http://www.openstack.org/software/sample-configs/#big-data - company: OpenStack Enterprise Working Group - description: > - This is the Heat template associated with the OpenStack - Workload Reference Architecture for Big Data, at - http://www.openstack.org/software/sample-configs/#big-data. - The Heat template deploys a generic Hadoop cluster using Apache Ambari. - Please refer to the README file for more details on how to use the - template. The templates have been tested on the Liberty and Mitaka - releases of OpenStack. - release: - - Mitaka - - Liberty - service: - type: heat - format: HOT - supported_by: - name: OpenStack Enterprise Working Group - license: Apache 2.0 - attributes: - url: https://a9913b12a4cd2c87c95f-589461742fc8c857ce7a37ebc26061be.ssl.cf1.rackcdn.com/BigData.zip diff --git a/openstack_catalog/web/static/assets_dead.yaml b/openstack_catalog/web/static/assets_dead.yaml deleted file mode 100644 index 9002723..0000000 --- a/openstack_catalog/web/static/assets_dead.yaml +++ /dev/null @@ -1,2 +0,0 @@ -assets: - stackato-3.4.2-murano-agent: {active: false} diff --git a/openstack_catalog/web/static/blank.json b/openstack_catalog/web/static/blank.json deleted file mode 100644 index e69de29..0000000 diff --git a/openstack_catalog/web/static/css/theme.css b/openstack_catalog/web/static/css/theme.css deleted file mode 100644 index 2000dff..0000000 --- a/openstack_catalog/web/static/css/theme.css +++ /dev/null @@ -1,225 +0,0 @@ - -h1, h2, h3, h4, h5, h6 { - font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; -} -body { - padding-top: 133px; - padding-bottom: 30px; -} -a { - color: #30739c; -} -.masthead { - background: #fff; -} -.masthead h1 { - display: inline-block; - border-left: 1px solid #ccc; - padding-left: 20px; - margin-left: 20px; - height: 33px; - line-height: 33px; - font-size: 21px; - color: #264d69; -} -.navbar { - margin: 0; - border-radius: 0; - border: none; -} -.navbar-brand { - width: 136px; - height: 33px; - background: url(../images/openstack-logo.png) no-repeat; - display: block; - padding: 0; - margin: 20px 0; -} -.navbar-inverse { - background: #edf2f7; - border: none; - padding: 10px 0; -} -.navbar-inverse .navbar-nav>li>a { - color: #486278; - padding-top: 10px; - padding-bottom: 10px; - border-radius: 5px; - margin-right: 10px; - font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; - text-transform: uppercase; -} -.navbar-inverse .navbar-nav>.active>a, .navbar-inverse .navbar-nav>.open>a { - background: #fff; - box-shadow: none; - color: #486278; -} -.navbar-inverse .navbar-nav>li>a:focus { - color: #486278; -} -.navbar-inverse .navbar-nav>li>a:hover, .navbar-inverse .navbar-nav>.active>a:focus, .navbar-inverse .navbar-nav>.active>a:hover { - background: #fff; - color: #486278; -} -.filters #supported-by { - margin-right: 20px; -} -.form-inline label { - margin-right: 3px; -} -.table th { - font-weight: 400; - color: #30739c; -} -.table tr td:first-child { - font-weight: 700; -} -.table tr td:last-child { - white-space: nowrap; -} -.content { - font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; - padding: 25px 0; -} -.btn { - border-radius: 0; -} -a.details { - text-transform: uppercase; - font-weight: 700; - font-size: .9em; -} -a.details i { - background: #30739c; - color: #fff; - display: inline-block; - padding: 2px 3px; - border-radius: 4px; -} -.bluebox .inner { - background-color: #edf2f7; - padding: 20px; - margin: 20px 0; -} -.bluebox h2 { - margin-top: 0; - color: #3597da; - font-size: 24px; -} -.bluebox img { - margin: 20px auto; - text-align: center; -} -.featured { -} -.featured .inner { - padding: 15px; - border: 1px #ccc solid; - border-radius: 4px; - text-align: center; - margin: 20px 0; -} -.featured img { - max-width: 100%; - margin-bottom: 10px; -} -.featured .inner p { - margin-bottom: 0; - font-size: .9em; -} -.pluginbox { - background-color: #edf2f7; - padding: 20px; - margin: 20px 0; -} -.pluginbox .lbl { - text-align: center; -} -.title div { - font-size: 18px; - text-transform: uppercase; - color: #fff; - text-align: left; - font-weight: 700; -} -.title { - text-align: left; - color: #fff; - background: #3597da; - border: none; -} -h1 { - color: #2A4E68; - font-weight: 300; - font-size: 28px; -} -.featured .glance { - background: url(../images/featured-corner-glance.png) no-repeat; - background-position: top right; -} -.featured .heat { - background: url(../images/featured-corner-heat.png) no-repeat; - background-position: top right; -} -.featured .murano { - background: url(../images/featured-corner-murano.png) no-repeat; - background-position: top right; -} -.filters { - z-index: 1; - position: relative; -} -.navbar-fixed-top { - z-index: 2; -} -.dataTables_wrapper { - z-index: 0; - top: -27px; -} -.dataTables_length { - float: right !important; -} -.dataTables_filter { - margin: 0 20px 20px 0; -} -.dataTables_filter input { - width: 70%; - border: 1px solid #ccc; - border-radius: 4px; -} -.ui-widget-overlay { - background-image: none !important; - background: #000 !important; - opacity: 0.6 !important; -} -.ui-dialog-titlebar { - display: none; -} -.ui-dialog h2 { - margin-top: 0; - color: #30739c; -} -.ui-dialog h3 { - color: #2a4e68; -} -.ui-widget-content { - background-image: none !important; -} -.ui-state-default { - background: none !important; - border: 1px solid #999 !important; - color: #666 !important; -} -.label { - font-size: 100% !important; - color: #000 !important; -} -.masthead h1 a:active, .masthead h1 a:focus { - text-decoration: none; -} -.form-group { - margin-left: 15px; -} -input[type=text] { - width: 250px; -} diff --git a/openstack_catalog/web/static/images/Chef-124x90-logo.png b/openstack_catalog/web/static/images/Chef-124x90-logo.png deleted file mode 100644 index 370f84c7f7b7a329ba352c41a76042643b0f1b12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3479 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 FV1kZ+lHC9R diff --git a/openstack_catalog/web/static/images/favicon.ico b/openstack_catalog/web/static/images/favicon.ico deleted file mode 100644 index f3b9bf9c440bad810cf0508569216543bb96bf11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmb``T}V?=00;0Z^jxCtqdT|VeYwrKHC@=MrDj-^FGe2(JtRF@5Y$6vSPCXRq}ie* z5Gt@t5g&Tclxb3_<jUb{q*<F<VQ46ksR`cp@0>HYMFl<Bx%}=q+;jiuoO|!N9G5_j z#6*r1fh%6aaZ=JU5%iKkB(O8b<&wVNOE??`EsKlaP**>|oUQl>_suD^JebAf{;zoM zpU3Mr-!buFiTOOUjD-b}q{4{ij}^O-%->;@Iv<qU!3f<Tgj652<{=o;Ba9pUNXzu2 z=tK~rD59_TDU$dSNE8i>N<RdZ;RWG^n$+slK~npm(#I*uxEWhsVSIcX9#0376{Sd& zRWnj$GkDEI@B*<?E3_R*(R)^Og03-hTVU1s$n*ce22DA5^=-yz=|kZmKWghjI8#21 zqT@p-IOv63xW%lKRzjw{i{1Mkv3E~Tn)E89Xd4-;eFP<CpJIK{hRt~e)O!9ZY#F22 zkspk9L82-n@4JclTV5pJ*^zyXp?P{w-mbUtyz)Hcs(Qv?>cNGJW3fKk5XCUk95swY z;fBpViu^tC`IGo_&=?z;&0AmMa_!_Fd9$M$)LKayc?LIj?ro3Vqq9~)Z*F0>=LX5x zA)GutiHgc8xNpp$;odB4S&fX&+zeOFD2^PRh~*_@{aRBKL-YUQ%6W&v1OG2C6E2bc z*2)+xy)at)VX=E*b&!3U<;Nyx08ZBkL+8%U8^iv??_=xFE9i#7*2U;7T@XxUj~Y5b z_pMxLhg|)uHl*m<&^Iu}^3i{AZhjfm^z;%!6Y~fR&%x{ag6=0XxZgU7n(HCvRA~Uc L&mvil16JcFha9?* diff --git a/openstack_catalog/web/static/images/featured-corner-glance.png b/openstack_catalog/web/static/images/featured-corner-glance.png deleted file mode 100644 index 730288212ea0fcdfc27fc696f560acce32de4ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey1|%P7U0DF6BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFjr)TM3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr<N!r zrKV@**($x?y<bToGsRXZ+|<{=x4=0yBh#a*C^fjsFC@7tJJ~Wt$=*)EroswnKyGSD zqC!P(PF}H9g{>0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWnQpRyp^1XIrJkXw znYpF8j)D=8uWw+XZ)BirU}<G)Y-M1i00l}w+lo@stb$zJpmqUywn`Z#B?VUc`sL;2 zdgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQFcVx-i<65o3raHc^AtcPCMM;V zme?u*T?+9+Zh@~a+~B-oXg~pjOur(rK;KZ$KtDGZ<S(%5;*y|Lgfp<JE)J<INYxKY zEzU13N(RP9nlel?FzoPK1X2iejg@~<CNNSGb6oP1OLJ56N<3X`m4GsODVZr&mWGCg z$v~iMYLJwoYhr9@tZQkKnxboLYHnm^VrpSzY-$WM2b+FZV^bGbM<)vxV<!tkLst_= zb0;?^XCp%wCr39^6GH=-UeCPZlEl2^RG8hFK)a!O&GG8BaxO|uEXgkl$<NP$rGkKr z{F40QjQj!xXJ>G%D`@y8CTHe>1T{es1@X5_YEfocYKmJ?ey##Iq^&ZsxPrJ4fap&l zHw5*8j?xDu7o_9^69T455EGsmfE;*sO3ef2p(0>r`M<0Mm|q#!dAc};RNPA9x$)@Z z{6@Ei&c?QcD+OyBSm&!qD+@O--l5yvI772pXTA`#e7iuzpUeH_JpJ}}lXrZ0Wpeo6 z^mfU*zyI4q?UmPEd8CkZPGHr<0}4miGZ=n&UfuTleO}YeE~i&KHE)^{zJ2!Rmkf)I zKTz=CEaxMh{xFV2j*EV6pUdw@9yfUVEJwstannAYi&c>Y|7NW&mYil6(QJRFIb}~E z&%PgjSlSLMeE51kJmhpkl|xlw+fJ$NCeCZ>__~@bud6NI5$1lSBk}*@w>+6{OC`jb zzQk45H$J>}efbQ%^M)&qT=?+xytzTHei9pBoA&zih8mwVjdS+w<H%M~ntjkIXOqxV z5q9>AvyRVxnDlQ}p~S0y|Nr;fo>?A~aXj-!=XH0<BRf<jy-K?e)G&(it$DR9_RWzz z3yn2m@pGCMS%eBtQkutbx$N3Qp0=CUmpA^D|M%yBfy9#U&#tTQ2tK__J^J8DF19sK zVjiw@H8XM46mpgK;P=pvoXIh5q65RU#uKMpj->oopa0HyPJL<Do;UU?U3dJqnAGs= v@~&rFY7iw^$K0Xo;3?B#AAGr>fq|Lfw9@)MyJN5Cg33rwS3j3^P6<r_b9ez` diff --git a/openstack_catalog/web/static/images/featured-corner-heat.png b/openstack_catalog/web/static/images/featured-corner-heat.png deleted file mode 100644 index 258da1377f93818f55562598157347ec73794f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1412 zcmbVMZA=?w96!=95erhrScfK_$7XS^y|*5vHwx<ul}?HXb*mqyT<@-M(Du&jVGB{P zL?JWkmf(l^78o&u$ec6G5Hk%dY=&6_#<2JjV+OixiN-lKvB0E02NeCVEXF6fd!GMu zzu*7;e}^0DAI{4y$%P;&&r|Da1p9XN$=L$lmv_$(fo+FU<5!x*pb}$b9<p;{fQLO{ zriE|h8Lso`i+m*nY2t#<ulT)nG%JQpjEXVE!xCUaP-S&oV%T<GfdhPt5V0ZG&rTw+ zz}b+4lo#_#PQF#B?UMPXu6iHa)y`Tuq`C^OjMG3tm{%A$9u7sKblirl>7~J0y+#pu z4WhK$kaeg0-Uiqy$~;V&%8e|Bn_-L9gj3}ft7Q*N02#$9Py#bzR+=JdjDR;50<6hg zkZyFjH*5jPhO{b*M5Aad7Bj_2lPI^KxYcS!F#;tBBS09Voe_nJ8za%uj0P7UWo1E9 z1Tg}u8kvCDq1X`M>3RrZ$?M%z9Eolu3Zx8;GZKoMFf<%i<61*Ul}7#_H*SfJ`Z^^Z zZRDe3hs=U{1WPkykh|L(Qh~r5`cYW`MPWiNk?jcc5yj)OA>fON6FAz6<2VbJk-`F; z(M;l`(Q4*7BS~3^ax+yykQABGb4xzuG*d1o=_2h89Ir9kEe^NCN#HJr-A$QsEW`Cg zq6!mX`HXErwY|<IZp)>eGS4WY>=VUMrVAQcMMaFZiW2N}u2mf_^D?XuQ7<1<3$-4% zi<gCGc+M@0VR$Xmv~Vjg{!<3l`P~1_APSs9)pq$;`(&;_PpZewVF1GBIPnoMLoyha zuRo@WAt-Cu<FfnW-v(}eSi4-Uc?H_4$vbx$f6Md5(S&FI)#X0&kxm?22?d)E{Biu$ zLS63(ZQbnn)X(Xs1|R!M3MPwp<{RGFQ@Yeg-l@m1oc7X}7mNGHp9r@Qr(1(R%qJZ) zl3VBWWt9!qjJ%MrpL;WL<IjU%9-3|YF4vsceoZioca@P?GMmIctJs$coOox)?8$<Q zQ$yS4re<~}e@(C4Q|B#zTdTdfzaW1Sso13pR}6IRJpa?XI;}QT=?`6nUizIGHJJRV zqWjMrDAWve=O0@Vd&;M;Um&zvbgp-)XCmcD!GnkOM_(`Mypl8WxZ7Q*O)tN8#_?lv z>*By-`i{MN{fix^+ftt-?;GnHKD2uE0c<QC@3&3tz5t@&vYHCbPj)}oH)^2$tKDqs ztU-6}bMaV-&!N|Q$MpJdvf=%AUwQu0K+*B^_k(<D{L+!c!i}nvzomP6`bJkIU93_w z_R*1{^ZgUg>IluJ`IecoE$(LGuk<e^)045090M}6(4J5V-fJ6fgID)GG%Z3OWEZ@z fS)7|U-wRJch6#3Wx@udA`d{?a)VoeOntT5Sn>z5b diff --git a/openstack_catalog/web/static/images/featured-corner-murano.png b/openstack_catalog/web/static/images/featured-corner-murano.png deleted file mode 100644 index d6e6ab5f00c1428b36bfcd436f6f01ca7b24bc2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1705 zcmbVNc~BEq7>_5E!r(0))g^e4YO*<jY!e{K29kkL3>l>ASe9fV+Z-D<iwVpK1`m!I zsRgN5i&PnlgLqc7DxgIQI%*tcK%s*dXs}d4fl{@!8z8oSI8LW;X7|1C?eF*9-)upA zT(qChd><N(=BHG^YHFYBe!Qnr@B1IOlvCS0Ql3O6;HjhyAyAq`ho_)`(uAa;Y826B zre8rtG}<IPrb!}`RI!j2H?a^mhGjQdC^n5Iim+P{tpO#06f_Mpi|NnL*V6$^C#J6! zsMsot4Ao<bECNl)iqmMb3|gU%9uW?R>=32EgpvqgHyO=V$S$Uj>V>GY`x>MJqY%;{ zrjI$5q>2Y*IDrBJRtQte=J0_~A&Vmj2^EH}1h|w8vco_wo5>bJ0v^QX0^^HLStE3* zkQ$B}w?#=}x}GF05D40AHkOUY!ihAHBNPfjHW%b_nG}L)%`}sUooTiPc{ISNRZCzN z62r}aTO*Q!XOLn#<>^=mCW}h-R<YSSo+v71pdGP*92OfincQ)WqOGJF{l|@WqOF=t z3ks@HE1p4Usd}UadB{}m-fzeaq`ZMXB`~Teh!MuM879<BDq%65`ohv-I!MUjaJ1B7 z3fL(+CZEUQF@=0o$K(k@xgmT(7?&sDdGx%CFXsthxkM_1dD1WrN6wdoN~5GQE(exM zq6B;n+rw3wtt4XBq8{5AWqX_}eJ>Z15hz09ga*fro-T;j<0Nj?;}$?B8?8DJtU|Py z*?q}y7iuhS7$vX`s4j}YO~7cTA?zJq{I?8@@pb<<gCOM;=x&#PwU6hD>Ph$U?J!Wn z+i^n8)C>{Su;kD9rIbdS*rbFd8hd+7X^eiRB%tZ9yT-lb%l11JrFF*Y6SEfsr{ysf zd4*oJI}a2eT;$WA{*vzc?!H{Vs<KjkK_fYSvoKh?kzaOX(W^ckLot6%iN08sQiI)6 zZTL2p-x%FK>)Iv%@YKg0ckkU8d9n}JobuW`duMaN&YL5jhrK>ip1Q!l_3CEElZ%$i z8Qt;LtV-1qbIqpHcgi1E-`u_8qDz&0m2AEo)VGe1yzt)oV6g2~at~q7-cthwbaVjr zpFeEK$-O;2V)E|++^^WTR!t~eDO1KY=hM5;=~Z>KSsdj<pD&ILIBcYBZT-ecpLtLA z-Tb9Ex<C}7A@|cEtZ(pfA9(w$?E3MA!lL1pC2!7n<!_0q_<BxjUelrFm31eBFSR__ zRNWzeR28!xUR-}grJgYKYfzVoIdHy%^PK$Y5mev5jrC3Kj^|ZZe=ro6xvn={Z-Rn% zXY;$j@YySF43ww4=I{l}6b`3>+iTpqp)Ilf7<ukRx_nh(-hv_9#g_Id+d?DbmSM30 zIgx8i4$geage=V86xV9KxHFP&#EV294RjBjToYK*+q`DD$NM4AtSJ-aZ5xryf9dZ( zGA%LTO<-YdhHOS|(x4p?^)~lB9SpRbSv>TK6FIJt*#DUJ@G`%=RhPk7#HuTExXP9? z4o9wSQ)p2?f#SkGr}KmDo!>i89jZD#*T2p7tf9y;eP!p_{61GuG1s@EF_KksbST%* zxw-W4y71S}1|>e(4DZ!{u6LfwYX~2n%(%Dw+Wu#bg-S<tNbz>QRC%a8#C0h#(b1iG z?!l2g%X99)hN4*m4H0aOy}KuVcTM}#WxX5wk%Vq}+|t&(m`?VA5@)g=JNPJ;n70R? zxI{hJWnAD_lD@_6OGx3pE%SsYq;cfJD?c_y=nBw;vzlFvRq9T7S3z{ll>I^3JB9=L ehwHcG%uS}{7ftm|Tfq->|2&lPIQXbEIrndu43|Ox diff --git a/openstack_catalog/web/static/images/glance-diagram.png b/openstack_catalog/web/static/images/glance-diagram.png deleted file mode 100644 index 4a550fdc25764f990f09c66a95bc1d80e56c5748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8024 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 diff --git a/openstack_catalog/web/static/images/heat-diagram.png b/openstack_catalog/web/static/images/heat-diagram.png deleted file mode 100644 index 5cf507c6162821853c0b01e2903250dce46812c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20401 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 DijKA% diff --git a/openstack_catalog/web/static/images/logo-cloudfoundry.png b/openstack_catalog/web/static/images/logo-cloudfoundry.png deleted file mode 100644 index bcd68a0a241aaa176dd0c5e8e78fcef799eb1b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19328 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 W(baplZ^obi0000<MNUMnLSTaK|CGxB diff --git a/openstack_catalog/web/static/images/logo-coreos.png b/openstack_catalog/web/static/images/logo-coreos.png deleted file mode 100644 index 32fda366cd372e486cb2847793f63869a9194834..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3402 zcma)9_d6Tv7mpx8Y+_W5*5%p+Rc);rRa<M-ZjB~tkBXQHwO7?%HF`x$V^{T3iP74l zT&q@4V((ED-`wwCaG&=%?|I(y)90M`Jm>Q{@utSQObpi;0001!-UIDN6dy`48#)l> z4&IQ@q&Se1fvz^->fclRr97Pyq4#-U?GFGzIQ}&%Kwbe4B?u1CGtvRi)3QLhn7Ymt zk|`m6H}l5<THc<Xu3iC@Cjg-3=lV3j)kO&97JwAe)iW}6k#PkB0E|_7+V{+Zer)BV zU-69<cB#*f*c~(0Awn^=YXU#A>iFdHCu^iwecGXZtf>`rtbd4ZdSz)$_Kf2&%afaR zIx^%6u}<G*A+9{1KeTVOy?pscr!|?FxJ2vi@fOSc+?l2ISq^WiYV2Rz7h2W6wrPs^ z_@%e&VHLO;uP-NmAGPjW%<Y_nm<Xjk_=7!O`^JB9=9;<2Wk`u>x_<C8Dg>aMx*Xt4 z^b!Iy0z*djy01?S{P~{r-Mo>%2^=IV$CAVJ$|{P}910loHRaF8I18HcBh+_cyFCFa z`w5%d>Ds$UiI8hPw|w$XTJd55NvZ5Ni=5Yp%pRPee4DB7O0k~&i8Vh~<R=x=do-vk zoYk3T(o%FUg_<vDxK#3b=O8mw4d|V_Vg=zouR@9<3dVmcH<kjKmCNo!Vc#N?H@&@< zrgRVo8Lde;&2Y^&G<%a0f9ho2xrtEQ+xH%PyUIQ~WkXScY3EAeskC5ldFTV@T4HM! zYh|`Wk3l_m@tr|SQg47toq@g&kWRqJ6#=*c7g(<yl$QGWUIltxb|`Q{$H-AI51r*x zbfWc_Lw(LJUVw~2m$2*u-W2}lw6(U_fw4}I4`=lD)<!h%No-W)qH+PDIW+>kAbxGr zDK=`q4=HiivDXJi3l^Zh@$qHzyDO1roT5IsJq_E3j~gd`ZX3A)Q&b_7Fe6v3M+r+p zL5i6dRwPxk+!exfp-43dcQIUAI&!-%d*eJj3NHr1m>7ts>|LXvB?G6iDK=0WhV+?F zdm;V&d}@9xCWeu~glm{$LK|yC;s=|?*W4?sG_dmmN|MV%r}8m4Sz1egKXw8um}}`p z?h)<vL78yxdOe}4fjs8c7acdUsIL5E!d7xXt07!N8zjd8Az13|o?}dm$5uDvqe3qy zSlE1+buHEl0`t88<`O;NG)inwv=u+z!D>=v{77?jVA`*RUOjMN%2^9?*;CZE#8hIv z<6KN{tJ8WZ;R{}{(}lrzg^TG9sm?KGSdomn9QzU%CueAFHCO-?7#HsjQI`U$0B5q| zqruSYfvnx<))7MjlWq3-^07w2Ld2xIULvbwy^Xb~t(D>RkCPY8<(#TVSq4FY3)aj& z=sN<ZI)#zy)OKn*we%!UT;_B*Ffr_I4Z|-4sky{uk!c9QPt?VpV>dK=I-Ome9BDiN zGN3noo$cr$1Oz*#p)1POI&9yezJS_dVmWdSp)t2Xu-na8ukgNmm&i4ImfK9P%~<13 zek?Qf5o-Go`oy)+N!?VGlD{q102={Ria#HsmMtPW@o8?R#=edRw>VM1d>xN9mERLD z1_uQ+HJ5)09R!>poEDfIYN_OFcLxonLO)J_dajshfpPzho|HK2R)e8L#JK41Gt!wm z)+6S^C9#7F&l{UvR$r_nC6mN@LpE4Lcz5ALcw5YYq2$Sn(Oy+|o6p|B2*?cM2SvPH ziT>Sz7@RJnQISO#dt}L)C*|L(9^nRt4{J)+2Gj_HTEwLimm6@M&tQxrwMpje#MdX) z`l4KO<lr@b%;@hJ^KyPzuma4VK_}AS>hHj^7*L*foM!D~e<Ax3LULqjV1f!}-q;V_ z-r(nMD2aM04#yXGQV`@=dKKF#YK_jjBG0&Lm0D?9o+8f#v_{o`LVJe~mt%0L*YYl7 zO4bAc&v^3Q0Pkb6nT#U(M^`Lja0CgpKA>|9&Ra?GqUBnBvzfBBW5GHk_BFk34%t7p zIV20lCf%V)csk`#JX=lL;sE>DrF%`&9O{^jLtZig5$hI4ArBv-&*!XWKg?#TJ<Fx~ zok<>Fzk^@3!a4#F*|SC9Q0|}~!-pW>YPK9bH_2aH#A-}V`C$6ud@NQlacX7Rlju#s z<Cuy14C3K3&Jzp=&|v&kPSn63*4MWnr)(|IUH4#QKJ0G$Z8P%Fo<;TEtYoq2hdZyh zU@#xmt7WykyOkcIS07T!NN?Yi3CXe>-HN~GuQB6D6<VfwWQ%bnItVeTFnP!+sxsUC z*}KW+zV(^7RXPB8^?qN!4_jg?4__r;X!UgdMR!|Rz(0(87by47*fjUX`c|cczG;%3 zqaqX%JK+uJ!p49i;3u|Oq{+as*=yiv-e|r3=OjkKfx>lqan#uLV>>vX-L?{bhP(5~ zMr)M7@|y+;^nxpfCCg>Y_=}enTIE=7W6EbgF77jt_;H#3{GCQII2PbMC^7~YG1K6; zOzkF9MlF2w3SYzMC;{?fn4BM*KB3u-H<VI&q}G9eK}`P1y}?#VYEqa<{phwQ6ZN9y z+voODDo$0W<}9bM+*=X#aR_^6Dy!^x{u39eh&8rp&x3nI5!Eub1n9$0b7uEwYx{!= z>uL?9T5K9lZjvOPG*y1`PNo}}D_8)hXqHw5DxdUL!fd{9mA$Whe!Ly~4V|Q<$kC7( zK8Kj`pLOVh#Hucu_t~i~Sj*2zoUIyNV6Y4deL4z?s@CIhjyD@R%f^#FsG*<cQv>>v zl5*x>`B0dv&GoJG$X&s4-~{UEc=lC%^aO3C#fQm0Y)l6;pN7WQxhWQDX|bv;Nv;x8 zA}?=Q&4ueeUxW$#6Gz$SwK$q2;JcK82hI?aKpFCP5$+KrH{f!0$>KPnOT4}1{A+Wl zMPCa#J8nh3tx%q0C(k9@b+I~Y$b67lU-#Skf>fGnB{U{E!6oTCrI>QNNGoqgT~;1i z=B)g<go7zx9=C#fW^l*#t*mGFuQm+Cu%rdJz0~4Qh+Hn%f=Wj`ek;#&8uwjhSiQdR z#hLsi%HdDy0ne&Q0AE<>0$!jEu6W^Bl#)LY5crFS6P>p5;p;o{8QY$fH2h%?d>UYP zYi71yF2m3;_e5}e+ghxlcO0(a<n&~ghf@~5s=EtdZni=Af9np9G)}{8kqiwptnnkn z8fppjO`?lXw{|ghPlH-(0Po@H*!}I)fWq9v<`ntj!AXwOJ2-eh*U{i-tu=~58~&6g z4n0?PPsU~D(>UxgX7p8X5?VZtjWYc%1xZoc9=Gr_=`RMycc|ytvf7634;?w_O`B&! zEF>b{<QvQb>=a)}M_Z?ZbJL27+hj&uxRK(9tPP$v3F(IK?j=<8wmnf;!h#sQ83bHZ zhP#7`O9JKwd`%_p`pV*#(g=HNzC|p*2mLp~M|&?qqWv6cjN$kh$}rraX+*<1-nlKy zzp2Zs5!faXG=C{?`!~jU%)Klh6c_07WmGPo@jZaM6Aay)wW}ZA-;>h$mnZN?DsL&R zsk%E~MY;v-Swqh=h{bX%Sq;1GzYkFH^X7kQsh=Z>8dn2{TJ{@KH;r;k%p+|+XOyh5 zQ2D0DM&Nh*5%m7Bz=M5UrmYw9jF#wKK`%2Wd|gSEwa?j{v7j`LL5<PlCVocPqSJ%c zfm)uzR6Fi*t)M2+48s6AHfTw{xZm1W38y0QUa3b^6eXtR6kyz8f-;5a7U-fbVYU2e z{qJHUSkbPi!y?(1&4G4vnUnq&{Nh;$QK9Os)Z(`E4eqUki{QePf9x?Kzk@}~q^G2b ziHo0404#iYbLJws@(e8;O>RxihzlQ7s)Oj^;==Zu`2@K=epi9hZ0r@FG2rOf-s0Y7 zPEfWsg(=o%S+3~HRF{{&?oi;+j=o1CgHyY`3LUt*Sj_Guon9a9{jwrn4P;?>NY2Qd zH*~9a)y`10Qnq}n*&^ACXeyuGiBlqHMZaps++6mJh~}M<0c}QS9Jfn9eg6Y{MC_%^ z!bkVap+OlVCGlJf!^=94Z!?G9<bcfkYYR!Ih<G35zf@mG^CC^UgtbOJiNlAv8OCw_ z?9T$|CU>BJYZjV`U$|5hj>L4SjrMMdp?+zn%(4|W4K?@~Co7Rde!#eyeF<*M_rt2l z3}r>$0~}mPx=B8L(ZFAi%gOP<UNrK6LkdT?CFG_fCHSB{r_KX~6h#AlO;C<_Es=<; zy8?x-@U(V(qclKk#^R)@_(6Te{U3YCdZUD}0$OgusSSPThV1W6bq2DwpNdg%F4`nc z%5qms9c6z<08QAu<mmV-1QEhgwscE(!{dafOuC(=yGor35j5pNFr&FF91R*2&?n=) zDQYvlZrTLcrdoT(P6Fxc26O!*79KY;luQsQsHd8m{WF&Y1!)MEbp#}8*Ez#h!Hs_{ nrLj$Y`LCM)|J#9|=Kj@3GY_F#5m3Q@R~kJXW9=%<Cz1aHD^OPZ diff --git a/openstack_catalog/web/static/images/logo-debian.png b/openstack_catalog/web/static/images/logo-debian.png deleted file mode 100644 index e76dcfd19929026d1309fa1d688e8e0fb80255ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10314 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 U;&lG`d%I6jR!yct$}Hr60Qr}yyZ`_I diff --git a/openstack_catalog/web/static/images/logo-f5.png b/openstack_catalog/web/static/images/logo-f5.png deleted file mode 100644 index 5fa67b63a854f3a768737cea9d44f489b03b6160..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18333 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 diff --git a/openstack_catalog/web/static/images/logo-fedora.png b/openstack_catalog/web/static/images/logo-fedora.png deleted file mode 100644 index 3412f0faca6d041bca3d9c091536388bbc8fcba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9798 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%0An%x$=(!uE%OH|R^b9pewCTHbQ?qcI7nr* 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 diff --git a/openstack_catalog/web/static/images/logo-kubernetes.png b/openstack_catalog/web/static/images/logo-kubernetes.png deleted file mode 100644 index b625b1ee267e8d5540447dd011f74eafb5a1772d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8680 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 VSxF!f|LfliwP)H&wF*`d{|`MrBU1nX diff --git a/openstack_catalog/web/static/images/logo-lamp.png b/openstack_catalog/web/static/images/logo-lamp.png deleted file mode 100644 index 318b4ccbbabda4038fe9acd9976a76d345ec68df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8372 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 MX%(po3DZyi12QnZGXMYp diff --git a/openstack_catalog/web/static/images/logo-openshift.png b/openstack_catalog/web/static/images/logo-openshift.png deleted file mode 100644 index 45c8ca6862e3c7b5fcf92a9ad40cc7af86ab4fcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4340 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 diff --git a/openstack_catalog/web/static/images/logo-oracle.png b/openstack_catalog/web/static/images/logo-oracle.png deleted file mode 100644 index 52469d8c5b73b7eb9e55898241c0f52bb7bbcc00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5147 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 diff --git a/openstack_catalog/web/static/images/logo-pivotal.png b/openstack_catalog/web/static/images/logo-pivotal.png deleted file mode 100644 index cffec67c8e505574a6c8828bb83afa806f6774e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12126 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 diff --git a/openstack_catalog/web/static/images/logo-redis.png b/openstack_catalog/web/static/images/logo-redis.png deleted file mode 100644 index 300f8e8360373753ee9b9cddd8f6c492975e0d9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8819 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 Ugu}(~U%!DU%Bsm!N|^@#9|(w{UjP6A diff --git a/openstack_catalog/web/static/images/logo-wordpress.png b/openstack_catalog/web/static/images/logo-wordpress.png deleted file mode 100644 index 6e2b580100d6e3b1f30606cee323241f3055c50a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7977 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 diff --git a/openstack_catalog/web/static/images/murano-diagram.png b/openstack_catalog/web/static/images/murano-diagram.png deleted file mode 100644 index ef9eaf5193377736f7aa486ef5d3c567a6e6fa43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11642 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 aqk2hfe4>8r`4VS;2Iy-)2GwXfzWP5BCj3AE diff --git a/openstack_catalog/web/static/images/openstack-icon.png b/openstack_catalog/web/static/images/openstack-icon.png deleted file mode 100644 index 2b4c086974c08ed303cfe9527a6c298643e7e1e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6755 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 FV1iS_1Umo# diff --git a/openstack_catalog/web/static/images/openstack-logo.png b/openstack_catalog/web/static/images/openstack-logo.png deleted file mode 100644 index 5947d2ce7a24ee9a4d0abfc41b019fae15ca772c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5628 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 W@S1!<OTMfC0000<MNUMnLSTX~CieOO diff --git a/openstack_catalog/web/static/images/plugin-icon.png b/openstack_catalog/web/static/images/plugin-icon.png deleted file mode 100644 index 0f5b29212dd02ed578106b3e875b0616b6260a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3437 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 P00000NkvXXu0mjfX@+a- diff --git a/openstack_catalog/web/static/images/tosca-diagram.png b/openstack_catalog/web/static/images/tosca-diagram.png deleted file mode 100644 index aa6d3f96179b714d2f34ba7728067c5500398c5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62182 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�Rr$cGqmSHP^zn0!{bwF$68X_i`8%=#;UI+fc2sawju8-YiU3+c_abK!c!+ zY!aqa*@7<NLNa)$!=-WXdPuMg=ogw-gYSPZN@c3kn5mq^rQ=?>?G<x+vxjQ~v55yX z<9Mr~b&#`nZE37|?&8E+wcN|vb|(iRC}&s#1yK$o=#|bLzX&HmiveK<^gryn!CSto zy<LoPhoVV$m1-Vt<?!%Hi!$Mo4qUSbIC0Ob*rF)PPW;)uBM@$iWx+#akPLzfqEIV$ z{>B$Sb7g$C-g))CrRue%8|AgFw$p00GF`9Zc5%uI1)A|2$k(uga1+<PKrs7JjID14 zJIFt2_&=3A9!~YTk=t0u>j1x&z79Y_cTtSUBvyBtL5MCEM-qL0{%QNMf@X$BiLM@m z<|V>npPi+}Ptx6@+&JtOTiE4c9X+sCt`tenD8CaVTjek1Be;;3c`&$800{^Yf|cdu zw?jSnj&JLizkH8RDbc{Jolhd{WerZ>{6j-qSkP`X=Y-yQURzH7#h?81=wJMa{uT(L zzkg3nwm()NV0W`<(1l4})6Te>m5)ukh!6WB?i(-RSbhmR34|^-0@IEiSf}H&rLkf+ zBNp3GYS9Le32{knCxg5YgZ~@b*|iHxmE|A4JF{9VbvvJZ@cJZf%`4D=&PH&W8W4=+ zs*I7?;l=?4@OM8{i$AyEFT8@W^bS-o635;CezHQAmMQw5nN)ny>O>i&8)4|xgHUEZ zn5Wjd?4fsC_C4Y02@tP2hEHysWy2-Xs197`8fPONE9O|_0c{p;MRN8}ZsH0)Y9v?{ z6-`650a>Y{f?1#t-4a5re1tYZ`nwRs-<kQwhrJ=_n@QDwCTve^_rgZv>A0g26DlnH z$8Af;ow*RQ+a0%a;p*7-k$vkO*9sim1m;L45LNgS#3^i1f{6OGu~wiqn8QNWeLw$? z&ldjmZ+#}nnVN@KTo!J0@M(#>a6f^rd)R0nw0f@B>bhP57vacU2AN1#`YWtK+<*#v zHn{QF%tZ6aTFIM#aBgK|yX&lPZD&?)Y!q*<Zsu0DwzG|P$8FOeb{}+cxoEfB$#gm% zHZd8+o<)}(I&rWTTYfk>790pJdHe1^<h!*}c)|ZgT+aO!T+aQJx@b1YzVCWkKj78$ zEu(GbvTY~Pap5%X!^MR_F3Ow1b%o$%Y}1}k+#W`suymg=b!1=|l#6{_+?`EV!r>RR zBtHm(_|LUg<MPbUp8tq$kAez?nkK0dPM?M)rvz}o2*Rb4e6src{@on(ELGV)Y}vRq zDe!xk;X8DH2UG;uvW0^>_{06dxWW>50M8$}i3PXqqK(6(V$wlH$DiZ?*>I)I;=U!k z7`Cr0S1w$-KDLZOHo)Bu#ygkl8;?J9HHVHV6dH^}q{ojK9a4GGM@j`qj4JA90r#6f zeD+!G<@u***UY^)pRAA-0+uEceYW&VD1{O?N$^8B>4(^qGLCFY+aIx@E`a~TDGP8z za`|b@R&o|r$88*Ub4<K61%ZJx2s-vM;|5wZMqKM??W;EnC9ELJwh7uqF#y#kdr+={ zOBNC3K}W*9rF#5EuwuO+LqE)~o;-7AG5WdV`KYIF;;zJ^2W(wzJnn*=9u^!tuqj&E zDzq<LuQe(K&&6ppDP$Gm6z46(P#kce){+`#0EZqrfTfhCj}@pw7uRh!G3(kw+36Gy z@ai_!-`veczP-7f?G&JwMLM96btsV!=eAoMt*m2P0Pfu_75oX@%rr5Xv^CuF6$SAM z-VQSSu4lG8U3b0JvA3aGY+`2HY_%N{#+&VyyVdCC)>qey8{2Jjd#jsm;p%`+Qs}k2 z9j!N>o9Qmye=(Tz7K6DtC>>7I<CM2vR88uHUgw;tVP6R*WVpvRbR%DbF42VAAhGH7 z29%kGWove-k;i?n@S{a=k*KI}ixMlvCIN7(NuZ{PzZG|b*T<dnw3qW^GCKw9-DSFH z%$!)VEi03W{5BL2b{VfSRIxx@g=!7=HqZ@Qc<mxK?1ztDuN<1*C}LL*76eIO%{-u< zo%U(UoPq`aD3tuV*6q1V7njQKTv;h?;Yo{p)OGFCKR9&dfrG2#CG7H{wFrqr!ZU7S z^8mNR2i{{Fb25W%d%sZiPMlA)GxWF^*BIq^Ps}GPWJM8Zj(=;psCANH?YBWu50dLb zu!_iCcpyF*K8%=sTF>+}!^7P`wvW>%SnYz6R|r^~vBrWC&d=a07T=0iwbH>^ba8A} zlt9o$BvDPJMH2MGBbtsVLrSxbTj@3JDyH)1>;KJPHg_q>2MX%t@pwtQBAy(H%mCYG z^&Vbr!RI?}@540=SnBX^t`}R4)@FHXyotMQFx%=ka@i0?#za5p9mG+6qy^BiA6D1K z9lJLX<yx=f)`~7Z0h>60wgt9eTa$)G`NWKU&Azc#fPl+SU@I5&)@eq9H>vy)dB}Wa zy}~WRBmrrTLeSFf7;JEA%(U@j38so!+}Ko(irpDdi%Ai>Gt}cD6oGzdwR@hujg9)7 zJ>OpM_|`_JYp=JO&W)Rm;^j-%s@HC`jE!|OvyoYI+R@pvw>mc;p3FZTpE`@r>7gAp zly@eFrqBv;DoLkHZES2!!Yy>ThFhF!!F^IjV&dw?oS3=eGzNGs3N4GgvrHl^Z8_4S zc7oR(bmKY(_jkspavS=WX)ylO8+{(*VC)~l4IND!elW3{z{G+ewmM?V7Iw{G4?JFf zfSN6v35`eZTdLC$WAr45M5<v??zC}mji+T6-a#w8v5|jaWwmml2VE6(|8y;74(+-5 z?$xpNM~^K-xlDU)(Y6G0=?7_ta1dsh3uZcWr-YGwEmv^=<E4K$_q_HCmq-tPPtB)5 z$jb5z&u3Xk$yhK;FfA=RI3zowWYw)45t8=S;5!WQ!VX@?3UHSNj#%TI0#u7wx=9># zB(gEFg^<NvcEv0nDH01vL<iA`KT*MwSZW%Ba!{BQECh`|?0Za>;kbT>WZe;1Yt@Ra z@^+j}TpYZ`o@Ok6qY=@KY0!4y4JiC|dQQ;nIey2-nGy@F6^1_9$cP5Y%tnx)8pNhW zgI~bmVi&y%H9=+F-uCIsu-?UqRoBNOC?R&l;=nN^Eu@rjV?AfQb9KCQ0Jm+8SK8PD zM@D2tJP;WWP6`y55h$bS7cmHw2?QlFA%1CgOP?&r28Pm$bYQudEn_T9Fx$jM;Q0Ut z1d>C91KWNgTq)@Vfw_&#xL10fd40R>T*Thuw^p}u?_OUkF1>lVxb}nB9&XHI3*}ku zBm^85$6#o4{U$aaMa>pIhx2p=9nP=deKrVMWN$*PgwBnAkLQ8t9#nd<fYQmbz|kk4 z9Po+(OO{*sMJO1S;7KGcJ_`Z0d~S91!^{>^j30-!s2`r0wxUeKMfvk#<lu7uxP(1c zB`mzsiO4)kOt%9Ym~ob|P+ZDppvggDi7%2Pppz;wHKI+BTkwghnl${{`sEv?7p|`7 zH}EBc?O<5k)$~FTTe;_7pSyl+Zfy+e2dp*7_R!}(WstTL(VobYW(A8T857|7KP+Ub zZ!Iofy0N(UAwP!GGO+cj5wau}({c;iM8^^pAge&|U(`wJ2lS4LP!n_MKA;^`aynM& zwV+97exZS&JAAM?8;1{w47^eu>D5xtb)ZioKV>5XDkx$yq+mdJzk)%ptYINI(4cyV z+`!8JogC!2tCG;O*my56v7;;~rX7WH7K`jrfH;A0jiA2_Fv|<*(r_Z0>6JX?Qps$I zZjMjON@vdT%7Hd<2Cv}aE?K;SnrZd$WJXSRvEGKK0kN+X0uYZ=TD{lanU1DvP5beO zu0Mz)t(esac1d1=qs%)lq+}U!a)^#Te<=k;4|vKwHSLorPIOKojR}~rCT7MKS3BbR zK7R^#QyibF(bFurq&m{Cd4c^-r|rD4_P5`B`Qq~QYrp!Nv#T#$I|)4<sSlpfydaB> zu#l-ZYYcP-eZz>Y12mk`i3}9FT5LOb-9p@~C3BT+V$gmODu}0WauCNwQG`IjrdWJ& zXxFh=xcyN5?2mwurN={Y#JIW)*1EYMbnse}hnF9$Du$dg$_Vul?kIqQ7H^T+KXLrx z3{)v}j{<`G|A|$ye+XWr^(z~Khy$O4wr_s>=2GG9Za0VL&!DwQun2A7P!OK)dH3@8 z#+9YY7WUk_F6Pt3S>i3_AvjFVl;7kU7^tJL?t)42Q%=_TonJb7^n2gb&Nq=>q!_?` zaM!0s$nI7I`tlPK6UipYBf%&@D;02S+I!SCNvoC`R69tas>9XoMrfj;;58mOkLtrv zJm``GL|<HqG=n;$1_U6i!sAnA8~5|lCD8ZW1av)$=7E9OVg-Rq8K7Z{&sV&0C1$f- z&&F2Tw6lu=K$dSnOj-s}ZYqI<g_j=BEMmHf1&zh{x$`H(g}E^gk0mxS#i!dGF<I2H z5Egr0>~{Tz)_v*hT!4cc+OdOc_u<{D5>6H23xRSHKO#%YJ+0(HUc!Y?0R{*Ol%@hb z!Viv00D(bLN}yD0G6!;#i&_T0;`>t-oa(}JK+qLN+8FN4m`A;SWqeF~@8HDte}4R^ z`$unFD8Ks8{^T25o4pwwZ>RzZv_~=CjRj`hFvj_zze6EwM+Od&S~!*qaZ9`sSxQ>T zgFjLC6wZ;t!91Yy;2B55Tx)K3+o$}rm<0c+G>gW9cG_qhZ`tKq!NJTvpLj_TCyK=V z6(}U$>&E>R_zHvu$2xLgy|{03I}ag954)!&l0s0hNAN@`Xv!m+#iI3YHnuZ=cyX(8 z1$U&BFvMlBPSP|DY*~al0(oc8yt!`~cQ%*t6@j}nB!>ky;2~5(*ouIic|*WrJiz;6 zhW;~&HGWZh_WV2AJ-j^TQ!8Y7_9Qztm?XHA`pB(R5^+#;SmGVU-D89L0y(r1X<+uu zhUo%;6sDX;1c)$E#rVN90GJBPdlDGxUfDR&in~f&$deFHw<>I*QXp^eOZ;QuLo+}s zlN18vl4jsSoFH5@RsxgY0_;>&zjRV-9leow?gnlg!DAnBxr+@{J;(7|k#4o#T`o1u zR}O9Ct9t9;^u~QSFF%C~O0w9E0HMY7r5OO{AYZtsa-}p)sTzt`;BQUGuoAZ#PYj@m zF5Q(%;m86fn&T=q;6HAe@k51N_$53G^Sh5dy!x%P-(R`(@BiX{oI#=cU7!eo+F39X zzp7!e%Y5a6$b2csG%wi1LXmGDD2)xFD$ED*$yWuqivCmOrp3Vg+;^?jWDNSJb{@-} zMZ95NP9g)BapOX64Iegm@c_cm#=QvE7mi<^!T>AoZ=iC^8sYkp92$fUTwr(?PssdP zYcu=W<?TAQTA{U~B5-#Iwp2zq;S8ah7`fNpn_PeLGnYCUJm-^f=qoejcfakV1E0c0 zrUQC33jMm3N&e`1{KU%Q;!8Nv-XDvV6nF3Z#D#4CFamXcMU_gkL1GbqrpgN8Y5|+! zWEfFwa7)082CE>td!FF!M7+ujb*6=vsj)i=^A<dGN+O0Pvpc6uyI|+WA{&YHrF09) zh7gukyQKcGLEUgex9}LWfrnos3)@$*0)Yt_{^LvyHcns;2Td3XLep}PB~%#5RPd6R zN^blOKD)^?XspsjP-F&Wr7cj4=NFTu@^ri$E~5+dg4o16-$B%lt+0tV&^9k!sjcCN z^3sEca)*!3Zr+DG4Iae1aJbw$c0d3o_xK|cfHt)T^(;ukk04ITTaX|k6>3D$2nb<> zlR6gw!FO526rMUC#ieac#>rHeYUOY{)d{@sesIhU4?q6I*0XWt>N~&l2c@o#*UGUZ zir38Xp^7W~p{Ygd#d;{V28&GbvxBeHGW#(^R7#V`UWpK8Aq><RKJ`Y|aPZ(}0e3ir zxU<47XL0{z39pgjd2if620biFiMQ=^s0kA1@a!h`#jaOzTb+1qnMy5+3y0(Y)e!|U z6JSdqT*j<#b=vO#`xoz&8__o8cCv*BPfg#z^_FPSUFg7iSS`UW6Sw!qg^5*MN`y<B zI@r5RH7n~vxCB1NPZ4Prloi~V&C*@Sf6Gn$wJ&{1`yL?fNkx3(LbiVxft1xK6&vcz za-5eTBCcNnR2LGupN1HQznvfOjP361UUL=KELY+@zUWbbAy!7Qv0nGlad4l2I7==y z2cVJuks&%Lf2NDW$Yw)v+~Fa_@QP1t89wf=x`(DdU4k+cJGU&uhH?}Q+=76m#hC=h z>@mN90Hzfi?Cli_#o??~`bpA?dLUk>QbMg0l%>yp!m~)L@n?u3i<leMf}fvrx?7dY z9jth4;}*-c5U;jgx>&n<{YL5B4{Pn}0|z(eaIwy#6SdX@*b;XD`(Z0M9VYde#7jcO zJR=)<hzx~WwhzHi87OEK<q>2dp6DJn2;wsI%Z8K$N%-XtwIjr$i$Nzaj!S$0em3V- zAHV<lw<ACJ{%`%!aWAJiA-W(PSA>Lx7!dRE0YfMc!Y|r{aI1vKk`V1=BrF`MAFaYN zwk`A2Lx}p68gYE~@Hs29u4O#jI0jXJ*^KQfHtx}D#CYNzTlsVyx_jNuI6eFGk6f;o zaz5!k1&>9+=!fPm#2>*ZrH&~If0$vmyq^8)AHR6?>e;srX7rxt;u`QgG&K$yGEOof zJuXI~e}Io)I(u*xha9RlX3n%Q4g4TO;-}^y+6!SO<RWj_<Q%~K9mjI6Kfd{s=aS@4 zRw-CQeDL2-R>;!2t@v7|UBt57{i4WrD47qA5QE5wjv+WC{ryzTH$Xs#!;v4zcI`rf z$5L_sgn=iZAy}gXvoh*PBw&*WS2G5ijf{_bDWUfq)Pkr)<joz7Y-!k*l}Y5GJJQ7) z1>6RNQ!)3>ct&95deDesa~9USX{!;QhQWQIv;vOL97rhA001&)Nkl<ZVH(}BU}t0N z85U@yma$K-XlQ+orVdHFXoMh>d;sgAZEvD8t?fcNO1DTA5dX%d#b|-<3Bbi9*~zG5 zY0YNhR&fW5>Auq~yGu*;^JmXboH?|AeP;gf&HE;6ZPM4yX53%~yDi6YH!bb0G;za~ zsDB~Ch<B7J4FIBJl1I`=ws7G`zz|qJR=OBcwj(tjF%&70!yyf3|D?;t!Gh$=q;Gxr zXv2E=So_7duV8zLZh9ch$H;}5l@W%K6}5dFc%YYtQsDt21tQsgIRnrs2w^{$fXakB zcfxqAR>)@RXZi(Way~saX0c;eHGJx2uqn$Z;P5bBA&$zp2Zt`^roGZG1|K|O9yo{h zZxr!YvFR#9VlcHclti$Af8n7zkw)@`#!75LY`l4S;+1o6&sJNpRg5uffQ}bBn+VU= zK>v#wa}?qtcHGkeVXI?Lw*U6U`UbYpIXUcT!B-OP2oh*To`Uh5PnsQQ5HQFO{k@Jl z_;Fn9@a7MmUifXC1S8$hhcch6kQH;dbZ8UI9u%H<G4QdAn2&I9fja$ehNc!=eY?fq zK5Q{=t}n)gu@0_)!E7Zmd{m!@y9;oTDDg4#4$z50RA$e^8EQ;+sJo}cP$wrR3EI@8 z4pE6Hh7eY=1LDGRt%ReWw3qN+7<~a>JZ^8p=p_{g8wP0wH-oDabG4mQdnPazfNR^f zZQE|AwlTGB+qP}nn%eGHV`^JFyZ>QxnX6o!Cnq^M@0)eU+`$&udfCG`RvSrY{2C=w zkxeB;VMb_EuZ2Hg^p}K45K>4v_ZYmSE$}ulTk?Mpk_^qgafZ~pQ^Y74`O$N-^KbZF zobjW>RMbo7TX|>Z_4~4Px|^&FyzWvnH4q4Yr@qY9#LBO2x$5FH^=IAS7s{43W}A!+ z!d9*C2eRxFYf*_=LKXJ9h@pHfBm*rQ-Wq%&eKq9{EZEbMq=DR08ZBL?z8jW;Tl7J3 zk%_9C`8*56z(2;$&Gfr}#lkAqXq!inj!<|M9>PM-v4yHPbn4wU$O7w}k}+6eQ_F~q z4mOa}gUV2)RSXsw|2>=`qhpZE7kb2wdhLKqo{ZTf-4#D?Q9ukvgb>KNhP|uHjl1%M zcx-$G0S71+><jE;Y5a2>&j~pA;<bB~rjM&&PgH10bKd2=i7@#YwrX&|RL}AI`@ej~ zP9pnE7Q-*@Xv1z%+wP6)A$uv0)QMG)!)-y`0wSGf82dv{?e0d9`x0QdRwAlE57>Bz zc3+@)GH`$*ILInI@WO4|uDw}aSp$6j0tEjX7NI`<`GC+$LzFuTGdvR_h)GyuuA|_M z8Clt1zBMqm#)HF8a{Lu6yp71Mceab6P8>wS(Y|R$&4<rcy><{$ZkvqMI1x2MBr#Aa z=u)as%1g5fOus{1mT!@~mVb%;P!IZWHCN2h|5hKKJE-0o7-hn-%j3MANJC@#DpTat zwGwsjp)l{9ccmfkd6&#r8De7Hkoc!*{h}^bc^|aMAu6uMPF4dt=lZG3*B3(MigkhQ zn8o2V%0=NcN`%?Z7AiVKL+4n@=SR;)2VJB#0ZwnMnT3?-#m6dbFfs96_jtRSD813k z;c)K#Gns~aP5OcJHo@G_#Jy7^ua5J<5?T<a#g(@qUBykCF>oEn!#4A%u8!P|F0&q? z-{80b#?#{w9$HbZ_zj4`lT~7PSImW#z^CbCMZxQ|#E3mOglK+cg`{ZLuZwrL=g=Uw zpz96KK43-~M{4oH0+U|0;S~S_b79ZuEUm$vXM!ql8+iNU(P98-xQq1Jj;Zn8B<;w_ z#()$+`NvUSPBg!tpZDzW@z*NiJxO_3(VhZ2IvR3v1mtH_S9b%zY&M3fk=)SJQOArp zVv3VOS(DbOgHPR2dQK%?Mny2Aom6FVr}sD5dsbs$I~`?0r)2PmUIr3)(Hj=2i+l{? z`F8*0dhER?BNFya_zb|(DESzTA)=#Ew0d;04jnr;G`@xk;spgJK{D!d<ylDnJ}kLM zem$<APIpfKLKk>fv=yE&Jv8>a8h5fiJVNx7|9JYT?`1_yJLE$A(Cuz+e!1>O1VY4g z<O{--nn*E$Zo?9H(uyoa(<C4NwNZ)ol>Q@KnI!m?A(%u%o?0~$r=qMz6FDWV8e%J* zW|N909VT{OAa)BzlteTLdAko->+5wlcfbGWve;oDlHnu2k6#<e&OJLj`+mQ;uJ7*u zj`J3Lc;4LOmo>G|wMSb;uR@~`3RNgf7!~JfCeeo}bUbf=_8!c*B(TEP+uDGsv8%%m zyGpa=mG3B**W@Gl!EV`7x3H!J;4rL!Vv@+-Refe_Y@pymf>YB|4-AnDt3(p?#77kC z81Sgj`5t_3Asxfage&+D?o{c!0^|^YHFcdyjlr{FeqoZr*4>T=8QHFbi=LTV`E(=+ z<72rRam7E<iJL5+YY#*-F&2PU3DsH)Gi?9$1})DT3$y37PPx#PQO`lv<-{(}cB|z^ zXJFXD^*chS<}|2tSJV((>U9vd$&!#Y{o3MZ{M|{032m_g#AD*KjF<mamuiW#>Wn_z z^*&kB*^<QZa=2!6-uARir7x#4p<SfekR)B7nTJz{IUZHZ%(?N;I09gf*aUk9k#Oi_ z4Vi03UMG$)d()!8SZ*QtyZ`|X&r*U`6TEiyPfGs<U+h8?TGjrZ=XRayq~*UGIiYqF zdByx57Fmp0Jvb27u-Dpd;l4_fDS>Z>IBw}BV)o(r;=EQ0Rp*Ko5XZ`C0+HIgG)3E6 z-U!rI0KY5-y_-mQW#;ZzY@(s>kq_UOV^Ypx#1{HW&E)lQy?IHo8e?epY<l|nXSny_ z^z?7lJ*D&CVYlvehpoa>BQH33H0D3Cosu;+%*AH=$zD?L#y7(ace9E7%+1OYF7awL zj|69mUH)g#65}Hsd#P3!k*NuHLH}%Tllz&GxxtH!YC!p%Pcoq*p6%JuUBsEt)d8S} zzRI<`G6;7sU*1pb3tyZdQW3y@7x{7c9Y4s!ulr>se%1Q`@}?-tkIjM$;RVSVLz<Pl zVyM)hJKBh(>RTx_d#ukr`fUpd1Tfr{ShuQ+_D0Gr(?n%SlcveE)<L2_Y}%Ep2Qqam z%st72SWw0^%#I*M9V-V;?vSj=3k9T!P;%)RsqrT5N4`C8<~g78-^OHbtg}wF88YSJ zEC8?W2x|Yk(vY2wKqaoK*a-U}zOjtR{S?hXg}7yw#k<e}8p9Pt%);O*)C(G^`XyFh zRdRG-gDwlZVaiPZlf~QC<IO2*PX45GhoPL7<~ZDz8pjN?OdqV8)umh&0BY^T5~4c> zBj3@~5jx^(_C-Z&)ogU+pxzMgxC^z_hwI_=s`SJ8p~Rt?3G~#)hy15jmi#BFqK5|R zN0Qd~P?aWw+@4{n&UBgfaA%L;tksv$f;Ax?4QH9s8Gk_ZbD>DrF}a><ab*flv$FlU z%hE^@Q1qtqj*Rzcr1TsK_aKfP7RZ5svsuf6RW`f&tePoY#viyAK^uQdc7s|D6k9{2 zXj^0nwK3fi=SR_P2%1DWkIzGaNQE!^jJ~g4%)0j`J>T)=x;ZT8IOYeYWaEk2qi{ge z*4SOsOis*#E2m2meRwlu`x*K0`{9Hnz5PBF2h+DyL=A|SX_{}RmeZ#MBYfn{0&WOo z^mu|ka4x1tBf=!T5y*umbz_sOgAZjqMjDGbBl^;zc9Zh*uVYUY+=@n0=FdW)BSUI^ z@-Fb`h49aj*A&JBZ!1z?oqgwq>DTHGjSGu6<si1^u5?AC;Q4EJi_Nid0&Z)cyFq7r zz23L~#ZxuyYx7#ic~Dn}Fd2hHi6P0m40~Rm297{XQ9I^|*Tng0H?_$O=e91YfwNlm zR?T~yT5_^eORy8WX4IN`bZYPihpb95y6$NNn^k|J%NujRT{1yW_k3m<*1LfD>xtm! zWdHZL;3sAN2QG8F+k@o$(pp#244yyg^F(8=DJ|iF9XFM6h-1YC?(l6z*j{8Rm$MnW zb=k%ug%&m$f}EXsd6>Hs_QIpGFcm`RWGDkg1N6TJO8m!eB-zs~V-ZjAn;OQiY{A}U z&)+pU%*sz7-H&))j@Z0N%*@;kP(i9&Hq&dYyox<N{Re2U-)AmetXbcTfRo3{>$eAM zwEKeT@Lxt%BZ1NS+|pnr8X#cW5^)I5w1~rH13+<!&EeOYV?y$sf%gvGY7=d1?sDpz zzn2$&Q;)ARoL+3Ps^}bYb>Q*ybu#mD=*~r!2Laxbto!3f$^ROl6Q<Gx1W_U&c&jt3 zTsTr_NLCbt$!27k@nXMLX1W=&VWvg%u5>|KS5Dr4pPZi&Af*rT-uB5tP)P!spGIRB zEY;I2h*+m~UoQpw-{Zdzjqo&QsgVxqclQ`OXQkok*dA;Ms~tZULrv#rO+~x2!{;)? zCa(5vX{Gh#mW{XYdw$+0@?3qt4PV+7^qBh|Kk{z{T<!yJ842WD`knzXtX4c+1|y%8 z&G@u9zf#NM_m|*qnrqA#PTOh^S!qi_QE}hkcqtO8lpa!wjFDL&1J=0uxb<mhn6-UU zv-Q}<?BB5;O^T$WO4IT%A<x2QMech#YuPu_J-FlN4IIdW1n<P3ArW)<zt|7A!4t;; zp+yGo7rVXPVs1bJiBJhqW5g2M*Brw7a7Z9(fI-9}M5C^LQrZnh-B<OS%deM1{mvB; zG)CyiO@;R>ym5M)NH_(KnWGc8)$T^!Z5-;=<|Px}cOY5_-9c1fD)_NxI}gvoL(35| zwJagR{oxlt^8;J(J|4&pR`R#!h-5^JWezv1g*PlN$Cy^m{-=4<wJD2Tv)<U&D$<Ti z`JP&wV-G(Zm05%>f$@d$&#FKa{2Z^H4gtfFHnn37)h(3+Iu{N_WaQ0}#Ll?J6K>Yp zJaO-yMs4(XnBh-YHuknRdP1+z*nAp#EL8qsBE>>>#&+BH#>A=Y2PJ3EQ|<QggQC2C z-{azZTcbze*T5P3E~~%|WNI|v63~x4P2<jD7~uaau<N(yCVUlWMR_L_71`KOIEn#N z+oEiljy&1d{7{Wi0IQDJH5~U{``2--jY(~io{lE{8>hMYX20L*=i{R$cwUEHB;dU& zhx{<(a@797KpIHXFs|2$H}}!n74#y!k5tE83;w`rTiR}Adim4X(%Y#+dD=t;Bd9aG zxi9h4R7mzMi%AUH1+Si1S8MIemnOY6YdCzh|LMk`@nh&8v|zn@!+Qo>H=q)dFU)4i z<!PbM<GonJ|5TBTFFfJ8<h<>KS~fu3zFcYM4#Jt;5ZpAOJLty)x&)<2NWt)ew~7ex z3VJ$RE!+5P_kS&p^p2~aDT49k?XmwDF7FZaevEuiLhisK4d<VSkFK!A+}N0Z;l4c} zipm_vo?27(;2TIWLWe!=;4LbKUPvmK$ncv_nCcyQz98mG^yeA5yQ?2@V*HUVS{gNY z`KV)HoE7y)6?}S7->67(xps`|FqO-}8T;6R{%AMI%zj&(dskgL)4zGoBW`M%xv?h) z^W^zggkTTOa<vn`w=VOEPCV@@odv}T*s(0PDUJ&xl~H}BkWgQ=IbN)|FLlF_cK54n z(4So6Ux%oPLu)rK=;<(#!tc;<Efk&Sb%{Y~KMq;uJ16VT|Gvu?X#6ZUuoC=AjQ%NH zxjP3Sf99qsqdHQIRi_H><2^Mi6mE{7zlb#@UzB#$A~}WaqYo1ZSGZ@8P-Fl}1b|&| zc!&?obBPU_wdQ*7R$iE}R^VIV<{?Xg&<||K9DgqvhMR(SgZg^5EnNvbxeMm>Tw83p z6{VXy#^a;}6C<hBrG_IyATBGy9e;jKAD!_31J*3C9qKRh*WdT2V2=p}1qJUHRpu0H zdb*ldsLB!Abu<{=^ZTZtxRMbGWPJO=mxgyHha@`c9lUQwVP(6YFqI&OZObX;1}B`X zh%Mb0^NtU42M}&`1Ao}3sRBTk{TtZ=tnd%FwKoQcvxAkc16#-X8u4v%5zGNMzF)2K z{r;owF_!_sDe$PksLjVKB1atZl+*;Kj*Xxu6B0$i!Q)dJk{WT-HSm#n0%wqaY8Y54 zjzB~S$C>$rh(ab<5X(?=cX6q4L|<~XzsD5Q%kv)Uw<`oar!V|QzHI6fGB0cC`SH9I zxY5W{5+i?1)z70>lRLxI^t)}^!^bviJrqddZ7gXc$8!`o9CG-o&_d@C?y783_qU?k zL2PVZM5t_n1-jT-+mOE(f(5_W)r)RkdiJ;|UzdQi8c{g1VJvVrT4R=w{RI7HMxGFi zRc}8=<8i@O-0TE<l<^qWSn?|7CTY?nmiVn4VqUEA`&Vpn4=G79_^NK~OF?6PI?^ZW z8ANx_J_hqxJa!dH8+qb|H6ctUpxwElx4zRw%aecNDK9Ciiy&Bi03R=KiM_7mv<cP1 zLNlsMR5rgyU{J^(e-+>8(<0{H*Xs2<7*%?^t^PflBpnOtKQRpgYbtbuDMKfKl*7aY zdX8-^N}YOzhOjj<_p;Wk{JluLOq56wvlnNiu2h{yA`wv=VE4=dz2*P&`1{zv_k396 z`y;)UH^2KkYVGK;t=mjZYF&t`+r(Tl%n@13rDnj{wmsVoL<K>;Nl%c@h|oSm7$JKA zi$rGue_V>i>rf$q2h8Yeua{AAKhcFObATr$WfxM4Skk0{uyUt54sS&qh<zrXWcV%D zYwF{yJ+Hg}u!A?VA?gBY%M_ei-%32SiSio2uiR}+4GnyVLiwYmzE;kaDX2QxF6goK zJ#)&8@vvR0F~-RMa_~1cH1(fLn{tb~2gk*GrEcx9Yh$smz^XQ!)Sc4X3F~m3PEPF) zZtZLwdrb3ERkNL$q*BwZv$VPzo<pan$FR8iBRL%voQWe`c{+b$Q@}dW*|ZJCQCzhZ zq266btxFFaF}2j9loBuXwREWiL~>!|zXR>RX4#&E-z1{3Lb~-AMNv~{-0Jq7k~71- zeX3H%a$Rg8h*ipUslOODCKL~~%;*ri=i1xCud(nFczO>rTk-{Ynq7~U2tD7e4Sv28 zDeHCd0Wvx&feV%|lO|?p7Y^3Dw4yJ*sC|5>`TMUkOcT@TEWrv<(qp8*Hus6pT2DxL zan<wG1Mh<3S@?c4tv#H^qglUoD{gZ+{8YXTla8J=nhr6Fl8pw1UwT#X(nESTNXwx? zG+@I~sAvspXRyGr(j_SuuE-uS$2os2;1-MCnmW=3d$iS=^pJjSh$kxuvjmMf#(3kG z;~L+3i(@{@3Kv>o_O8U=QG3cn^u^+|?q2igr&3m$4r2Hg?KmV_SkkV?7ZpBV__crT zTl{>+)nn)TJ<D&s_|73|mDU$#i5W@isfNeg0uzAYFTxRtOICeACBD<5MDC1VcL|U8 zJ<<9MCda#6m8X5xoN{=(c|&f!*nwcHf)RtiVL;-I(Q?A5cQWM>5LBHa;UjaBbu*ne zl~N3pX)6E#VC)+W6;RAS7&)DX^H$78{15HB{ajzusp;X&QATe}D#IbPutf~!s<kEd zZ<>iB_Pm$oNWS9T5X=-?G@`%nk#r)W&bZAHS^aAt8#A94>j8egpML}4rw5F3p$foL zkzqPj6p^D`Zg4I~?m-T~uHZC?c6QHOf(bv5LKDS{+_}%0?hESqBid^WiGSn44ap84 z<>tPCLNp!;uOe;9ja}m%j`%~Qvk-Ez{nFy{{alfajy}d@V8p1OF`%`#QI&12ty*bJ zuGOc>9mthK6gDWvd~M)MHtryZ51mNKm_a#ag1m|f*>CU?C(1+RhMO}a>cYez{xXB2 zqou#f%Z?ntrqx)|w4@;tjI=4Q<HnY0CxJ=<)35L=Cn&*JBeP%Wr;$Cdehj2F_^w{L zGM;VN5+JZoW&pWoXu>fhd<ZX~4Kxn&y_;Mg3T&(;@%n(a*{MQx)1r_{tHM_mTv(5r z+6X1J!c=aKzfmw>>RpT!rG+#S{M<W$Jyi60IRkyjMz2paq%97~%t7b{T>*lkU~POY z7^cC9qEe6lLJAul6~xunjEUu|LdA~BeZX|m#38%;NDI-p*>N{+guC$~Nj^^j>qIsV zP|qSX+LPFHwG}jB@hl1eN;GGW76U%xdpAURqyDHf;hansePT-@D1t&YQjZU>D1&MK z@|rB}F=B+MMufD45&TsY*uqlbiaT-V=EDe05(ATRUvaO@nIvGPPCY33sys`8ro;oR z@r8zJ`K7+M0&S{qJ~BV>&*^~A(I?1h!S?2@VsUZ9lUQ1amSn2Ktmz3LVg@1A4Pc5@ za==7pNmZzaBCYwG?|$xey{(1xZs_py=u)kV!@ejzj&=uv8I5k!+-1wUpbwaEW8f3q z5Z&7x6dHww2wj|0XR44`ZH>fL(AIDF-QHtK5zAqeYqokD!2g%$9B};3-XjmD81->` z{q9N^TCHZDkP(kkR>N+_$27&vG;2k4nVNzgfll7BkMt?_%g6UaXXI>75EX3E;}q=E zCPR5RI99C8+D*X&M7Z>%BKn8=To_{au>{QN&+Y4ykLr2-ZssK8vDW6kQuj=a(*MZt zo25eiLKXKr@WyH$!;fyD@xo9>>oQZzmR6>f^R$aVj(?}R?{X)|+uZEzPV5Sl%}kX6 z=;>|A)z2`()Au*&Y8&jzv9FI!E>CDji({Gz>6>|m9;>T{gSN!YZ;LgvPid)ZPw)KF z#{nh5?gH=I7#dOP%;W9zuXVZHvx3e+lZ1JSS=LbG+)iY&Lnc_pU2y}&#D0HVPG{D< zeK8;RdWOYhc<rD>bS|gF5w;F~cy^nU-VhG>5)&frxAU-dtau5wu)u2>jqx?vB9(Ia zla>|4K8p^Y<Tow&#%NpQHA2ty2NIf(jB;`CGSN3Xe0-`E@|v&herTn1s1>t5j)A@g zy?SefYzs)3H%2WHJCqY)M9xE+3{M1e0;RDx3dsL2I!x~L(eF@!Cbf|b69tM~=5M09 z2DAV~!*^ejAXu8{a_D%`T0YyEz`Q`Y8d8W()_Fd*hG{Suipr&CSX8;|ORJF6dhf)7 zU$?Ys%b32!-MMxBa)*8Py7iow_AE_E7Gx*zV1pbLV@pg?2d|)&?I@WFh89eRnWJdB z5W!d2>%T8wW0rlJ>#r>ef$w&0uPVR{69y|cgQ#2y2kC6V=XC{7+*t`fhrJbjeHnc0 zbV!Qg4PH+5D4T}rx>_e;tN@r#^lKe~CFV|yQjrk!h+Ta_Fh<y7m2bY3L6beSZsIqT z-7alP6Af}h4-r(sjgoA<fV35@U4~ah-8>GMj^zL;f-zTk$f*Go;JPg_exy==lMYu% zvbZ0Twb3Xy7poR^0tPlkLcxY#Z+rX?7o6%&7uBgQ&X)AMnp@MY!9X{Kx4_Ix<09>u z*bJ>s#i816#x9hMSqvVFu1l3fz}`SyY;`38ejA`23*t8tBcLD$q)ne{5Q}SC={|m3 z>3vo^-U3|SZT(TPf+)&(gttmzXjElzshE*m{T+I$)@R6JCqi=yTSgPk)}@6aUnTLp z*y?z(FRk{f7c-`2)#tW#_GWGER+XFQ>gqX~?H5mEHsG+bop5G_zeU96G0f}Zig2Te z<uEZ8V;^6YYMBJIr>+PAG%;wn*de&OAqOT*z<TYIGa+iim`@}~!?`%lMjg{jsDJ^# z%g$3j2hnriyp1CpYidng=By1FWiB_e>pg}*S3VI8O`>ZS;V>k8wyPLJb0=#MU#~kP zq~ah0YEqbc?w@zYLrfeBPmv2cwaHe*qKOuJC(~}nxyDl4TUANsvM|owcZDTudo{kh zTX?&Ye;57_9y^RFRgoj){iz^}?ZX!34nilrb;;jz6P}G#%{eECLM6aTL`I>du`7j0 z{(3E#laRNc-AycE0pVO2>^aGj>M{*@iw#_+zhokulL!ieuVHz<%c`RFYV+PwPwkI> zE_VGsj_y%t2o@;oKbERnu1r}jn!f+M7V-|I@X6$#60PD5N5B!V#{4pzwCG85KiE63 z$R3D^-Mku8IwMi#l}woIwS$!&#&_y>+1ULDudvz9US}jSzpR1Bf!#19syQ_UO?5E8 z6CsX?i4x0{)7Iixx2Li-xu{I0+jscBgZEtnI<FsxNORdwow$;WAk)m@r{;mb{vh+j z4j^W&X+&Sy|GYNDAD8Vkg5rkXW)-MHo3SM97n@H)nS)o?$*8h0SK;vB(}F{iWTy9v z^flUB!KF*!eZ2>w4tSw{37;V-Yt80pGBouz+ivqXhfVLGH<099qG(b}j7y(J?o6J3 zo@!y%Emi=JCn3|-HHLg*2!Q--DLpmHo{YaY1!1?NwZSJ^4RQs>LYukZQYSB(4u*%) zJeA{$Oh$`_Kno#bfx&#yTCUIR(bQz$H#FLp1UpghGHEU}bG0;}{@Xy2PDuZGXn2O? zcdyv85Ms33#%Y{A5^SbWe`7>~ikkHRQz8c;CN7~l_2`U35%5b}>r!=q$yEY7RHnka zi_klmH4i^%1l&xyHG1xIo~G1_?#%9&Q9LdLuxMvA{aw$!Mxs#N%IFfJqY<*~TRL06 z%Gb@4SXmu}S7>tE>RTa2lA=@n6<6mM5}r@*%_*FsZkWOY6*2@mYyRoO5qw-tz~_B8 z+P8}_9>h;Us2N$6TC7iGekz)SW*9=C(|#FVArs=wlEN3-Av3$k|Ab3zMii13nOe=4 z5=IIwhYeF5bpm1#VfKReX-$5^-NzJl1&wE(6g+AFB01QT&COW6R&|poL%>N-`+Bjn zI;tV~!f9Y4*W1ZtJ>43&qjn45ZBD7X#SGemO6(0C!`)@ZaZCSl7yXg`%Z`cy6@DYM z66Sn$&5WArz}UUI{=;IK(XTnZMX^47sv3wc`Pz>CU{3$y<zHn}c}3@ymN_BI9c7KJ zD(;*GrQG7vBLS+bq;0YGh+b!vE8G21BT{`Pf3$1arZ~^a?aB(9Q&|Ea_ra^TTe+`V z^}aadQ2NF1{m{Pia(|Z0YE9|zP05m}t;<5v0Fn}<8lVRJ_pKhXtxoy}3GvRZYS=Q} zx>0jTs7F_o-xYPqs5p^WPa~1rv+yTb0TnKnHeZ5YI=F~8VTcMdR&aD<=qJN7vETk6 z^zKKF?`}Q%MA!cW1)0PJ!i%@LgG8QNKtg?VMjkevj(u;I<*J!p+#UbPxou<Kidt{T zE_9{VFR3l1fH;LRH7lB~o(N6>C7mP3znU4Ryo8H8W$%|i{ZpcC!MmC#6oX6MIVVZp z9cB=1Ea(I=j#Sc{5MlDYH^3p)_?xqP_h-wkixKYYWXa1sv4y69g)Zdzvh#Xgk>TZB z)MnHBQeQk~x=kB;xQ+v7VsdFtv98wc1jF5GVx~KOx1&14vXBbpcp!ej^&v`I9I2jo zwZTe?yj7<Dob0L0-_Qge7o-kK@Z|#;kxbQ+oEO@s_zne~p*7xKO~x~#KVmZoi%gbo zBM5di!!NO)qXFA6B25Ryowt&AfAm0;ExF*HMH)18lCqD+NA{BbhKwA)M40gnXHkDH zKQkK>1Q(R3epji(RQH^q$%0uunx!U?*?yKx^G~!SM9->@r&R3Abn4v-;x@OStIMV$ z5j$}U;%_!nWtBml7<;{n0Aemm2ieiZ+Y147uB)oMh`TlW<%XB~yg!TLD%9m$C8e5r z4F^W9WD4ISKL2EfG$G=oC;PvZ;2we0j4JEx23{peMZ|-ld&5>V@L%HesV{Y3{AcIF zELaKrK(h79Q*HNeD&t~|X4<#lq2yitT06dS3Go3#qf;<mTjS%CvA&k^prAs(vI{CK z!C6)UoYaD|Dayda>54dg|6<?vETK*b<(kdkDk9QdAA6_fe=EBacgFWc@+2{|8}t!i zm7HhM&X3wR5xjSoq<XYG-Vs*SIuatR+W&1XHp3vWR~%xva;XtRS;*IqeOhSaaS4>B zu#MWZ8)~^bgW>b#f^d#1oNt&=3yNEDv})Q{&oc!%>nFueR?G=j)!n&3&zzLdJM#TZ z6&pD_<O-yXi@yQGyp?XKUFin-x$`%?yl2GxoUCp})K5xoUxPy0bgsH^H9wtuR+yc2 z1D%6f*J#I;hFt6F)$X;m*Vm!5Vbg}>+{AbOxZX;;8I6dn0B-)fGGD<1qWEKZ8(SA% zlDICgjbjzLf?7io!6%(y{g_AiMXw=#_LwYF#_)CO_r?R+*<>(K)da7owV>03<#a0> z7^07y*r*bo7B-?Uq#HG>u^00YvHLfp1D_1IbFGp0?s#<B>-aCj08colAO9LW%^_f< zW6Q1``QOL03nPcyL+frR5C@^eMXqtqZ|Cc=k%c@E0wCK&6UuS-=uEybqe3r6<pfE} zvFs0P8yNiEM_<9?rzZqD8QIZNvy4EhwdDSTAMTec*oQHZm?%^EG!3EFWw$oxj_+rU zpcwv_1HhgKXxM#;jy~qST<l$}cq;^0s<OAZ?EPh83rj+hMcET{5}aRl?0@+lEKXNL zi0@>fPKT$gEruX11ea@%>%esQV>DVW6^0r#XFBEGCZDdlG&&nqb+;=_F>WV1;znuV zCcrkxWPqFI)oWo*yNJyKkR+|A@+m0bigj@FA8|l`<sKhWRd}$Z-bj}Oeg1vC_jt&~ zNgzvDQqiIo&AA;%7Z~fD@qdQ@@i(G5io759|8#a~JDny!lxEGI#ohV6BoP(~z&_RO ztD%=i1BPR(9a{aX1mN~FbTzKo#`}d12n`Af)I)};WW7`N2j@b(uc>DqT$tk#@T2TU zc@!e}lv$Ln<FWYa%eP3GvLht14e|cf97GxSBWQy9`AOgUrn~;sr~3(zOqaCx7xjgX z=0*%_wx$HN?gEVZA%z($<Ilb5n8wz${@SYS-jb~z9Zj9tX2;`q+wU(&bwfNx!jS1M z{<S8grl<#zN2;lI#kN>fCHWL}UN?_zL^Lb%0-wupZE|jcj{Xl`A~B$Pjy-6eDs-7| z-OMQUIoMQ|_Q4?@1J4X~ZMJvW>b+Puep^m#jr_M%*>{8G>f`pG5*?EUadcfx%8-la z*fh(pf9cWFO?JGu_2TiwJ{y&^7z;lzR3d-mH`zg`6H%F*UlYjq-k3t0+x=b?o=6$; z%6<UPIpMOmdyjaqiV0cYy)2H>;2DYe08`-m!W`Y_-&mn{TAhi>bI3!KUeOtab|Z?d zfXxxj>U9v!@L)>Y9Ye=x-hF-4-ds!UfG#Z;l}fLR_h(B+c2!W<_A;^rak`Ax<M7U% zZO^mB-K$*Yu%MHe1;;R}tE98lMliKP8695UvlR;ixjvqLWuNcT(f#skz8()8t<CQH zGYndtHr7W|Gg{;f*A<9x3EdAJ>!PJUYEP$nbkbd1m`@yDi@TB)Dv0;^B-BAY`n&_| zoo0MfFweNRF8#}zF!c&PClh5})q=jU)mE|B3i~x?ws<yiU6!OeHsJIwJ4TZB;0<sY zZx0Qw)&g0EPig$nj137vqW=uB+B4(hILy$?u8Bo1(Fj9ZH_*OH2j9p)lkQ(gr!>r< zciWRfDAO>};*&^u)kqpx{T*Cq^utPhF`a$&9|{K-#kFVFC&8O_B7!$--NA~oNu7kV zt#dOt0Po8>dpD%3r<&Y>3mfm+<&(C2?f%=(zXwBBccU-49#3SD67Gnp=i$zIf)Ip) z(M{1FtFaV$gZBd?M8<Yr5zLrRAm>$z3kKbU6TJAwKCrWY4E9AGf-t8Q{`_XAwcXX- z+I-eG9Bh!nxg%!8yQZLnd1(u_*0KRUU9t;T@peKp9*wsOgzC!{irbM;N@{A4+S}6L zl{mFU)~uZJJdE$wKUVCr<FFBxIH$63Dq9OIA<8y-962$<w-`RVpdCfgj{jr4TDA_4 zEDxj({=neVbqY7cU|C}K2|(aIFu5@Js_n=7es#xiO)<US+}DsW1+P5iruw~xI+ziT zma+uE@OGJ)7mg-b|BLMg<Jqq|YmIQq|5K2K92!<R3HmADdZlr4!Voe}_=XhD{Dsy( z&AXy9{2;P<YUDjFc#xmjxjn1s>AJRQ4l+?9!e+bb$lcP%`mpHCsKDoG=;M3PcPKkf zN!hM|#%c?pZh`Zyq-Bm>S;tnitak01fUAc;N>kvKbbjJBE-hVsTe|coJ(w2uO%-lK zNJ@Rb_&bFq-}vgsquKV$<1snDcjyD4T#V<xpy+Y7*g0!?Sm<yex9MIL>9*H&H7wtJ zv1P~F0FYgqs@Gf{q@BXG-X)-AN7%zSlG?n$J7TiJBc;VsHLr?|O6eLEE?9%)<dGOi zYDW>oBI6hf?u&j%poDgcRsO5P{!`_yt6BNXMWsE^eSNt8^d&$SUk)nxbTE2Kpm#xN zR~fVOXr@r3uE)Z2p#DjG7&!ZsNzR*ZN2aYnYUviGKj|<Z<7Q9C=k_`I&-CScGZOeu z*rRg6`Y}e^{HOL{Wo<WJQRXhVWMJj*g0I*MN+iKZ^m21NwY-=sfL;AjtsJGL!bYuk zIZG^08l<><;VcBR(d<pGIn%?fJFoM5Xl3!lM3JC^ae4ALuN$|N3=z$m^REBe6RA6X ze_|$9ErQ7etU9n~f}-H5aEtWYJ%u0arBTO-@sZ=&bDzQI72yQNk1fQdSKp(Q(#N{f zl7W2a;RMG?u3Tc(Z~%zJi8seHzt{B=qXNJXd`HL#q<9y&X_;A0nePQhO_e-|8$wTi z329oeL4JBetp1IWz;oo)9kDNNX>@R#Jleo*z<617b{^l;Z3dw)Se5{Snu!j-LwHDL zKuuxC)5i12UEp<S<F4?W@&kSmGMXYr32Af?3#CL#d~Y{0HH{qS#`$exFZ!exGX=W$ zd#yjJoBIN;Wo8&lk~8+%bH>eS7(52r^EYc-f|{I(Q$wbJn_;($gR!%zR})L5TFusd z=X<2jq@XEfjFG~`UWp+(^a}7M;f3RXeCvk`l@&)NPdoFEHcxa3GU)0a&<*RhCKi4; z`Tzi@J`W-27F(4#-&oNHJ-kV_RFO}Q_$Av>W+WTdc@_Jd4kJsuQk=3vj%U>aRvwI2 z3xMMm)RKucvDP#Ep$-d4*@&Q3k$!LI42Hb{`sVUdaM4z_0D&7W88&Ev92i<!gqhhf zkto_9;Q>?%MC0#8b-_#E9y|nxnaH2qE(P(2SFWW=U2+XmcV&ZJpY&SmfPrZ6XIo-8 zU(m_jc7@9`a%N>~G!*S63%FudyPR1wHD{J9v(eOP1WQ^q8RK%WEqW#t4CPC+Zj*{& zqn+8!(8_|asd^mwhX<nCG6`74d@Wob!dR;y1b`wY)IbC<SkXqW%732=0uQB)JP<`b zJZ3^XLn9;O0xdLH&ahb<7**V_?2mYuA|%DVTa10XpTz9fvhjP!WF}4IKF4#wwdBPt zsR81Kp-gmH`15*6`1wUi8CFdw<C$wB#cSBTf8qpAr1dz4BqLi<mV${QcgRf9;oOUV zNGsa^^GXjH#WSJPd4Mxshd*dH%=XT?VpVl@*fv&8)MDI;f8>Bf<|gnk0ed6p_xr0j zQ|<$_#=Lm6OlZ9x)FT;6IJ>K=PuTXA90j8lcs6MDh9%6eFmur_j;7dP=D5ajbxfwu zH(pP+Wu9)FI}$Jy?6sP~<aA~o`EjE^tsoyg;DHvR%JSGC7QYEmj7U*1&NDKp+HFG4 zBU6mp1uZy@i3(^~x$**Rw!Q6<H~xNNfVh+VDQGn}M8d}Z*d9yDowm3XF~;w$4qB?? zjf5LgZ);DcvcTObY;<!ot;xct=9HkE+zL-P%L$=FBt_teVdCXU=E6OiMiL>5LTJJL zDSeR%C?Jto63#|3dE#%hovgvH3oaBV^U`;kK8mhYc+vJ6s=!D)(HYwaO*>~gKXiX5 zG5s-mfU7I2F1Ih<Nv_(d<bdlrNi!)8vyI!u|Ku->(v^-qvC_vOn36&se08!;8BRv- z;eb0lH(TZiE)-*-Ym%W!tV}@HG-3gc%&D6uRCZ1vt^h(s!b6aUzYS18>DKdbsBSP( zuiS^h>WZTb2dBKGuW^}KSum>ad;BUrx!j)Po%SlfW68+B#$|!Ht|n|aVO_%`ZM<5a z_~o4h+-TP^vA=9(>@=+y57)XVI_hQ4wMByfZ?A~yoco2;D(zB5c_o%%Q65AB!867p zA_N`{XT&cde1|j`8G%i*39q2pX#nZEX0%2ZRA22kZXg%>tX*q&ZD>{Dds?2KicZe` z*X?MB$En07|93|le^-i}yIwO*-r;A~(*j~|Qa079vfHGHTv`Exlc-@1j~nZVKIUfI zl^sF6GxTRb3c#H6jDnli5?d;Xy(;qGEBcL3s&h;Q<3;`MN$V~oW?W7aV(AMnxY%2a zIxJ6et8zufuBRzIH+yqx9!NXqAb#q0Is29VD!WlmI}^~XZtmZZH<y4W@@5$xXzv5> z=o4=na^48OWO{U8QMm|x<^JX|8?N^3gLwDuNxS8_?d_(jugsU5)`$ciK^woPM-s6E zHrqbaxMg_S%=(S7$&7!#9}dcAjjJ<VSXwXX?u42q1Y6Asr$s!%N=ox_jr&liad{^F zJ?O%)IC2aHl@T-J;il}V>{W{Gif7v6f{(!H53h2<^>cooH(f5yagrZB_^zGBS!)aP z#u5Jst9Jk4oUsaN-apyHz4*?oryKfiOOtN=&VQ<jJTsfZ`PLr0btr-t=?Z|Ij{ZoL z<p88Dbg7Wb#g)kigK?0yb*Q^LdjZy}yph@_?0`vvnkNZ>Z*TSP=6SB~QBKXyj!?cA zC(;Tf3=4CscJj%D%&1)~`ZR|KwJQZxd}&=YimO1U9cEZUqU@Xb*dHv?<mjD+%DQw} z4P^$|RxC<lSQLeFCO)h-VJTb7r3&=e%+;)4l4{$3Nt~X|Z;6*Oh<!CS8w3@0|6t*d zoOZM5`y*U3>)N*<+`wEiCwTYY06~~0CC(1)YC+xR&`G@}8@MvwkTJ+SAf&wROa$>r z0}kJ1@eQiK<NutqSN-hWc$bs(gGoW0<Gz3oiu&|NR|mSFv|~OqHG~K9!(AE~B7%Bj mtq%_nK>Q!3KAo6ve}Kc##ZC$|@e_gm4QX)&u{sgMp#K00$oql- diff --git a/openstack_catalog/web/static/js/apps-catalog.js b/openstack_catalog/web/static/js/apps-catalog.js deleted file mode 100644 index 3dca871..0000000 --- a/openstack_catalog/web/static/js/apps-catalog.js +++ /dev/null @@ -1,418 +0,0 @@ -function getUrlVars() { - "use strict"; - var vars = {}; - window.location.href.replace(/[?&#]+([^=&]+)=([^&#]*)/gi, function (m, key, value) { - vars[key] = decodeURIComponent(value); - }); - return vars; -} - -function make_uri(uri, options) { - "use strict"; - var ops = {}; - $.extend(ops, getUrlVars()); - if (options !== null) { - $.extend(ops, options); - } - var str = $.map(ops, function (val, index) { - return index + "=" + encodeURIComponent(val).toLowerCase(); - }).join("&"); - - return (str === "") ? uri : uri + "?" + str; -} - -function reload(extra) { - "use strict"; - window.location.search = make_uri ("", extra); -} - -function update_url(extra) { - var ops = {}; - $.extend(ops, getUrlVars ()); - if (extra !== null) { - $.extend(ops, extra); - } - window.location.hash = $.map(ops, function (val, index) { - return val ? (index + "=" + encodeURIComponent(val)) : null; - }).join("&"); -} - -function initSingleSelector(selector_id, property, dataSet, update_handler) { - var values = {}; - var result = []; - var value, key; - - for (var i = 0; i < dataSet.length; i++) { - var element = dataSet[i][property]; - if (element instanceof Array) { - for (key in element) - if (key) { - values[element[key]] = element[key]; - } - } else { - values[element] = element; - } - } - - for (value in values) - if (value) { - result.push({"id": value, "text": value}); - } - - $("#" + selector_id). - val (getUrlVars()[property]). - on("select2-selecting", function (e) { - var options = {}; - options[property] = e.val; - update_url (options); - update_handler (); - }). - on("select2-removed", function (e) { - var options = {}; - options[property] = ''; - update_url (options); - update_handler (); - }). - select2({data: result, allowClear: true}); -} - -function filterData (tableData, filters) { - var filteredData = []; - var key, column; - - for (var i = 0; i < tableData.length; i++) { - var row = tableData[i]; - var filtered = true; - - for (column in filters) { - if (column in row) { - if (row[column] instanceof Array) { - filtered = false; - for (key in row[column]) - if (filters[column] == row[column][key]) { - filtered = true; - } - } else { - if (filters[column] != row[column]) { - filtered = false; - } - } - } - if (filtered == false) { - break; - } - } - - if (filtered) { - filteredData.push(row); - } - } - - return filteredData; -} - -function populate_table (table_id, table_column_names, tableData) -{ - var tableColumns = []; - for (var i = 0; i < table_column_names.length; i++) { - tableColumns.push({"mData": table_column_names[i]}); - for (var j = 0; j < tableData.length; j++) { - if (!(table_column_names[i] in tableData[j])) { - tableData[j][table_column_names[i]] = ""; - } - } - } - - if (table_id) { - $("#" + table_id).dataTable({ - "aLengthMenu": [ - [5, 10, 25, 50, -1], - [5, 10, 25, 50, "All"] - ], - "bDestroy": true, - "iDisplayLength": -1, - "bAutoWidth": false, - "bPaginate": true, - "pagingType": "full_numbers", - "aaData": tableData, - "aoColumns": tableColumns - }); - } -} - -function showInfoDialog (tab, info) { - $("#info-container").empty(); - $("#" + tab + "-info").tmpl(info).appendTo("#info-container"); - $("#info-dialog").dialog("open"); - $("button").focus (); -} - -function showInfoPage (tab, info) -{ - $("#info-content").empty(); - $("#" + tab + "-info").tmpl(info).appendTo("#info-content"); - $( ".content" ).hide (); - $( "#info-page" ).show (); - update_url ({ tab : tab, asset : info.name}); - $(".value").replaceWith (function(idx, element) { - return element.replace (/https?:\/\/[^ \t\n\r]+/gi, '<a target="_blank" href="$&">$&</a>'); - }); -} - -function setupInfoHandler (tab, element_id, info) { - info.name_html = "<a id=\"" + tab + "-" + element_id + - "\" href=\"#\" title=\"Show details\">" + info.name + "</a>"; - - $("#" + tab + "-table").on("click", "#" + tab + "-" + element_id, function (event) { - event.preventDefault(); - event.stopPropagation(); - - showInfoPage (tab, info); - }); -} - -var assets = { assets: [] }; -var glance_images = { assets: [] }; - -function show_glance_images () -{ - populate_table ("glance-images-table", - ["name_html", "description", "service.disk_format", "license"], - filterData (glance_images.assets, getUrlVars ())); -} - -var heat_templates = { assets: [] }; - -function show_heat_templates () -{ - populate_table ("heat-templates-table", - ["name_html", "description", "release_html", "service.format"], - filterData (heat_templates.assets, getUrlVars ())); -} - -var murano_apps = { assets: [] }; - -function show_murano_apps () -{ - populate_table ("murano-apps-table", - ["name_html", "description", "release_html", "service.format"], - filterData (murano_apps.assets, getUrlVars ())); -} - -var tosca_templates = { assets: [] }; - -function show_tosca_templates () -{ - populate_table ("tosca-templates-table", - ["name_html", "description", "release_html", "service.template_format"], - filterData (tosca_templates.assets, getUrlVars ())); -} - -function initTabs () -{ - $( "ul.nav > li > a" ).on("click", function (event) { - event.preventDefault (); - }); - $( "ul.nav > li" ).not(":last-child").on("click", function (event) { - update_url ({ tab : this.children[0].hash.substring (1), asset: "" }); - }); - $( "ul.nav > li:last-child").on("click", function (event) { - window.open('https://wiki.openstack.org/wiki/App-Catalog#How_to_contribute', '_blank'); - }); -} - -function show_asset (tab, tableData) -{ - var options = getUrlVars (); - if ((tab == options.tab) && ("asset" in options)) { - for (var i = 0; i < tableData.length; ++i) { - if (tableData[i].name == options.asset) { - showInfoPage (tab, tableData[i]); - } - } - } -} - -var recent_apps = []; - -function build_recently_added () -{ - assets.assets.sort(function(a,b) { - return new Date(b.last_modified) - new Date(a.last_modified); - }); - sorted_assets = assets.assets.slice(0,15); - sorted_assets.sort( - function() { - return 0.5 - Math.random(); - }); - for (var i = 0; i < 5; i++) { - var iconurl, - fittedname, - divclass, - hreftab; - if (typeof (sorted_assets[i].icon) === 'undefined') { - iconurl = "static/images/openstack-icon.png"; - } else { - iconurl = sorted_assets[i].icon.url; - } - if (sorted_assets[i].name.length > 15) { - fittedname = sorted_assets[i].name.slice(0,13) + "..."; - } else - { fittedname = sorted_assets[i].name; } - if (sorted_assets[i].service.type == 'glance') { - divclass = "glance"; - hreftab = "#tab=glance-images&asset="; - } else if (sorted_assets[i].service.type == 'heat') { - divclass = "heat"; - hreftab = "#tab=heat-templates&asset="; - } else if ((sorted_assets[i].service.type == 'murano') || - (sorted_assets[i].service.type == 'bundle')) { - divclass = "murano"; - hreftab = "#tab=murano-apps&asset="; - }else if (sorted_assets[i].service.type == 'tosca') { - divclass = "tosca"; - hreftab = "#tab=tosca-templates&asset="; - } - $('.featured').append( - $('<div>', {class: "col-md-2 col-sm-6"}) - .append($('<div>', {class: "inner " + divclass}) - .append($("<a>", {href: hreftab + sorted_assets[i].name}) - .append($('<img>', {src: iconurl, height: 90})) - .append($('<p>', {text: fittedname}))) - ) - ); - } -} - -function initMarketPlace () -{ - navigate (); - initTabs (); - $( ".inner" ).matchHeight (); - - $("#info-dialog").dialog({ - autoOpen: false, - width: "70%", - modal: true, - buttons: { - Close: function () { - $(this).dialog("close"); - } - }, - close: function () { } - }); - - $.ajax({ url: "api/v1/assets" }). - done (function (data) { - assets = data; - build_recently_added (); - for (var i = 0; i < assets.assets.length; i++) { - var asset = assets.assets[i]; - if (asset.service.type == 'glance') { - glance_images.assets.push(asset); - } else if (asset.service.type == 'heat') { - heat_templates.assets.push(asset); - } else if (asset.service.type == 'murano') { - murano_apps.assets.push(asset); - if (asset.service.type === 'bundle') { - asset.service.format = 'bundle'; - } - } else if (asset.service.type == 'bundle') { - if ('murano_package_name' in asset.service) { - murano_apps.assets.push(asset); - asset.service.format = 'bundle'; - } - }else if (asset.service.type == 'tosca') { - tosca_templates.assets.push(asset); - } - } - - var tableData; - - tableData = glance_images.assets; - for (var i = 0; i < tableData.length; i++) { - setupInfoHandler ("glance-images", i, tableData[i]); - } - - show_asset ("glance-images", tableData); - show_glance_images (); - - tableData = heat_templates.assets; - for (var i = 0; i < tableData.length; i++) { - tableData[i].release_html = ""; - if (tableData[i].release) { - tableData[i].release_html = tableData[i].release.join(", "); - } - setupInfoHandler ("heat-templates", i, tableData[i]); - } - - show_asset ("heat-templates", tableData); - show_heat_templates (); - - initSingleSelector ("heat-release", "release", tableData, show_heat_templates); - - tableData = murano_apps.assets; - for (var i = 0; i < tableData.length; i++) { - tableData[i].release_html = ""; - if (tableData[i].release) { - tableData[i].release_html = tableData[i].release.join(", "); - } - setupInfoHandler ("murano-apps", i, tableData[i]); - } - - show_asset ("murano-apps", tableData); - show_murano_apps (); - - initSingleSelector ("murano-release", "release", tableData, show_murano_apps); - - tableData = tosca_templates.assets; - for (var i = 0; i < tableData.length; i++) { - tableData[i].release_html = ""; - if (tableData[i].release) { - tableData[i].release_html = tableData[i].release.join(", "); - } - setupInfoHandler ("tosca-templates", i, tableData[i]); - } - - show_asset ("tosca-templates", tableData); - show_tosca_templates (); - - initSingleSelector ("tosca-release", "release", tableData, show_tosca_templates); - }); -} - -function navigate () -{ - var tabs_list = $("#navbar")[0].children; - var selected_tab_name = null; - var options = getUrlVars (); - - $( "ul.nav > li" ).removeClass ("active"); - if ("tab" in options) { - for (var i = 0; i < tabs_list.length; ++i) { - var tab_name = tabs_list[i].children[0].hash.substring (1); - if (tab_name == options.tab) { - selected_tab_name = tab_name; - if (!("asset" in options)) { - tabs_list[i].className = "active"; - } - break; - } - } - } - - $( ".content" ).hide (); - - if (selected_tab_name === null) { - $( "#landing-page" ).show (); - } else if ("asset" in options) { - show_asset ("murano-apps", murano_apps.assets); - show_asset ("heat-templates", heat_templates.assets); - show_asset ("glance-images", glance_images.assets); - show_asset ("tosca-templates", tosca_templates.assets); - } else { - $( "#" + selected_tab_name ).show (); - } -} - -window.onhashchange = navigate; diff --git a/openstack_catalog/web/testicons.html b/openstack_catalog/web/testicons.html deleted file mode 100644 index 0d055a0..0000000 --- a/openstack_catalog/web/testicons.html +++ /dev/null @@ -1,116 +0,0 @@ -<!DOCTYPE html> -<html> -<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> -<script> -var app = angular.module('myApp', []); -app.controller('myCtrl', function($scope, $http) { - $http({url:'/api/v1/assets'}).success(function(data) { - $scope.assets = []; - for(i in data.assets) { - var asset = data.assets[i]; - if('tags' in asset) { - var found; - for(j in asset['tags']) { - if(asset['tags'][j] == 'app') { - $scope.assets.push(asset); - } - } - } - } - console.log($scope.assets); - }); -}); -</script> -<body> - -<div style="margin-bottom: 4px;" ng-app="myApp" ng-controller="myCtrl"> - - <div style=" - background-color:#f9f9f9; - overflow: auto; - border-color:#cccccc; border-width:1px; border-style: solid; - "> - <div ng-repeat="asset in assets | orderBy:'name':false" style="border:1px; - margin: 10px; - width: 200px; height: 180px; float: left; - "> - <div style=" - margin:10px; - border-color:#cccccc; border-width:1px; - border-radius: 2px; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.1); - padding:8px; - height: 170px; - overflow: hidden; - background-color:#ffffff; - position: relative; - "> - <div style=""> - <div style=" - width:128px; - height:128px; - overflow: hidden; - margin-left: auto; margin-right:auto; - "> - - <img style=" - margin: {{ asset.icon.top }}px 0px 0px {{ asset.icon.left }}px; - height: {{ asset.icon.height }}px; - " src="{{ asset.icon.url }}"> - - </div> - - <span style=" - max-height: 100%; - width: 23px; - height: 23px; - top: 0; - right: 0; - position: absolute; - background: rgba(0, 0, 0, 0) url('http://apps.openstack.org/static/images/featured-corner-{{ asset.service.type }}.png') no-repeat scroll right top; - "> - </span> - </div> - <div title="{{ asset.name }}" style=" - overflow: hidden; - white-space: nowrap; - position: relative; - line-height: 18px; - font-size: 16px; - "> {{ asset.name }} - <span style=" - max-height: 100%; - width: 40px; - height: 20px; - bottom: 0; - right: 0; - position: absolute; - background: rgba(0, 0, 0, 0) linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1)) repeat scroll 0 0; - "> - </span> - </div> - <div title="{{ asset.provided_by.name }}" style=" - overflow: hidden; - white-space: nowrap; - position: relative; - line-height: 14px; - font-size: 12px; - "> {{ asset.provided_by.name }} - <span style=" - max-height: 100%; - width: 40px; - height: 20px; - bottom: 0; - right: 0; - position: absolute; - background: rgba(0, 0, 0, 0) linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1)) repeat scroll 0 0; - "> - </span> - </div> - </div> - </div> - </div> -</div> - -</body> -</html> diff --git a/openstack_catalog/wsgi.py b/openstack_catalog/wsgi.py deleted file mode 100644 index d1c3e05..0000000 --- a/openstack_catalog/wsgi.py +++ /dev/null @@ -1,7 +0,0 @@ -from openstack_catalog import wsgi_django - -from openstack_catalog.api import api - -from werkzeug.wsgi import DispatcherMiddleware - -application = DispatcherMiddleware(wsgi_django.application, {'/api': api}) diff --git a/openstack_catalog/wsgi_django.py b/openstack_catalog/wsgi_django.py deleted file mode 100644 index 5ff2348..0000000 --- a/openstack_catalog/wsgi_django.py +++ /dev/null @@ -1,28 +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. - -""" -WSGI config for openstack_catalog project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/ -""" - -import os -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "openstack_catalog.settings") - -from django.core.wsgi import get_wsgi_application -application = get_wsgi_application() diff --git a/package.json b/package.json deleted file mode 100644 index f1d4ea7..0000000 --- a/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "version": "0.0.0", - "private": true, - "name": "app-catalog", - "description": "OpenStack App Catalog", - "repository": "none", - "license": "Apache 2.0", - "devDependencies": { - "eslint": "^0.23.0", - "eslint-config-openstack": "1.2.0" - }, - "scripts": { - "lint": "eslint --no-color openstack_catalog/web/static/js/" - }, - "dependencies": {} -} diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 88c7e63..0000000 --- a/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. - -pbr>=1.3 -Babel>=1.3 -Django<1.9,>=1.8 -django-compressor>=1.4 -XStatic>=1.0.0 # MIT License -XStatic-Angular>=1.3.7 # MIT License -XStatic-Magic-Search>=0.2.5.1 # Apache 2.0 License -werkzeug -flask diff --git a/run_tests.sh b/run_tests.sh deleted file mode 100755 index 761ac0e..0000000 --- a/run_tests.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash - -set -o errexit - -function usage { - echo "Usage: $0 [OPTION]..." - echo "Run App Catalog's test suite(s)" - echo "" - echo " --runserver Run the development server for" - echo " openstack_catalog in the virtual" - echo " environment." - echo " -h, --help Print this usage message" - echo "" - exit -} - -# DEFAULTS FOR RUN_TESTS.SH -# -root=`pushd $(dirname $0) > /dev/null; pwd; popd > /dev/null` -venv=$root/.venv - -runserver=0 -testopts="" -testargs="" - -# Jenkins sets a "JOB_NAME" variable, if it's not set, we'll make it "default" -[ "$JOB_NAME" ] || JOB_NAME="default" - -function process_option { - case "$1" in - -h|--help) usage;; - --runserver) runserver=1;; - -*) testopts="$testopts $1";; - *) testargs="$testargs $1" - esac -} - -# PROCESS ARGUMENTS, OVERRIDE DEFAULTS -for arg in "$@"; do - process_option $arg -done - -function run_server { - echo "Starting development server..." - $root/tools/update_assets.sh - if [ ! -d $venv ]; then - virtualenv $venv - . $venv/bin/activate - fi - . $venv/bin/activate - pip install -r $root/requirements.txt -#FIXME make venv cleaner. - -# FIXME remove when CORS works -# pushd $root/openstack_catalog/web > /dev/null -# ${command_wrapper} python $root/tools/testserver.py runserver $testopts $testargs - ${command_wrapper} python manage.py runserver $testopts $testargs -# popd > /dev/null - echo "Server stopped." -} - -# Development server -if [ $runserver -eq 1 ]; then - if [ "x$testargs" = "x" -o "$testargs x" = " x" ]; then - testargs="127.0.0.1:18001" - fi - run_server - exit $? -fi - diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 539ed64..0000000 --- a/setup.cfg +++ /dev/null @@ -1,45 +0,0 @@ -[metadata] -name = openstack_catalog -summary = Application catalog for OpenStack -description-file = - README.rst -author = OpenStack -author-email = openstack-dev@lists.openstack.org -home-page = http://www.openstack.org/ -classifier = - Environment :: OpenStack - Intended Audience :: Information Technology - Intended Audience :: System Administrators - License :: OSI Approved :: Apache Software License - Operating System :: POSIX :: Linux - Programming Language :: Python - Programming Language :: Python :: 2 - Programming Language :: Python :: 2.7 - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.4 - -[files] -packages = - openstack_catalog - -[build_sphinx] -source-dir = doc/source -build-dir = doc/build -all_files = 1 - -[upload_sphinx] -upload-dir = doc/build/html - -[compile_catalog] -directory = openstack_catalog/locale -domain = catalog - -[update_catalog] -domain = catalog -output_dir = openstack_catalog/locale -input_file = openstack_catalog/locale/catalog.pot - -[extract_messages] -keywords = _ gettext ngettext l_ lazy_gettext -mapping_file = babel.cfg -output_file = openstack_catalog/locale/catalog.pot diff --git a/setup.py b/setup.py deleted file mode 100755 index 7363757..0000000 --- a/setup.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python -# 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. - -# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT -import setuptools - -# In python < 2.7.4, a lazy loading of package `pbr` will break -# setuptools if some other modules registered functions in `atexit`. -# solution from: http://bugs.python.org/issue15881#msg170215 -try: - import multiprocessing # noqa -except ImportError: - pass - -setuptools.setup( - setup_requires=['pbr'], - pbr=True) diff --git a/test-requirements.txt b/test-requirements.txt deleted file mode 100644 index ee3456b..0000000 --- a/test-requirements.txt +++ /dev/null @@ -1,19 +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<0.11,>=0.10.0 - -coverage>=3.6 -python-subunit>=0.0.18 -sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 -jsonschema>=2.0.0,<3.0.0 -oslosphinx>=2.2.0 # Apache-2.0 -oslotest>=1.2.0 # Apache-2.0 -testrepository>=0.0.18 -testscenarios>=0.4 -testtools>=0.9.36,!=1.2.0 -PyYAML>=3.1.0 - -# js lint tests -nodeenv>=0.9.4 # BSD License diff --git a/tools/asset_history.sh b/tools/asset_history.sh deleted file mode 100755 index 97a1926..0000000 --- a/tools/asset_history.sh +++ /dev/null @@ -1,10 +0,0 @@ -asset_file="$1" -#Chunk the yaml assets into begin_line_number,end_line_number sections -awk '{line+=1}/^ -/{end=line-1; if(start > 0){print start "," end}; count+=1;start=line;}END{print start "," line}' "$asset_file" | while read line; do - size=`echo $line | awk -F, '{print $2-$1+1}'` - end=`echo $line | awk -F, '{print $2}'` - name=`head -n $end "$asset_file" | tail -n $size | python -c 'import yaml,sys; print yaml.safe_load(sys.stdin)[0]["name"]'` - date=`git blame -w -L $line "$asset_file" | sed 's/^[^(]*(\([^)]*\)).*/\1/' | python -c 'import sys,dateutil.parser; print max([dateutil.parser.parse("%s %s%s"%(j[0], j[1], j[2])) for j in [i.split()[-4:] for i in sys.stdin.readlines()]])'` - #Dump out the name of the asset, and the last modified date as a json doc to stdout to be reassembled outside the loop into one document - (echo $name; echo $date) | python -c 'import sys,json; print json.dumps([i.strip() for i in sys.stdin.readlines()]),' -done | python -c 'import sys,json,yaml; print yaml.safe_dump({"assets":dict([[j[0], {"last_modified":j[1]}] for j in [json.loads(i) for i in sys.stdin.readlines()]])}),' #Assemble the individual json documents from the loop into one big one. diff --git a/tools/check_app_catalog_yaml.py b/tools/check_app_catalog_yaml.py deleted file mode 100755 index 9ac9f24..0000000 --- a/tools/check_app_catalog_yaml.py +++ /dev/null @@ -1,137 +0,0 @@ -#! /usr/bin/env python -# -# Copyright (c) 2015 Hewlett-Packard Development Company, L.P. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import requests -import requestsexceptions -import yaml - - -from collections import OrderedDict - - -def project_representer(dumper, data): - return dumper.represent_mapping('tag:yaml.org,2002:map', - data.items()) - - -def construct_yaml_map(self, node): - data = OrderedDict() - yield data - value = self.construct_mapping(node) - - if isinstance(node, yaml.MappingNode): - self.flatten_mapping(node) - else: - raise yaml.constructor.ConstructorError( - None, None, - 'expected a mapping node, but found %s' % node.id, - node.start_mark) - - mapping = OrderedDict() - for key_node, value_node in node.value: - key = self.construct_object(key_node, deep=False) - try: - hash(key) - except TypeError as exc: - raise yaml.constructor.ConstructorError( - 'while constructing a mapping', node.start_mark, - 'found unacceptable key (%s)' % exc, key_node.start_mark) - value = self.construct_object(value_node, deep=False) - mapping[key] = value - data.update(mapping) - - -class IndentedEmitter(yaml.emitter.Emitter): - def expect_block_sequence(self): - self.increase_indent(flow=False, indentless=False) - self.state = self.expect_first_block_sequence_item - - -class IndentedDumper(IndentedEmitter, yaml.serializer.Serializer, - yaml.representer.Representer, yaml.resolver.Resolver): - def __init__(self, stream, - default_style=None, default_flow_style=None, - canonical=None, indent=None, width=None, - allow_unicode=None, line_break=None, - encoding=None, explicit_start=None, explicit_end=None, - version=None, tags=None): - IndentedEmitter.__init__( - self, stream, canonical=canonical, - indent=indent, width=width, - allow_unicode=allow_unicode, - line_break=line_break) - yaml.serializer.Serializer.__init__( - self, encoding=encoding, - explicit_start=explicit_start, - explicit_end=explicit_end, - version=version, tags=tags) - yaml.representer.Representer.__init__( - self, default_style=default_style, - default_flow_style=default_flow_style) - yaml.resolver.Resolver.__init__(self) - - -def get_hashes(hash_url): - hashes = {} - r = requests.get(hash_url, allow_redirects=True) - if r.status_code == 200: - for line in r.iter_lines(): - try: - hash, file = line.split(" ") - except ValueError: - continue - hashes[file] = hash - return hashes - - -def main(): - requestsexceptions.squelch_warnings() - yaml.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, - construct_yaml_map) - - yaml.add_representer(OrderedDict, project_representer, - Dumper=IndentedDumper) - - data = yaml.safe_load(open('openstack_catalog/web/static/assets.yaml')) - - assets = [] - for a in data['assets']: - url = a.get('attributes', {}).get('url') - if not a.get('active', True) or not url: - assets.append(a) - continue - - r = requests.head(url, allow_redirects=True) - if r.status_code != 200: - a['active'] = False - else: - hash_url = a.get('hash_url') - if hash_url: - hashes = get_hashes(hash_url) - filename = url.split("/")[-1] - a['attributes']['hash'] = hashes.get(filename, 'unknown') - - assets.append(a) - - output = {'assets': assets} - with open('openstack_catalog/web/static/assets.yaml', 'w') as out: - out.write(yaml.dump(output, default_flow_style=False, - Dumper=IndentedDumper, width=80, - indent=2)) - -if __name__ == '__main__': - main() diff --git a/tools/testserver.py b/tools/testserver.py deleted file mode 100644 index b511f90..0000000 --- a/tools/testserver.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/env python -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import SimpleHTTPServer -import SocketServer - - -class AllowOriginRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): - def do_GET(self): - print("App Catalog Versions:", - self.headers.get('X-App-Catalog-Versions', '')) - return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) - - def end_headers(self): - self.send_header("Access-Control-Allow-Origin", "*") - SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self) - - def do_OPTIONS(self): - self.send_response(200) - self.send_header("Access-Control-Allow-Origin", "*") - self.send_header("Access-Control-Allow-Headers", - "X-App-Catalog-Versions") - self.send_header("Allow", "GET") - -if __name__ == '__main__': - PORT = 18001 - httpd = SocketServer.TCPServer(("", PORT), AllowOriginRequestHandler) - print("serving at port", PORT) - httpd.serve_forever() diff --git a/tools/update_assets.sh b/tools/update_assets.sh deleted file mode 100755 index 3f3c3ec..0000000 --- a/tools/update_assets.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -ROOTDIR=`pushd $(dirname $0)/.. > /dev/null /dev/null; pwd; popd > /dev/null` -echo $ROOTDIR -pushd $ROOTDIR/openstack_catalog/web > /dev/null -mkdir -p api/v1/ -if [ ! -f static/assets_dead.yaml ]; -then - echo 'assets: {}' > static/assets_dead.yaml -fi -if [ ! -f api/v1/assets ] || [ static/assets.yaml -nt api/v1/assets ] || [ static/assets_dead.yaml -nt api/v1/assets ]; -then - $ROOTDIR/tools/asset_history.sh static/assets.yaml > static/assets_merge.yaml - python $ROOTDIR/tools/yaml2json.py static/assets_merge.yaml static/assets_dead.yaml < static/assets.yaml > /tmp/assets.$$ - zopfli --i150 -c /tmp/assets.$$ > /tmp/assets.$$.gz || gzip -c /tmp/assets.$$ > /tmp/assets.$$.gz - mv /tmp/assets.$$.gz api/v1/assets.gz - mv /tmp/assets.$$ api/v1/assets - rm -f static/assets_merge.yaml -fi -popd > /dev/null diff --git a/tools/yaml2json.py b/tools/yaml2json.py deleted file mode 100644 index c2eec35..0000000 --- a/tools/yaml2json.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json -import sys -import yaml - -parser = argparse.ArgumentParser(description='Merge and convert yaml to json.') -parser.add_argument('files', metavar='F', type=str, nargs='+', - help='file to process') - -args = parser.parse_args() - - -def dict_merge(a, b): - for k, v in b.items(): - if isinstance(v, dict): - n = a.setdefault(k, {}) - dict_merge(n, v) - else: - a[k] = v - return a - -merge = {} -for f in args.files: - merge = dict_merge(merge, yaml.safe_load(open(f))['assets']) - -y = yaml.safe_load(sys.stdin) -for a in y['assets']: - s = a['service'] - if s['type'] == 'heat': - if 'environment' in s: - s['environment'] = yaml.dump(s['environment']) - if a['name'] in merge: - dict_merge(a, merge[a['name']]) -y = [a for a in y['assets'] if a.get('active', True)] -y = {'assets': y} -json.dump(y, sys.stdout) diff --git a/tox.ini b/tox.ini deleted file mode 100644 index fb9922a..0000000 --- a/tox.ini +++ /dev/null @@ -1,50 +0,0 @@ -[tox] -minversion = 1.6 -envlist = py34,py27,pep8 -skipsdist = True - -[testenv] -usedevelop = True -install_command = pip install -U {opts} {packages} -setenv = - VIRTUAL_ENV={envdir} -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt -commands = python setup.py testr --slowest --testr-args='{posargs}' - -[testenv:pep8] -commands = flake8 - -[testenv:venv] -commands = {posargs} - -[testenv:eslint] -deps = -r{toxinidir}/test-requirements.txt -passenv = * -commands = nodeenv -p - npm install - npm run lint - -[testenv:cover] -commands = python setup.py testr --coverage --testr-args='{posargs}' - -[testenv:docs] -commands = python setup.py build_sphinx - -[testenv:debug] -commands = oslo_debug_helper {posargs} - -[flake8] -# E123, E125 skipped as they are invalid PEP-8. - -show-source = True -builtins = _ -exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build - -[testenv:bindep] -# Do not install any requirements. We want this to be fast and work even if -# system dependencies are missing, since it's used to tell you what system -# dependencies are missing! This also means that bindep must be installed -# separately, outside of the requirements files. -deps = bindep -commands = bindep test