Add clustering guides node file, examples node code

Change-Id: I905c424f86ef1f838ad2b637cb623f9ce7025466
Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>
This commit is contained in:
Yuanbin.Chen 2018-01-23 17:35:47 +08:00
parent 0b6eb7074d
commit 7803466ed2
2 changed files with 196 additions and 1 deletions

View File

@ -15,4 +15,106 @@
Managing Nodes
==============
.. TODO(Qiming): Implement this guide
Node is a logical object managed by the Senlin service. A node can be a member
of at most one cluster at any time. A node can be an orphan node which means
it doesn't belong to any clusters.
List Nodes
~~~~~~~~~~
To examine the list of Nodes:
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: list_nodes
When listing nodes, you can specify the sorting option using the ``sort``
parameter and you can do pagination using the ``limit`` and ``marker``
parameters.
Full example: `manage node`_
Create Node
~~~~~~~~~~~
When creating a node, you will provide a dictionary with keys and values
according to the node type referenced.
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: create_node
Optionally, you can specify a ``metadata`` keyword argument that contains some
key-value pairs to be associated with the node.
Full example: `manage node`_
Get Node
~~~~~~~~
To get a node based on its name or ID:
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: get_node
Full example: `manage node`_
Find Node
~~~~~~~~~
To find a node based on its name or ID:
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: find_node
Full example: `manage node`_
Update Node
~~~~~~~~~~~
After a node is created, most of its properties are immutable. Still, you
can update a node's ``name`` and/or ``params``.
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: update_node
Full example: `manage node`_
Delete Node
~~~~~~~~~~~
A node can be deleted after creation, provided that it is not referenced
by any active clusters. If you attempt to delete a node that is still in
use, you will get an error message.
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: delete_node
Full example: `manage node`_
Check Node
~~~~~~~~~~
If the underlying physical resource is not healthy, the node will be set
to ERROR status.
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: check_node
Full example: `manage node`_
Recover Node
~~~~~~~~~~~~
To restore a specified node.
.. literalinclude:: ../../examples/clustering/node.py
:pyobject: recover_node
.. _manage node: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/examples/clustering/node.py

View File

@ -0,0 +1,93 @@
# 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.
"""
Managing policies in the Cluster service.
For a full guide see
https://developer.openstack.org/sdks/python/openstacksdk/user/guides/cluster.html
"""
NODE_NAME = 'Test_Node'
NODE_ID = 'dd803d4a-015d-4223-b15f-db29bad3146c'
PROFILE_ID = "b0e3a680-e270-4eb8-9361-e5c9503fba0a"
def list_nodes(conn):
print("List Nodes:")
for node in conn.clustering.nodes():
print(node.to_dict())
for node in conn.clustering.nodes(sort='asc:name'):
print(node.to_dict())
def create_node(conn):
print("Create Node:")
spec = {
'name': NODE_NAME,
'profile_id': PROFILE_ID,
}
node = conn.clustering.create_node(**spec)
print(node.to_dict())
def get_node(conn):
print("Get Node:")
node = conn.clustering.get_node(NODE_ID)
print(node.to_dict())
def find_node(conn):
print("Find Node:")
node = conn.clustering.find_node(NODE_ID)
print(node.to_dict())
def update_node(conn):
print("Update Node:")
spec = {
'name': 'Test_Node01',
'profile_id': 'c0e3a680-e270-4eb8-9361-e5c9503fba0b',
}
node = conn.clustering.update_node(NODE_ID, **spec)
print(node.to_dict())
def delete_node(conn):
print("Delete Node:")
conn.clustering.delete_node(NODE_ID)
print("Node deleted.")
# node support force delete
conn.clustering.delete_node(NODE_ID, False, True)
print("Node deleted")
def check_node(conn):
print("Check Node:")
node = conn.clustering.check_node(NODE_ID)
print(node.to_dict())
def recover_node(conn):
print("Recover Node:")
spec = {'check': True}
node = conn.clustering.recover_node(NODE_ID, **spec)
print(node.to_dict())