[PATCH compass-ci] scheduler: fix: return ips of all nodes

Return all nodes' ips when request state is "roles_ip". Example: If roles of all nodes are: "server", "client", ... ips of all nodes are: "<ip01>", "<ip02>", ... Then return: sever=<ip01> client=<ip02> ... All nodes will export the return content as environment variables line by line. --- src/scheduler/request_cluster_state.cr | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/scheduler/request_cluster_state.cr b/src/scheduler/request_cluster_state.cr index 5bbbad1..72e3810 100644 --- a/src/scheduler/request_cluster_state.cr +++ b/src/scheduler/request_cluster_state.cr @@ -52,11 +52,16 @@ class Sched "direct_macs" => direct_macs} update_cluster_state(cluster_id, job_id, job_info) when "roles_ip" - role = "server" - role_state = get_role_state(cluster_id, role) - raise "Missing #{role} state in cluster state" unless role_state - return "server=#{role_state["ip"]}\n" \ - "direct_server_ips=#{role_state["direct_ips"]}" + cluster_state = get_cluster_state(cluster_id) + roles_ip = [] of String + + cluster_state.each_value do |host_state| + roles = host_state["roles"] + direct_ips = host_state["direct_ips"] + roles_ip << "#{roles}=#{direct_ips}" + end + + return roles_ip.join('\n') end # show cluster state -- 2.23.0

On Mon, Nov 23, 2020 at 04:47:16PM +0800, Ren Wen wrote:
Return all nodes' ips when request state is "roles_ip".
Example: If roles of all nodes are: "server", "client", ... ips of all nodes are: "<ip01>", "<ip02>", ... Then return: sever=<ip01> client=<ip02> ...
If there are two same roles return, export will be coverd by the last? Thanks, Xueliang
All nodes will export the return content as environment variables line by line. --- src/scheduler/request_cluster_state.cr | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/scheduler/request_cluster_state.cr b/src/scheduler/request_cluster_state.cr index 5bbbad1..72e3810 100644 --- a/src/scheduler/request_cluster_state.cr +++ b/src/scheduler/request_cluster_state.cr @@ -52,11 +52,16 @@ class Sched "direct_macs" => direct_macs} update_cluster_state(cluster_id, job_id, job_info) when "roles_ip" - role = "server" - role_state = get_role_state(cluster_id, role) - raise "Missing #{role} state in cluster state" unless role_state - return "server=#{role_state["ip"]}\n" \ - "direct_server_ips=#{role_state["direct_ips"]}" + cluster_state = get_cluster_state(cluster_id) + roles_ip = [] of String + + cluster_state.each_value do |host_state| + roles = host_state["roles"] + direct_ips = host_state["direct_ips"] + roles_ip << "#{roles}=#{direct_ips}" + end + + return roles_ip.join('\n') end
# show cluster state -- 2.23.0

On Mon, Nov 23, 2020 at 05:34:17PM +0800, Cao Xueliang wrote:
On Mon, Nov 23, 2020 at 04:47:16PM +0800, Ren Wen wrote:
Return all nodes' ips when request state is "roles_ip".
Example: If roles of all nodes are: "server", "client", ... ips of all nodes are: "<ip01>", "<ip02>", ... Then return: sever=<ip01> client=<ip02> ...
If there are two same roles return, export will be coverd by the last?
Now, each node has different roles. Thanks, RenWen
Thanks, Xueliang
All nodes will export the return content as environment variables line by line. --- src/scheduler/request_cluster_state.cr | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/scheduler/request_cluster_state.cr b/src/scheduler/request_cluster_state.cr index 5bbbad1..72e3810 100644 --- a/src/scheduler/request_cluster_state.cr +++ b/src/scheduler/request_cluster_state.cr @@ -52,11 +52,16 @@ class Sched "direct_macs" => direct_macs} update_cluster_state(cluster_id, job_id, job_info) when "roles_ip" - role = "server" - role_state = get_role_state(cluster_id, role) - raise "Missing #{role} state in cluster state" unless role_state - return "server=#{role_state["ip"]}\n" \ - "direct_server_ips=#{role_state["direct_ips"]}" + cluster_state = get_cluster_state(cluster_id) + roles_ip = [] of String + + cluster_state.each_value do |host_state| + roles = host_state["roles"] + direct_ips = host_state["direct_ips"] + roles_ip << "#{roles}=#{direct_ips}" + end + + return roles_ip.join('\n') end
# show cluster state -- 2.23.0
participants (2)
-
Cao Xueliang
-
Ren Wen