code: def test_grid_reload(self):
      name_node = utils.hadoop_namenode()
      work_dir = utils.get_workdir()
      dataset = "/datasets/smalldata/iris/iris_wheader.csv"
  
      ntrees_opts = [100, 120, 130, 140]
      learn_rate_opts = [0.01, 0.02, 0.03, 0.04]
      grid_size = len(ntrees_opts) * len(learn_rate_opts)
      print("max models %s" % grid_size)
      grid_id = "grid_ft_resume"
      hyper_parameters = {
          "learn_rate": learn_rate_opts,
          "ntrees": ntrees_opts,
      }
  
      cluster_1_name = "grid1-py"
      recovery_dir_1 = work_dir + "/recovery1"
      try:
          cluster_1 = utils.start_cluster(cluster_1_name)
          h2o.connect(url=cluster_1)
          train = h2o.import_file(
              path="hdfs://%s%s" % (name_node, dataset)
          )
          grid = H2OGridSearch(
              H2OGradientBoostingEstimator,
              grid_id=grid_id,
              hyper_params=hyper_parameters,
              recovery_dir=recovery_dir_1,
          )
          print("starting initial grid and sleeping...")
          grid.start(x=list(range(4)), y=4, training_frame=train)
          grid_in_progress = None
          times_waited = 0
          while (times_waited < 20) and (
              grid_in_progress is None
              or len(grid_in_progress.model_ids) == 0
          ):
              time.sleep(5)  # give it tome to train some models
              times_waited += 1
              try:
                  grid_in_progress = h2o.get_grid(grid_id)
              except IndexError:
                  print("no models trained yet")
          print("done sleeping")
          h2o.connection().close()
      finally:
          utils.stop_cluster(cluster_1_name)
  
      cluster_2_name = "grid2-py"
      recovery_dir_2 = work_dir + "/recovery2"
      try:
          cluster_2 = utils.start_cluster(cluster_2_name)
          h2o.connect(url=cluster_2)
          loaded = h2o.load_grid(
              "%s/%s" % (recovery_dir_1, grid_id),
              load_params_references=True,
          )
          print("models after first run:")
          for x in sorted(loaded.model_ids):
              print(x)
          loaded.resume(recovery_dir=recovery_dir_2)
          print("models after second run:")
          for x in sorted(loaded.model_ids):
              print(x)
          print(
              "Newly grained grid has %d models" % len(loaded.model_ids)
          )
          self.assertEqual(
              len(loaded.model_ids),
              grid_size,
              "The full grid was not trained.",
          )
          h2o.connection().close()
      finally:
          utils.stop_cluster(cluster_2_name)
  
file_path: h2o-3/h2o-hadoop-common/tests_fault_tolerance/python/test_grid_reload.py
imports: import sys
  import os
  import time
  from tests import pyunit_utils
  import fault_tolerance_utils
  import h2o
  from h2o.grid.grid_search import H2OGridSearch
  from h2o.estimators.gbm import H2OGradientBoostingEstimator
  import unittest
label_desc: Use image node_id 1 for calling the GridReloadTest obj's underlying member method code with example usage: obj.test_grid_reload() without return types