MCPcopy Create free account
hub / github.com/cloudnative-pg/cloudnative-pg / Status

Function Status

internal/cmd/plugin/status/status.go:109–171  ·  view source on GitHub ↗

Status implements the "status" subcommand

(
	ctx context.Context,
	clusterName string,
	verbosity int,
	format plugin.OutputFormat,
	timeout time.Duration,
)

Source from the content-addressed store, hash-verified

107
108// Status implements the "status" subcommand
109func Status(
110 ctx context.Context,
111 clusterName string,
112 verbosity int,
113 format plugin.OutputFormat,
114 timeout time.Duration,
115) error {
116 var cluster apiv1.Cluster
117 var errs []error
118
119 // Create a Kubernetes client suitable for calling the "Exec" subresource
120 clientInterface := kubernetes.NewForConfigOrDie(plugin.Config)
121
122 // Get the Cluster object
123 err := plugin.Client.Get(ctx, client.ObjectKey{Namespace: plugin.Namespace, Name: clusterName}, &cluster)
124 if err != nil {
125 return fmt.Errorf("while trying to get cluster %s in namespace %s: %w",
126 clusterName, plugin.Namespace, err)
127 }
128
129 status := extractPostgresqlStatus(ctx, cluster)
130 hibernated, _ := isHibernated(status)
131
132 err = plugin.Print(status, format, os.Stdout)
133 if err != nil || format != plugin.OutputFormatText {
134 return err
135 }
136 errs = append(errs, status.ErrorList...)
137
138 status.printBasicInfo(ctx, clientInterface, timeout)
139 status.printHibernationInfo()
140 status.printDemotionTokenInfo()
141 status.printPromotionTokenInfo()
142 if verbosity > 1 {
143 errs = append(errs, status.printPostgresConfiguration(ctx, clientInterface, timeout)...)
144 status.printCertificatesStatus()
145 }
146 if !hibernated {
147 status.printBackupStatus()
148 status.printBasebackupStatus(verbosity)
149 status.printReplicaStatus(verbosity)
150 if verbosity > 0 {
151 status.printUnmanagedReplicationSlotStatus()
152 status.printRoleManagerStatus()
153 status.printTablespacesStatus()
154 status.printPodDisruptionBudgetStatus()
155 }
156 status.printInstancesStatus()
157 }
158 status.printPluginStatus(verbosity)
159
160 if len(errs) > 0 {
161 fmt.Println()
162
163 errors := tabby.New()
164 errors.AddHeader(aurora.Red("Error(s) extracting status"))
165 for _, err := range errs {
166 fmt.Printf("%s\n", err)

Callers 1

NewCmdFunction · 0.85

Calls 15

PrintFunction · 0.92
extractPostgresqlStatusFunction · 0.85
isHibernatedFunction · 0.85
printBasicInfoMethod · 0.80
printHibernationInfoMethod · 0.80
printBackupStatusMethod · 0.80
printBasebackupStatusMethod · 0.80
printReplicaStatusMethod · 0.80

Tested by

no test coverage detected