docstr: Method:
  1. create 2 rgs: RgA and RgB
  2. transfer 1 node from RgA to RgB
  verify failure with error
  3. transfer 1 node from default to RgA
  verify transfer successfully
  4. transfer 1 node from RgA to RgB
  verify transfer successfully
  5. drop rg RgB
  verify fail with error
  6. drop rg RgA
  verify success rg RgA
docstr_tok: ["Method",":","1.","create","2","rgs",":","RgA","and","RgB","2.","transfer","1","node","from","RgA","to","RgB","verify","failure","with","error","3.","transfer","1","node","from","default","to","RgA","verify","transfer","successfully","4.","transfer","1","node","from","RgA","to","RgB","verify","transfer","successfully","5.","drop","rg","RgB","verify","fail","with","error","6.","drop","rg","RgA","verify","success","rg","RgA"]
code: def test_transfer_node_default(self):
      """
      Method:
      1. create 2 rgs: RgA and RgB
      2. transfer 1 node from RgA to RgB
      verify failure with error
      3. transfer 1 node from default to RgA
      verify transfer successfully
      4. transfer 1 node from RgA to RgB
      verify transfer successfully
      5. drop rg RgB
      verify fail with error
      6. drop rg RgA
      verify success rg RgA
      """
      self._connect()
      rg1_name = cf.gen_unique_str("rg1")
      rg2_name = cf.gen_unique_str("rg2")
      self.init_resource_group(rg1_name)
      self.init_resource_group(rg2_name)
      self.utility_wrap.transfer_node(
          source=ct.default_resource_group_name,
          target=rg1_name,
          num_node=1,
      )
      rg_init_cap = 0
      rg_init_available_node = 0
      rg1_info = {
          "name": rg1_name,
          "capacity": rg_init_cap + 1,
          "num_available_node": rg_init_available_node + 1,
          "num_loaded_replica": {},
          "num_outgoing_node": {},
          "num_incoming_node": {},
      }
      self.utility_wrap.describe_resource_group(
          name=rg1_name,
          check_task=CheckTasks.check_rg_property,
          check_items=rg1_info,
      )
  
      # transfer a query node to rgB
      self.utility_wrap.transfer_node(
          source=rg1_name, target=rg2_name, num_node=1
      )
      rg2_info = {
          "name": rg2_name,
          "capacity": rg_init_cap + 1,
          "num_available_node": rg_init_available_node + 1,
          "num_loaded_replica": {},
          "num_outgoing_node": {},
          "num_incoming_node": {},
      }
      self.utility_wrap.describe_resource_group(
          name=rg2_name,
          check_task=CheckTasks.check_rg_property,
          check_items=rg2_info,
      )
      rg1_info = {
          "name": rg1_name,
          "capacity": rg_init_cap,
          "num_available_node": rg_init_available_node,
          "num_loaded_replica": {},
          "num_outgoing_node": {},
          "num_incoming_node": {},
      }
      self.utility_wrap.describe_resource_group(
          name=rg1_name,
          check_task=CheckTasks.check_rg_property,
          check_items=rg1_info,
      )
  
      # drop rgB
      error = {
          ct.err_code: 999,
          ct.err_msg: "failed to drop resource group, err=delete non-empty rg is not permitted",
      }
      self.utility_wrap.drop_resource_group(
          name=rg2_name,
          check_task=CheckTasks.err_res,
          check_items=error,
      )
      self.utility_wrap.drop_resource_group(name=rg1_name)
  
imports: import pytest
  from base.client_base import TestcaseBase
  from common import common_func
  from common import common_type
  from common.common_type import CaseLabel, CheckTasks
  from utils.util_pymilvus import *
label_desc: Use image node_id 1 for calling the TestTransferNode obj's underlying member method code with example usage: obj.test_transfer_node_default() without return types