Commit 533df45c authored by vaikas-google's avatar vaikas-google

Merge pull request #9 from bmelville/master

Updating design.md for schema imports and external templates
parents 55960b1f 77a6d477
...@@ -127,6 +127,7 @@ more details, including: ...@@ -127,6 +127,7 @@ more details, including:
* info: more information about the template, including long description and * info: more information about the template, including long description and
title title
* imports: any sub-imports used by this template (may be relative path or URL)
* required: properties which are required when instantiating the template * required: properties which are required when instantiating the template
* properties: JSON Schema descriptions of each property the template accepts * properties: JSON Schema descriptions of each property the template accepts
...@@ -137,6 +138,9 @@ info: ...@@ -137,6 +138,9 @@ info:
title: The Example title: The Example
description: A template being used as an example to illustrate concepts. description: A template being used as an example to illustrate concepts.
imports:
- path: helper.py
required: required:
- prop1 - prop1
...@@ -155,7 +159,12 @@ passing configuration to Deployment Manager. ...@@ -155,7 +159,12 @@ passing configuration to Deployment Manager.
### Instantiating Templates ### Instantiating Templates
Templates can be instantiated in the same way that a configurable resource is Templates can be instantiated in the same way that a configurable resource is
used, but must be imported and included as part of the configuration. used. They can be used in two different ways, either passed to the API as an
imported file, or used from a public HTTP endpoint.
#### Imported Templates
Templates may be imported as part of the target configuration and used
directly, for example:
``` ```
imports: imports:
...@@ -172,6 +181,30 @@ The _imports_ list is not understood by the Deployment Manager service, but is a ...@@ -172,6 +181,30 @@ The _imports_ list is not understood by the Deployment Manager service, but is a
directive to client-side tooling to specify what additional files should be directive to client-side tooling to specify what additional files should be
included when passing a configuration to the API. included when passing a configuration to the API.
Using the Deployment Manager API, these templates can be included in the
imports section of the _targetConfig_.
#### External Templates
Templates may also be used from a public HTTP endpoint, for example:
```
resources:
- name: example
type: https://raw.githubusercontent.com/example/example.py
properties:
prop1: prop-value
```
The service will process external templates as follows:
1. fetch the external template as an import
1. attempt to fetch the schema for the template, using
_<full template path>.schema_ as the schema path
1. repeat for any sub-imports found in the schema file
When fetching schema files and sub-imports, the base path of the external
template is used for relative paths.
## API Model ## API Model
Deployment Manager exposes a set of RESTful collections over HTTP/JSON. Deployment Manager exposes a set of RESTful collections over HTTP/JSON.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment