
Added a new section cloud-user with type string to the schema Added a new section to the index to display the cloud-user if declared Change-Id: I5ddd2c50cba901c0a8da79bd54ebaf6518bc02d4
524 lines
22 KiB
HTML
524 lines
22 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
|
|
|
|
<meta name="description" content="OpenStack market place" />
|
|
<meta name="keywords" content="openstack, glance images, heat templates, murano applications, tosca templates, tosca csar" />
|
|
<meta name="author" content="Mirantis on behalf of OpenStack Foundation" />
|
|
|
|
<title>Community App Catalog</title>
|
|
|
|
<link href="/static/images/favicon.ico" rel="shortcut icon" type="image/x-icon" />
|
|
|
|
{% include "_scripts.html" %}
|
|
{% verbatim %}
|
|
<!-- Bootstrap core CSS -->
|
|
<link href="//cdn.jsdelivr.net/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
|
|
|
<!-- Custom styles for this template -->
|
|
<link href="static/css/theme.css" rel="stylesheet" type="text/css" />
|
|
<link href="//cdn.jsdelivr.net/fontawesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
|
|
<link href="//fonts.googleapis.com/css?family=Open+Sans:400italic,400,700" rel="stylesheet" type="text/css" />
|
|
|
|
<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.11.4/themes/cupertino/jquery-ui.css" />
|
|
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.datatables/1.10.4/css/jquery.dataTables.min.css" />
|
|
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/select2/3.5.2/select2.css" />
|
|
|
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
|
<!--[if lt IE 9]>
|
|
<script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
|
<script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
|
|
<body role="document">
|
|
|
|
<!-- Google Tag Manager -->
|
|
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-K2J65K"
|
|
height="0" width="0"
|
|
style="display:none;visibility:hidden"></iframe></noscript>
|
|
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
|
new Date().getTime(),event:'gtm.js'});var
|
|
f=d.getElementsByTagName(s)[0],
|
|
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
|
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
|
})(window,document,'script','dataLayer','GTM-K2J65K');</script>
|
|
<!-- End Google Tag Manager -->
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-17511903-16', {'allowAnchor': true});
|
|
ga('send', 'pageview', { 'page': location.pathname + location.search + location.hash});
|
|
</script>
|
|
<!-- Fixed navbar -->
|
|
<div class="masthead navbar-fixed-top">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="https://www.openstack.org" target="_blank"></a>
|
|
<h1><a href="#">Community App Catalog <sup><small>[beta]</small></sup></a></h1>
|
|
<a href="https://wiki.openstack.org/wiki/App-Catalog#FAQ" target="_blank" class="btn btn-default pull-right">FAQ</a>
|
|
</div>
|
|
|
|
<nav class="navbar navbar-inverse">
|
|
<div class="container">
|
|
<div class="navbar-collapse collapse">
|
|
<ul id="navbar" class="nav navbar-nav">
|
|
<li><a href="#murano-apps">Murano packages</a></li>
|
|
<li><a href="#heat-templates">Heat Templates</a></li>
|
|
<li><a href="#glance-images">Glance Images</a></li>
|
|
<li><a href="#tosca-templates">TOSCA Templates</a></li>
|
|
<li><a href="#addContent">Add New Content</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
<div class="container" role="main">
|
|
|
|
<!-- Main jumbotron for a primary marketing message or call to
|
|
action -->
|
|
|
|
<div id="landing-page" class="content" style="display:none">
|
|
|
|
<h1>The OpenStack Application Catalog will help you make applications available on your cloud. </h1>
|
|
<div class="row featured">
|
|
|
|
<div class="col-md-2 col-sm-6">
|
|
<div class="inner title">
|
|
<div>Recently Added Apps</div>
|
|
<p>(Requires OpenStack)</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row pluginbox">
|
|
<div class="col-sm-2">
|
|
<a href="https://wiki.openstack.org/wiki/App-Catalog#Horizon_Plugin_for_Native_Access" target="_blank">
|
|
<img src="static/images/plugin-icon.png">
|
|
<div class='lbl'>Horizon Plugin</div>
|
|
</a>
|
|
</div><div class="col-sm-10">
|
|
<p><strong>Want this catalog included in your OpenStack environment?</strong></p>
|
|
<p>There is a Horizon plugin available at <a href="https://git.openstack.org/cgit/openstack/app-catalog-ui" target="_blank">https://git.openstack.org/cgit/openstack/app-catalog-ui</a> which gives users the ability to search and retrieve App Catalog contents directly from Horizon — see <a href="https://wiki.openstack.org/wiki/App-Catalog#Horizon_Plugin_for_Native_Access" target="_blank">https://wiki.openstack.org/wiki/App-Catalog#Horizon_Plugin_for_Native_Access</a> for more details. Add it to your environment today!</p>
|
|
</div>
|
|
</div>
|
|
<p><strong>Don't have OpenStack yet?</strong></p>
|
|
<p>Visit the <a href="https://www.openstack.org/marketplace/" target="_blank">OpenStack Marketplace</a> and select tools and methods for building your cloud. Then come back to the OpenStack Application Catalog to make your cloud sing with applications.</p>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-4 bluebox">
|
|
<div class="inner">
|
|
<a href="#tab=murano-apps">
|
|
<h2>Murano Packages</h2>
|
|
<img src="static/images/murano-diagram.png">
|
|
</a>
|
|
<p>
|
|
In Murano Packages you will find complete
|
|
applications, in both simple and clustered configurations, ready to deploy
|
|
on your cloud. To use them:
|
|
</p>
|
|
<ol>
|
|
<li>Verify that you have <A href="http://docs.openstack.org/developer/murano/" target="_blank">Murano</a> installed</li>
|
|
<li>Browse the list and find the app package you want</li>
|
|
<li>Highlight and copy the name of the app package</li>
|
|
<li>In Horizon, navigate to Murano > Manage > Package Definitions and click Import Package</li>
|
|
<li>Paste the app package name into the labeled text field, and click Next. This will download and install the package components.</li>
|
|
<li>Now deploy the app on your cloud by navigating to Application Catalog > Environments, then creating and deploying that environment.</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4 bluebox">
|
|
<div class="inner">
|
|
<a href="#tab=heat-templates">
|
|
<h2>Heat Templates</h2>
|
|
<img src="static/images/heat-diagram.png"
|
|
class="text-center">
|
|
</a>
|
|
<p>
|
|
In Heat Templates you will find templates for creating
|
|
complete stacks in your cloud. To use them:
|
|
</p>
|
|
<ol>
|
|
<li>Browse the list and find the one you want</li>
|
|
<li>Download the template yaml (.yml) file to your local machine</li>
|
|
<li>Use Horizon to add the template to Heat (by uploading it via file selector, or copy/pasting it into the editable field)</li>
|
|
<li>Use the <a href="http://docs.openstack.org/cli-reference/heat.html" target="_blank">Heat client</a> to create a stack</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4 bluebox">
|
|
<div class="inner">
|
|
<a href="#tab=glance-images">
|
|
<h2>Glance Images</h2>
|
|
<img src="static/images/glance-diagram.png">
|
|
</a>
|
|
<br/><br/>
|
|
<p>
|
|
In Glance Images you will find a library of
|
|
preconfigured images ready to launch virtual machines
|
|
on your cloud. To use them:
|
|
</p>
|
|
<ol>
|
|
<li>Browse the list and find the one you want</li>
|
|
<li>Copy the URL for the image file</li>
|
|
<li>Use the <a href="http://docs.openstack.org/cli-reference/glance.html" target="_blank">Glance client</a> to add it to your cloud with the --copy-from option, or add the image from Horizon by creating a new image, and specifying the URL as the image location.</li>
|
|
<li>You can use Nova to launch a VM from the new image; or, you can choose an image to launch from the Glance images list shown in Horizon. Of course, if a service is preconfigured to launch VMs by itself directly from specific guest images, you're good to go.
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4 bluebox">
|
|
<div class="inner">
|
|
<a href="#tab=tosca-templates">
|
|
<h2>TOSCA Templates</h2>
|
|
<img src="static/images/tosca-diagram.png"
|
|
class="text-center">
|
|
</a>
|
|
<p>
|
|
In TOSCA Templates you will find templates and Cloud Service Archives (CSAR). To use them:
|
|
</p>
|
|
<ol>
|
|
<li>Browse the list and find the one you want</li>
|
|
<li>Download the raw template file or CSAR to your local machine</li>
|
|
<li>Use the template or CSAR per your need</li>
|
|
<li>To deploy template with OpenStack Heat, provide the template or CSAR to the OpenStack <a href="http://docs.openstack.org/developer/heat-translator/usage.html" target="_blank">Heat-Translator</a> which will produce a Heat Orchestration Template (HOT) as an output.</li>
|
|
<li>To simply parse the template, use it with OpenStack <a href="http://docs.openstack.org/developer/tosca-parser/usage.html" target="_blank">TOSCA-Parser</a> project.</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
<p><strong>Contributing to the OpenStack Application Catalog</strong></p>
|
|
<p>
|
|
The application catalog is built from the YAML files found in the
|
|
<a href="https://git.openstack.org/cgit/openstack/app-catalog" target="_blank">repository</a>.
|
|
Consistent with other OpenStack projects, additions to the
|
|
catalog take the form of git commits which are reviewed with Gerrit
|
|
prior to being merged. Detailed instructions for adding to
|
|
the YAML files can be found on the
|
|
<a href="https://wiki.openstack.org/wiki/App-Catalog" target="_blank">
|
|
OpenStack wiki</a>.
|
|
</p>
|
|
<p><strong>Catalogue Disclaimer</strong></p>
|
|
<p>Please keep in mind that this catalog contains content from many sources,
|
|
contributed by the community, for the community. The OpenStack Foundation is not endorsing any particular item listed. Read the <a href="https://wiki.openstack.org/wiki/App-Catalog/Catalogue_Disclaimer" target="_blank">Catalog Disclaimer</a> for additional information.</p>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<div id="glance-images" class="content" style="display:none">
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 filters">
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<table id="glance-images-table" class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Image Name</th>
|
|
<th>Description</th>
|
|
<th>Format</th>
|
|
<th>License</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="heat-templates" class="content" style="display:none">
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 filters">
|
|
<form class="form-inline">
|
|
<div class="form-group">
|
|
<label>Release</label>
|
|
<input type="hidden" id="heat-release"
|
|
style="width:10em" data-placeholder="Any release"/>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<table id="heat-templates-table" class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Template Name</th>
|
|
<th>Description</th>
|
|
<th>Release</th>
|
|
<th>Format</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="murano-apps" class="content" style="display:none">
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 filters">
|
|
<form class="form-inline">
|
|
<div class="form-group">
|
|
<label>Release</label>
|
|
<input type="hidden" id="murano-release"
|
|
style="width:10em" data-placeholder="Any release"/>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<table id="murano-apps-table" class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Package Name</th>
|
|
<th>Description</th>
|
|
<th>Release</th>
|
|
<th>Format</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="tosca-templates" class="content" style="display:none">
|
|
|
|
<div class="row">
|
|
<div class="col-md-6 filters">
|
|
<form class="form-inline">
|
|
<div class="form-group">
|
|
<label>Release</label>
|
|
<input type="hidden" id="tosca-release"
|
|
style="width:10em" data-placeholder="Any release"/>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<table id="tosca-templates-table" class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Template Name</th>
|
|
<th>Description</th>
|
|
<th>Release</th>
|
|
<th>Format</th>
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="info-page" class="content">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div id="info-content"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="info-dialog" title="Details">
|
|
<div id="info-container"></div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- core JavaScript
|
|
================================================== -->
|
|
<!-- Placed at the end of the document so the pages load faster -->
|
|
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/2.1.3/jquery.min.js"></script>
|
|
<script type="text/javascript" src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
|
|
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.datatables/1.10.4/js/jquery.dataTables.min.js"></script>
|
|
<script type="text/javascript" src="//cdn.jsdelivr.net/select2/3.5.2/select2.min.js"></script>
|
|
<script type="text/javascript" src="//ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
|
|
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.timeago/1.4.1/jquery.timeago.js"></script>
|
|
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.6.0/jquery.matchHeight-min.js"></script>
|
|
|
|
<script type="text/javascript" src="static/js/apps-catalog.js"></script>
|
|
|
|
<script type="text/javascript">
|
|
$(function() { initMarketPlace (); });
|
|
$(document).ready(function () { ; } );
|
|
</script>
|
|
|
|
<script id="glance-images-info" type="text/x-jquery-tmpl">
|
|
|
|
<h2>${name} (${service['disk_format']})</h2>
|
|
<div>
|
|
<span class="label">Last modified: </span><span class="value">${last_modified}</span>
|
|
</div>
|
|
<div>
|
|
{{if attributes['url']}}
|
|
<span class="label">glance image-create:</span>
|
|
<input type="text" value="glance --os-image-api-version 1 image-create --copy-from ${attributes['url']} --disk-format ${service['disk_format']} --container-format ${service['container_format']} --name '${name}'" onfocus="this.select();" onmouseup="return false;">
|
|
{{else}}
|
|
<span class="label">Website where the image can be downloaded:</span>
|
|
<a href="${attributes['indirect_url']}">Link...</a>
|
|
{{/if}}
|
|
</div>
|
|
{{if supported_by}}
|
|
<div><span class="label">Supported by</span> <span class="value">${supported_by.name}</span></div>
|
|
{{/if}}
|
|
{{if license}}
|
|
{{if license_url}}
|
|
<div><span class="label">License</span> <a href="${license_url}"> <span class="value">${license}</span></a></div>
|
|
{{else}}
|
|
<div><span class="label">License</span> <span class="value">${license}</span></div>
|
|
{{/if}}
|
|
{{/if}}
|
|
{{if cloud_user}}
|
|
<div><span class="label">Cloud User</span> <span class="value">${cloud_user}</span></div>
|
|
{{/if}}
|
|
<div><span class="label">Description:</span> <span class="value">${description}</span></div>
|
|
{{if hash }}
|
|
<div><span class="label">Hash:</span> <span class="value">${hash}</span></div>
|
|
{{/if}}
|
|
|
|
<h3>Author</h3>
|
|
<div><span class="label">Contact:
|
|
</span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div>
|
|
<div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div>
|
|
|
|
{{if attributes }}
|
|
<h3>Attributes</h3>
|
|
{{each( key, value ) attributes }}
|
|
<div><span class="label">${key}:</span> <span class="value">${value}</span></div>
|
|
{{/each}}
|
|
{{/if}}
|
|
|
|
</script>
|
|
|
|
<script id="heat-templates-info" type="text/x-jquery-tmpl">
|
|
|
|
<h2>${name} (${service['format']})</h2>
|
|
<div>
|
|
<span class="label">Last modified: </span><span class="value">${last_modified}</span>
|
|
</div>
|
|
{{if supported_by}}
|
|
<div><span class="label">Supported by</span> <span class="value">${supported_by.name}</span></div>
|
|
{{/if}}
|
|
<div><span class="label">Description:</span> <span class="value">${description}</span></div>
|
|
<div><span class="label">Available in Releases:</span> <span class="value">${release_html}</span></div>
|
|
|
|
<h3>Author</h3>
|
|
<div><span class="label">Contact:
|
|
</span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div>
|
|
<div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div>
|
|
|
|
{{if attributes }}
|
|
<h3>Attributes</h3>
|
|
{{each( key, value ) attributes }}
|
|
<div><span class="label">${key}:</span> <span class="value">${value}</span></div>
|
|
{{/each}}
|
|
{{/if}}
|
|
|
|
</script>
|
|
|
|
<script id="murano-apps-info" type="text/x-jquery-tmpl">
|
|
|
|
<h2>${name} ({{if service.type == "bundle"}}bundle{{else}}${service.format}{{/if}})</h2>
|
|
<div>
|
|
<span class="label">Last modified: </span><span class="value">${last_modified}</span>
|
|
</div>
|
|
<div>
|
|
<span class="label">{{if service.format == 'package'}}Package{{else}}Bundle{{/if}} name:</span>
|
|
{{if service.type == 'bundle'}}
|
|
<input type="text" value="${service.murano_package_name}" onfocus="this.select();" onmouseup="return false;">
|
|
{{else}}
|
|
<input type="text" value="${service.package_name}" onfocus="this.select();" onmouseup="return false;">
|
|
{{/if}}
|
|
</div>
|
|
|
|
<h3>Description</h3>
|
|
<div><span class="value">${description}</span></div>
|
|
|
|
<h3>Supported OpenStack Releases</h3>
|
|
<div><span class="value">${release_html}</span></div>
|
|
|
|
<h3>Author</h3>
|
|
<div><span class="label">Contact: </span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div>
|
|
<div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div>
|
|
|
|
{{if depends }}
|
|
<h3>Depends On</h3>
|
|
<p>Package may depend on image and on other packages, during import of
|
|
this package to Murano following dependencies will be also downloaded
|
|
and imported, but existing entries will not be overwritten.</p>
|
|
{{if depends }}
|
|
Dependencies:
|
|
<ul>
|
|
{{each depends }}
|
|
<li>${depends[$index]['name']}</li>
|
|
{{/each}}
|
|
</ul>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{if attributes }}
|
|
<h3>Attributes</h3>
|
|
{{each( key, value ) attributes }}
|
|
<div><span class="label">${key}:</span> <span class="value">${value}</span></div>
|
|
{{/each}}
|
|
{{/if}}
|
|
|
|
</script>
|
|
|
|
<script id="tosca-templates-info" type="text/x-jquery-tmpl">
|
|
|
|
<h2>${name} (${service['template_format']})</h2>
|
|
<div>
|
|
<span class="label">Last modified: </span><span class="value">${last_modified}</span>
|
|
</div>
|
|
{{if supported_by}}
|
|
<div><span class="label">Supported by</span> <span class="value">${supported_by.name}</span></div>
|
|
{{/if}}
|
|
<div><span class="label">Description:</span> <span class="value">${description}</span></div>
|
|
<div><span class="label">Available in Releases:</span> <span class="value">${release_html}</span></div>
|
|
|
|
<h3>Author</h3>
|
|
<div><span class="label">Contact:
|
|
</span><a href="${provided_by.href}"> <span class="value">${provided_by.name}</span> </a></div>
|
|
<div><span class="label">Company:</span> <span class="value">${provided_by.company}</span></div>
|
|
|
|
{{if attributes }}
|
|
<h3>Attributes</h3>
|
|
{{each( key, value ) attributes }}
|
|
<div><span class="label">${key}:</span> <span class="value">${value}</span></div>
|
|
{{/each}}
|
|
{{/if}}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|
|
{% endverbatim %}
|