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