def execute()

in gcpdiag/runbook/gke/node_bootstrapping.py [0:0]


  def execute(self):
    """
    Check for any errors during instances.insert method for the given location (region or zone)
    and nodepool pair.
    """
    project = op.get(flags.PROJECT_ID)
    location = op.get(flags.LOCATION)
    nodepool = op.get(flags.NODEPOOL)
    node = op.get(flags.NODE)
    name = op.get(flags.NAME)
    project_path = crm.get_project(project)
    start_time = op.get(flags.START_TIME)
    end_time = op.get(flags.END_TIME)

    if nodepool and name:
      if not node:
        # the gke instance name will have a max of 16 characters from the nodepool name
        # and max 16 characters from the GKE cluster name
        filter_str = [
            'log_id("cloudaudit.googleapis.com/activity")',
            'protoPayload.methodName="v1.compute.instances.insert"',
            'resource.type="gce_instance"', 'severity=ERROR',
            f'protoPayload.resourceName:"{location}"',
            f'protoPayload.resourceName:"{name[:self.MAX_GKE_NAME_LENGTH]}"',
            f'protoPayload.resourceName:"{nodepool[:self.MAX_GKE_NAME_LENGTH]}"'
        ]
        filter_str = '\n'.join(filter_str)

        log_entries = local_realtime_query(filter_str)

        if log_entries:
          nr_errors = len(log_entries)
          for log_entry in log_entries:
            sample_log = log_entry
            sample_log = str(sample_log).replace(', ', '\n')
            break
          op.add_failed(project_path,
                        reason=op.prep_msg(op.FAILURE_REASON,
                                           log_entry=sample_log,
                                           NODEPOOL=nodepool,
                                           NAME=name,
                                           location=location,
                                           NR_ERRORS=nr_errors,
                                           start_time=start_time,
                                           end_time=end_time),
                        remediation=op.prep_msg(op.FAILURE_REMEDIATION))
          return
        else:
          op.add_ok(project_path,
                    reason=op.prep_msg(op.SUCCESS_REASON,
                                       start_time=start_time,
                                       end_time=end_time,
                                       NODEPOOL=nodepool,
                                       NAME=name,
                                       location=location))
          return
      else:
        op.add_skipped(
            project_path,
            reason=
            ('Node parameter provided together with nodepool parameter, proceeding with Node '
             'Registration Checkout output verification .'))
    else:
      op.add_skipped(
          project_path,
          reason=
          ('No nodepool or GKE cluster name provided, skipping this step . \n'
           'Please provide nodepool name (-p nodepool=<nodepoolname>) and GKE cluster name '
           '(-p name=<gke-cluster-name>) if you see issues with nodes not appearing in the '
           'nodepool.'))
      return