in sharedlibraries/gce/metadataserver/metadataserver.go [186:233]
func requestProperties() (*CloudProperties, error) {
body, err := get(cloudPropertiesURI, "recursive=true")
if err != nil {
return nil, fmt.Errorf("failed to get cloud properties from metadata server: %v", err)
}
resBodyJSON := &metadataServerResponse{}
if err = json.Unmarshal(body, resBodyJSON); err != nil {
return nil, fmt.Errorf("failed to unmarshal response body from metadata server: %v", err)
}
project := resBodyJSON.Project
projectID := project.ProjectID
numericProjectID := strconv.FormatInt(int64(project.NumericProjectID), 10)
instance := resBodyJSON.Instance
instanceID := strconv.FormatInt(int64(instance.ID), 10)
zone := parseZone(instance.Zone)
machineType := parseMachineType(instance.MachineType)
instanceName := instance.Name
image := instance.Image
scopes := instance.ServiceAccounts.DefaultInfo.Scopes
if image == "" {
image = ImageUnknown
}
if machineType == "" {
machineType = MachineTypeUnknown
}
log.Logger.Debugw("Default Cloud Properties from metadata server",
"projectid", projectID, "projectnumber", numericProjectID, "instanceid", instanceID, "zone", zone, "instancename", instanceName, "image", image, "machinetype", machineType, "scopes", scopes)
if projectID == "" || numericProjectID == "0" || instanceID == "0" || zone == "" || instanceName == "" {
return nil, fmt.Errorf("metadata server responded with incomplete information")
}
region := regionFromZone(zone)
return &CloudProperties{
ProjectID: projectID,
NumericProjectID: numericProjectID,
InstanceID: instanceID,
Zone: zone,
Region: region,
InstanceName: instanceName,
Image: image,
MachineType: machineType,
Scopes: scopes,
}, nil
}