code: def start_worker(
      self,
      queue_name,
      resources_needed={},
      blocking=False,
      ssh_keypair=None,
      timeout=300,
      ports=[],
  ):
      if ssh_keypair is not None:
          self.logger.warn(
              "ssh keypairs are not supported " + "for google workers"
          )
  
      if resources_needed is None:
          resources_needed = {}
  
      name = self._generate_instance_name()
  
      config = self._get_instance_config(
          resources_needed, queue_name, timeout=timeout
      )
  
      config["name"] = name
  
      op = (
          self.compute.instances()
          .insert(project=self.projectid, zone=self.zone, body=config)
          .execute()
      )
  
      if blocking:
          self._wait_for_operation(op["name"])
          self.logger.debug("worker {} created".format(name))
          return name
      else:
          return (name, op["name"])
  
imports: import os
  import time
  import googleapiclient.discovery
  import uuid
  import math
  import json
  from studio import git_util
  from studio.util import logs
  from studio.util.gpu_util import memstr2int
  from .cloud_worker_util import insert_user_startup_script
label_desc: Use image node_id 2 for calling the GCloudWorkerManager obj's underlying member method code with example usage: obj.start_worker(queue_name, resources_needed, blocking, ssh_keypair, timeout, ports) and returns: name, name,  op