Retire Murano: remove repo content
Murano project is retiring - https://review.opendev.org/c/openstack/governance/+/919358 this commit remove the content of this project repo Depends-On: https://review.opendev.org/c/openstack/project-config/+/919359/ Change-Id: Ifef553e4438244b3f356312c5c9787c2cb7d18c2
This commit is contained in:
parent
c898a310af
commit
1ac6e2bcb2
12
.coveragerc
12
.coveragerc
@ -1,12 +0,0 @@
|
||||
[run]
|
||||
branch = True
|
||||
source = murano
|
||||
omit =
|
||||
.tox/*
|
||||
murano/tests/*
|
||||
|
||||
[paths]
|
||||
source = murano
|
||||
|
||||
[report]
|
||||
ignore_errors = True
|
61
.gitignore
vendored
61
.gitignore
vendored
@ -1,61 +0,0 @@
|
||||
#swap file
|
||||
*.swp
|
||||
|
||||
#IntelJ Idea
|
||||
.idea/
|
||||
|
||||
#virtualenv
|
||||
.venv/
|
||||
|
||||
#Build results
|
||||
build/
|
||||
dist/
|
||||
*.egg-info/
|
||||
*.egg
|
||||
eggs/
|
||||
.eggs/
|
||||
develop-eggs/
|
||||
.tox
|
||||
AUTHORS
|
||||
ChangeLog
|
||||
.testrepository
|
||||
.coverage
|
||||
cover
|
||||
api-ref/build/
|
||||
|
||||
!/.stestr.conf
|
||||
.stestr/
|
||||
|
||||
#Python
|
||||
*.pyc
|
||||
|
||||
#Translation build
|
||||
*.mo
|
||||
|
||||
#SQLite Database files
|
||||
*.sqlite
|
||||
|
||||
#Autogenerated Documentation
|
||||
doc/source/api
|
||||
doc/source/_static/murano.conf.sample
|
||||
doc/source/_static/murano.policy.yaml.sample
|
||||
|
||||
#Config file for functional tests
|
||||
murano/tests/functional/engine/config.conf
|
||||
|
||||
#Autogenerated sample config file and policy file
|
||||
etc/murano/murano.conf.sample
|
||||
etc/murano/murano-cfapi.conf.sample
|
||||
etc/murano.policy.yaml.sample
|
||||
|
||||
#User Config file for Murano
|
||||
etc/murano/murano.conf
|
||||
etc/murano/murano-cfapi.conf
|
||||
etc/murano/logging.conf
|
||||
|
||||
# pylint autogenerated support files
|
||||
tools/lintstack.head.py
|
||||
tools/pylint_exceptions
|
||||
|
||||
# Files created by releasenotes build
|
||||
releasenotes/build
|
@ -1,3 +0,0 @@
|
||||
[DEFAULT]
|
||||
test_path=${OS_TEST_PATH:-./murano/tests/unit}
|
||||
top_dir=./
|
128
.zuul.yaml
128
.zuul.yaml
@ -1,128 +0,0 @@
|
||||
- project:
|
||||
queue: murano
|
||||
templates:
|
||||
- check-requirements
|
||||
- openstack-cover-jobs
|
||||
- openstack-python3-jobs
|
||||
- periodic-stable-jobs
|
||||
- publish-openstack-docs-pti
|
||||
- release-notes-jobs-python3
|
||||
check:
|
||||
jobs:
|
||||
- murano-rally-task
|
||||
- murano-tempest-api
|
||||
- murano-tempest-cfapi
|
||||
- murano-grenade
|
||||
- murano-tempest-api-ipv6-only
|
||||
gate:
|
||||
jobs:
|
||||
- murano-tempest-api
|
||||
- murano-tempest-api-ipv6-only
|
||||
|
||||
- job:
|
||||
name: murano-rally-task
|
||||
voting: false
|
||||
parent: rally-task-murano
|
||||
irrelevant-files: &murano-irrelevant-files
|
||||
- ^(test-|)requirements.txt$
|
||||
- ^setup.cfg$
|
||||
- ^doc/.*$
|
||||
- ^.*\.rst$
|
||||
- ^releasenotes/.*$
|
||||
- ^murano/tests/.*$
|
||||
- ^contrib/.*$
|
||||
- ^tools/.*$
|
||||
timeout: 7800
|
||||
vars:
|
||||
devstack_plugins:
|
||||
rally-openstack: https://opendev.org/openstack/rally-openstack
|
||||
rally_task: rally-jobs/task-murano.yaml
|
||||
required-projects:
|
||||
- openstack/rally-openstack
|
||||
|
||||
- job:
|
||||
name: murano-tempest-base
|
||||
parent: devstack-tempest
|
||||
irrelevant-files: *murano-irrelevant-files
|
||||
timeout: 7800
|
||||
required-projects: &base_required_projects
|
||||
- openstack/heat
|
||||
- openstack/murano
|
||||
- openstack/murano-dashboard
|
||||
- openstack/python-heatclient
|
||||
- openstack/python-muranoclient
|
||||
- openstack/tempest
|
||||
- openstack/murano-tempest-plugin
|
||||
vars: &base_vars
|
||||
devstack_plugins:
|
||||
murano: https://opendev.org/openstack/murano
|
||||
heat: https://opendev.org/openstack/heat
|
||||
devstack_services:
|
||||
tempest: true
|
||||
s-account: false
|
||||
s-container: false
|
||||
s-object: false
|
||||
s-proxy: false
|
||||
devstack_localrc:
|
||||
TEMPEST_PLUGINS: "/opt/stack/murano-tempest-plugin"
|
||||
KEYSTONE_ADMIN_ENDPOINT: true
|
||||
tempest_test_regex: application_catalog
|
||||
tox_envlist: all
|
||||
|
||||
- job:
|
||||
name: murano-tempest-api
|
||||
parent: murano-tempest-base
|
||||
|
||||
- job:
|
||||
name: murano-tempest-api-ipv6-only
|
||||
parent: devstack-tempest-ipv6
|
||||
description: |
|
||||
Murano devstack tempest tests job for IPv6-only deployment
|
||||
timeout: 7800
|
||||
irrelevant-files: *murano-irrelevant-files
|
||||
required-projects: *base_required_projects
|
||||
vars: *base_vars
|
||||
|
||||
- job:
|
||||
name: murano-tempest-cfapi
|
||||
parent: murano-tempest-base
|
||||
voting: false
|
||||
vars:
|
||||
devstack_services:
|
||||
murano-cfapi: true
|
||||
tempest_test_regex: service_broker
|
||||
|
||||
- job:
|
||||
name: murano-grenade
|
||||
parent: grenade
|
||||
voting: false
|
||||
irrelevant-files: *murano-irrelevant-files
|
||||
required-projects:
|
||||
- opendev.org/openstack/grenade
|
||||
- opendev.org/openstack/heat
|
||||
- opendev.org/openstack/murano
|
||||
- opendev.org/openstack/murano-dashboard
|
||||
- opendev.org/openstack/python-heatclient
|
||||
- opendev.org/openstack/python-muranoclient
|
||||
- opendev.org/openstack/murano-tempest-plugin
|
||||
- opendev.org/openstack/heat-tempest-plugin
|
||||
vars:
|
||||
grenade_localrc:
|
||||
RUN_HEAT_INTEGRATION_TESTS: False
|
||||
devstack_plugins:
|
||||
murano: https://opendev.org/openstack/murano
|
||||
heat: https://opendev.org/openstack/heat
|
||||
devstack_services:
|
||||
tempest: true
|
||||
s-account: false
|
||||
s-container: false
|
||||
s-object: false
|
||||
s-proxy: false
|
||||
h-api: true
|
||||
h-api-cfn: true
|
||||
h-eng: true
|
||||
heat: true
|
||||
tempest_plugins:
|
||||
- murano-tempest-plugin
|
||||
tempest_test_regex: ^murano_tempest_tests\.tests\.scenario\.application_catalog\.test_deployment
|
||||
tox_envlist: all
|
@ -1,19 +0,0 @@
|
||||
The source repository for this project can be found at:
|
||||
|
||||
https://opendev.org/openstack/murano
|
||||
|
||||
Pull requests submitted through GitHub are not monitored.
|
||||
|
||||
To start contributing to OpenStack, follow the steps in the contribution guide
|
||||
to set up and use Gerrit:
|
||||
|
||||
https://docs.openstack.org/contributors/code-and-documentation/quick-start.html
|
||||
|
||||
Bugs should be filed on Launchpad:
|
||||
|
||||
https://bugs.launchpad.net/murano
|
||||
|
||||
For more specific information about contributing to this repository, see the
|
||||
murano contributor guide:
|
||||
|
||||
https://docs.openstack.org/murano/latest/contributor/contributing.html
|
15
HACKING.rst
15
HACKING.rst
@ -1,15 +0,0 @@
|
||||
Style Commandments
|
||||
==================
|
||||
|
||||
Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/
|
||||
|
||||
Murano Specific Commandments
|
||||
----------------------------
|
||||
|
||||
- [M318] Change assertEqual(A, None) or assertEqual(None, A) by optimal assert
|
||||
like assertIsNone(A)
|
||||
- [M322] Method's default argument shouldn't be mutable.
|
||||
- [M323] Python 3: do not use dict.iteritems.
|
||||
- [M324] Python 3: do not use dict.iterkeys.
|
||||
- [M325] Python 3: do not use dict.itervalues.
|
||||
- [M326] Python 3: do not use basestring.
|
176
LICENSE
176
LICENSE
@ -1,176 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
48
README.rst
48
README.rst
@ -1,42 +1,10 @@
|
||||
========================
|
||||
Team and repository tags
|
||||
========================
|
||||
This project is no longer maintained.
|
||||
|
||||
.. image:: https://governance.openstack.org/tc/badges/murano.svg
|
||||
:target: https://governance.openstack.org/tc/reference/tags/index.html
|
||||
The contents of this repository are still available in the Git
|
||||
source code management system. To see the contents of this
|
||||
repository before it reached its end of life, please check out the
|
||||
previous commit with "git checkout HEAD^1".
|
||||
|
||||
.. Change things from this point on
|
||||
|
||||
Murano
|
||||
======
|
||||
|
||||
Murano Project introduces an application catalog, which allows application
|
||||
developers and cloud administrators to publish various cloud-ready
|
||||
applications in a browsable categorised catalog. Cloud users
|
||||
-- including inexperienced ones -- can then use the catalog to
|
||||
compose reliable application environments with the push of a button.
|
||||
|
||||
|
||||
Project Resources
|
||||
-----------------
|
||||
|
||||
* `Murano Official Documentation <https://docs.openstack.org/murano/latest/>`_
|
||||
|
||||
* Project status, bugs, and blueprints are tracked on
|
||||
`Launchpad <https://launchpad.net/murano>`_
|
||||
|
||||
* Additional resources are linked from the project
|
||||
`Wiki <https://wiki.openstack.org/wiki/Murano>`_ page
|
||||
|
||||
* `Python client <https://opendev.org/openstack/python-muranoclient>`_
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
|
||||
Release Notes
|
||||
-------------
|
||||
|
||||
Release Notes may be found here: https://docs.openstack.org/releasenotes/murano
|
||||
For any further questions, please email
|
||||
openstack-discuss@lists.openstack.org or join #openstack-dev on
|
||||
OFTC.
|
||||
|
@ -1,208 +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.
|
||||
#
|
||||
# murano documentation build configuration file, created by
|
||||
# sphinx-quickstart on Sat May 1 15:17:47 2010.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to
|
||||
# its containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
extensions = [
|
||||
'os_api_ref',
|
||||
'openstackdocstheme'
|
||||
]
|
||||
|
||||
|
||||
html_theme = 'openstackdocs'
|
||||
html_theme_options = {
|
||||
"sidebar_mode": "toc",
|
||||
}
|
||||
|
||||
# openstackdocstheme options
|
||||
openstackdocs_repo_name = 'openstack/murano'
|
||||
openstackdocs_bug_project = 'murano'
|
||||
openstackdocs_bug_tag = 'api-ref'
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('../../'))
|
||||
sys.path.insert(0, os.path.abspath('../'))
|
||||
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.
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#
|
||||
# source_encoding = 'utf-8'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
copyright = u'2016-present, OpenStack Foundation'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
# today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
# today_fmt = '%B %d, %Y'
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use
|
||||
# for all documents.
|
||||
# default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
# add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
add_module_names = False
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'native'
|
||||
|
||||
# -- Options for man page output ----------------------------------------------
|
||||
|
||||
# Grouping the document tree for man pages.
|
||||
# List of tuples 'sourcefile', 'target', u'title', u'Authors name', 'manual'
|
||||
|
||||
|
||||
# -- 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'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
# html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
# html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
# html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
# html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
# html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
# html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
# html_static_path = ['_static']
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
# html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
# html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
# html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
# html_use_modindex = True
|
||||
|
||||
# If false, no index is generated.
|
||||
# html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
# html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
# html_show_sourcelink = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
# html_use_opensearch = ''
|
||||
|
||||
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
# html_file_suffix = ''
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'muranodoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output -------------------------------------------------
|
||||
|
||||
# The paper size ('letter' or 'a4').
|
||||
# latex_paper_size = 'letter'
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
# latex_font_size = '10pt'
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass
|
||||
# [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'Murano.tex', u'OpenStack Application Catalog API Documentation',
|
||||
u'OpenStack Foundation', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
# latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
# latex_use_parts = False
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
# latex_preamble = ''
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
# latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
# latex_use_modindex = True
|
@ -1,8 +0,0 @@
|
||||
==================================
|
||||
OpenStack Application Catalog APIs
|
||||
==================================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
v1/index
|
@ -1,129 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
==========================
|
||||
Actions and Static Actions
|
||||
==========================
|
||||
|
||||
A Murano action is a type of MuranoPL method. The differences between a regular
|
||||
MuranoPL method are:
|
||||
|
||||
* Action is executed on deployed objects.
|
||||
* Action execution is initiated by API request: you do not have to call the
|
||||
method manually.
|
||||
|
||||
Thus, Murano actions allow performing any operations on objects, like:
|
||||
|
||||
* Getting information from the VM, like a config that is generated during the
|
||||
deployment
|
||||
* VM rebooting
|
||||
* Scaling
|
||||
|
||||
A list of available actions is formed during the environment deployment.
|
||||
Following deployment completion, you can call the action asynchronously. Murano
|
||||
engine generates a task for every action thereby allowing the action status to
|
||||
be tracked.
|
||||
|
||||
Execute action
|
||||
==============
|
||||
|
||||
.. rest_method:: POST /environments/{environment_id}/actions/{action_id}
|
||||
|
||||
Execute action on deployed environment.
|
||||
|
||||
Request Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- environment_id: env_id_url
|
||||
- action_id: action_id_url
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- task_id: task_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/execute-action-response.json
|
||||
:language: javascript
|
||||
|
||||
Get Action Result
|
||||
=================
|
||||
|
||||
.. rest_method:: GET /environments/{environment_id}/actions/{task_id}
|
||||
|
||||
Retrieve action result for action executed on deployed environment.
|
||||
|
||||
Request Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- environment_id: env_id_url
|
||||
- task_id: task_id_url
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Execute static action
|
||||
=====================
|
||||
|
||||
.. rest_method:: POST /actions
|
||||
|
||||
Execute static action.
|
||||
|
||||
Static methods can be called if they are exposed by specifying Scope: Public
|
||||
in the MuranoPL object and the result of its execution will be returned.
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/static-action-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/static-action-response.json
|
||||
:language: javascript
|
@ -1,162 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
==========
|
||||
Categories
|
||||
==========
|
||||
|
||||
In Murano, applications can belong to a category or multiple categories.
|
||||
Administrative users can create and delete categories as well as list
|
||||
available categories and view details for a particular category.
|
||||
|
||||
List categories
|
||||
===============
|
||||
|
||||
.. rest_method:: GET /catalog/categories
|
||||
|
||||
Retrieve list of all available categories in the Application Catalog.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- categories: all_categories
|
||||
- id: category_id
|
||||
- name: category_name
|
||||
- updated: updated
|
||||
- created: created
|
||||
- package_count: package_count
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/category-list-response.json
|
||||
:language: javascript
|
||||
|
||||
Show category details
|
||||
=====================
|
||||
|
||||
.. rest_method:: GET /catalog/categories/{category_id}
|
||||
|
||||
Show details for a category.
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- category_id: category_id_url
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- id: category_id
|
||||
- name: category_name
|
||||
- updated: updated
|
||||
- created: created
|
||||
- packages: category_packages
|
||||
- package_count: package_count
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/category-show-response.json
|
||||
:language: javascript
|
||||
|
||||
Create Category
|
||||
===============
|
||||
|
||||
.. rest_method:: POST /catalog/categories
|
||||
|
||||
Add a new category to the Application Catalog.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- name: category_name
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- id: category_id
|
||||
- name: category_name
|
||||
- updated: updated
|
||||
- created: created
|
||||
- package_count: package_count
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/category-create-response.json
|
||||
:language: javascript
|
||||
|
||||
Delete Category
|
||||
===============
|
||||
|
||||
.. rest_method:: DELETE /catalog/categories/{category_id}
|
||||
|
||||
Remove an existing category from the Application Catalog.
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- category_id: category_id_url
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
@ -1,50 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
===========
|
||||
Deployments
|
||||
===========
|
||||
|
||||
Deployments track environments that have been deployed, either successfully
|
||||
or otherwise. Each deployment contains the following information:
|
||||
|
||||
* A "Class: Environment" object (io.murano.Environment) with a name. Each
|
||||
"Class: Environment" object defines an environment in terms of the deployment
|
||||
process and groups all Applications and their related infrastructures together.
|
||||
* An object (or objects) referring to networks that exist.
|
||||
* A list of Applications (e.g. io.murano.apps.linux.Telnet). Each Application
|
||||
contains, or otherwise references, anything it requires. The Telnet example
|
||||
has a property called ``instance`` whose contract states it must be of type
|
||||
``io.murano.resources.Instance``. In turn, the Instance has properties it
|
||||
requires (like a ``name``, a ``flavor``, or a keypair name, ``keyname``).
|
||||
|
||||
List deployments
|
||||
================
|
||||
|
||||
.. rest_method:: GET /deployments
|
||||
|
||||
List deployments for all environments for the current tenant (project).
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- deployments: deployments
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/deployments-list-response.json
|
||||
:language: javascript
|
@ -1,403 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
============
|
||||
Environments
|
||||
============
|
||||
|
||||
An environment is a set of logically connected applications that are grouped
|
||||
together for easy management. By default, each environment has a single
|
||||
network for all its applications, and the deployment of the environment is
|
||||
defined in a single heat stack. Applications in different environments are
|
||||
always independent from one another.
|
||||
|
||||
An environment is a single unit of deployment. This means that you can not only
|
||||
deploy an environment that contains a single application but an environment
|
||||
that contains multiple applications.
|
||||
|
||||
List environments
|
||||
=================
|
||||
|
||||
.. rest_method:: GET /environments
|
||||
|
||||
Get a list of existing Environments
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- all_tenants: all_tenants
|
||||
- tenant: tenant
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- environments: environments
|
||||
- status: env_status
|
||||
- created: created
|
||||
- updated: updated
|
||||
- name: env_name
|
||||
- description_text: env_description
|
||||
- tenant_id: tenant_id
|
||||
- version: env_version
|
||||
- id: env_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environments-list-response.json
|
||||
:language: javascript
|
||||
|
||||
Create environment
|
||||
==================
|
||||
|
||||
.. rest_method:: POST /environments
|
||||
|
||||
Creates an environment.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- name: env_name_request
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/environment-create-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- id: env_id
|
||||
- name: env_name
|
||||
- description_text: env_description
|
||||
- created: created
|
||||
- updated: updated
|
||||
- tenant_id: tenant_id
|
||||
- version: env_version
|
||||
- services: services
|
||||
- acquired_by: acquired_by
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environment-create-response.json
|
||||
:language: javascript
|
||||
|
||||
Rename environment
|
||||
==================
|
||||
|
||||
.. rest_method:: PUT /environments/{env_id}
|
||||
|
||||
Renames an environment.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
- name: env_name_update
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/environment-update-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- id: env_id
|
||||
- name: env_name
|
||||
- description_text: env_description
|
||||
- created: created
|
||||
- updated: updated
|
||||
- tenant_id: tenant_id
|
||||
- version: env_version
|
||||
- services: services
|
||||
- acquired_by: acquired_by
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environment-update-response.json
|
||||
:language: javascript
|
||||
|
||||
Show environment details
|
||||
========================
|
||||
|
||||
.. rest_method:: GET /environments/{env_id}
|
||||
|
||||
Shows details for an environment.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- id: env_id
|
||||
- name: env_name
|
||||
- description_text: env_description
|
||||
- created: created
|
||||
- updated: updated
|
||||
- tenant_id: tenant_id
|
||||
- version: env_version
|
||||
- services: services
|
||||
- acquired_by: acquired_by
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environment-show-response.json
|
||||
:language: javascript
|
||||
|
||||
Delete environment
|
||||
==================
|
||||
|
||||
.. rest_method:: DELETE /environments/{env_id}
|
||||
|
||||
Remove specified Environment.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
- abandon: abandon
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
This request does not return anything in the response body.
|
||||
|
||||
Get environment model
|
||||
=====================
|
||||
|
||||
.. rest_method:: GET /environments/{env_id}/model/{path}
|
||||
|
||||
Get an Environment model.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
- path: env_model_path
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- defaultNetworks: env_default_networks
|
||||
- region: env_region
|
||||
- regions: regions
|
||||
- name: env_name
|
||||
- services: services
|
||||
- ?: env_model
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environments-model-response.json
|
||||
:language: javascript
|
||||
|
||||
Update environment model
|
||||
========================
|
||||
|
||||
.. rest_method:: PATCH /environments/{env_id}/model/
|
||||
|
||||
Update an environment model.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 202
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/environment-model-update-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- defaultNetworks: env_default_networks
|
||||
- region: env_region
|
||||
- regions: regions
|
||||
- name: env_name
|
||||
- services: services
|
||||
- ?: env_model
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environments-model-response.json
|
||||
:language: javascript
|
||||
|
||||
Get environment last status
|
||||
===========================
|
||||
|
||||
.. rest_method:: GET /environments/{env_id}/lastStatus
|
||||
|
||||
Get the last status for the environment for each service in the environment.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- lastStatuses: env_last_status
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/environment-last-status-response.json
|
||||
:language: javascript
|
@ -1,15 +0,0 @@
|
||||
:tocdepth: 2
|
||||
|
||||
####################################
|
||||
OpenStack Application Catalog API v1
|
||||
####################################
|
||||
|
||||
.. rest_expand_all::
|
||||
|
||||
.. include:: actions.inc
|
||||
.. include:: categories.inc
|
||||
.. include:: deployments.inc
|
||||
.. include:: environments.inc
|
||||
.. include:: packages.inc
|
||||
.. include:: sessions.inc
|
||||
.. include:: templates.inc
|
@ -1,488 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
========
|
||||
Packages
|
||||
========
|
||||
|
||||
In Murano, each application, as well as the UI form for application data entry,
|
||||
is defined by packages.
|
||||
|
||||
Package Structure
|
||||
=================
|
||||
|
||||
The structure of the Murano application package is predefined. The application package root folder
|
||||
should contain the following:
|
||||
|
||||
* ``manifest.yaml`` file is the application entry point.
|
||||
|
||||
.. note::
|
||||
|
||||
The filename is fixed, so do not use any custom names.
|
||||
|
||||
* ``Classes`` folder contains MuranoPL class definitions.
|
||||
|
||||
* ``Resources`` folder contaisn execution plan templates as well as the
|
||||
``scripts`` folder with all the files required for an application
|
||||
deployment located inside it.
|
||||
|
||||
* ``UI`` folder contains the dynamic UI YAML definitions.
|
||||
|
||||
* ``logo.png`` file (optional) is an image file associated with your
|
||||
application. The logo appears in the Application Catalog within
|
||||
Murano Dasboard.
|
||||
|
||||
.. note::
|
||||
|
||||
There are no special limitations regarding an image filename.
|
||||
However, if it differs from the default ``logo.png``, specify it
|
||||
in an application manifest file.
|
||||
|
||||
* ``images.lst`` file (optional) contains a list of images required by an
|
||||
application.
|
||||
|
||||
.. note::
|
||||
|
||||
A bundle is a collection of packages. In the Community App Catalog, you can
|
||||
find such bundles as ``container-based-apps``, ``app-servers``, and so on.
|
||||
The packages in the Application Catalog are sorted by usage.
|
||||
|
||||
List Packages
|
||||
=============
|
||||
|
||||
.. rest_method:: GET /v1/catalog/packages
|
||||
|
||||
Get a list of packages
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- catalog: catalog
|
||||
- marker: marker
|
||||
- limit: limit
|
||||
- order_by: order_by
|
||||
- type: pkg_type_query
|
||||
- category: category
|
||||
- fqn: fqn
|
||||
- owned: owned
|
||||
- id: pkg_id_query
|
||||
- include_disabled: include_disabled
|
||||
- search: search
|
||||
- class_name: class_name
|
||||
- name: pkg_name_query
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- packages: packages
|
||||
- updated: updated
|
||||
- class_definitions: class_definitions
|
||||
- id: pkg_id
|
||||
- fully_qualified_name: fully_qualified_name
|
||||
- is_public: is_public
|
||||
- name: pkg_name
|
||||
- type: pkg_type
|
||||
- supplier: pkg_supplier
|
||||
- description: description
|
||||
- author: author
|
||||
- created: created
|
||||
- enabled: enabled
|
||||
- tags: tags
|
||||
- categories: package_categories
|
||||
- owner_id: owner_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/packages-list-response.json
|
||||
:language: javascript
|
||||
|
||||
Upload package
|
||||
==============
|
||||
|
||||
.. rest_method:: POST /v1/catalog/packages
|
||||
|
||||
Upload a package to the application catalog.
|
||||
|
||||
.. note::
|
||||
|
||||
Though specifying categories is optional, it is recommended that you
|
||||
specify at least one. It helps to filter applications in the catalog.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- categories: package_categories
|
||||
- is_public: is_public
|
||||
- file: pkg_file
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- updated: updated
|
||||
- class_definitions: class_definitions
|
||||
- id: pkg_id
|
||||
- fully_qualified_name: fully_qualified_name
|
||||
- is_public: is_public
|
||||
- name: pkg_name
|
||||
- type: pkg_type
|
||||
- supplier: pkg_supplier
|
||||
- description: description
|
||||
- author: author
|
||||
- created: created
|
||||
- enabled: enabled
|
||||
- tags: tags
|
||||
- categories: package_categories
|
||||
- owner_id: owner_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/package-create-response.json
|
||||
:language: javascript
|
||||
|
||||
Download package
|
||||
================
|
||||
|
||||
.. rest_method:: GET /v1/catalog/packages/{package_id}/download
|
||||
|
||||
Download a package.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- package_id: pkg_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
This request does not return anything in the response body.
|
||||
:language: javascript
|
||||
|
||||
Show package details
|
||||
====================
|
||||
|
||||
.. rest_method:: GET /v1/catalog/packages/{package_id}
|
||||
|
||||
Shows details for a package.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- package_id: pkg_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- updated: updated
|
||||
- class_definitions: class_definitions
|
||||
- id: pkg_id
|
||||
- fully_qualified_name: fully_qualified_name
|
||||
- is_public: is_public
|
||||
- name: pkg_name
|
||||
- type: pkg_type
|
||||
- supplier: pkg_supplier
|
||||
- description: description
|
||||
- author: author
|
||||
- created: created
|
||||
- enabled: enabled
|
||||
- tags: tags
|
||||
- categories: package_categories
|
||||
- owner_id: owner_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/package-show-response.json
|
||||
:language: javascript
|
||||
|
||||
Update package
|
||||
==============
|
||||
|
||||
.. rest_method:: PATCH /v1/catalog/packages/{package_id}
|
||||
|
||||
Update a package.
|
||||
|
||||
List of allowed changes::
|
||||
|
||||
{ "op": "add", "path": "/tags", "value": [ "foo", "bar" ] }
|
||||
{ "op": "add", "path": "/categories", "value": [ "foo", "bar" ] }
|
||||
{ "op": "remove", "path": "/tags" }
|
||||
{ "op": "remove", "path": "/categories" }
|
||||
{ "op": "replace", "path": "/tags", "value": ["foo", "bar"] }
|
||||
{ "op": "replace", "path": "/is_public", "value": true }
|
||||
{ "op": "replace", "path": "/description",
|
||||
"value":"New description" }
|
||||
{ "op": "replace", "path": "/name", "value": "New name" }
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 202
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 403
|
||||
- 404
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- package_id: pkg_id_url
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/package-update-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- updated: updated
|
||||
- class_definitions: class_definitions
|
||||
- id: pkg_id
|
||||
- fully_qualified_name: fully_qualified_name
|
||||
- is_public: is_public
|
||||
- name: pkg_name
|
||||
- type: pkg_type
|
||||
- supplier: pkg_supplier
|
||||
- description: description
|
||||
- author: author
|
||||
- created: created
|
||||
- enabled: enabled
|
||||
- tags: tags
|
||||
- categories: package_categories
|
||||
- owner_id: owner_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/package-update-response.json
|
||||
|
||||
Delete package
|
||||
==============
|
||||
|
||||
.. rest_method:: DELETE /v1/catalog/packages/{package_id}
|
||||
|
||||
Remove specified Environment.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- package_id: pkg_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
This request does not return anything in the response body.
|
||||
:language: javascript
|
||||
|
||||
Search for packages
|
||||
===================
|
||||
|
||||
.. rest_method:: GET /v1/catalog/packages
|
||||
|
||||
Search for packages in application catalog. Non-admins, by default, can view
|
||||
packages that belong to their project as well as public packages: packages
|
||||
which belong to other projects but which have been tagged as public by an
|
||||
admin. Admins can search for packages across all projects.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- filters: pkg_filters
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
Returns the list of packages matching the search criteria.
|
||||
|
||||
Get UI definition
|
||||
=================
|
||||
|
||||
.. rest_method:: GET /v1/catalog/packages/{package_id}/ui
|
||||
|
||||
Retrieve UI definition for an application.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- package_id: pkg_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
Returns the entire UI definition for the package, if the logo has a
|
||||
UI definition.
|
||||
|
||||
Below is an example of a very basic UI definition::
|
||||
|
||||
Version: 2.2
|
||||
|
||||
Forms:
|
||||
- appConfiguration:
|
||||
fields:
|
||||
- name: license
|
||||
type: string
|
||||
description: Apache License, Version 2.0
|
||||
hidden: false
|
||||
required: false
|
||||
|
||||
Get logo
|
||||
========
|
||||
|
||||
.. rest_method:: GET /v1/catalog/packages/{package_id}/logo
|
||||
|
||||
Retrieve application logo.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 403
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- package_id: pkg_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
Returns the binary logo data for the package, if the package has a logo.
|
@ -1,660 +0,0 @@
|
||||
# variables in header
|
||||
request_id:
|
||||
description: |
|
||||
A unique ID for tracking service request. The request ID associated
|
||||
with the request by default appears in the service logs.
|
||||
in: header
|
||||
required: true
|
||||
type: UUID
|
||||
|
||||
# variables in path
|
||||
abandon:
|
||||
description: |
|
||||
Indicates how to delete environment.
|
||||
``True`` is used when just database must be cleaned.
|
||||
``False`` is used if all resources used by environment must be destroyed.
|
||||
in: path
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
action_id_url:
|
||||
description: |
|
||||
The UUID of the action to be executed on the deployed environment.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
category_id_url:
|
||||
description: |
|
||||
The UUID of the category.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
env_id_url:
|
||||
description: |
|
||||
The UUID of the environment.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
env_model_path:
|
||||
description: |
|
||||
Allows to get a specific section of the model, for example
|
||||
``defaultNetworks``, ``region`` or ``?`` or any of the subsections.
|
||||
in: path
|
||||
required: false
|
||||
type: string
|
||||
env_name_update:
|
||||
description: |
|
||||
A name for the environment. Name must be at least
|
||||
one non-white space symbol.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
pkg_id_url:
|
||||
description: |
|
||||
The UUID of the package.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
service_id_url:
|
||||
description:
|
||||
The UUID of a service belonging to an environment template.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
session_id_url:
|
||||
description: |
|
||||
The UUID of the session.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
task_id_url:
|
||||
description: |
|
||||
The UUID of the task associated with an action executed on a deployed
|
||||
environment.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
template_id_url:
|
||||
description: |
|
||||
The UUID of the environment template.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
template_is_public_url:
|
||||
description: |
|
||||
Indicates whether public environment templates are listed or not. The
|
||||
following options are possible:
|
||||
|
||||
- ``True``. Public environments templates from all projects are listed.
|
||||
- ``False``. Private environments templates from current project are
|
||||
listed.
|
||||
- ``empty``. All project templates plus public templates from all projects.
|
||||
are listed
|
||||
in: path
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
|
||||
# variables in query
|
||||
all_tenants:
|
||||
description: |
|
||||
Indicates whether environments from all projects are listed.
|
||||
``True`` environments from all projects are listed. Admin user required.
|
||||
``False`` environments only from current project are listed (default like
|
||||
option unspecified).
|
||||
in: query
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
catalog:
|
||||
description: |
|
||||
If ``false`` (default) - search packages, that current user can edit
|
||||
(own for non-admin, all for admin). If ``true`` - search packages,
|
||||
that current user can deploy (i.e. his own + public).
|
||||
in: query
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
category:
|
||||
description: |
|
||||
Allows to filter by categories.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
class_name:
|
||||
description: |
|
||||
Search only for packages, that use specified class.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
fqn:
|
||||
description: |
|
||||
Allows to filter by fully qualified name.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
include_disabled:
|
||||
description: |
|
||||
Include disabled packages in the result.
|
||||
in: query
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
limit:
|
||||
description: |
|
||||
When present the maximum number of results returned will not exceed
|
||||
the specified value. The typical pattern of limit and marker is to
|
||||
make an initial limited request and then to use the ID of the last
|
||||
package from the response as the marker parameter in a
|
||||
subsequent limited request.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
marker:
|
||||
description: |
|
||||
A package identifier marker may be specified. When present only
|
||||
packages which occur after the identifier ID will be listed
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
order_by:
|
||||
description: |
|
||||
Allows to sort packages by ``fqn``, ``name``, ``created``.
|
||||
Created is default value.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
owned:
|
||||
description: |
|
||||
Search only from packages owned by current project.
|
||||
in: query
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
pkg_filters:
|
||||
description: |
|
||||
The filters that you want to use to search for packages in the
|
||||
application catalog. If no filters query parameter is specified, the
|
||||
application catalog API returns all packages allowed by the policy
|
||||
settings. By using filters parameter, the API returns only the requested
|
||||
set of packages that meet the filters. The list of filters includes:
|
||||
|
||||
* limit: the maximum number of packages to return
|
||||
* type: the package type
|
||||
* id: the package id
|
||||
* category: the package category
|
||||
* tag: the package tag
|
||||
* class_name: the package class name
|
||||
* fqn: the package fully qualified name
|
||||
* name: the package name
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
pkg_id_query:
|
||||
description: |
|
||||
Allows to filter by package id.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
pkg_name_query:
|
||||
description: |
|
||||
Allows to filter by package name.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
pkg_type_query:
|
||||
description: |
|
||||
Allows to filter package by type, e.g. ``application``, ``library``.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
search:
|
||||
description: |
|
||||
Gives opportunity to search specified data by all the
|
||||
package parameters and order packages.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
tenant:
|
||||
description: |
|
||||
Indicates environments from specified tenant are listed. Admin user required.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
|
||||
# variables in body
|
||||
acquired_by:
|
||||
description: |
|
||||
The session that is currently `deploying` the environment. Returns the
|
||||
`first` session id that is in ``DEPLOYING`` state for the environment.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
all_categories:
|
||||
description: |
|
||||
All categories available in the application catalog.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
author:
|
||||
description: |
|
||||
The author of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
category_id:
|
||||
description: |
|
||||
The UUID of the category.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
category_name:
|
||||
description: |
|
||||
The name of the category.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
category_packages:
|
||||
description: |
|
||||
The list of packages associated with a package. Each package returned
|
||||
includes its ``id``, ``fully_qualified_name``, and ``name``.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
class_definitions:
|
||||
description: |
|
||||
The class_definitions of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
created:
|
||||
description: |
|
||||
The date and time when the resource was created. The date and time stamp
|
||||
format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_:
|
||||
|
||||
::
|
||||
|
||||
CCYY-MM-DDThh:mm:ss±hh:mm
|
||||
|
||||
For example, ``2015-08-27T09:49:58-05:00``.
|
||||
|
||||
The ``±hh:mm`` value, if included, is the time zone as an offset
|
||||
from UTC.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
deployments:
|
||||
description: |
|
||||
The list of deployments for either the current environment or all
|
||||
environments for the current tenant (project).
|
||||
|
||||
The following APIs control whether deployments by environment or by
|
||||
project are returned:
|
||||
|
||||
* ``/deployments``: Returns all deployments for a project.
|
||||
* ``/environments/{env_id}/deployments``: Returns all deployments for an
|
||||
environment in a project.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
description:
|
||||
description: |
|
||||
The description of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
enabled:
|
||||
description: |
|
||||
Whether the package is browsed in the Application Catalog.
|
||||
in: body
|
||||
required: true
|
||||
type: boolean
|
||||
env_default_networks:
|
||||
description: |
|
||||
The default networking information of the environment. The information
|
||||
includes the ``name`` of the network, along with the ``type`` and ``id``
|
||||
of the network, contained in the ``?`` property.
|
||||
|
||||
An example ``defaultNetworks`` object looks like::
|
||||
|
||||
"defaultNetworks": {
|
||||
"environment": {
|
||||
"internalNetworkName": "net_two",
|
||||
"?": {
|
||||
"type": "io.murano.resources.ExistingNeutronNetwork",
|
||||
"id": "594e94fcfe4c48ef8f9b55edb3b9f177"
|
||||
}
|
||||
},
|
||||
"flat": null
|
||||
}
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
env_description:
|
||||
description: |
|
||||
The description of the environment.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
env_id:
|
||||
description: |
|
||||
The UUID of the environment.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
env_last_status:
|
||||
description: |
|
||||
Shows the most recent status of the environment for each service in the
|
||||
environment. The response object includes detailed information
|
||||
by ``service_id``.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
env_model:
|
||||
description: |
|
||||
The ``?`` section of the environment, containing information about the
|
||||
environment model, including its ``type``, ``id`` and associated
|
||||
``metadata``.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
env_name:
|
||||
description: |
|
||||
A name for the environment. Name must be at least one non-white space
|
||||
symbol and less than 256 characters long.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
env_name_request:
|
||||
description: |
|
||||
A name for the environment. Name must be at least
|
||||
one non-white space symbol.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
env_region:
|
||||
description: |
|
||||
Current region of the environment.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
env_status:
|
||||
description: |
|
||||
Current status of the environment. The available statuses are:
|
||||
|
||||
* **Ready to configure**. When the environment is new and contains no
|
||||
components.
|
||||
* **Ready to deploy**. When the environment contains a component or multiple
|
||||
components and is ready for deployment.
|
||||
* **Ready**. When the environment has been successfully deployed.
|
||||
* **Deploying**. When the deploying is in progress.
|
||||
* **Deploy FAILURE**. When the deployment finished with errors.
|
||||
* **Deleting**. When deleting of an environment is in progress.
|
||||
* **Delete FAILURE**. You can abandon the environment in this case.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
env_version:
|
||||
description: |
|
||||
Current version.
|
||||
in: body
|
||||
required: true
|
||||
type: int
|
||||
environments:
|
||||
description: |
|
||||
A list of ``environment`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
fully_qualified_name:
|
||||
description: |
|
||||
The fqn of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
is_public:
|
||||
description: |
|
||||
Whether the package is shared for other projects.
|
||||
in: body
|
||||
required: true
|
||||
type: boolean
|
||||
networking:
|
||||
description: |
|
||||
Current network of the environment.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
owner_id:
|
||||
description: |
|
||||
The owner id of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
package_categories:
|
||||
description: |
|
||||
The categories associated with the package.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
package_count:
|
||||
description: |
|
||||
The number of packages associated with the category.
|
||||
in: body
|
||||
required: true
|
||||
type: integer
|
||||
packages:
|
||||
description: |
|
||||
A list of ``package`` object.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
pkg_file:
|
||||
description: |
|
||||
The upload package file.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
pkg_id:
|
||||
description: |
|
||||
The UUID of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
pkg_name:
|
||||
description: |
|
||||
The name of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
pkg_supplier:
|
||||
description: |
|
||||
The supplier info of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
pkg_type:
|
||||
description: |
|
||||
The type of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
regions:
|
||||
description: |
|
||||
Detailed region information for the cloud environment.
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
services:
|
||||
description: |
|
||||
A list of ``service`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
session_id:
|
||||
description: |
|
||||
The UUID of the session.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
session_state:
|
||||
description: |
|
||||
The current state of the environment. When a session is first
|
||||
opened for the environment the state is ``opened``.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
session_user_id:
|
||||
description: |
|
||||
The UUID of the session owner.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
session_version:
|
||||
description: |
|
||||
The version of the session. It is tied to the version of the environment,
|
||||
so that only sessions whose version matches that of the environment can
|
||||
be deployed.
|
||||
in: body
|
||||
required: true
|
||||
type: integer
|
||||
tags:
|
||||
description: |
|
||||
The tags of the package.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
task_id:
|
||||
description: |
|
||||
The UUID of the task associated with an action executed on a deployed
|
||||
environment.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
template_description:
|
||||
description: |
|
||||
The environment template description.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
template_id:
|
||||
description: |
|
||||
The UUID of the environment template.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
template_is_public:
|
||||
description: |
|
||||
Indicates whether an environment template is public or not.
|
||||
|
||||
- ``True``. The environment template is public. Can be cloned.
|
||||
- ``False``. The environment template is private.
|
||||
in: body
|
||||
required: true
|
||||
type: boolean
|
||||
template_name:
|
||||
description: |
|
||||
The name of the environment template. Only alphanumeric characters are
|
||||
allowed.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
template_service:
|
||||
description: |
|
||||
Detailed information about the ``service`` to be added to the environment
|
||||
template. The ``service`` includes virtual resources and application
|
||||
information. The virtual resources information is specified inside the
|
||||
``instance`` object property. Application information is specified
|
||||
inside the body of the ``service`` object.
|
||||
|
||||
The ``instance`` object properties include:
|
||||
|
||||
- ``assignFloatingIp``. Whether to assign a floating IP to the VM.
|
||||
- ``keyname``. The key name of a key pair for the VM.
|
||||
- ``image``. The image to be used to provision the VM.
|
||||
- ``flavor``. The flavor to be used to provision the VM.
|
||||
- ``?``. An object which includes the ``type`` of the server.
|
||||
|
||||
An example ``instance`` looks like::
|
||||
|
||||
{
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
}
|
||||
|
||||
In addition, the ``service`` should also include the following:
|
||||
|
||||
- ``name``. The ``name`` of the application.
|
||||
- ``?``. An object that includes the ``type`` and ``id`` of the
|
||||
application. An example ``type`` is:
|
||||
"io.murano.resources.LinuxMuranoInstance".
|
||||
- ``port``: The port to be used by the application. The value must be
|
||||
greater than 0 and less than 65536 (although formatted as a string).
|
||||
|
||||
The entire ``service`` looks like::
|
||||
|
||||
{
|
||||
"instance": {
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "orion",
|
||||
"?": {
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
},
|
||||
"port": "8080"
|
||||
}
|
||||
in: body
|
||||
required: true
|
||||
type: object
|
||||
template_services:
|
||||
description: |
|
||||
The list of environment template ``service`` objects.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
template_version:
|
||||
description: |
|
||||
The current version of the environment template.
|
||||
in: body
|
||||
required: true
|
||||
type: integer
|
||||
templates:
|
||||
description: |
|
||||
The list of templates.
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
tenant_id:
|
||||
description: |
|
||||
The UUID of the tenant. A tenant is also known as a project.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
updated:
|
||||
description: |
|
||||
The date and time when the object was updated. The date and time stamp
|
||||
format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_:
|
||||
|
||||
::
|
||||
|
||||
CCYY-MM-DDThh:mm:ss±hh:mm
|
||||
|
||||
For example, ``2015-08-27T09:49:58-05:00``.
|
||||
|
||||
The ``±hh:mm`` value, if included, is the time zone as an offset from UTC.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
@ -1,7 +0,0 @@
|
||||
{
|
||||
"id": "ce373a477f211e187a55404a662f968",
|
||||
"name": "category_name",
|
||||
"created": "2013-11-30T03:23:42Z",
|
||||
"updated": "2013-11-30T03:23:44Z",
|
||||
"package_count": 0
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"categories": [
|
||||
{
|
||||
"id": "0420045dce7445fabae7e5e61fff9e2f",
|
||||
"updated": "2014-12-26T13:57:04",
|
||||
"name": "Web",
|
||||
"created": "2014-12-26T13:57:04",
|
||||
"package_count": 1
|
||||
},
|
||||
{
|
||||
"id": "3dd486b1e26f40ac8f35416b63f52042",
|
||||
"updated": "2014-12-26T13:57:04",
|
||||
"name": "Databases",
|
||||
"created": "2014-12-26T13:57:04",
|
||||
"package_count": 0
|
||||
}
|
||||
]
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
{
|
||||
"id": "b308f7fa8a2f4a5eb419970c827f4466",
|
||||
"updated": "2015-01-28T17:00:19",
|
||||
"packages": [
|
||||
{
|
||||
"fully_qualified_name": "io.murano.apps.ZabbixServer",
|
||||
"id": "4dfb566e69e6445fbd4aea5099fe95e9",
|
||||
"name": "Zabbix Server"
|
||||
}
|
||||
],
|
||||
"name": "Web",
|
||||
"created": "2015-01-28T17:00:19",
|
||||
"package_count": 1
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
{
|
||||
"deployments": [
|
||||
{
|
||||
"updated": "2014-05-15T07:24:21",
|
||||
"environment_id": "744e44812da84e858946f5d817de4f72",
|
||||
"description": {
|
||||
"services": [
|
||||
{
|
||||
"instance": {
|
||||
"flavor": "m1.medium",
|
||||
"image": "cloud-fedora-v3",
|
||||
"?": {
|
||||
"type": "io.murano.resources.Instance",
|
||||
"id": "ef729199-c71e-4a4c-a314-0340e279add8"
|
||||
},
|
||||
"name": "xkaduhv7qeg4m7"
|
||||
},
|
||||
"name": "teslnet1",
|
||||
"?": {
|
||||
"_26411a1861294160833743e45d0eaad9": {
|
||||
"name": "Telnet"
|
||||
},
|
||||
"type": "io.murano.apps.linux.Telnet",
|
||||
"id": "6e437be2-b5bc-4263-8814-6fd57d6ddbd5"
|
||||
}
|
||||
}
|
||||
],
|
||||
"defaultNetworks": {
|
||||
"environment": {
|
||||
"name": "test2-network",
|
||||
"?": {
|
||||
"type": "io.murano.lib.networks.neutron.NewNetwork",
|
||||
"id": "b6a1d515434047d5b4678a803646d556"
|
||||
}
|
||||
},
|
||||
"flat": null
|
||||
},
|
||||
"name": "test2",
|
||||
"?": {
|
||||
"type": "io.murano.Environment",
|
||||
"id": "744e44812da84e858946f5d817de4f72"
|
||||
}
|
||||
},
|
||||
"created": "2014-05-15T07:24:21",
|
||||
"started": "2014-05-15T07:24:21",
|
||||
"finished": null,
|
||||
"state": "running",
|
||||
"id": "327c81e0e34a4c93ad9b9052ef42b752"
|
||||
}
|
||||
]
|
||||
}
|
@ -1 +0,0 @@
|
||||
{"name": "env_name"}
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"status": "ready",
|
||||
"updated": "2017-04-27T15:36:02",
|
||||
"created": "2017-04-27T15:36:02",
|
||||
"tenant_id": "cca37eef752244d99945a4123f30ff79",
|
||||
"acquired_by": null,
|
||||
"services": [],
|
||||
"version": 0,
|
||||
"description_text": "",
|
||||
"id": "a2977db57398401aba5804ef2211a2a3",
|
||||
"name": "env_name"
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"lastStatuses": {
|
||||
"66563e45-4d0a-451e-8138-7bc773b0607d": {
|
||||
"updated": "2017-03-09T07:31:51",
|
||||
"task_id": "1267d8dfcf2144f9a31f0f033defa0fd",
|
||||
"level": "info",
|
||||
"text": "Unable to install ApacheHttpServer on node-1 due to The murano-agent did not respond within 3600 seconds",
|
||||
"created": "2017-03-09T07:31:51",
|
||||
"entity_id": "66563e45-4d0a-451e-8138-7bc773b0607d",
|
||||
"entity": null,
|
||||
"details": null,
|
||||
"id": "4f93ae1f73294bf1a58cbc59fffe6238"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
[{
|
||||
"op": "replace",
|
||||
"path": "/defaultNetworks/flat",
|
||||
"value": true
|
||||
}]
|
@ -1,36 +0,0 @@
|
||||
{
|
||||
"status": "ready",
|
||||
"updated": "2017-04-27T15:36:02",
|
||||
"created": "2017-04-27T15:36:02",
|
||||
"tenant_id": "cca37eef752244d99945a4123f30ff79",
|
||||
"acquired_by": null,
|
||||
"services": [
|
||||
{
|
||||
"instance": {
|
||||
"flavor": "m1.medium",
|
||||
"image": "cloud-fedora-v3",
|
||||
"name": "exgchhv6nbika2",
|
||||
"ipAddresses": [
|
||||
"10.0.0.200"
|
||||
],
|
||||
"?": {
|
||||
"type": "io.murano.resources.Instance",
|
||||
"id": "14cce9d9-aaa1-4f09-84a9-c4bb859edaff"
|
||||
}
|
||||
},
|
||||
"name": "rewt4w56",
|
||||
"?": {
|
||||
"status": "ready",
|
||||
"_26411a1861294160833743e45d0eaad9": {
|
||||
"name": "Telnet"
|
||||
},
|
||||
"type": "io.murano.apps.linux.Telnet",
|
||||
"id": "446373ef-03b5-4925-b095-6c56568fa518"
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": 0,
|
||||
"description_text": "",
|
||||
"id": "a2977db57398401aba5804ef2211a2a3",
|
||||
"name": "env_name"
|
||||
}
|
@ -1 +0,0 @@
|
||||
{"name": "env_name_changed"}
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"status": "ready",
|
||||
"updated": "2017-04-27T16:01:29",
|
||||
"created": "2017-04-27T15:33:55",
|
||||
"tenant_id": "cca37eef752244d99945a4123f30ff79",
|
||||
"acquired_by": null,
|
||||
"services": [],
|
||||
"version": 0,
|
||||
"description_text": "",
|
||||
"id": "f199275420ff4e938e0307b0cf68374d",
|
||||
"name": "env_name_changed"
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
{
|
||||
"environments": [
|
||||
{
|
||||
"status": "ready",
|
||||
"updated": "2014-05-14T13:02:54",
|
||||
"networking": {},
|
||||
"name": "test1",
|
||||
"created": "2014-05-14T13:02:46",
|
||||
"tenant_id": "726ed856965f43cc8e565bc991fa76c3",
|
||||
"version": 0,
|
||||
"id": "2fa5ab704749444bbeafe7991b412c33"
|
||||
},
|
||||
{
|
||||
"status": "ready",
|
||||
"updated": "2014-05-14T13:02:55",
|
||||
"networking": {},
|
||||
"name": "test2",
|
||||
"created": "2014-05-14T13:02:51",
|
||||
"tenant_id": "726ed856965f43cc8e565bc991fa76c3",
|
||||
"version": 0,
|
||||
"id": "744e44812da84e858946f5d817de4f72"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,94 +0,0 @@
|
||||
{
|
||||
"defaultNetworks": {
|
||||
"environment": {
|
||||
"internalNetworkName": "net_two",
|
||||
"?": {
|
||||
"type": "io.murano.resources.ExistingNeutronNetwork",
|
||||
"id": "594e94fcfe4c48ef8f9b55edb3b9f177"
|
||||
}
|
||||
},
|
||||
"flat": null
|
||||
},
|
||||
"region": "RegionTwo",
|
||||
"name": "new_env",
|
||||
"regions": {
|
||||
"": {
|
||||
"defaultNetworks": {
|
||||
"environment": {
|
||||
"autoUplink": true,
|
||||
"name": "new_env-network",
|
||||
"externalRouterId": null,
|
||||
"dnsNameservers": [],
|
||||
"autogenerateSubnet": true,
|
||||
"subnetCidr": null,
|
||||
"openstackId": null,
|
||||
"?": {
|
||||
"dependencies": {
|
||||
"onDestruction": [{
|
||||
"subscriber": "c80e33dd67a44f489b2f04818b72f404",
|
||||
"handler": null
|
||||
}]
|
||||
},
|
||||
"type": "io.murano.resources.NeutronNetwork/0.0.0@io.murano",
|
||||
"id": "e145b50623c04a68956e3e656a0568d3",
|
||||
"name": null
|
||||
},
|
||||
"regionName": "RegionOne"
|
||||
},
|
||||
"flat": null
|
||||
},
|
||||
"name": "RegionOne",
|
||||
"?": {
|
||||
"type": "io.murano.CloudRegion/0.0.0@io.murano",
|
||||
"id": "c80e33dd67a44f489b2f04818b72f404",
|
||||
"name": null
|
||||
}
|
||||
},
|
||||
"RegionOne": "c80e33dd67a44f489b2f04818b72f404",
|
||||
"RegionTwo": {
|
||||
"defaultNetworks": {
|
||||
"environment": {
|
||||
"autoUplink": true,
|
||||
"name": "new_env-network",
|
||||
"externalRouterId": "e449bdd5-228c-4747-a925-18cda80fbd6b",
|
||||
"dnsNameservers": ["8.8.8.8"],
|
||||
"autogenerateSubnet": true,
|
||||
"subnetCidr": "10.0.198.0/24",
|
||||
"openstackId": "00a695c1-60ff-42ec-acb9-b916165413da",
|
||||
"?": {
|
||||
"dependencies": {
|
||||
"onDestruction": [{
|
||||
"subscriber": "f8cb28d147914850978edb35eca156e1",
|
||||
"handler": null
|
||||
}]
|
||||
},
|
||||
"type": "io.murano.resources.NeutronNetwork/0.0.0@io.murano",
|
||||
"id": "72d2c13c600247c98e09e2e3c1cd9d70",
|
||||
"name": null
|
||||
},
|
||||
"regionName": "RegionTwo"
|
||||
},
|
||||
"flat": null
|
||||
},
|
||||
"name": "RegionTwo",
|
||||
"?": {
|
||||
"type": "io.murano.CloudRegion/0.0.0@io.murano",
|
||||
"id": "f8cb28d147914850978edb35eca156e1",
|
||||
"name": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"services": [],
|
||||
"?": {
|
||||
"type": "io.murano.Environment/0.0.0@io.murano",
|
||||
"_actions": {
|
||||
"f7f22c174070455c9cafc59391402bdc_deploy": {
|
||||
"enabled": true,
|
||||
"name": "deploy",
|
||||
"title": "deploy"
|
||||
}
|
||||
},
|
||||
"id": "f7f22c174070455c9cafc59391402bdc",
|
||||
"name": null
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"task_id": "9e60318629ef47378b583825e7d282b7"
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"class_definitions": [
|
||||
"com.example.apache.ApacheHttpServer"
|
||||
],
|
||||
"description": "The Apache HTTP Server Project is an effort to develop and maintain an\nopen-source HTTP server for modern operating systems including UNIX and\nWindows NT. The goal of this project is to provide a secure, efficient and\nextensible server that provides HTTP services in sync with the current HTTP\nstandards.\nApache httpd has been the most popular web server on the Internet since\nApril 1996, and celebrated its 17th birthday as a project this February.\n",
|
||||
"tags": [
|
||||
"HTTP",
|
||||
"Server",
|
||||
"WebServer",
|
||||
"HTML",
|
||||
"Apache"
|
||||
],
|
||||
"updated": "2017-04-06T07:54:40",
|
||||
"is_public": false,
|
||||
"id": "10f3e349bca9432abd673319195eed2b",
|
||||
"categories": [],
|
||||
"name": "Apache HTTP Server",
|
||||
"created": "2017-04-06T07:54:40",
|
||||
"author": "Mirantis, Inc",
|
||||
"enabled": true,
|
||||
"supplier": {},
|
||||
"fully_qualified_name": "com.example.apache.ApacheHttpServer",
|
||||
"type": "Application",
|
||||
"owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"updated": "2017-04-06T08:22:11",
|
||||
"description": "The Apache HTTP Server Project is an effort to develop and maintain an\nopen-source HTTP server for modern operating systems including UNIX and\nWindows NT. The goal of this project is to provide a secure, efficient and\nextensible server that provides HTTP services in sync with the current HTTP\nstandards.\nApache httpd has been the most popular web server on the Internet since\nApril 1996, and celebrated its 17th birthday as a project this February.\n",
|
||||
"tags": [
|
||||
"HTTP",
|
||||
"Server",
|
||||
"WebServer",
|
||||
"HTML",
|
||||
"Apache"
|
||||
],
|
||||
"class_definitions": [
|
||||
"com.example.apache.ApacheHttpServer"
|
||||
],
|
||||
"is_public": false,
|
||||
"categories": [],
|
||||
"name": "Apache HTTP Server",
|
||||
"created": "2017-04-06T08:22:11",
|
||||
"author": "Mirantis, Inc",
|
||||
"enabled": true,
|
||||
"id": "979637f39a7245cebeabc99e6aa01666",
|
||||
"supplier": {},
|
||||
"fully_qualified_name": "com.example.apache.ApacheHttpServer",
|
||||
"type": "Application",
|
||||
"owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
[
|
||||
{
|
||||
"path": "/is_public",
|
||||
"value": true,
|
||||
"op": "replace"
|
||||
}
|
||||
]
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"updated": "2017-04-06T08:28:22",
|
||||
"description": "The Apache HTTP Server Project is an effort to develop and maintain an\nopen-source HTTP server for modern operating systems including UNIX and\nWindows NT. The goal of this project is to provide a secure, efficient and\nextensible server that provides HTTP services in sync with the current HTTP\nstandards.\nApache httpd has been the most popular web server on the Internet since\nApril 1996, and celebrated its 17th birthday as a project this February.\n",
|
||||
"tags": [
|
||||
"HTTP",
|
||||
"Server",
|
||||
"WebServer",
|
||||
"HTML",
|
||||
"Apache"
|
||||
],
|
||||
"class_definitions": [
|
||||
"com.example.apache.ApacheHttpServer"
|
||||
],
|
||||
"is_public": true,
|
||||
"categories": [],
|
||||
"name": "Apache HTTP Server",
|
||||
"created": "2017-04-06T08:22:11",
|
||||
"author": "Mirantis, Inc",
|
||||
"enabled": true,
|
||||
"id": "979637f39a7245cebeabc99e6aa01666",
|
||||
"supplier": {},
|
||||
"fully_qualified_name": "com.example.apache.ApacheHttpServer",
|
||||
"type": "Application",
|
||||
"owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
|
||||
}
|
@ -1,127 +0,0 @@
|
||||
{
|
||||
"packages": [
|
||||
{
|
||||
"updated": "2017-03-30T08:35:03",
|
||||
"description": "Library of base class to develop scalable Applications with MuranoPL\n",
|
||||
"tags": [],
|
||||
"class_definitions": [
|
||||
"io.murano.applications.tests.TestPoolReplicaProvider",
|
||||
"io.murano.applications.SingleServerApplication",
|
||||
"io.murano.applications.tests.TestSoftwareComponent",
|
||||
"io.murano.applications.SoftwareComponent",
|
||||
"io.murano.applications.tests.TestEvents",
|
||||
"io.murano.applications.CloneReplicaProvider",
|
||||
"io.murano.applications.PoolReplicaProvider",
|
||||
"io.murano.applications.Event",
|
||||
"io.murano.applications.SingleServerGroup",
|
||||
"io.murano.applications.TemplateServerProvider",
|
||||
"io.murano.applications.MultiServerApplication",
|
||||
"io.murano.applications.ReplicationGroup",
|
||||
"io.murano.applications.OpenStackSecurityConfigurable",
|
||||
"io.murano.applications.Configurable",
|
||||
"io.murano.applications.tests.TestMockedServerFactory",
|
||||
"io.murano.applications.tests.TestCompositeReplicaProvider",
|
||||
"io.murano.applications.tests.TestRoundrobinReplicaProvider",
|
||||
"io.murano.applications.ServerReplicationGroup",
|
||||
"io.murano.applications.CompositeReplicaProvider",
|
||||
"io.murano.applications.tests.TestReplication",
|
||||
"io.murano.applications.CompositeServerGroup",
|
||||
"io.murano.applications.RoundrobinReplicaProvider",
|
||||
"io.murano.applications.ServerGroup",
|
||||
"io.murano.applications.ServerList",
|
||||
"io.murano.applications.Installable",
|
||||
"io.murano.applications.ReplicaProvider",
|
||||
"io.murano.applications.MultiServerApplicationWithScaling"
|
||||
],
|
||||
"is_public": true,
|
||||
"categories": [],
|
||||
"name": "Application Development Library",
|
||||
"created": "2017-03-30T08:35:03",
|
||||
"author": "Mirantis, Inc.",
|
||||
"enabled": true,
|
||||
"id": "b0298c205235410fba047f4af8df0eb0",
|
||||
"supplier": {},
|
||||
"fully_qualified_name": "io.murano.applications",
|
||||
"type": "Library",
|
||||
"owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
|
||||
},
|
||||
{
|
||||
"updated": "2017-03-30T08:35:07",
|
||||
"description": "Core MuranoPL library\n",
|
||||
"tags": [
|
||||
"MuranoPL"
|
||||
],
|
||||
"class_definitions": [
|
||||
"io.murano.Exception",
|
||||
"io.murano.system.MetadefBrowser",
|
||||
"io.murano.metadata.forms.Hidden",
|
||||
"io.murano.system.NeutronSecurityGroupManager",
|
||||
"io.murano.system.AgentListener",
|
||||
"io.murano.Environment",
|
||||
"io.murano.system.SecurityGroupManager",
|
||||
"io.murano.resources.ConfLangInstance",
|
||||
"io.murano.resources.HeatSWConfigLinuxInstance",
|
||||
"io.murano.test.TestFixture",
|
||||
"io.murano.resources.MetadataAware",
|
||||
"io.murano.SharedIp",
|
||||
"io.murano.File",
|
||||
"io.murano.resources.LinuxUDInstance",
|
||||
"io.murano.configuration.Linux",
|
||||
"io.murano.resources.ExistingNeutronNetwork",
|
||||
"io.murano.resources.LinuxMuranoInstance",
|
||||
"io.murano.Object",
|
||||
"io.murano.system.Logger",
|
||||
"io.murano.metadata.engine.Synchronize",
|
||||
"io.murano.test.DummyNetwork",
|
||||
"io.murano.resources.CinderVolume",
|
||||
"io.murano.metadata.Title",
|
||||
"io.murano.Project",
|
||||
"io.murano.system.Resources",
|
||||
"io.murano.metadata.forms.Section",
|
||||
"io.murano.resources.Network",
|
||||
"io.murano.system.MistralClient",
|
||||
"io.murano.resources.CinderVolumeBackup",
|
||||
"io.murano.system.NetworkExplorer",
|
||||
"io.murano.system.DummySecurityGroupManager",
|
||||
"io.murano.resources.WindowsInstance",
|
||||
"io.murano.CloudResource",
|
||||
"io.murano.CloudRegion",
|
||||
"io.murano.system.Agent",
|
||||
"io.murano.resources.Instance",
|
||||
"io.murano.resources.Volume",
|
||||
"io.murano.system.InstanceNotifier",
|
||||
"io.murano.metadata.ModelBuilder",
|
||||
"io.murano.system.HeatStack",
|
||||
"io.murano.resources.LinuxInstance",
|
||||
"io.murano.metadata.Description",
|
||||
"io.murano.metadata.engine.Serialize",
|
||||
"io.murano.resources.ExistingCinderVolume",
|
||||
"io.murano.resources.HeatSWConfigInstance",
|
||||
"io.murano.system.StatusReporter",
|
||||
"io.murano.Application",
|
||||
"io.murano.test.TestFixtureWithEnvironment",
|
||||
"io.murano.system.AwsSecurityGroupManager",
|
||||
"io.murano.StackTrace",
|
||||
"io.murano.resources.NovaNetwork",
|
||||
"io.murano.metadata.forms.Position",
|
||||
"io.murano.metadata.HelpText",
|
||||
"io.murano.resources.NeutronNetworkBase",
|
||||
"io.murano.User",
|
||||
"io.murano.resources.InstanceAffinityGroup",
|
||||
"io.murano.resources.NeutronNetwork",
|
||||
"io.murano.resources.CinderVolumeSnapshot"
|
||||
],
|
||||
"is_public": true,
|
||||
"categories": [],
|
||||
"name": "Core library",
|
||||
"created": "2017-03-30T08:35:07",
|
||||
"author": "murano.io",
|
||||
"enabled": true,
|
||||
"id": "5b6c8d7cd0694a7ebb7525ae62357740",
|
||||
"supplier": {},
|
||||
"fully_qualified_name": "io.murano",
|
||||
"type": "Library",
|
||||
"owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"created": "2017-04-06T07:54:40",
|
||||
"updated": "2017-04-06T07:54:40",
|
||||
"environment_id": "744e44812da84e858946f5d817de4f72",
|
||||
"state": "opened",
|
||||
"version": 0,
|
||||
"id": "257bef44a9d848daa5b2563779714820"
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"id": "4aecdc2178b9430cbbb8db44fb7ac384",
|
||||
"environment_id": "4dc8a2e8986fa8fa5bf24dc8a2e8986fa8",
|
||||
"created": "2013-11-30T03:23:42Z",
|
||||
"updated": "2013-11-30T03:23:54Z",
|
||||
"user_id": "d7b501094caf4daab08469663a9e1a2b",
|
||||
"version": 0,
|
||||
"state": "deploying"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"className": "ns.Bar",
|
||||
"methodName": "staticAction",
|
||||
"parameters": {"myName": "John"}
|
||||
}
|
@ -1 +0,0 @@
|
||||
"Hello, John"
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"instance": {
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "orion",
|
||||
"?": {
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
},
|
||||
"port": "8080"
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
{
|
||||
"updated": "2017-04-26T19:41:58",
|
||||
"created": "2017-04-26T19:33:10",
|
||||
"tenant_id": "cca37eef752244d99945a4123f30ff79",
|
||||
"services": [
|
||||
{
|
||||
"instance": {
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "orion",
|
||||
"?": {
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
},
|
||||
"port": "8080"
|
||||
}
|
||||
],
|
||||
"version": 0,
|
||||
"description_text": "",
|
||||
"is_public": false,
|
||||
"id": "64670f5ada0848408734b2985f5cbb92",
|
||||
"name": "test_application"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"name": "cloned_env_template_name"
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"updated": "2015-01-26T09:12:51",
|
||||
"name": "cloned_env_template_name",
|
||||
"created": "2015-01-26T09:12:51",
|
||||
"tenant_id": "00000000000000000000000000000001",
|
||||
"version": 0,
|
||||
"is_public": false,
|
||||
"id": "aa9033ca7ce245fca10e38e1c8c4bbf7",
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"name": "environment_name"
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"environment_id": "aa90fadfafca10e38e1c8c4bbf7",
|
||||
"name": "environment_name",
|
||||
"created": "2015-01-26T09:12:51",
|
||||
"tenant_id": "00000000000000000000000000000001",
|
||||
"version": 0,
|
||||
"session_id": "adf4dadfaa9033ca7ce245fca10e38e1c8c4bbf7",
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"name": "env_template_name"
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"updated": "2014-05-14T13:02:55",
|
||||
"networking": {},
|
||||
"name": "test2",
|
||||
"created": "2014-05-14T13:02:51",
|
||||
"tenant_id": "123452452345346345634563456345346",
|
||||
"version": 0,
|
||||
"is_public": true,
|
||||
"description_text": "",
|
||||
"id": "744e44812da84e858946f5d817de4f72"
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
[
|
||||
{
|
||||
"instance":
|
||||
{
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?":
|
||||
{
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "tomcat",
|
||||
"?":
|
||||
{
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
},
|
||||
"port": "8080"
|
||||
},
|
||||
{
|
||||
"instance": "ef984a74-29a4-45c0-b1dc-2ab9f075732e",
|
||||
"password": "XXX",
|
||||
"name": "mysql",
|
||||
"?":
|
||||
{
|
||||
"type": "io.murano.apps.database.MySQL",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
}
|
||||
}
|
||||
]
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
"updated": "2014-05-14T13:02:55",
|
||||
"networking": {},
|
||||
"name": "test2",
|
||||
"created": "2014-05-14T13:02:51",
|
||||
"tenant_id": "123452452345346345634563456345346",
|
||||
"services": [
|
||||
{
|
||||
"instance": {
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "orion",
|
||||
"?": {
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
},
|
||||
"port": "8080"
|
||||
}
|
||||
],
|
||||
"version": 0,
|
||||
"is_public": true,
|
||||
"description_text": "",
|
||||
"id": "744e44812da84e858946f5d817de4f72"
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"instance": {
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "orion",
|
||||
"port": "8080",
|
||||
"?": {
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
"instance":
|
||||
{
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?":
|
||||
{
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "orion",
|
||||
"?":
|
||||
{
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
},
|
||||
"port": "8080"
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
{
|
||||
"templates": [
|
||||
{
|
||||
"updated": "2014-05-14T13:02:54",
|
||||
"networking": {},
|
||||
"name": "test1",
|
||||
"created": "2014-05-14T13:02:46",
|
||||
"tenant_id": "726ed856965f43cc8e565bc991fa76c3",
|
||||
"version": 0,
|
||||
"is_public": false,
|
||||
"description_text": "",
|
||||
"id": "2fa5ab704749444bbeafe7991b412c33"
|
||||
},
|
||||
{
|
||||
"updated": "2014-05-14T13:02:55",
|
||||
"networking": {},
|
||||
"name": "test2",
|
||||
"created": "2014-05-14T13:02:51",
|
||||
"tenant_id": "123452452345346345634563456345346",
|
||||
"version": 0,
|
||||
"is_public": true,
|
||||
"description_text": "",
|
||||
"id": "744e44812da84e858946f5d817de4f72"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,165 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
=============================
|
||||
Environment Configuration API
|
||||
=============================
|
||||
|
||||
Since Murano environments are available for local modification by different
|
||||
users and from different locations, it's therefore necessary to store local
|
||||
modifications somewhere. Thus, sessions were created to satisfy this
|
||||
requirement. After a user adds applications to an environment, a new session
|
||||
can be created. A session can be deployed only once.
|
||||
|
||||
.. note::
|
||||
|
||||
Multiple sessions can be opened for one environment simultaneously, but only
|
||||
one session can be deployed at a time. Only the first session that is deployed
|
||||
will be deployed, while the other ones will become invalid, no longer
|
||||
capable of being deploying. Once an environment is in ``deploying`` or
|
||||
``deleting`` status, a new session for the environment cannot be opened.
|
||||
|
||||
Configure Environment / Open Session
|
||||
====================================
|
||||
|
||||
.. rest_method:: POST /environments/{env_id}/configure
|
||||
|
||||
Creates a new configuration session for environment ``env_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- created: created
|
||||
- updated: updated
|
||||
- environment_id: env_id
|
||||
- state: session_state
|
||||
- version: session_version
|
||||
- id: session_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/session-create-response.json
|
||||
:language: javascript
|
||||
|
||||
Deploy session
|
||||
==============
|
||||
|
||||
.. rest_method:: POST /environments/{env_id}/sessions/{session_id}/deploy
|
||||
|
||||
Start deployment of a murano environment session.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
- session_id: session_id_url
|
||||
|
||||
Get Session Details
|
||||
===================
|
||||
|
||||
.. rest_method:: GET /environments/{env_id}/sessions/{session_id}
|
||||
|
||||
Start deployment of a murano environment session.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
- session_id: session_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- id: session_id
|
||||
- environment_id: env_id
|
||||
- created: created
|
||||
- updated: updated
|
||||
- user_id: session_user_id
|
||||
- version: session_version
|
||||
- state: session_state
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/session-show-response.json
|
||||
:language: javascript
|
||||
|
||||
Delete Session
|
||||
==============
|
||||
|
||||
.. rest_method:: DELETE /environments/{env_id}/sessions/{session_id}
|
||||
|
||||
Delete the session ``session_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 403
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_id: env_id_url
|
||||
- session_id: session_id_url
|
@ -1,62 +0,0 @@
|
||||
#################
|
||||
# Success Codes #
|
||||
#################
|
||||
200:
|
||||
default: |
|
||||
Request was successful.
|
||||
201:
|
||||
default: |
|
||||
Resource was created and is ready to use.
|
||||
202:
|
||||
default: |
|
||||
Request was accepted for processing, but the processing has not been
|
||||
completed. A 'location' header is included in the response which contains
|
||||
a link to check the progress of the request.
|
||||
204:
|
||||
default: |
|
||||
The server has fulfilled the request by deleting the resource.
|
||||
300:
|
||||
default: |
|
||||
There are multiple choices for resources. The request has to be more
|
||||
specific to successfully retrieve one of these resources.
|
||||
302:
|
||||
default: |
|
||||
The response is about a redirection hint. The header of the response
|
||||
usually contains a 'location' value where requesters can check to track
|
||||
the real location of the resource.
|
||||
|
||||
#################
|
||||
# Error Codes #
|
||||
#################
|
||||
|
||||
400:
|
||||
default: |
|
||||
Some content in the request was invalid.
|
||||
resource_signal: |
|
||||
The target resource doesn't support receiving a signal.
|
||||
401:
|
||||
default: |
|
||||
User must authenticate before making a request.
|
||||
403:
|
||||
default: |
|
||||
Policy does not allow current user to do this operation.
|
||||
404:
|
||||
default: |
|
||||
The requested resource could not be found.
|
||||
405:
|
||||
default: |
|
||||
Method is not valid for this endpoint.
|
||||
409:
|
||||
default: |
|
||||
This operation conflicted with another operation on this resource.
|
||||
duplicate_zone: |
|
||||
There is already a zone with this name.
|
||||
500:
|
||||
default: |
|
||||
Something went wrong inside the service. This should not happen usually.
|
||||
If it does happen, it means the server has experienced some serious
|
||||
problems.
|
||||
503:
|
||||
default: |
|
||||
Service is not available. This is mostly caused by service configuration
|
||||
errors which prevents the service from successful start up.
|
@ -1,517 +0,0 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
=====================
|
||||
Environment Templates
|
||||
=====================
|
||||
|
||||
An environment template specifies a set of virtual resources and application
|
||||
information that can be deployed on top of OpenStack by translation this
|
||||
information into an application-ready environment. Environment templates can
|
||||
be customized, created, deleted and modified by users. Environment templates
|
||||
can be instantied as many times as the user desires. For example, the user can
|
||||
have different deployments from the same environment template: one for testing
|
||||
and another for production.
|
||||
|
||||
The workflow for the creation and the instantiation of the environment template
|
||||
is as follows:
|
||||
|
||||
#. Creation of the environment template (including application information)
|
||||
#. Transformation of the environment template into the environment
|
||||
(creation of the environment and session and adding applications to the
|
||||
environment)
|
||||
#. Deployment of the environment on top of Openstack
|
||||
|
||||
Each environment template consists of services, which specify the application
|
||||
information. Each service includes information about the applications that
|
||||
will be installed (e.g. Tomcat), including application properties like
|
||||
the Tomcat port. Additional information pertaining to the virtual server
|
||||
may be specified, if applicable, such as keyname, flavor, image, etc.
|
||||
|
||||
The following is an example of an environment template::
|
||||
|
||||
{
|
||||
"name": "env_template_name",
|
||||
"services": [
|
||||
{
|
||||
"instance": {
|
||||
"assignFloatingIp": "true",
|
||||
"keyname": "mykeyname",
|
||||
"image": "cloud-fedora-v3",
|
||||
"flavor": "m1.medium",
|
||||
"?": {
|
||||
"type": "io.murano.resources.LinuxMuranoInstance",
|
||||
"id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
|
||||
}
|
||||
},
|
||||
"name": "tomcat",
|
||||
"port": "8080",
|
||||
"?": {
|
||||
"type": "io.murano.apps.apache.Tomcat",
|
||||
"id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
List environment templates
|
||||
==========================
|
||||
|
||||
.. rest_method:: GET /templates
|
||||
|
||||
Get a list of environment templates.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- is_public: template_is_public_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- templates: templates
|
||||
- created: created
|
||||
- updated: updated
|
||||
- name: template_name
|
||||
- tenant_id: tenant_id
|
||||
- version: template_version
|
||||
- description_text: template_description
|
||||
- is_public: template_is_public
|
||||
- id: template_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/templates-list-response.json
|
||||
:language: javascript
|
||||
|
||||
Create environment template
|
||||
===========================
|
||||
|
||||
.. rest_method:: POST /templates
|
||||
|
||||
Create an environment template.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- name: template_name
|
||||
- is_public: template_is_public
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/template-create-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- created: created
|
||||
- updated: updated
|
||||
- name: template_name
|
||||
- tenant_id: tenant_id
|
||||
- version: template_version
|
||||
- description_text: template_description
|
||||
- is_public: template_is_public
|
||||
- id: template_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-create-response.json
|
||||
:language: javascript
|
||||
|
||||
Get environment template details
|
||||
================================
|
||||
|
||||
.. rest_method:: GET /templates/{env_temp_id}
|
||||
|
||||
Get details for the environment template ``env_temp_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- created: created
|
||||
- updated: updated
|
||||
- name: template_name
|
||||
- services: template_services
|
||||
- tenant_id: tenant_id
|
||||
- version: template_version
|
||||
- description_text: template_description
|
||||
- is_public: template_is_public
|
||||
- id: template_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-show-response.json
|
||||
:language: javascript
|
||||
|
||||
Delete environment template
|
||||
===========================
|
||||
|
||||
.. rest_method:: DELETE /templates/{env_temp_id}
|
||||
|
||||
Delete the environment template ``env_temp_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
|
||||
Add application to environment template
|
||||
=======================================
|
||||
|
||||
.. rest_method:: POST /templates/{env_temp_id}/services
|
||||
|
||||
Create a new application for environment template ``env_temp_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
- service: template_service
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/template-add-app-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- updated: updated
|
||||
- created: created
|
||||
- tenant_id: tenant_id
|
||||
- services: template_services
|
||||
- version: template_version
|
||||
- description_text: template_description
|
||||
- is_public: template_is_public
|
||||
- id: template_id
|
||||
- name: template_name
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-add-app-response.json
|
||||
:language: javascript
|
||||
|
||||
Delete application from an environment template
|
||||
===============================================
|
||||
|
||||
.. rest_method:: DELETE /templates/{env_temp_id}/services/{service_id}
|
||||
|
||||
Delete an application from an environment template.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
- service_id: service_id_url
|
||||
|
||||
List application details for environment template
|
||||
=================================================
|
||||
|
||||
.. rest_method:: GET /templates/{env_temp_id}/services
|
||||
|
||||
List all the applications for the specified environment template
|
||||
``env_temp_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- updated: updated
|
||||
- created: created
|
||||
- tenant_id: tenant_id
|
||||
- services: template_services
|
||||
- version: template_version
|
||||
- description_text: template_description
|
||||
- is_public: template_is_public
|
||||
- id: template_id
|
||||
- name: template_name
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-list-apps-response.json
|
||||
:language: javascript
|
||||
|
||||
Update application for an environment template
|
||||
==============================================
|
||||
|
||||
.. rest_method:: PUT /templates/{env_temp_id}/services/{service_id}
|
||||
|
||||
Delete an application from an environment template.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
- service_id: service_id_url
|
||||
- service: template_service
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/template-update-app-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- service: template_service
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-update-app-response.json
|
||||
:language: javascript
|
||||
|
||||
Create environment from environment template
|
||||
============================================
|
||||
|
||||
.. rest_method:: GET /templates/{env_temp_id}/create-environment
|
||||
|
||||
Create an environment from the environment template ``env_temp_id``.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
- name: env_name
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/template-create-env-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- environment_id: env_id
|
||||
- name: env_name
|
||||
- created: created
|
||||
- tenant_id: tenant_id
|
||||
- version: env_version
|
||||
- session_id: session_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-create-env-response.json
|
||||
:language: javascript
|
||||
|
||||
Clone environment template
|
||||
==========================
|
||||
|
||||
.. rest_method:: GET /templates/{env_temp_id}/clone
|
||||
|
||||
Clones an environment template from one tenant into another.
|
||||
|
||||
.. note:
|
||||
|
||||
In order to clone an environment template, the template *must* be
|
||||
public.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- env_temp_id: template_id_url
|
||||
- name: template_name
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/template-clone-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters.yaml
|
||||
|
||||
- X-Openstack-Request-Id: request_id
|
||||
- environment_id: env_id
|
||||
- name: env_name
|
||||
- created: created
|
||||
- tenant_id: tenant_id
|
||||
- version: env_version
|
||||
- session_id: session_id
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/template-clone-response.json
|
||||
:language: javascript
|
157
bandit.yaml
157
bandit.yaml
@ -1,157 +0,0 @@
|
||||
|
||||
### This config may optionally select a subset of tests to run or skip by
|
||||
### filling out the 'tests' and 'skips' lists given below. If no tests are
|
||||
### specified for inclusion then it is assumed all tests are desired. The skips
|
||||
### set will remove specific tests from the include set. This can be controlled
|
||||
### using the -t/-s CLI options. Note that the same test ID should not appear
|
||||
### in both 'tests' and 'skips', this would be nonsensical and is detected by
|
||||
### Bandit at runtime.
|
||||
|
||||
# Available tests:
|
||||
# B101 : assert_used
|
||||
# B102 : exec_used
|
||||
# B103 : set_bad_file_permissions
|
||||
# B104 : hardcoded_bind_all_interfaces
|
||||
# B105 : hardcoded_password_string
|
||||
# B106 : hardcoded_password_funcarg
|
||||
# B107 : hardcoded_password_default
|
||||
# B108 : hardcoded_tmp_directory
|
||||
# B109 : password_config_option_not_marked_secret
|
||||
# B110 : try_except_pass
|
||||
# B111 : execute_with_run_as_root_equals_true
|
||||
# B112 : try_except_continue
|
||||
# B201 : flask_debug_true
|
||||
# B301 : pickle
|
||||
# B302 : marshal
|
||||
# B303 : md5
|
||||
# B304 : ciphers
|
||||
# B305 : cipher_modes
|
||||
# B306 : mktemp_q
|
||||
# B307 : eval
|
||||
# B308 : mark_safe
|
||||
# B309 : httpsconnection
|
||||
# B310 : urllib_urlopen
|
||||
# B311 : random
|
||||
# B312 : telnetlib
|
||||
# B313 : xml_bad_cElementTree
|
||||
# B314 : xml_bad_ElementTree
|
||||
# B315 : xml_bad_expatreader
|
||||
# B316 : xml_bad_expatbuilder
|
||||
# B317 : xml_bad_sax
|
||||
# B318 : xml_bad_minidom
|
||||
# B319 : xml_bad_pulldom
|
||||
# B320 : xml_bad_etree
|
||||
# B321 : ftplib
|
||||
# B401 : import_telnetlib
|
||||
# B402 : import_ftplib
|
||||
# B403 : import_pickle
|
||||
# B404 : import_subprocess
|
||||
# B405 : import_xml_etree
|
||||
# B406 : import_xml_sax
|
||||
# B407 : import_xml_expat
|
||||
# B408 : import_xml_minidom
|
||||
# B409 : import_xml_pulldom
|
||||
# B410 : import_lxml
|
||||
# B411 : import_xmlrpclib
|
||||
# B412 : import_httpoxy
|
||||
# B501 : request_with_no_cert_validation
|
||||
# B502 : ssl_with_bad_version
|
||||
# B503 : ssl_with_bad_defaults
|
||||
# B504 : ssl_with_no_version
|
||||
# B505 : weak_cryptographic_key
|
||||
# B506 : yaml_load
|
||||
# B601 : paramiko_calls
|
||||
# B602 : subprocess_popen_with_shell_equals_true
|
||||
# B603 : subprocess_without_shell_equals_true
|
||||
# B604 : any_other_function_with_shell_equals_true
|
||||
# B605 : start_process_with_a_shell
|
||||
# B606 : start_process_with_no_shell
|
||||
# B607 : start_process_with_partial_path
|
||||
# B608 : hardcoded_sql_expressions
|
||||
# B609 : linux_commands_wildcard_injection
|
||||
# B701 : jinja2_autoescape_false
|
||||
# B702 : use_of_mako_templates
|
||||
|
||||
# (optional) list included test IDs here, eg '[B101, B406]':
|
||||
tests:
|
||||
|
||||
# (optional) list skipped test IDs here, eg '[B101, B406]':
|
||||
skips: [B104]
|
||||
|
||||
### (optional) plugin settings - some test plugins require configuration data
|
||||
### that may be given here, per-plugin. All bandit test plugins have a built in
|
||||
### set of sensible defaults and these will be used if no configuration is
|
||||
### provided. It is not necessary to provide settings for every (or any) plugin
|
||||
### if the defaults are acceptable.
|
||||
|
||||
#any_other_function_with_shell_equals_true:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#execute_with_run_as_root_equals_true:
|
||||
# function_names: [ceilometer.utils.execute, cinder.utils.execute, neutron.agent.linux.utils.execute,
|
||||
# nova.utils.execute, nova.utils.trycmd]
|
||||
#hardcoded_tmp_directory:
|
||||
# tmp_dirs: [/tmp, /var/tmp, /dev/shm]
|
||||
#linux_commands_wildcard_injection:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#password_config_option_not_marked_secret:
|
||||
# function_names: [oslo.config.cfg.StrOpt, oslo_config.cfg.StrOpt]
|
||||
#ssl_with_bad_defaults:
|
||||
# bad_protocol_versions: [PROTOCOL_SSLv2, SSLv2_METHOD, SSLv23_METHOD, PROTOCOL_SSLv3,
|
||||
# PROTOCOL_TLSv1, SSLv3_METHOD, TLSv1_METHOD]
|
||||
#ssl_with_bad_version:
|
||||
# bad_protocol_versions: [PROTOCOL_SSLv2, SSLv2_METHOD, SSLv23_METHOD, PROTOCOL_SSLv3,
|
||||
# PROTOCOL_TLSv1, SSLv3_METHOD, TLSv1_METHOD]
|
||||
#start_process_with_a_shell:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#start_process_with_no_shell:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#start_process_with_partial_path:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#subprocess_popen_with_shell_equals_true:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#subprocess_without_shell_equals_true:
|
||||
# no_shell: [os.execl, os.execle, os.execlp, os.execlpe, os.execv, os.execve, os.execvp,
|
||||
# os.execvpe, os.spawnl, os.spawnle, os.spawnlp, os.spawnlpe, os.spawnv, os.spawnve,
|
||||
# os.spawnvp, os.spawnvpe, os.startfile]
|
||||
# shell: [os.system, os.popen, os.popen2, os.popen3, os.popen4, popen2.popen2, popen2.popen3,
|
||||
# popen2.popen4, popen2.Popen3, popen2.Popen4, commands.getoutput, commands.getstatusoutput]
|
||||
# subprocess: [subprocess.Popen, subprocess.call, subprocess.check_call, subprocess.check_output,
|
||||
# utils.execute, utils.execute_with_timeout]
|
||||
#try_except_continue: {check_typed_exception: false}
|
||||
#try_except_pass: {check_typed_exception: false}
|
11
bindep.txt
11
bindep.txt
@ -1,11 +0,0 @@
|
||||
# This is a cross-platform list tracking distribution packages needed for install and tests;
|
||||
# see https://docs.openstack.org/infra/bindep/ for additional information.
|
||||
|
||||
libpq-dev [platform:dpkg]
|
||||
mysql-client [platform:dpkg]
|
||||
mysql-server [platform:dpkg]
|
||||
postgresql
|
||||
postgresql-client [platform:dpkg]
|
||||
|
||||
# PDF Docs package dependencies
|
||||
tex-gyre [platform:dpkg doc]
|
@ -1 +0,0 @@
|
||||
This element install Docker on Ubuntu/CentOS
|
@ -1,16 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
if [ -e /etc/lsb-release ]; then
|
||||
if [ -e /usr/lib/apt/methods/https ]; then
|
||||
apt-get update
|
||||
apt-get install apt-transport-https
|
||||
fi
|
||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
|
||||
echo "deb https://get.docker.com/ubuntu docker main" > /etc/apt/sources.list.d/docker.list
|
||||
apt-get update
|
||||
apt-get -y install lxc-docker
|
||||
else
|
||||
yum -y install docker
|
||||
fi
|
@ -1 +0,0 @@
|
||||
This element installs Kubernetes on Ubuntu/CentOS
|
@ -1 +0,0 @@
|
||||
docker
|
@ -1,62 +0,0 @@
|
||||
#!/bin/bash
|
||||
install-packages curl wget linux-libc-dev git gcc libc6-dev bridge-utils haproxy
|
||||
|
||||
SVC_ROOT=/opt/bin
|
||||
|
||||
ETCD_LATEST_VERSION=$(curl https://github.com/coreos/etcd/releases/latest | awk -F'"' '{ print $2 }' | awk -F'/' '{ print $8 }')
|
||||
ETCD_LATEST_URL="https://github.com/coreos/etcd/releases/download/${ETCD_LATEST_VERSION}/etcd-${ETCD_LATEST_VERSION}-linux-amd64.tar.gz"
|
||||
KUBE_LATEST_VERSION=$(curl https://github.com/GoogleCloudPlatform/kubernetes/releases/latest | awk -F'"' '{ print $2 }' | awk -F'/' '{ print $8 }')
|
||||
KUBE_LATEST_URL="https://github.com/GoogleCloudPlatform/kubernetes/releases/download/${KUBE_LATEST_VERSION}/kubernetes.tar.gz"
|
||||
|
||||
mkdir -p ${SVC_ROOT}
|
||||
pushd ${SVC_ROOT}
|
||||
|
||||
# Install latest etcd
|
||||
wget -O ${SVC_ROOT}/etcd-latest.tar.gz $ETCD_LATEST_URL
|
||||
tar xzvf ${SVC_ROOT}/etcd-latest.tar.gz
|
||||
rm -f ${SVC_ROOT}/etcd-latest.tar.gz
|
||||
|
||||
mv ${SVC_ROOT}/etcd-${ETCD_LATEST_VERSION}-linux-amd64/etcd ${SVC_ROOT}/
|
||||
mv ${SVC_ROOT}/etcd-${ETCD_LATEST_VERSION}-linux-amd64/etcdctl ${SVC_ROOT}/
|
||||
|
||||
rm -rf ${SVC_ROOT}/etcd-${ETCD_LATEST_VERSION}-linux-amd64
|
||||
|
||||
# Install latest kubernetes
|
||||
wget -O ${SVC_ROOT}/kubernetes-latest.tar.gz $KUBE_LATEST_URL
|
||||
tar xzvf ${SVC_ROOT}/kubernetes-latest.tar.gz
|
||||
rm -f ${SVC_ROOT}/kubernetes-latest.tar.gz
|
||||
|
||||
tar xzvf ${SVC_ROOT}/kubernetes/server/kubernetes-server-linux-amd64.tar.gz
|
||||
mv ${SVC_ROOT}/kubernetes ${SVC_ROOT}/kubernetes-latest
|
||||
|
||||
cp ${SVC_ROOT}/kubernetes-latest/server/bin/* ${SVC_ROOT}/
|
||||
|
||||
rm -rf ${SVC_ROOT}/kubernetes-latest
|
||||
|
||||
# Install Go
|
||||
wget -O go.tar.gz https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
|
||||
tar xzvf go.tar.gz
|
||||
mv ${SVC_ROOT}/go /usr/local/go
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
|
||||
# Build flannel
|
||||
git clone https://github.com/coreos/flannel flannel
|
||||
pushd ${SVC_ROOT}/flannel
|
||||
${SVC_ROOT}/flannel/build
|
||||
popd
|
||||
|
||||
cp ${SVC_ROOT}/flannel/bin/flanneld ${SVC_ROOT}/flanneld
|
||||
|
||||
rm -rf ${SVC_ROOT}/flannel
|
||||
|
||||
|
||||
# Update system PATH
|
||||
sed -i 's/PATH="/PATH="\/opt\/bin:\/opt\/go\/bin:/g' /etc/environment
|
||||
|
||||
|
||||
wget -O confd https://github.com/kelseyhightower/confd/releases/download/v0.7.1/confd-0.7.1-linux-amd64
|
||||
mv confd /usr/local/bin/confd
|
||||
chmod +x /usr/local/bin/confd
|
||||
mkdir -p /etc/confd/{conf.d,templates}
|
||||
|
||||
popd
|
@ -1,17 +0,0 @@
|
||||
# Copyright (c) 2015 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from muranoartifact.v1 import package
|
||||
|
||||
VERSIONS = [package.MuranoPackage]
|
@ -1,37 +0,0 @@
|
||||
# Copyright (c) 2015 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from glance.common.glare import definitions
|
||||
|
||||
|
||||
class MuranoPackage(definitions.ArtifactType):
|
||||
__endpoint__ = 'murano'
|
||||
|
||||
type = definitions.String(allowed_values=['Application', 'Library'],
|
||||
required=True,
|
||||
mutable=False)
|
||||
|
||||
author = definitions.String(required=False, mutable=False)
|
||||
display_name = definitions.String(required=True, mutable=True)
|
||||
enabled = definitions.Boolean(default=True)
|
||||
|
||||
categories = definitions.Array(default=[], mutable=True)
|
||||
class_definitions = definitions.Array(unique=True, default=[],
|
||||
mutable=False)
|
||||
inherits = definitions.Dict(default={}, properties=definitions.Array(),
|
||||
mutable=False)
|
||||
keywords = definitions.Array(default=[], mutable=True)
|
||||
logo = definitions.BinaryObject()
|
||||
archive = definitions.BinaryObject()
|
||||
ui_definition = definitions.BinaryObject()
|
@ -1,21 +0,0 @@
|
||||
[metadata]
|
||||
name = murano_artifact_plugin
|
||||
description = An artifact plugin for murano packages
|
||||
author = Alexander Tivelkov
|
||||
author-email = openstack-discuss@lists.openstack.org
|
||||
python-requires = >=3.6
|
||||
classifier =
|
||||
Development Status :: 3 - Alpha
|
||||
License :: OSI Approved :: Apache Software License
|
||||
Programming Language :: Python
|
||||
Programming Language :: Python :: Implementation :: CPython
|
||||
Programming Language :: Python :: 3 :: Only
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Intended Audience :: Developers
|
||||
Environment :: Console
|
||||
|
||||
[entry_points]
|
||||
glance.artifacts.types =
|
||||
MuranoPackage = muranoartifact:VERSIONS
|
@ -1,20 +0,0 @@
|
||||
# Copyright 2011-2012 OpenStack Foundation
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import setuptools
|
||||
|
||||
# all other params will be taken from setup.cfg
|
||||
setuptools.setup(packages=setuptools.find_packages(),
|
||||
setup_requires=['pbr'], pbr=True)
|
@ -1,18 +0,0 @@
|
||||
Namespaces:
|
||||
=: com.paul
|
||||
std: io.murano
|
||||
res: io.murano.resources
|
||||
|
||||
Name: EncryptionDemo
|
||||
|
||||
Extends: std:Application
|
||||
|
||||
Properties:
|
||||
my_password:
|
||||
Contract: $.string()
|
||||
|
||||
Methods:
|
||||
deploy:
|
||||
Body:
|
||||
- $reporter: $this.find(std:Environment).reporter
|
||||
- $reporter.report($this, decryptData($.my_password))
|
@ -1,10 +0,0 @@
|
||||
Application:
|
||||
?:
|
||||
type: com.paul.EncryptionDemo
|
||||
my_password: encryptData($.instanceConfiguration.my_password)
|
||||
|
||||
Forms:
|
||||
- instanceConfiguration:
|
||||
fields:
|
||||
- name: my_password
|
||||
type: string
|
@ -1,6 +0,0 @@
|
||||
FullName: com.paul.EncryptionDemo
|
||||
Type: Application
|
||||
Description: Simple app to demonstrate Murano encryption
|
||||
Author: Paul Bourke
|
||||
Classes:
|
||||
com.paul.EncryptionDemo: EncryptionDemo.yaml
|
@ -1,175 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
@ -1,49 +0,0 @@
|
||||
Murano Plugin for Cloudify
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Cloudify is a TOSCA-based open-source cloud orchestration engine by GigaSpaces
|
||||
Technologies.
|
||||
|
||||
This plugin extends Murano with support of Cloudify TOSCA package format.
|
||||
TOSCA packages can be deployed on Cloudify Manager deployed at configurable
|
||||
location.
|
||||
|
||||
Plugin registers `Cloudify.TOSCA/1.0` format identifier.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Installation of the plugin is done using any of Python package management
|
||||
tools. The most simple way is by saying `pip install .` from the plugin's
|
||||
directory (or `pip install -e .` for development)
|
||||
|
||||
Also location of Cloudify Manager (engine server) must be configured
|
||||
in murano config file. This is done in `[cloudify]` section of murano.conf
|
||||
via cloudify_manager setting. For example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[cloudify]
|
||||
cloudify_manager = 10.10.1.10
|
||||
|
||||
|
||||
Murano engine must be restarted after installation of the plugin.
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
All Cloudify TOSCA application require `org.getcloudify.murano` library package
|
||||
to be present in Murano catalog. The package can be found in
|
||||
`cloudify_applications_library` subfolder.
|
||||
|
||||
|
||||
Demo application
|
||||
----------------
|
||||
|
||||
There is a demo application that can be used to test the plugin.
|
||||
It is located in `nodecellar_example_application` subfolder. Follow
|
||||
instructions at `nodecellar_example_application/README.rst` to build
|
||||
the demo package.
|
||||
|
||||
|
@ -1,73 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Namespaces:
|
||||
=: org.getcloudify.murano
|
||||
std: io.murano
|
||||
csys: io.murano.extensions.cloudify
|
||||
|
||||
Name: CloudifyApplication
|
||||
|
||||
Extends: std:Application
|
||||
|
||||
Methods:
|
||||
.init:
|
||||
Body:
|
||||
- $._client: new(csys:CloudifyClient, app => $this)
|
||||
- $._environment: $.find(std:Environment).require()
|
||||
|
||||
describe:
|
||||
|
||||
updateOutputs:
|
||||
Arguments:
|
||||
- outputs:
|
||||
Contract:
|
||||
$.string().notNull(): $
|
||||
|
||||
deploy:
|
||||
Body:
|
||||
- If: not $.getAttr(deployed, false)
|
||||
Then:
|
||||
- $info: $.describe()
|
||||
- $._environment.reporter.report($this, 'Checking for TOSCA package')
|
||||
- $._client.publishBlueprint($info.entryPoint)
|
||||
- $._client.createDeployment($info.inputs)
|
||||
- $._environment.reporter.report($this, 'Waiting for deployment initialization')
|
||||
- $._client.waitDeploymentReady()
|
||||
- $._environment.reporter.report($this, 'Installing {0}'.format(name($this)))
|
||||
- $._client.executeWorkflow(install)
|
||||
- $outputs: $._client.waitDeploymentReady()
|
||||
- For: outputName
|
||||
In: $outputs.keys()
|
||||
Do:
|
||||
- $output: $outputs[$outputName]
|
||||
- $._environment.reporter.report($this, $output)
|
||||
- $label: $output.get(description, $outputName)
|
||||
- $value: $output.value
|
||||
- $msg: '{0}: {1}'
|
||||
- $._environment.reporter.report($this, $msg.format($label, $value))
|
||||
- $.updateOutputs($outputs)
|
||||
- $._environment.reporter.report($this, 'Installation complete')
|
||||
- $.setAttr(deployed, true)
|
||||
|
||||
.destroy:
|
||||
Body:
|
||||
- If: $.getAttr(deployed, false)
|
||||
Then:
|
||||
- $info: $.describe()
|
||||
- $._client.waitDeploymentReady()
|
||||
- $._environment.reporter.report($this, 'Uninstalling {0}'.format(name($this)))
|
||||
- $._client.executeWorkflow(uninstall)
|
||||
- $._client.waitDeploymentReady()
|
||||
- $._client.deleteDeployment()
|
||||
- $._environment.reporter.report($this, 'Uninstallation complete')
|
||||
- $.setAttr(deployed, false)
|
@ -1,32 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Format: MuranoPL/1.2
|
||||
|
||||
Type: Library
|
||||
FullName: org.getcloudify.murano
|
||||
|
||||
Name: Cloudify applications
|
||||
|
||||
Description: >
|
||||
Cloudify Murano integration support library
|
||||
|
||||
Author: Trammell
|
||||
|
||||
Tags:
|
||||
- Cloudify
|
||||
|
||||
Classes:
|
||||
org.getcloudify.murano.CloudifyApplication: CloudifyApplication.yaml
|
||||
|
||||
Require:
|
||||
io.murano.plugins.cloudify: 0
|
@ -1,21 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
|
||||
def init_config(conf):
|
||||
opts = [
|
||||
cfg.StrOpt('cloudify_manager', required=True)
|
||||
]
|
||||
conf.register_opts(opts, group='cloudify')
|
||||
return conf.cloudify
|
@ -1,88 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import threading
|
||||
import time
|
||||
|
||||
import cloudify_rest_client
|
||||
import cloudify_rest_client.exceptions as cloudify_exceptions
|
||||
from murano.dsl import dsl
|
||||
from oslo_config import cfg as config
|
||||
from yaql.language import specs
|
||||
from yaql.language import yaqltypes
|
||||
|
||||
import cfg
|
||||
|
||||
|
||||
CONF = config.CONF
|
||||
archive_upload_lock = threading.Lock()
|
||||
|
||||
|
||||
class CloudifyClient(object):
|
||||
@specs.parameter('app', dsl.MuranoObjectParameter('io.murano.Application'))
|
||||
def __init__(self, app):
|
||||
cloudify_manager = self.CONF.cloudify_manager
|
||||
self._client = cloudify_rest_client.CloudifyClient(cloudify_manager)
|
||||
self._blueprint_id = '{0}-{1}'.format(app.type.name, app.type.version)
|
||||
self._deployment_id = app.id
|
||||
self._application_package = app.package
|
||||
|
||||
@specs.parameter('entry_point', yaqltypes.String())
|
||||
def publish_blueprint(self, entry_point):
|
||||
global archive_upload_lock
|
||||
|
||||
if self._check_blueprint_exists():
|
||||
return
|
||||
path = self._application_package.get_resource(entry_point)
|
||||
with archive_upload_lock:
|
||||
try:
|
||||
self._client.blueprints.upload(
|
||||
path, self._blueprint_id)
|
||||
except cloudify_exceptions.CloudifyClientError as e:
|
||||
if e.status_code != 409:
|
||||
raise
|
||||
|
||||
def _check_blueprint_exists(self):
|
||||
try:
|
||||
self._client.blueprints.get(self._blueprint_id)
|
||||
return True
|
||||
except cloudify_exceptions.CloudifyClientError as e:
|
||||
if e.status_code == 404:
|
||||
return False
|
||||
raise
|
||||
|
||||
@specs.parameter('parameters', dict)
|
||||
def create_deployment(self, parameters=None):
|
||||
self._client.deployments.create(
|
||||
self._blueprint_id, self._deployment_id, parameters)
|
||||
|
||||
def delete_deployment(self):
|
||||
self._client.deployments.delete(self._deployment_id)
|
||||
|
||||
def wait_deployment_ready(self):
|
||||
while True:
|
||||
executions = self._client.executions.list(self._deployment_id)
|
||||
if any(t.status in ('pending', 'started') for t in executions):
|
||||
time.sleep(3)
|
||||
else:
|
||||
deployment = self._client.deployments.get(self._deployment_id)
|
||||
return deployment.outputs
|
||||
|
||||
@specs.parameter('name', yaqltypes.String())
|
||||
@specs.parameter('parameters', dict)
|
||||
def execute_workflow(self, name, parameters=None):
|
||||
self._client.executions.start(self._deployment_id, name, parameters)
|
||||
|
||||
@classmethod
|
||||
def init_plugin(cls):
|
||||
cls.CONF = cfg.init_config(CONF)
|
@ -1,186 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import yaml
|
||||
|
||||
from murano.common.helpers import path
|
||||
from murano.packages import exceptions
|
||||
from murano.packages import package_base
|
||||
|
||||
RESOURCES_DIR_NAME = 'Resources/'
|
||||
|
||||
|
||||
class YAQL(object):
|
||||
def __init__(self, expr):
|
||||
self.expr = expr
|
||||
|
||||
|
||||
class Dumper(yaml.SafeDumper):
|
||||
pass
|
||||
|
||||
|
||||
def yaql_representer(dumper, data):
|
||||
return dumper.represent_scalar(u'!yaql', data.expr)
|
||||
|
||||
|
||||
Dumper.add_representer(YAQL, yaql_representer)
|
||||
|
||||
|
||||
class CloudifyToscaPackage(package_base.PackageBase):
|
||||
def __init__(self, format_name, runtime_version, source_directory,
|
||||
manifest):
|
||||
super(CloudifyToscaPackage, self).__init__(
|
||||
format_name, runtime_version, source_directory, manifest)
|
||||
|
||||
self._entry_point = manifest.get('EntryPoint', 'main.yaml')
|
||||
self._generated_class = None
|
||||
self._generated_ui = None
|
||||
|
||||
@property
|
||||
def classes(self):
|
||||
return self.full_name,
|
||||
|
||||
@property
|
||||
def requirements(self):
|
||||
return {
|
||||
'org.getcloudify.murano': '0'
|
||||
}
|
||||
|
||||
@property
|
||||
def ui(self):
|
||||
if not self._generated_ui:
|
||||
self._generated_ui = self._generate_ui()
|
||||
return self._generated_ui
|
||||
|
||||
def get_class(self, name):
|
||||
if name != self.full_name:
|
||||
raise exceptions.PackageClassLoadError(
|
||||
name, 'Class not defined in this package')
|
||||
if not self._generated_class:
|
||||
self._generated_class = self._generate_class()
|
||||
return self._generated_class, '<generated code>'
|
||||
|
||||
def _generate_class(self):
|
||||
inputs, outputs = self._get_inputs_outputs()
|
||||
class_code = {
|
||||
'Name': self.full_name,
|
||||
'Extends': 'org.getcloudify.murano.CloudifyApplication',
|
||||
'Properties': self._generate_properties(inputs, outputs),
|
||||
'Methods': {
|
||||
'describe': self._generate_describe_method(inputs),
|
||||
'updateOutputs': self._generate_update_outputs_method(outputs)
|
||||
}
|
||||
}
|
||||
return yaml.dump(class_code, Dumper=Dumper, default_style='"')
|
||||
|
||||
@staticmethod
|
||||
def _generate_properties(inputs, outputs):
|
||||
contracts = {}
|
||||
for name, value in inputs.items():
|
||||
prop = {
|
||||
'Contract': YAQL('$.string().notNull()'),
|
||||
'Usage': 'In'
|
||||
}
|
||||
if 'default' in value:
|
||||
prop['Default'] = value['default']
|
||||
contracts[name] = prop
|
||||
|
||||
for name in outputs.keys():
|
||||
contracts[name] = {
|
||||
'Contract': YAQL('$.string()'),
|
||||
'Usage': 'Out'
|
||||
}
|
||||
|
||||
return contracts
|
||||
|
||||
def _generate_describe_method(self, inputs):
|
||||
input_values = {
|
||||
name: YAQL('$.' + name)
|
||||
for name in inputs.keys()
|
||||
}
|
||||
|
||||
return {
|
||||
'Body': [{
|
||||
'Return': {
|
||||
'entryPoint': self._entry_point,
|
||||
'inputs': input_values
|
||||
}
|
||||
}]
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def _generate_update_outputs_method(outputs):
|
||||
assignments = [
|
||||
{YAQL('$.' + name): YAQL('$outputs.get({0})'.format(name))}
|
||||
for name in outputs.keys()
|
||||
]
|
||||
return {
|
||||
'Arguments': [{
|
||||
'outputs': {
|
||||
'Contract': {
|
||||
YAQL('$.string().notNull()'): YAQL('$')
|
||||
}
|
||||
}
|
||||
}],
|
||||
'Body': assignments
|
||||
}
|
||||
|
||||
def _get_inputs_outputs(self):
|
||||
entry_point_path = path.secure_join(
|
||||
self.source_directory, RESOURCES_DIR_NAME, self._entry_point)
|
||||
with open(entry_point_path) as blueprint:
|
||||
data = yaml.safe_load(blueprint)
|
||||
return data.get('inputs') or {}, data.get('outputs') or {}
|
||||
|
||||
def _generate_application_ui_section(self, inputs, package_name=None,
|
||||
package_version=None):
|
||||
section = {
|
||||
key: YAQL(
|
||||
'$.appConfiguration.' + key) for key in inputs.keys()
|
||||
}
|
||||
section.update({
|
||||
'?': {
|
||||
'type': self.full_name
|
||||
}
|
||||
})
|
||||
if package_name:
|
||||
section['?']['package'] = package_name
|
||||
if package_version:
|
||||
section['?']['classVersion'] = package_version
|
||||
return section
|
||||
|
||||
@staticmethod
|
||||
def _generate_form_ui_section(inputs):
|
||||
fields = [
|
||||
{
|
||||
'name': key,
|
||||
'label': key.title().replace('_', ' '),
|
||||
'type': 'string',
|
||||
'required': True,
|
||||
'description': value.get('description', key)
|
||||
} for key, value in inputs.items()
|
||||
]
|
||||
return [{
|
||||
'appConfiguration': {
|
||||
'fields': fields
|
||||
}
|
||||
}]
|
||||
|
||||
def _generate_ui(self):
|
||||
inputs, outputs = self._get_inputs_outputs()
|
||||
ui = {
|
||||
'Version': '2.2',
|
||||
'Application': self._generate_application_ui_section(
|
||||
inputs, self.full_name, str(self.version)),
|
||||
'Forms': self._generate_form_ui_section(inputs)
|
||||
}
|
||||
return yaml.dump(ui, Dumper=Dumper, default_style='"')
|
@ -1,175 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
@ -1,18 +0,0 @@
|
||||
Nodecellar Example Application
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Nodecellar is an example application with a Node front end and Mongo
|
||||
database backend.
|
||||
|
||||
To test this application with the Murano Cloudify plugin, the following steps need to
|
||||
be executed:
|
||||
|
||||
`git clone https://github.com/cloudify-cosmo/cloudify-nodecellar-example.git Resources`
|
||||
`cd Resources`
|
||||
`git checkout tags/3.2.1`
|
||||
|
||||
After the above steps are completed, the packages need to be zipped and uploaded to
|
||||
the Murano catalog as normally done for Murano applications.
|
||||
|
||||
You can follow instructions from `here <http://getcloudify.org/guide/3.2/quickstart.html>`_
|
||||
to quickly bring up the environment for the application.
|
Binary file not shown.
Before Width: | Height: | Size: 51 KiB |
@ -1,28 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Format: Cloudify.TOSCA/1.0
|
||||
Type: Application
|
||||
FullName: org.getcloudify.muranoapps.examples.NodeCellar
|
||||
EntryPoint: singlehost-blueprint.yaml
|
||||
|
||||
Name: Node Cellar sample app
|
||||
Description: >
|
||||
A sample application built with Backbone.js, Twitter Bootstrap,
|
||||
Node.js, Express, and MongoDB
|
||||
|
||||
Author: Trammell
|
||||
|
||||
Tags:
|
||||
- TOSCA
|
||||
- Cloudify
|
||||
- Sample
|
@ -1 +0,0 @@
|
||||
cloudify-rest-client>=3.2
|
@ -1,16 +0,0 @@
|
||||
[metadata]
|
||||
name = io.murano.plugins.cloudify
|
||||
description = Murano-Cloudify integration plugin
|
||||
summary = Plugin to deploy Tosca packages via Cloudify Manager with Murano
|
||||
author = Trammell
|
||||
author-email = trammell@gigaspaces.com
|
||||
|
||||
[files]
|
||||
packages = murano_cloudify_plugin
|
||||
|
||||
[entry_points]
|
||||
io.murano.plugins.packages =
|
||||
Cloudify.TOSCA/1.0 = murano_cloudify_plugin.cloudify_tosca_package:CloudifyToscaPackage
|
||||
|
||||
io.murano.extensions =
|
||||
cloudify.CloudifyClient = murano_cloudify_plugin.cloudify_client:CloudifyClient
|
@ -1,20 +0,0 @@
|
||||
# Copyright 2011-2012 OpenStack Foundation
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import setuptools
|
||||
|
||||
# all other params will be taken from setup.cfg
|
||||
setuptools.setup(packages=setuptools.find_packages(),
|
||||
setup_requires=['pbr'], pbr=True)
|
@ -1,175 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
@ -1,90 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Namespaces:
|
||||
=: com.intel.magnum.plugin
|
||||
std: io.murano
|
||||
|
||||
Name: MagnumBayApp
|
||||
|
||||
Extends: std:Application
|
||||
|
||||
Properties:
|
||||
name:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
baymodel:
|
||||
Contract: $.class(MagnumBaymodel).notNull()
|
||||
|
||||
nodeCount:
|
||||
Contract: $.int().check($ > 0)
|
||||
|
||||
masterCount:
|
||||
Contract: $.int().check($ > 0)
|
||||
|
||||
discoveryUrl:
|
||||
Contract: $.string()
|
||||
|
||||
timeout:
|
||||
Contract: $.int().check($ >= 0)
|
||||
|
||||
|
||||
Methods:
|
||||
.init:
|
||||
Body:
|
||||
- $._environment: $.find(std:Environment).require()
|
||||
- Try:
|
||||
- $._magnum: new('io.murano.extensions.mirantis.magnum.Magnum', $._environment)
|
||||
Catch:
|
||||
With: 'murano.dsl.exceptions.NoPackageForClassFound'
|
||||
Do:
|
||||
Throw: PluginNotFoundException
|
||||
Message: 'Plugin for interaction with Magnum is not installed'
|
||||
|
||||
.destroy:
|
||||
Body:
|
||||
- $bayId: $.getAttr(bayId, null)
|
||||
- $._magnum.deleteBay($bayId)
|
||||
- $msg: format('Magnum bay {0} is deleted', $.name)
|
||||
- $._environment.reporter.report($this, $msg)
|
||||
- $.baymodel.delete()
|
||||
|
||||
deploy:
|
||||
Body:
|
||||
- $baymodelId: $.baymodel.create()
|
||||
- $msg: format('Creating Magnum bay {0}', $.name)
|
||||
- $._environment.reporter.report($this, $msg)
|
||||
- $params:
|
||||
name: $.name
|
||||
baymodel_id: $baymodelId
|
||||
node_count: $.nodeCount
|
||||
master_count: $.masterCount
|
||||
discovery_url: $.discoveryUrl
|
||||
bay_create_timeout: $.timeout
|
||||
- Try:
|
||||
- $bayId: $._magnum.createBay($params)
|
||||
Catch:
|
||||
- As: e
|
||||
Do:
|
||||
- $formatString: 'Error: {0}'
|
||||
- $._environment.reporter.report_error($, $formatString.format($e.message))
|
||||
- Rethrow:
|
||||
- $.setAttr(bayId, $bayId)
|
||||
- $bayStatus: $._magnum.getBayStatus($bayId)
|
||||
- If: $bayStatus = "CREATE_FAILED"
|
||||
Then:
|
||||
- $msg: 'Magnum bay create failed'
|
||||
- $._environment.reporter.report_error($this, $msg)
|
||||
- Throw: MagnumBayCreateFailed
|
||||
Message: $msg
|
||||
- $msg: format('Magnum bay {0} is created', $.name)
|
||||
- $._environment.reporter.report($this, $msg)
|
@ -1,131 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Namespaces:
|
||||
=: com.intel.magnum.plugin
|
||||
std: io.murano
|
||||
|
||||
Name: MagnumBaymodel
|
||||
|
||||
Properties:
|
||||
name:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
imageId:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
flavorId:
|
||||
Contract: $.string()
|
||||
|
||||
masterFlavorId:
|
||||
Contract: $.string()
|
||||
|
||||
keypairId:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
externalNetworkId:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
fixedNetwork:
|
||||
Contract: $.string()
|
||||
|
||||
coe:
|
||||
Contract: $.string().notNull().check($ in list(kubernetes, swarm, mesos))
|
||||
|
||||
dnsNameServer:
|
||||
Contract: $.string()
|
||||
|
||||
dockerVolumeSize:
|
||||
Contract: $.string()
|
||||
|
||||
labels:
|
||||
Contract: $.string()
|
||||
|
||||
httpProxy:
|
||||
Contract: $.string()
|
||||
|
||||
httpsProxy:
|
||||
Contract: $.string()
|
||||
|
||||
noProxy:
|
||||
Contract: $.string()
|
||||
|
||||
networkDriver:
|
||||
Contract: $.string()
|
||||
|
||||
volumeDriver:
|
||||
Contract: $.string()
|
||||
|
||||
tlsDisabled:
|
||||
Contract: $.bool()
|
||||
|
||||
public:
|
||||
Contract: $.bool()
|
||||
|
||||
registryEnabled:
|
||||
Contract: $.bool()
|
||||
|
||||
Methods:
|
||||
.init:
|
||||
Body:
|
||||
- $._environment: $.find(std:Environment).require()
|
||||
- Try:
|
||||
- $._magnum: new('io.murano.extensions.mirantis.magnum.Magnum', $._environment)
|
||||
Catch:
|
||||
With: 'murano.dsl.exceptions.NoPackageForClassFound'
|
||||
Do:
|
||||
Throw: PluginNotFoundException
|
||||
Message: 'Plugin for interaction with Magnum is not installed'
|
||||
|
||||
create:
|
||||
Body:
|
||||
- $msg: format('Creating Magnum baymodel {0}', $.name)
|
||||
- $._environment.reporter.report($this, $msg)
|
||||
- $params:
|
||||
name: $.name
|
||||
image_id: $.imageId
|
||||
keypair_id: $.keypairId
|
||||
external_network_id: $.externalNetworkId
|
||||
coe: $.coe
|
||||
flavor_id: $.flavorId
|
||||
master_flavor_id: $.masterFlavorId
|
||||
fixed_network: $.fixedNetwork
|
||||
dns_nameserver: $.dnsNameServer
|
||||
network_driver: $.networkDriver
|
||||
docker_volume_size: $.dockerVolumeSize
|
||||
labels: $.labels
|
||||
http_proxy: $.httpProxy
|
||||
https_proxy: $.httpsProxy
|
||||
no_proxy: $.noProxy
|
||||
volume_driver: $.volumeDriver
|
||||
tls_disabled: $.tlsDisabled
|
||||
public: $.public
|
||||
registry_enabled: $.registryEnabled
|
||||
- Try:
|
||||
- $baymodelId: $._magnum.createBaymodel($params)
|
||||
Catch:
|
||||
- As: e
|
||||
Do:
|
||||
- $formatString: 'Error: {0}'
|
||||
- $._environment.reporter.report_error($, $formatString.format($e.message))
|
||||
- Rethrow:
|
||||
- $.setAttr(baymodelId, $baymodeId)
|
||||
- $msg: format('Magnum baymodel is created {0}', $.name)
|
||||
- $._environment.reporter.report($this, $msg)
|
||||
- Return: $baymodelId
|
||||
|
||||
delete:
|
||||
Body:
|
||||
- $baymodelId: $.getAttr(baymodelId, null)
|
||||
- $._magnum.deleteBaymodel($baymodelId)
|
||||
- $msg: format('Magnum baymodel {0} is deleted', $.name)
|
||||
- $._environment.reporter.report($this, $msg)
|
@ -1,212 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Version: 2
|
||||
|
||||
Templates:
|
||||
baymodel:
|
||||
?:
|
||||
type: com.intel.magnum.plugin.MagnumBaymodel
|
||||
name: $.baymodelConfiguration.name
|
||||
imageId: $.baymodelConfiguration.imageId
|
||||
keypairId: $.baymodelConfiguration.keyPair
|
||||
externalNetworkId: $.baymodelConfiguration.externalNetworkId
|
||||
coe: $.baymodelConfiguration.coe
|
||||
flavorId: $.baymodelConfiguration.flavorId.norm()
|
||||
masterFlavorId: $.baymodelConfiguration.masterFlavorId.norm()
|
||||
networkDriver: $.baymodelConfiguration.networkDriver.norm()
|
||||
fixedNetwork: $.baymodelConfiguration.fixedNetwork.norm()
|
||||
dnsNameServer: $.baymodelConfiguration.dnsNameServer.norm()
|
||||
dockerVolumeSize: $.baymodelConfiguration.dockerVolumeSize
|
||||
labels: $.baymodelConfiguration.labels.norm()
|
||||
volumeDriver: $.baymodelConfiguration.volumeDriver.norm()
|
||||
httpProxy: $.baymodelConfiguration.httpProxy.norm()
|
||||
httpsProxy: $.baymodelConfiguration.httpsProxy.norm()
|
||||
noProxy: $.baymodelConfiguration.noProxy.norm()
|
||||
tlsDisabled: $.baymodelConfiguration.tlsDisabled
|
||||
public: $.baymodelConfiguration.public
|
||||
registryEnabled: $.baymodelConfiguration.registryEnabled
|
||||
|
||||
Application:
|
||||
?:
|
||||
type: com.intel.magnum.plugin.MagnumBayApp
|
||||
name: $.appConfiguration.name
|
||||
nodeCount: $.appConfiguration.nodeCount
|
||||
masterCount: $.appConfiguration.masterCount
|
||||
discoveryUrl: $.appConfiguration.discoveryUrl.norm()
|
||||
timeout: $.appConfiguration.timeout
|
||||
baymodel: $baymodel
|
||||
|
||||
Forms:
|
||||
- appConfiguration:
|
||||
fields:
|
||||
- name: name
|
||||
type: string
|
||||
label: Bay Name
|
||||
description: >-
|
||||
Enter a desired name for the application. Just A-Z, a-z, 0-9.
|
||||
- name: nodeCount
|
||||
type: integer
|
||||
label: Node Count
|
||||
initial: 1
|
||||
required: false
|
||||
description: >-
|
||||
Enter desired no. of node counts. This node count specifies no. of
|
||||
minion node created in bay.
|
||||
- name: masterCount
|
||||
type: integer
|
||||
label: Master Node Count
|
||||
initial: 1
|
||||
required: false
|
||||
description: >-
|
||||
Enter desired no. of master node counts. This master node count specifies
|
||||
no. of master node created in bay.
|
||||
- name: discoveryUrl
|
||||
type: string
|
||||
label: Discovery URL
|
||||
required: false
|
||||
description: >-
|
||||
Specifies custom discovery url for node discovery.
|
||||
- name: timeout
|
||||
type: integer
|
||||
label: Timeout
|
||||
initial: 0
|
||||
required: false
|
||||
description: >-
|
||||
The timeout for bay creation in minutes. Set to 0 for no timeout.
|
||||
The default is no timeout.
|
||||
|
||||
- baymodelConfiguration:
|
||||
fields:
|
||||
- name: name
|
||||
type: string
|
||||
label: Baymodel Name
|
||||
description: >-
|
||||
Enter a desired name for the application. Just A-Z, a-z, 0-9.
|
||||
- name: imageId
|
||||
type: image
|
||||
imageType: linux
|
||||
label: Instance Image
|
||||
initial: linux
|
||||
description: >-
|
||||
Select a valid image for the application. Image should already be prepared and
|
||||
registered in glance.
|
||||
- name: keyPair
|
||||
type: keypair
|
||||
label: Key Pair
|
||||
description: >-
|
||||
Select a Key Pair to control access to instances. You can login to
|
||||
instances using this KeyPair after the deployment of application.
|
||||
- name: externalNetworkId
|
||||
type: string
|
||||
label: External Network
|
||||
description: >-
|
||||
Select an External Network to assign IPs to bay nodes.
|
||||
- name: coe
|
||||
type: string
|
||||
label: Container Orchestration Engine
|
||||
initial: kubernetes
|
||||
description: >-
|
||||
Select Container Orchestration Engine type to be created.
|
||||
- name: flavorId
|
||||
type: flavor
|
||||
label: Bay Flavor
|
||||
required: false
|
||||
description: >-
|
||||
Specify the nova flavor id to use when launching the bay.
|
||||
- name: masterFlavorId
|
||||
type: flavor
|
||||
label: Master Flavor
|
||||
required: false
|
||||
description: >-
|
||||
Specify the nova flavor id to use when launching the master node of
|
||||
the bay.
|
||||
- name: networkDriver
|
||||
type: string
|
||||
label: Network Driver
|
||||
initial: flannel
|
||||
required: false
|
||||
description: >-
|
||||
Specify the network driver name for instantiating container
|
||||
networks.
|
||||
- name: fixedNetwork
|
||||
type: string
|
||||
label: Fixed Network
|
||||
required: false
|
||||
description: >-
|
||||
Specify the private Neutron network name to connect to this bay.
|
||||
- name: dnsNameServer
|
||||
type: string
|
||||
label: DNS Name Server
|
||||
initial: 8.8.8.8
|
||||
required: false
|
||||
description: >-
|
||||
Specify the DNS nameserver to use for this bay.
|
||||
- name: dockerVolumeSize
|
||||
type: integer
|
||||
label: Docker Volume Size
|
||||
required: false
|
||||
description: >-
|
||||
Specify the number of size in GB for the docker volume to use.
|
||||
- name: labels
|
||||
type: string
|
||||
label: Labels
|
||||
required: false
|
||||
description: >-
|
||||
Arbitrary labels in the form of key=value pairs to associate
|
||||
with a bay. Specify in format <KEY1=VALUE1,KEY2=VALUE2...>.
|
||||
- name: volumeDriver
|
||||
type: string
|
||||
label: Volume Driver
|
||||
required: false
|
||||
description: >-
|
||||
Specify the volume driver name for instantiating container
|
||||
volume.
|
||||
- name: httpProxy
|
||||
type: string
|
||||
label: HTTP Proxy
|
||||
required: false
|
||||
description: >-
|
||||
Specify the http_proxy address to use for nodes in bay.
|
||||
- name: httpsProxy
|
||||
type: string
|
||||
label: HTTPS Proxy
|
||||
required: false
|
||||
description: >-
|
||||
Specify the https_proxy address to use for nodes in bay.
|
||||
- name: noProxy
|
||||
type: string
|
||||
label: No Proxy
|
||||
required: false
|
||||
description: >-
|
||||
Specify the no_proxy address to use for nodes in bay.
|
||||
- name: tlsDisabled
|
||||
type: boolean
|
||||
label: TLS Disabled
|
||||
required: false
|
||||
initial: false
|
||||
description: >-
|
||||
Specify true to disable TLS in the bay.
|
||||
- name: public
|
||||
type: boolean
|
||||
label: Public
|
||||
required: false
|
||||
initial: false
|
||||
description: >-
|
||||
Specify true to make bay public.
|
||||
- name: registryEnabled
|
||||
type: boolean
|
||||
label: Registry Enabled
|
||||
required: false
|
||||
initial: false
|
||||
description: >-
|
||||
Specify true to enable docker registry in the bay.
|
Binary file not shown.
Before Width: | Height: | Size: 8.6 KiB |
@ -1,26 +0,0 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
Format: 1.0
|
||||
Type: Application
|
||||
FullName: com.intel.magnum.plugin.MagnumBayApp
|
||||
Name: Magnum App
|
||||
Description: |
|
||||
App to deploy Kubernetes cluster using Magnum
|
||||
Author: 'Intel, Inc'
|
||||
Tags: [Magnum, Kubernetes, Docker]
|
||||
Classes:
|
||||
com.intel.magnum.plugin.MagnumBaymodel: MagnumBaymodel.yaml
|
||||
com.intel.magnum.plugin.MagnumBayApp: MagnumBayApp.yaml
|
||||
|
||||
Require:
|
||||
murano.plugins.magnum:
|
@ -1,92 +0,0 @@
|
||||
# Copyright (c) 2016 Intel, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import cfg
|
||||
import time
|
||||
|
||||
from magnumclient import client
|
||||
from murano.common import auth_utils
|
||||
from murano.dsl import session_local_storage
|
||||
from oslo_config import cfg as config
|
||||
|
||||
from magnumclient import exceptions
|
||||
|
||||
CONF = config.CONF
|
||||
|
||||
|
||||
class MagnumClient(object):
|
||||
def __init__(self, this, region_name=None):
|
||||
self._region_name = region_name
|
||||
self._owner = this.find_owner('io.murano.Environment')
|
||||
|
||||
@property
|
||||
def _client(self):
|
||||
region = self._region_name or (
|
||||
None if self._owner is None else self._owner['region'])
|
||||
return self._create_magnum_client(region)
|
||||
|
||||
@classmethod
|
||||
def init_plugin(cls):
|
||||
cls.CONF = cfg.init_config(CONF)
|
||||
|
||||
def _wait_on_status(self, bays, bay_id, wait_status, finish_status):
|
||||
while True:
|
||||
# sleep 1s to wait bay status changes, this will be useful for
|
||||
# the first time we wait for the status, to avoid another 30s
|
||||
time.sleep(1)
|
||||
status = bays.get(bay_id).status
|
||||
if status in wait_status:
|
||||
time.sleep(30)
|
||||
elif status in finish_status:
|
||||
break
|
||||
else:
|
||||
raise RuntimeError("Unexpected Status: {}".format(status))
|
||||
|
||||
@staticmethod
|
||||
@session_local_storage.execution_session_memoize
|
||||
def _create_magnum_client(region):
|
||||
session = auth_utils.get_token_client_session(conf=CONF)
|
||||
params = auth_utils.get_session_client_parameters(
|
||||
service_type='container-infra', region=region, conf=CONF,
|
||||
session=session)
|
||||
return client.Client(**params)
|
||||
|
||||
def create_baymodel(self, args):
|
||||
baymodel = self._client.baymodels.create(**args)
|
||||
return baymodel.uuid
|
||||
|
||||
def delete_baymodel(self, baymodel_id):
|
||||
self._client.baymodels.delete(baymodel_id)
|
||||
|
||||
def get_bay_status(self, bay_id):
|
||||
bays = self._client.bays
|
||||
bay = bays.get(bay_id)
|
||||
return bay.status
|
||||
|
||||
def create_bay(self, args):
|
||||
bays = self._client.bays
|
||||
bay = bays.create(**args)
|
||||
self._wait_on_status(bays, bay.uuid, [None, "CREATE_IN_PROGRESS"],
|
||||
["CREATE_COMPLETE", "CREATE_FAILED"])
|
||||
return bay.uuid
|
||||
|
||||
def delete_bay(self, bay_id):
|
||||
bays = self._client.bays
|
||||
bays.delete(bay_id)
|
||||
try:
|
||||
self._wait_on_status(bays, bay_id, ["CREATE_COMPLETE",
|
||||
"DELETE_IN_PROGRESS", "CREATE_FAILED"],
|
||||
["DELETE_COMPLETE"])
|
||||
except exceptions.NotFound:
|
||||
pass
|
@ -1,24 +0,0 @@
|
||||
# Copyright (c) 2016 Intel, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from oslo_config import cfg
|
||||
|
||||
|
||||
def init_config(conf):
|
||||
opts = [
|
||||
cfg.IntOpt('api_version', default=2),
|
||||
cfg.StrOpt('endpoint_type', default='publicURL')
|
||||
]
|
||||
conf.register_opts(opts, group="magnum")
|
||||
return conf.magnum
|
@ -1 +0,0 @@
|
||||
python-magnumclient>=3.0.0 # Apache-2.0
|
@ -1,15 +0,0 @@
|
||||
[metadata]
|
||||
name = murano.plugins.magnum
|
||||
description = Plugin to deploy a Magnum Bay to run docker containers on it.
|
||||
summary = This plugin uses python-magnumclient to deploy a Magnum Bay. You can
|
||||
deploy any of Kubernetes, Swarm and Mesos cluster with it. Just specify
|
||||
'coe' to deploy cluster of your choice and run containers on it.
|
||||
author = Madhuri Kumari
|
||||
author-email = madhuri.kumari@intel.com
|
||||
|
||||
[files]
|
||||
packages = magnum_plugin
|
||||
|
||||
[entry_points]
|
||||
io.murano.extensions =
|
||||
mirantis.magnum.Magnum = magnum_plugin:MagnumClient
|
@ -1,20 +0,0 @@
|
||||
# Copyright 2016-2017 OpenStack Foundation
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import setuptools
|
||||
|
||||
# all other params will be taken from setup.cfg
|
||||
setuptools.setup(packages=setuptools.find_packages(),
|
||||
setup_requires=['pbr'], pbr=True)
|
@ -1,40 +0,0 @@
|
||||
Namespaces:
|
||||
=: io.murano.apps.example.plugin
|
||||
std: io.murano
|
||||
res: io.murano.resources
|
||||
sys: io.murano.system
|
||||
|
||||
|
||||
Name: DemoApp
|
||||
|
||||
Extends: std:Application
|
||||
|
||||
Properties:
|
||||
name:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
instance:
|
||||
Contract: $.class(res:Instance).notNull()
|
||||
|
||||
Methods:
|
||||
initialize:
|
||||
Body:
|
||||
- $._environment: $.find(std:Environment).require()
|
||||
|
||||
deploy:
|
||||
Body:
|
||||
- If: not $.getAttr(deployed, false)
|
||||
Then:
|
||||
- $._environment.reporter.report($this, 'Creating VM ')
|
||||
- $securityGroupIngress:
|
||||
- ToPort: 22
|
||||
FromPort: 22
|
||||
IpProtocol: tcp
|
||||
External: true
|
||||
- $._environment.securityGroupManager.addGroupIngress($securityGroupIngress)
|
||||
- $.instance.deploy()
|
||||
- $resources: new(sys:Resources)
|
||||
- $._environment.reporter.report($this, 'Test VM is installed')
|
||||
- $.host: $.instance.ipAddresses[0]
|
||||
- $.user: 'root'
|
||||
- $.setAttr(deployed, true)
|
@ -1,15 +0,0 @@
|
||||
Namespaces:
|
||||
=: io.murano.apps.example.plugin
|
||||
res: io.murano.resources
|
||||
|
||||
Name: DemoInstance
|
||||
|
||||
Extends:
|
||||
- res:LinuxMuranoInstance
|
||||
- ImageValidatorMixin
|
||||
|
||||
Methods:
|
||||
deploy:
|
||||
Body:
|
||||
- $.validateImage()
|
||||
- $.super($.deploy())
|
@ -1,38 +0,0 @@
|
||||
Namespaces:
|
||||
=: io.murano.apps.example.plugin
|
||||
res: io.murano.resources
|
||||
std: io.murano
|
||||
|
||||
Name: ImageValidatorMixin
|
||||
|
||||
Extends:
|
||||
- res:Instance
|
||||
|
||||
Properties:
|
||||
requiredType:
|
||||
Contract: $.string().notNull()
|
||||
|
||||
Methods:
|
||||
validateImage:
|
||||
Body:
|
||||
- $environment: $.find(std:Environment).require()
|
||||
- Try:
|
||||
- $glance: new('io.murano.extensions.mirantis.example.Glance', $environment)
|
||||
Catch:
|
||||
With: 'murano.dsl.exceptions.NoPackageForClassFound'
|
||||
Do:
|
||||
Throw: PluginNotFoundException
|
||||
Message: 'Plugin for interaction with Glance is not installed'
|
||||
- $glanceImage: $glance.getById($.image)
|
||||
- If: $glanceImage = null
|
||||
Then:
|
||||
Throw: ImageNotFoundException
|
||||
Message: 'Image with specified Id was not found'
|
||||
- If: $glanceImage.meta = null
|
||||
Then:
|
||||
Throw: InvalidImageException
|
||||
Message: 'Image does not contain Murano metadata tag'
|
||||
- If: $glanceImage.meta.type != $.requiredType
|
||||
Then:
|
||||
Throw: InvalidImageException
|
||||
Message: 'Image has unappropriate Murano type'
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user