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  }