1+ """
2+ Core Deis API functions that interact with providers and
3+ configuration management.
4+
5+ This module orchestrates the real "heavy lifting" of Deis, and as such these
6+ functions are decorated to run as asynchronous celery tasks.
7+ """
18
29from __future__ import unicode_literals
310import importlib
815from provider import import_provider_module
916from .exceptions import BuildNodeError
1017
18+
1119# import user-defined config management module
1220CM = importlib .import_module (settings .CM_MODULE )
1321
1422
1523@task
1624def build_layer (layer ):
25+ """
26+ Build a layer using its cloud provider.
27+
28+ :param layer: a :class:`~api.models.Layer` to build
29+ """
1730 provider = import_provider_module (layer .flavor .provider .type )
1831 provider .build_layer (layer .flat ())
1932
2033
2134@task
2235def destroy_layer (layer ):
36+ """
37+ Destroy a layer.
38+
39+ :param layer: a :class:`~api.models.Layer` to destroy
40+ """
2341 provider = import_provider_module (layer .flavor .provider .type )
2442 provider .destroy_layer (layer .flat ())
2543 layer .delete ()
2644
2745
2846@task
2947def build_node (node ):
48+ """
49+ Build a node using its cloud provider.
50+
51+ :param node: a :class:`~api.models.Node` to build
52+ """
3053 provider = import_provider_module (node .layer .flavor .provider .type )
3154 provider_id , fqdn , metadata = provider .build_node (node .flat ())
3255 node .provider_id = provider_id
@@ -41,6 +64,11 @@ def build_node(node):
4164
4265@task
4366def destroy_node (node ):
67+ """
68+ Destroy a node.
69+
70+ :param node: a :class:`~api.models.Node` to destroy
71+ """
4472 provider = import_provider_module (node .layer .flavor .provider .type )
4573 provider .destroy_node (node .flat ())
4674 CM .purge_node (node .flat ())
@@ -49,12 +77,24 @@ def destroy_node(node):
4977
5078@task
5179def converge_node (node ):
80+ """
81+ Converge a node, aligning it with an intended configuration.
82+
83+ :param node: a :class:`~api.models.Node` to converge
84+ """
5285 output , rc = CM .converge_node (node .flat ())
5386 return output , rc
5487
5588
5689@task
5790def run_node (node , command ):
91+ """
92+ Run a single shell command on a container on a node.
93+
94+ Does not support interactive commands.
95+
96+ :param node: a :class:`~api.models.Node` on which to run a command
97+ """
5898 output , rc = CM .run_node (node .flat (), command )
5999 if rc != 0 and 'failed to setup the container' in output :
60100 output = '\033 [35mPlease run `git push deis master` first.\033 [0m\n ' + output
@@ -63,5 +103,8 @@ def run_node(node, command):
63103
64104@task
65105def converge_controller ():
106+ """
107+ Converge a the controller node, aligning it with an intended configuration.
108+ """
66109 CM .converge_controller ()
67110 return None
0 commit comments