Jump to: navigation, search

Difference between revisions of "Solum/FeatureBlueprints/ApplicationDeploymentAndManagement"

(Solum-R1.8.3 apps list: CLI)
 
Line 16: Line 16:
  
 
=== Solum-R1.5 <code>assembly scale</code>: CLI ===
 
=== Solum-R1.5 <code>assembly scale</code>: CLI ===
Synopsis: assembly scale <--id | --uri> <--tier> <--increment | --auto=default>
+
Synopsis: assembly scale &lt;assembly_name&gt; &lt;tag&gt; &lt;increment&gt;
  
Increase or decrease the number of identical DUs in an assembly by supplying an [[Solum/API#Assembly_2|Assembly]] name, a <code>--tier</code> tag name, and a <code>--increment</code> numeric argument. For example, <code>assembly scale --tier=my_app_servers --name=my_assembly --increment=+1</code> would increase the DU count by one, <code>assembly scale --tier=my_app_servers --name=my_assembly --increment=+3</code> would increase it by three. Negative numbers shall decrease the count, to a minimum of 0. This function will find a tier by locating all components with the named tag in the Assembly and increase or decrease the number of replicas of it in accordance with the signed numeric argument. If the <code>--auto=default</code> argument is supplied instead of an <code>--increment</code> argument, then scale the given tier tag automatically based on the default scaling policy (Metric=cpu utilization, Multiple=1, Eviction=oldest du, Cooldown=15 min).  
+
Increase or decrease the number of identical DUs in an assembly by supplying an [[Solum/API#Assembly_2|Assembly]] name, a <code>tier_name</code> (tag) name, and a <code>increment</code> numeric argument. For example:
 +
 
 +
assembly scale my_assembly my_tag +1
 +
 
 +
The above example would increase the DU count by one.
 +
 
 +
assembly scale my_asssembly my_tag +3
 +
 
 +
The above example would increase it by three. Negative numbers shall decrease the count, to a minimum of 0. This function will find a tier by locating all components with the named tag in the Assembly and increase or decrease the number of replicas of it in accordance with the signed numeric argument.
 +
 
 +
A special increment value of "auto=default" starts auto scaling with the "default" policy and a value of "auto=none" stops auto scaling. The "default" policy is: Metric=cpu utilization, Multiple=1, Eviction=oldest du, Cooldown=15 min. Example:
 +
 
 +
assembly scale my_assembly my_tag auto=default
 +
assembly scale my_assembly my_tag auto=none
 +
 
 +
The above example enables auto scaling using the "default" scaling policy, and then turns auto scaling back off.
  
 
=== [https://blueprints.launchpad.net/solum/+spec/delete-app Solum-R1.6] <code>assembly delete</code>: CLI ===
 
=== [https://blueprints.launchpad.net/solum/+spec/delete-app Solum-R1.6] <code>assembly delete</code>: CLI ===
Synopsis: assembly delete <--uri | --name>
+
Synopsis: assembly delete &lt;assembly_name&gt;
  
 
As an application developer, I can delete an application deployed on the platform using a CLI command.
 
As an application developer, I can delete an application deployed on the platform using a CLI command.
Line 28: Line 43:
 
The following API functions query information available from the [[Solum/API|Solum API]].
 
The following API functions query information available from the [[Solum/API|Solum API]].
 
==== Solum-R1.7.1 <code>plan show</code>: CLI ====
 
==== Solum-R1.7.1 <code>plan show</code>: CLI ====
Synopsis: plan show <--uri | --name>
+
Synopsis: plan show &lt;plan_name&gt;
  
This function shall return detail about the given Plan by name or uri. This information shall include:
+
This function shall return detail about the given Plan by name. This information shall include:
 
* uri
 
* uri
 
* name
 
* name
Line 37: Line 52:
  
 
==== Solum-R1.7.2 <code>assembly show</code>: CLI ====
 
==== Solum-R1.7.2 <code>assembly show</code>: CLI ====
Synopsis: assembly show <--uri | --name>
+
Synopsis: assembly show &lt;assembly_name&gt;
  
 
This function shall return detail about the given [[Solum/API#Assembly_2|Assembly]] by name or uri. This information shall include:
 
This function shall return detail about the given [[Solum/API#Assembly_2|Assembly]] by name or uri. This information shall include:
Line 49: Line 64:
  
 
==== Solum-R1.7.3 <code>solum service show</code>: CLI ====
 
==== Solum-R1.7.3 <code>solum service show</code>: CLI ====
Synopsis: solum service show <--uri | --name>
+
Synopsis: solum service show &lt;service_name&gt;
  
 
This function shall return detail about the given [[Solum/API#Service_2|Service]] by name or uri. This information shall include:
 
This function shall return detail about the given [[Solum/API#Service_2|Service]] by name or uri. This information shall include:
Line 61: Line 76:
  
 
==== Solum-R1.7.4 <code>app show</code>: CLI ====
 
==== Solum-R1.7.4 <code>app show</code>: CLI ====
Synopsis: app show <--uri | --name>
+
Synopsis: app show &lt;plan_name&gt;
  
 
Alias of "plan show" for ease of use. This function shall return detail about the given Plan by name or uri. This information shall include:
 
Alias of "plan show" for ease of use. This function shall return detail about the given Plan by name or uri. This information shall include:
Line 76: Line 91:
 
List the Plans. (alias of plan list)
 
List the Plans. (alias of plan list)
  
==== Solum-R1.8.2 <code>assemblies list</code>: CLI ====
+
==== Solum-R1.8.2 <code>assembly list</code>: CLI ====
Synopsis: assemblies list
+
Synopsis: assembly list
  
 
List the Assemblies.
 
List the Assemblies.
  
==== Solum-R1.8.3 <code>services list</code>: CLI ====
+
==== Solum-R1.8.3 <code>solum service list</code>: CLI ====
Synopsis: services list
+
Synopsis: solum service list
  
List the Services.
+
List the Services. Note: The noun "service" is already used by Keystone, so we need to add "solum" to the beginning to differentiate.
  
 
==== Solum-R1.8.3 <code>plan list</code>: CLI ====
 
==== Solum-R1.8.3 <code>plan list</code>: CLI ====
Line 92: Line 107:
  
 
=== Solum-R1.9 <code>assembly create</code>: CLI ===
 
=== Solum-R1.9 <code>assembly create</code>: CLI ===
Synopsis: assembly create [--plan=plan_name] [--json=json_filename] [--yaml=yaml_filename] [--name="assembly_name"]
+
Synopsis: assembly create <--plan=plan_name | --json=json_filename | --yaml=yaml_filename> &lt;assembly_name&gt;
 
Create an Assembly from an Plan by name or id. Multiple Assemblies may be created from a single Plan. Return the URI of the Assembly created. See also: app deploy
 
Create an Assembly from an Plan by name or id. Multiple Assemblies may be created from a single Plan. Return the URI of the Assembly created. See also: app deploy
  
If --plan is specified, use the plan from the specifried name.<br />
+
Options
If --json is specified, use the plan in the referenced JSON file<br />
+
* Note: <code>--plan</code>, <code>--json</code>, and <code>--yaml</code> are each mutually exclusive
If --yaml is specified, use the plan in the referenced YAML file<br />
+
* If <code>--plan</code> is specified, use the plan from the specifried name.
If --name is specified, and either --json or --yaml are specified, name the assembly in accordance with the name provided.<br />
+
* If <code>--json</code> is specified, use the plan in the referenced JSON file
Note: --plan, --json, and --yaml are each mutually exclusive<br />
+
* If <code>--yaml</code> is specified, use the plan in the referenced YAML file
 +
 
 +
Example:
 +
assembly create --plan="my_awesome_app" my_app_01
  
 
=== Solum-R1.10 <code>assembly resize</code>: CLI ===
 
=== Solum-R1.10 <code>assembly resize</code>: CLI ===
Synopsis: assembly resize <--uri | --name> --tag --size [--max]
+
Synopsis: assembly resize [--max] <assembly_name> <tag> <size>  
 +
 
 +
Systematically resize all of the DU's in a given assembly that match the given tag to the given size.
 +
 
 +
Options
 +
* <code>==max</code> takes a positive integer argument value to indicate the maximum number of resizes that should be allowed in parallel (default=1). A <code>--max=1</code> argument means resize them all sequentially.
  
Systematically resize all of the DU's in a given assembly that match the given tag to the given size. Takes an optional positive integer argument that indicates the maximum number of resizes that should be allowed in parallel (default=1). A value of 1 means resize them all sequentially.
+
Examples:
 +
assembly resize --max=2 my_app_01 my_app_tier large
 +
assembly resize my_app_02 my_app_tier medium
  
 
=== Solum-R1.11 <code>assembly delete</code>: CLI ===
 
=== Solum-R1.11 <code>assembly delete</code>: CLI ===
Synopsis: assembly delete [--uri="assembly_uri" | --name="assembly_name"]
+
Synopsis: assembly delete &lt;assembly_name&gt;
Delete the given Assembly by name or URI.
+
Delete the given Assembly by name.
Note: These options are mutually exclusive.
 
  
 
=== Solum-R1.12 <code>app create</code>: CLI ===
 
=== Solum-R1.12 <code>app create</code>: CLI ===
Synopsis: app create --name [--planfile] [--image] [--repo] [--build=yes|no] [--run="yes|no"]<br />
+
Synopsis: app create [--plan=plan_file] [--image=image_id] [--repo=repo_uri] [--build=no] [--run=yes] &lt;plan_name&gt;<br />
Create a Plan with a given deployment Artifact and Plan file. Do not create any assemblies by default, unless --run="yes" is specified. Return the URI of the Plan created. If no --repo argument is provided, a repo is created for the application. Return the URI of the Plan created. If --build is specified, trigger the build workflow indicated in the planfile.<br />
+
Create a Plan with a given image (Deployment Artifact) and/or Plan file. Return the name of the Plan created.
  
If --build=no is supplied, do not trigger a build. Note: --build requires --planfile. Note: --build defaults to "yes".<br />
+
Options:
If --repo is supplied with --planfile, any planfile in the repo will be ignored, and the one specified on the CLI will be used instead<br />
+
* If <code>--plan=plan_file</code> is supplied, use the specified plan file to initialize the plan resource in Solum.
If --repo is not suppied, the system will look for solum.yaml in the repsitory root to use as the planfile. If solum.yaml is not present, it will look for solum.yaml.<br />
+
* If <code>--image=image_id</code> is supplied, use it as a glance image that has been pre-built.
If --image is supplied, use it as a glance image that has been pre-built.<br />
+
* If <code>--repo=repo_uri</code> is supplied with --plan=plan_file, any plan file in the repo will be ignored, and the one specified on the CLI will be used instead.
If --run="yes" is specified (no is default) an assembly will be automatically created<br />
+
* If <code>--repo=repo_uri</code> is suppied, the system will look for solum.yaml in the repsitory root to use as the planfile. If solum.yaml is not present, it will look for solum.yaml.
 +
* If <code>--build=no</code> is supplied (default=yes), do not trigger a build.
 +
** Note: <code>--build</code> requires <code>--planfile</code>.
 +
* If <code>--run=yes</code> is specified (default=no) an assembly will be automatically created. The name will be auto-generated based on the name of the plan, with an underscore and a numeric value so that each assembly name is unique (Example: my_app_02).
  
 
=== Solum-R1.13 <code>app deploy</code>: CLI ===
 
=== Solum-R1.13 <code>app deploy</code>: CLI ===
Synopsis: app deploy [--uri | --name] [--repo] [--image] [--template]
+
Synopsis: app deploy [--repo=repo_uri] [--image=image_id] [--template=hot_file] <assembly_name>
  
Create an Assembly from a given Plan. If the <code>--repo</code> is supplied, it will create the plan and the assembly. If a plan is referenced by <code>--uri</code> or <code>--name</code>, the repo specified in the given Plan is used. If the <code>--image</code> (glance image id) is supplied, then no build is triggered, and the given image is used in the created assembly. If <code>--template</code> is supplied, use the supplied HOT instead of generating one. Return the URI of the assembly created.  
+
Create an Assembly from a given Plan. Return the name of the assembly created.
 +
 
 +
Options:
 +
* If the <code>--repo</code> is supplied, it will create the plan and the assembly.  
 +
* If the <code>--image=image_id</code> (image_id=glance image id) is supplied, then no build is triggered, and the given image is used in the created assembly.  
 +
* If <code>--template=hot_file</code> is supplied, use the supplied HOT instead of generating one.  
 +
 
 +
 
 +
Examples:
 +
app deploy --repo=https://github.com/racker/statsd my_statsd_app
 +
app deploy --image=8490543-54483905-548395840-458943 my_statsd_app_01
 +
app deploy --image=8490543-54483905-548395840-458943 --template=statds.hot my_statsd_app_02
  
 
=== Solum-R1.14 <code>app scale</code>: CLI ===
 
=== Solum-R1.14 <code>app scale</code>: CLI ===
Line 130: Line 168:
  
 
=== Solum-R1.15 <code>app delete</code>: CLI ===
 
=== Solum-R1.15 <code>app delete</code>: CLI ===
Synopsis: app delete [--assembly] [--plan] [--force]
+
Synopsis: app delete [--force] <plan_name>
 +
 
 +
Delete an Plan, andoptionally its related Assemblies.
  
Delete an Assembly or Plan. If the <code>--assembly</code> (URI or name) is supplied, it will delete the given Assembly. If the <code>--plan</code> (URI or name) is supplied, it will delete the given Plan. One or both of the arguments must be supplied. If <code>--plan</code> is supplied, and there are any running assemblies running from that Plan, issue a warning requiring <code>--force</code>
+
Options
 +
* If <code>--force</code> is supplied, also delete all related Assemblies.  
  
 
=== [https://blueprints.launchpad.net/solum/+spec/api Solum-R1.16] REST API ===
 
=== [https://blueprints.launchpad.net/solum/+spec/api Solum-R1.16] REST API ===
 
REST API for Solum suitable for use by a CLI client, IDE plugins, Git integration scripts, etc.
 
REST API for Solum suitable for use by a CLI client, IDE plugins, Git integration scripts, etc.

Latest revision as of 00:18, 4 December 2013

Blueprint: https://blueprints.launchpad.net/solum/+spec/app-deploy-manage

Solum-R1 application deployment/Management

Solum-R1.1 GIT deployment

As an application developer, I want to push my code to my Git repository, and have the platform automatically detect the code push and generate a running application using the new code. I should be able to deploy a new app, or make updates to an existing app via git.

Solum-R1.2 Fast provisioning

As an application developer, when I deploy my new app or update an existing app on the Solum platform, I should receive the URL of my application in less than a minute.

Solum-R1.3 Dense packing (Infrastructure efficiency)

As a system architect, I want to be able to fit several application instances on the same host, so that I am able to share the same host operating system across multiple application instances.

Solum-R1.4 Application Isolation

As an application developer, I want security+performance isolation for my apps, so that other apps deployed on the same host are not able to intrude into my application container or impact the resources allocated to my app.

Solum-R1.5 assembly scale: CLI

Synopsis: assembly scale <assembly_name> <tag> <increment>

Increase or decrease the number of identical DUs in an assembly by supplying an Assembly name, a tier_name (tag) name, and a increment numeric argument. For example:

assembly scale my_assembly my_tag +1

The above example would increase the DU count by one.

assembly scale my_asssembly my_tag +3

The above example would increase it by three. Negative numbers shall decrease the count, to a minimum of 0. This function will find a tier by locating all components with the named tag in the Assembly and increase or decrease the number of replicas of it in accordance with the signed numeric argument.

A special increment value of "auto=default" starts auto scaling with the "default" policy and a value of "auto=none" stops auto scaling. The "default" policy is: Metric=cpu utilization, Multiple=1, Eviction=oldest du, Cooldown=15 min. Example:

assembly scale my_assembly my_tag auto=default
assembly scale my_assembly my_tag auto=none

The above example enables auto scaling using the "default" scaling policy, and then turns auto scaling back off.

Solum-R1.6 assembly delete: CLI

Synopsis: assembly delete <assembly_name>

As an application developer, I can delete an application deployed on the platform using a CLI command.

Solum-R1.7 Show Commands: CLI

The following API functions query information available from the Solum API.

Solum-R1.7.1 plan show: CLI

Synopsis: plan show <plan_name>

This function shall return detail about the given Plan by name. This information shall include:

  • uri
  • name
  • description
  • assemblies (list)

Solum-R1.7.2 assembly show: CLI

Synopsis: assembly show <assembly_name>

This function shall return detail about the given Assembly by name or uri. This information shall include:

  • uri
  • name
  • description
  • components (list)
    • detailed listing of each component
  • operations (list)
  • sensors (list)

Solum-R1.7.3 solum service show: CLI

Synopsis: solum service show <service_name>

This function shall return detail about the given Service by name or uri. This information shall include:

  • uri
  • name
  • description
  • operations (list)
  • sensors (list)
  • read_only (Boolean)

Note: "service show" would conflict with the existing "os service show".

Solum-R1.7.4 app show: CLI

Synopsis: app show <plan_name>

Alias of "plan show" for ease of use. This function shall return detail about the given Plan by name or uri. This information shall include:

  • uri
  • name
  • description
  • repo

Solum-R1.8 List Commands: CLI

The following API functions query information available from the Solum API.

Solum-R1.8.1 app list: CLI

Synopsis: app list

List the Plans. (alias of plan list)

Solum-R1.8.2 assembly list: CLI

Synopsis: assembly list

List the Assemblies.

Solum-R1.8.3 solum service list: CLI

Synopsis: solum service list

List the Services. Note: The noun "service" is already used by Keystone, so we need to add "solum" to the beginning to differentiate.

Solum-R1.8.3 plan list: CLI

Synopsis: plan list

List the Plans.

Solum-R1.9 assembly create: CLI

Synopsis: assembly create <--plan=plan_name | --json=json_filename | --yaml=yaml_filename> <assembly_name> Create an Assembly from an Plan by name or id. Multiple Assemblies may be created from a single Plan. Return the URI of the Assembly created. See also: app deploy

Options

  • Note: --plan, --json, and --yaml are each mutually exclusive
  • If --plan is specified, use the plan from the specifried name.
  • If --json is specified, use the plan in the referenced JSON file
  • If --yaml is specified, use the plan in the referenced YAML file

Example:

assembly create --plan="my_awesome_app" my_app_01

Solum-R1.10 assembly resize: CLI

Synopsis: assembly resize [--max] <assembly_name> <tag> <size>

Systematically resize all of the DU's in a given assembly that match the given tag to the given size.

Options

  • ==max takes a positive integer argument value to indicate the maximum number of resizes that should be allowed in parallel (default=1). A --max=1 argument means resize them all sequentially.

Examples:

assembly resize --max=2 my_app_01 my_app_tier large
assembly resize my_app_02 my_app_tier medium

Solum-R1.11 assembly delete: CLI

Synopsis: assembly delete <assembly_name> Delete the given Assembly by name.

Solum-R1.12 app create: CLI

Synopsis: app create [--plan=plan_file] [--image=image_id] [--repo=repo_uri] [--build=no] [--run=yes] <plan_name>
Create a Plan with a given image (Deployment Artifact) and/or Plan file. Return the name of the Plan created.

Options:

  • If --plan=plan_file is supplied, use the specified plan file to initialize the plan resource in Solum.
  • If --image=image_id is supplied, use it as a glance image that has been pre-built.
  • If --repo=repo_uri is supplied with --plan=plan_file, any plan file in the repo will be ignored, and the one specified on the CLI will be used instead.
  • If --repo=repo_uri is suppied, the system will look for solum.yaml in the repsitory root to use as the planfile. If solum.yaml is not present, it will look for solum.yaml.
  • If --build=no is supplied (default=yes), do not trigger a build.
    • Note: --build requires --planfile.
  • If --run=yes is specified (default=no) an assembly will be automatically created. The name will be auto-generated based on the name of the plan, with an underscore and a numeric value so that each assembly name is unique (Example: my_app_02).

Solum-R1.13 app deploy: CLI

Synopsis: app deploy [--repo=repo_uri] [--image=image_id] [--template=hot_file] <assembly_name>

Create an Assembly from a given Plan. Return the name of the assembly created.

Options:

  • If the --repo is supplied, it will create the plan and the assembly.
  • If the --image=image_id (image_id=glance image id) is supplied, then no build is triggered, and the given image is used in the created assembly.
  • If --template=hot_file is supplied, use the supplied HOT instead of generating one.


Examples:

app deploy --repo=https://github.com/racker/statsd my_statsd_app
app deploy --image=8490543-54483905-548395840-458943 my_statsd_app_01
app deploy --image=8490543-54483905-548395840-458943 --template=statds.hot my_statsd_app_02

Solum-R1.14 app scale: CLI

Alias for assembly scale

Solum-R1.15 app delete: CLI

Synopsis: app delete [--force] <plan_name>

Delete an Plan, andoptionally its related Assemblies.

Options

  • If --force is supplied, also delete all related Assemblies.

Solum-R1.16 REST API

REST API for Solum suitable for use by a CLI client, IDE plugins, Git integration scripts, etc.