def _add_step(self, step_kind, step_label, transform_node, side_tags=()):
    # Import here to avoid adding the dependency for local running scenarios.
    # pylint: disable=g-import-not-at-top
    from google.cloud.dataflow.internal import apiclient
    step = apiclient.Step(step_kind, self._get_unique_step_name())
    self.job.proto.steps.append(step.proto)
    step.add_property(PropertyNames.USER_NAME, step_label)
    # Cache the node/step association for the main output of the transform node.
    self._cache.cache_output(transform_node, None, step)
    # If side_tags is not () then this is a multi-output transform node and we
    # need to cache the (node, tag, step) for each of the tags used to access
    # the outputs. This is essential because the keys used to search in the
    # cache always contain the tag.
    for tag in side_tags:
      self._cache.cache_output(transform_node, tag, step)
    return step
Return cached pillars of the targeted minions
dataset/ETHPy150Open GoogleCloudPlatform/DataflowPythonSDK/google/cloud/dataflow/runners/dataflow_runner.py/DataflowPipelineRunner._add_step--crossover with--dataset/ETHPy150Open saltstack/salt/salt/runners/cache.py/pillar