github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/package-server/storage/printer.go (about) 1 package storage 2 3 import ( 4 "time" 5 6 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/kubernetes/pkg/printers" 7 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 8 metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1" 9 "k8s.io/apimachinery/pkg/runtime" 10 "k8s.io/apimachinery/pkg/util/duration" 11 12 "github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators" 13 ) 14 15 // translateTimestampSince returns the elapsed time since timestamp in 16 // human-readable approximation. 17 func translateTimestampSince(timestamp metav1.Time) string { 18 if timestamp.IsZero() { 19 return "<unknown>" 20 } 21 22 return duration.HumanDuration(time.Since(timestamp.Time)) 23 } 24 25 func addTableHandlers(h printers.PrintHandler) { 26 podColumnDefinitions := []metav1beta1.TableColumnDefinition{ 27 {Name: "Name", Type: "string", Format: "name", Description: metav1.ObjectMeta{}.SwaggerDoc()["name"]}, 28 {Name: "Catalog", Type: "string", Description: "The source catalog for this package"}, 29 {Name: "Age", Type: "string", Description: metav1.ObjectMeta{}.SwaggerDoc()["creationTimestamp"]}, 30 } 31 h.TableHandler(podColumnDefinitions, printPackage) 32 h.TableHandler(podColumnDefinitions, printPackageList) 33 } 34 35 func printPackage(manifest *operators.PackageManifest, options printers.GenerateOptions) ([]metav1beta1.TableRow, error) { 36 row := metav1beta1.TableRow{ 37 Object: runtime.RawExtension{Object: manifest}, 38 } 39 row.Cells = append(row.Cells, manifest.Name, manifest.Status.CatalogSourceDisplayName, translateTimestampSince(manifest.CreationTimestamp)) 40 return []metav1beta1.TableRow{row}, nil 41 } 42 43 func printPackageList(manifestList *operators.PackageManifestList, options printers.GenerateOptions) ([]metav1beta1.TableRow, error) { 44 rows := make([]metav1beta1.TableRow, 0, len(manifestList.Items)) 45 for i := range manifestList.Items { 46 r, err := printPackage(&manifestList.Items[i], options) 47 if err != nil { 48 return nil, err 49 } 50 rows = append(rows, r...) 51 } 52 return rows, nil 53 }