...

Source file src/sigs.k8s.io/cli-utils/cmd/status/printers/table/adapter.go

Documentation: sigs.k8s.io/cli-utils/cmd/status/printers/table

     1  // Copyright 2020 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package table
     5  
     6  import (
     7  	"strings"
     8  
     9  	"sigs.k8s.io/cli-utils/pkg/kstatus/polling/collector"
    10  	pe "sigs.k8s.io/cli-utils/pkg/kstatus/polling/event"
    11  	"sigs.k8s.io/cli-utils/pkg/object"
    12  	"sigs.k8s.io/cli-utils/pkg/print/table"
    13  )
    14  
    15  // CollectorAdapter wraps the ResourceStatusCollector and
    16  // provides a set of functions that matches the interfaces
    17  // needed by the BaseTablePrinter.
    18  type CollectorAdapter struct {
    19  	collector  *collector.ResourceStatusCollector
    20  	invNameMap map[object.ObjMetadata]string
    21  	statusSet  map[string]bool
    22  }
    23  
    24  type ResourceInfo struct {
    25  	resourceStatus *pe.ResourceStatus
    26  	invName        string
    27  }
    28  
    29  func (r *ResourceInfo) Identifier() object.ObjMetadata {
    30  	return r.resourceStatus.Identifier
    31  }
    32  
    33  func (r *ResourceInfo) ResourceStatus() *pe.ResourceStatus {
    34  	return r.resourceStatus
    35  }
    36  
    37  func (r *ResourceInfo) SubResources() []table.Resource {
    38  	var subResources []table.Resource
    39  	for _, rs := range r.resourceStatus.GeneratedResources {
    40  		subResources = append(subResources, &ResourceInfo{
    41  			resourceStatus: rs,
    42  			invName:        r.invName,
    43  		})
    44  	}
    45  	return subResources
    46  }
    47  
    48  type ResourceState struct {
    49  	resources []table.Resource
    50  	err       error
    51  }
    52  
    53  func (rss *ResourceState) Resources() []table.Resource {
    54  	return rss.resources
    55  }
    56  
    57  func (rss *ResourceState) Error() error {
    58  	return rss.err
    59  }
    60  
    61  func (ca *CollectorAdapter) LatestStatus() *ResourceState {
    62  	observation := ca.collector.LatestObservation()
    63  	var resources []table.Resource
    64  	for _, resourceStatus := range observation.ResourceStatuses {
    65  		if _, ok := ca.statusSet[strings.ToLower(resourceStatus.Status.String())]; len(ca.statusSet) == 0 || ok {
    66  			resources = append(resources, &ResourceInfo{
    67  				resourceStatus: resourceStatus,
    68  				invName:        ca.invNameMap[resourceStatus.Identifier],
    69  			})
    70  		}
    71  	}
    72  	return &ResourceState{
    73  		resources: resources,
    74  		err:       observation.Error,
    75  	}
    76  }
    77  

View as plain text