code: def test_attach(
      sagemaker_session,
      mxnet_training_version,
      mxnet_training_py_version,
  ):
      if mxnet_training_py_version in ["py37", "py38"]:
          training_image = "1.dkr.ecr.us-west-2.amazonaws.com/mxnet-training:{1}-cpu-{0}".format(
              mxnet_training_py_version, mxnet_training_version
          )
      else:
          training_image = "1.dkr.ecr.us-west-2.amazonaws.com/sagemaker-mxnet-{0}-cpu:{1}-cpu-{0}".format(
              mxnet_training_py_version, mxnet_training_version
          )
      returned_job_description = {
          "AlgorithmSpecification": {
              "TrainingInputMode": "File",
              "TrainingImage": training_image,
          },
          "HyperParameters": {
              "sagemaker_submit_directory": '"s3://some/sourcedir.tar.gz"',
              "sagemaker_program": '"iris-dnn-classifier.py"',
              "sagemaker_s3_uri_training": '"sagemaker-3/integ-test-data/tf_iris"',
              "sagemaker_container_log_level": '"logging.INFO"',
              "sagemaker_job_name": '"neo"',
              "training_steps": "100",
              "sagemaker_region": '"us-west-2"',
          },
          "RoleArn": "arn:aws:iam::366:role/SageMakerRole",
          "ResourceConfig": {
              "VolumeSizeInGB": 30,
              "InstanceCount": 1,
              "InstanceType": "ml.c4.xlarge",
          },
          "StoppingCondition": {"MaxRuntimeInSeconds": 24 * 60 * 60},
          "TrainingJobName": "neo",
          "TrainingJobStatus": "Completed",
          "TrainingJobArn": "arn:aws:sagemaker:us-west-2:336:training-job/neo",
          "OutputDataConfig": {
              "KmsKeyId": "",
              "S3OutputPath": "s3://place/output/neo",
          },
          "TrainingJobOutput": {
              "S3TrainingJobOutput": "s3://here/output.tar.gz"
          },
      }
      sagemaker_session.sagemaker_client.describe_training_job = Mock(
          name="describe_training_job",
          return_value=returned_job_description,
      )
  
      estimator = MXNet.attach(
          training_job_name="neo", sagemaker_session=sagemaker_session
      )
      assert estimator.latest_training_job.job_name == "neo"
      assert estimator.py_version == mxnet_training_py_version
      assert estimator.framework_version == mxnet_training_version
      assert estimator.role == "arn:aws:iam::366:role/SageMakerRole"
      assert estimator.instance_count == 1
      assert estimator.max_run == 24 * 60 * 60
      assert estimator.input_mode == "File"
      assert estimator.base_job_name == "neo"
      assert estimator.output_path == "s3://place/output/neo"
      assert estimator.output_kms_key == ""
      assert estimator.hyperparameters()["training_steps"] == "100"
      assert estimator.source_dir == "s3://some/sourcedir.tar.gz"
      assert estimator.entry_point == "iris-dnn-classifier.py"
      assert estimator.tags == LIST_TAGS_RESULT["Tags"]
  
imports: from __future__ import absolute_import
  import logging
  import json
  import os
  import pytest
  from mock import MagicMock, Mock, ANY
  from mock import patch
  from pkg_resources import parse_version
  from sagemaker.fw_utils import UploadedCode
  from sagemaker.drift_check_baselines import DriftCheckBaselines
  from sagemaker.metadata_properties import MetadataProperties
  from sagemaker.model_metrics import FileSource, MetricsSource, ModelMetrics
  from sagemaker.mxnet import defaults
  from sagemaker.mxnet import MXNet
  from sagemaker.mxnet import MXNetPredictor, MXNetModel
  from sagemaker.session_settings import SessionSettings
label_desc: Use image node_id 21 for calling a global function with example usage: test_attach(sagemaker_session, mxnet_training_version, mxnet_training_py_version) without return types