管理节点

节点是 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 参数指定排序选项,并可以使用 limitmarker 参数进行分页。

完整示例:管理节点

创建节点

创建节点时,您将提供一个字典,其中包含键和值,具体取决于引用的节点类型。

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)