anchor.diff:  %% @doc Writes certificate paths to the app config file of the service.
   %% @end
   %%--------------------------------------------------------------------
  --spec setup_cert_paths(service:ctx()) -> ok | no_return().
  -setup_cert_paths(#{name := AppName}) ->
  +-spec setup_cert_paths(ServiceName :: ?SERVICE_OPW | ?SERVICE_OZW,
  +    AppName :: op_worker | oz_worker) -> ok | no_return().
  +setup_cert_paths(ServiceName, AppName) ->
       lists:foreach(fun({SrcEnv, DstEnv}) ->
           Path = filename:absname(onepanel_env:get(SrcEnv)),
  -        ok = onepanel_env:write([AppName, DstEnv], Path, AppName)
  +        ok = onepanel_env:write([AppName, DstEnv], Path, ServiceName)
       end, [
           {web_key_file, web_key_file},
           {web_cert_file, web_cert_file},
  
positive.code:     Hosts = hosts:all(ServiceName),
      get_steps(set_cluster_ips, Ctx#{hosts => Hosts});
  
  get_steps(get_nagios_response, #{name := Name}) ->
      [#step{
          function = get_nagios_response,
          hosts = hosts:all(Name),
          selection = any
      }];
  
  
negative.code:         onepanel_utils:convert(string:join([DbHost, DbPort], ":"), atom)
      end, DbHosts),
  
      onepanel_env:write([ServiceName, cm_nodes], CmNodes, ServiceName),
      onepanel_env:write([ServiceName, db_nodes], DbNodes, ServiceName),
  
      maps:fold(fun(Key, Value, _) ->
          onepanel_env:write([ServiceName, Key], Value, ServiceName)
      end, #{}, AppConfig),
  
      case InitIp of
          true ->
              IP = case kv_utils:get([cluster_ips, Host], Ctx, undefined) of
                  undefined -> get_initial_ip(ServiceName);
                  Found ->
                      onepanel_deployment:set_marker(?PROGRESS_CLUSTER_IPS),
                      {ok, IPTuple} = ip_utils:to_ip4_address(Found),
                      IPTuple
              end,
              onepanel_env:write([name(), external_ip], IP, ServiceName);
          false -> ok
      end,
  
  