docs: public static void submitTopology(String name, Config heronConfig, HeronTopology topology)
        throws AlreadyAliveException, InvalidTopologyException {
  
      Map<String, String> heronCmdOptions = getHeronCmdOptions();
  
      // We would read the topology initial state from arguments from heron-cli
      TopologyAPI.TopologyState initialState;
      if (heronCmdOptions.get(CMD_TOPOLOGY_INITIAL_STATE) != null) {
        initialState = TopologyAPI.TopologyState.valueOf(
            heronCmdOptions.get(CMD_TOPOLOGY_INITIAL_STATE));
      } else {
        initialState = TopologyAPI.TopologyState.RUNNING;
      }
  
      LOG.log(Level.FINE, "To deploy a topology in initial state {0}", initialState);
  
      //  add role and environment if present
      final String role = heronCmdOptions.get(CMD_TOPOLOGY_ROLE);
      if (role != null) {
        heronConfig.putIfAbsent(Config.TOPOLOGY_TEAM_NAME, role);
      }
  
      final String environment = heronCmdOptions.get(CMD_TOPOLOGY_ENVIRONMENT);
      if (environment != null) {
        heronConfig.putIfAbsent(Config.TOPOLOGY_TEAM_ENVIRONMENT, environment);
      }
  
      TopologyAPI.Topology fTopology =
          topology.setConfig(heronConfig).
              setName(name).
              setState(initialState).
              getTopology();
      TopologyUtils.validateTopology(fTopology);
      assert fTopology.isInitialized();
  
      submitTopologyToFile(fTopology, heronCmdOptions);
    }