in gcpdiag/runbook/vertex/generalized_steps.py [0:0]
def execute(self):
"""Verify Jupyter is running on port 127.0.0.1:8080"""
start_time = op.get(flags.START_TIME)
end_time = op.get(flags.END_TIME)
project_id: str = self.project_id or op.get(flags.PROJECT_ID)
instance_name: str = self.instance_name or op.get(flags.INSTANCE_NAME)
zone: str = self.zone or op.get(flags.ZONE)
workbench_instance: notebooks.WorkbenchInstance = notebooks.get_workbench_instance(
project_id=project_id, zone=zone, instance_name=instance_name)
filter_str = r'''severity=INFO
AND
resource.type="gce_instance"
AND
log_name=~"projects\/{project_id}\/logs\/serialconsole.googleapis.com.*"
AND
labels."compute.googleapis.com/resource_name"="{instance_name}"
AND
textPayload=~"ServerApp.*Jupyter Server.*running at.*"'''.format(
project_id=project_id, instance_name=instance_name)
serial_log_entries_jupyter_running = logs.realtime_query(
project_id=project_id,
filter_str=filter_str,
start_time=start_time,
end_time=end_time)
if serial_log_entries_jupyter_running:
op.info(
'Jupyter is running! Verifying if it\'s running on port 127.0.0.1:8080.'
)
filter_str = r'''severity=INFO
AND
resource.type="gce_instance"
AND
log_name=~"projects\/{project_id}\/logs\/serialconsole.googleapis.com.*"
AND
labels."compute.googleapis.com/resource_name"="{instance_name}"
AND NOT
textPayload=~"ServerApp.*localhost:8080\/lab"
AND
textPayload=~"ServerApp.*localhost:[0-9]{{4}}\/lab"'''.format(
project_id=project_id, instance_name=instance_name)
serial_log_entries_jupyter_port = logs.realtime_query(
project_id=project_id,
filter_str=filter_str,
start_time=start_time,
end_time=end_time)
if serial_log_entries_jupyter_port:
#User will need to fix their instance o create a new one
op.add_failed(resource=workbench_instance,
reason=op.prep_msg(op.FAILURE_REASON_ALT1,
instance_name=instance_name),
remediation=op.prep_msg(op.FAILURE_REMEDIATION))
else:
op.add_ok(resource=workbench_instance,
reason=op.prep_msg(op.SUCCESS_REASON,
instance_name=instance_name))
else:
#User needs to make sure their instance is not stopped to get logs
op.add_failed(resource=workbench_instance,
reason=op.prep_msg(op.FAILURE_REASON,
instance_name=instance_name),
remediation=op.prep_msg(op.FAILURE_REMEDIATION))