in sharedlibraries/statushelper/statushelper.go [326:402]
func printServiceStatus(ctx context.Context, status *spb.ServiceStatus, compact bool) {
printColor(info, "--------------------------------------------------------------------------------\n")
switch status.GetState() {
case spb.State_UNSPECIFIED_STATE:
printColor(faint, "%s: %s\n", status.GetName(), status.GetUnspecifiedStateMessage())
return
case spb.State_FAILURE_STATE:
printColor(faint, "%s: Disabled\n", status.GetName())
return
case spb.State_ERROR_STATE:
if status.GetErrorMessage() == "" {
status.ErrorMessage = "could not determine status"
}
printColor(failure, "%s: Error: %s\n", status.GetName(), status.GetErrorMessage())
return
default:
printColor(info, "%s: ", status.GetName())
printColor(success, "Enabled\n")
}
printColor(info, " Status: ")
if status.GetFullyFunctional() == spb.State_SUCCESS_STATE {
printColor(success, "Fully Functional\n")
} else {
if status.GetErrorMessage() == "" {
status.ErrorMessage = "could not determine status"
}
printColor(failure, "Error: %s\n", status.GetErrorMessage())
}
if len(status.GetIamPermissions()) > 0 {
printColor(info, " IAM Permissions: ")
var deniedPermissions []*spb.IAMPermission
for _, permission := range status.GetIamPermissions() {
if permission.GetGranted() != spb.State_SUCCESS_STATE {
deniedPermissions = append(deniedPermissions, permission)
}
}
if len(deniedPermissions) == 0 {
printColor(success, "All granted\n")
} else {
printColor(failure, "%d not granted (output limited to 5)\n", len(deniedPermissions))
}
if !compact {
sort.Slice(deniedPermissions, func(i, j int) bool {
return deniedPermissions[i].GetGranted() < deniedPermissions[j].GetGranted()
})
for i, permission := range deniedPermissions {
if i >= 5 {
break
}
printState(ctx, fmt.Sprintf(" %s", permission.GetName()), permission.GetGranted())
}
}
}
if compact {
return
}
if len(status.GetConfigValues()) > 0 {
printColor(info, " Configuration:\n")
sort.Slice(status.GetConfigValues(), func(i, j int) bool {
return status.GetConfigValues()[i].GetName() < status.GetConfigValues()[j].GetName()
})
}
for _, configValue := range status.GetConfigValues() {
defaultString := "default"
if !configValue.GetIsDefault() {
defaultString = "configuration file"
}
if configValue.GetValue() == "" {
printColor(info, " %s:\tnil\t(%s)\n", configValue.GetName(), defaultString)
} else {
printColor(info, " %s:\t%s\t(%s)\n", configValue.GetName(), configValue.GetValue(), defaultString)
}
}
}