Status implements the "status" subcommand
( ctx context.Context, clusterName string, verbosity int, format plugin.OutputFormat, timeout time.Duration, )
| 107 | |
| 108 | // Status implements the "status" subcommand |
| 109 | func 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) |
no test coverage detected