管理节点¶
节点是 Senlin 服务管理的逻辑对象。一个节点在任何时候最多只能属于一个集群。节点也可以是孤立节点,这意味着它不属于任何集群。
列出节点¶
要查看节点列表
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())
在列出节点时,可以使用 sort 参数指定排序选项,并可以使用 limit 和 marker 参数进行分页。
完整示例:管理节点
创建节点¶
创建节点时,您将提供一个字典,其中包含键和值,具体取决于引用的节点类型。
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())
可选地,您可以指定一个 metadata 关键字参数,其中包含一些键值对,这些键值对将与节点关联。
完整示例:管理节点
获取节点¶
要根据其名称或 ID 获取节点
def get_node(conn):
print("Get Node:")
node = conn.clustering.get_node(NODE_ID)
print(node.to_dict())
完整示例:管理节点
查找节点¶
要根据其名称或 ID 查找节点
def find_node(conn):
print("Find Node:")
node = conn.clustering.find_node(NODE_ID)
print(node.to_dict())
完整示例:管理节点
更新节点¶
在创建节点后,其大部分属性都是不可变的。不过,您可以更新节点的 name 和/或 params。
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")
完整示例:管理节点
检查节点¶
如果底层物理资源不正常,节点将被设置为 ERROR 状态。
def check_node(conn):
print("Check Node:")
node = conn.clustering.check_node(NODE_ID)
print(node)
完整示例:管理节点
恢复节点¶
要恢复指定的节点。
def recover_node(conn):
print("Recover Node:")
spec = {'check': True}
node = conn.clustering.recover_node(NODE_ID, **spec)
print(node)