anchor.diff:      Hosts = hosts:from_nodes(Nodes),
   
       onepanel_test_utils:service_action(Node,
  -        ?SERVICE_PANEL, deploy, #{cookie => ?COOKIE, hosts => Hosts}
  +        ?SERVICE_PANEL, deploy, #{hosts => Hosts}
       ),
       ?assertEqual(Hosts,
           lists:sort(rpc:call(Node, service_onepanel, get_hosts, []))).
  
positive.code:     Nodes = [Node1, Node2],
      [Host1 | _] = hosts:from_nodes(Nodes),
  
      Ctx = #{cookie => ?COOKIE},
      onepanel_test_utils:service_action(Node1,
          ?SERVICE_PANEL, deploy, Ctx#{hosts => [Host1]}
      ),
  
      {ok, InviteToken1} = rpc:call(Node1, invite_tokens, create, []),
      onepanel_test_utils:service_action(Node2,
          ?SERVICE_PANEL, join_cluster, Ctx#{invite_token => InviteToken1, cluster_host => Host1}
      ),
      onepanel_test_utils:service_action(Node2,
          ?SERVICE_PANEL, leave_cluster, #{}
      ),
      {ok, InviteToken2} = rpc:call(Node1, invite_tokens, create, []),
      onepanel_test_utils:service_action(Node2,
          ?SERVICE_PANEL, join_cluster, Ctx#{invite_token => InviteToken2, cluster_host => Host1}
      ).
  
  
  
negative.code:     [Host1 | _] = Hosts = hosts:from_nodes(Nodes),
      Host2Address = test_utils:get_docker_ip(Node2),
  
      onepanel_test_utils:service_action(Node1,
          ?SERVICE_PANEL, deploy, #{hosts => [Host1]}
      ),
      onepanel_test_utils:service_action(Node1,
          ?SERVICE_PANEL, extend_cluster, #{address => Host2Address}
      ),
  
      ?assertEqual(Hosts, lists:sort(rpc:call(Node1, service_onepanel, get_hosts, []))),
  