code: def build(self, t: ComputingEngine, conf: dict):
      if t == ComputingEngine.STANDALONE:
          data_dir = cfg.get_option(
              conf, "computing.standalone.data_dir"
          )
          options = cfg.get_option(
              conf, "computing.standalone.options", None
          )
          return self.build_standalone(
              data_dir=data_dir, options=options
          )
      elif t == ComputingEngine.EGGROLL:
          host = cfg.get_option(conf, "computing.eggroll.host")
          port = cfg.get_option(conf, "computing.eggroll.port")
          options = cfg.get_option(conf, "computing.eggroll.options")
          config = cfg.get_option(conf, "computing.eggroll.config")
          config_options = cfg.get_option(
              conf, "computing.eggroll.config_options"
          )
          config_properties_file = cfg.get_option(
              conf, "computing.eggroll.config_properties_file"
          )
          return self.build_eggroll(
              host=host,
              port=port,
              options=options,
              config=config,
              config_options=config_options,
              config_properties_file=config_properties_file,
          )
      elif t == ComputingEngine.SPARK:
          return self.build_spark()
      else:
          raise ValueError(f"computing engine={t} not support")
  
file_path: FATE/python/fate/arch/computing/_builder.py
imports: import typing
  from fate.arch.computing.api import ComputingEngine
  from fate.arch.config import cfg
label_desc: Use image node_id 2 for calling the ComputingBuilder obj's underlying member method code with example usage: obj.build(t, conf) and returns: self, self, self