anchor.diff:  
           try
               Dns = ?config(dns, EnvDesc),
  -            GrNodes = ?config(gr_nodes, EnvDesc),
  -            OpWorkers = ?config(op_worker_nodes, EnvDesc),
  -            ClusterWorkers = ?config(cluster_worker_nodes, EnvDesc),
  -            CCMs = ?config(op_ccm_nodes, EnvDesc),
  -            AllNodes = GrNodes ++ ClusterWorkers ++ OpWorkers ++ CCMs,
  +            AllNodes = lists:flatmap(fun({_, ConfigName}) -> ?config(ConfigName, Config) end, Apps),
   
               erlang:set_cookie(node(), test_cookie),
               os:cmd("echo nameserver " ++ atom_to_list(Dns) ++ " > /etc/resolv.conf"),
  
positive.code:         ConfigWithPaths =
              [{ct_test_root, CtTestRoot}, {project_root, ProjectRoot} | Config],
  
          EnvUpScript =
              filename:join([ProjectRoot, "bamboos", "docker", "env_up.py"]),
  
          LogsDir = filename:join(PrivDir, atom_to_list(TestModule) ++ "_logs"),
          os:cmd("mkdir -p " ++ LogsDir),
  
negative.code: -include_lib("common_test/include/ct.hrl").
  
  %% API
  -export([prepare_test_environment/5, prepare_test_environment/4, clean_environment/2, clean_environment/1,
      load_modules/2, maybe_start_cover/0, maybe_stop_cover/0]).
  
  -define(CLEANING_PROC_NAME, cleaning_proc).
  -define(TIMEOUT, timer:seconds(60)).
  -define(ALL_POSSIBLE_APPS, [
      {op_worker, op_worker_nodes},
      {cluster_worker, cluster_worker_nodes},
      {op_ccm, op_ccm_nodes},
      {globalregistry, gr_nodes}
  ]).
  
  %%%===================================================================
  %%% Starting and stoping nodes
  