Skip to content

Commit b6d8302

Browse files
committed
feat(packageserver): add additional info to package server output
1 parent 6d9d255 commit b6d8302

File tree

99 files changed

+17217
-1931
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+17217
-1931
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ MOCKGEN := ./scripts/generate_mocks.sh
1313
# mockgen := $(GOBIN)/mockgen
1414
IMAGE_REPO := quay.io/operator-framework/olm
1515
IMAGE_TAG ?= "dev"
16-
KUBE_DEPS := api apiserver apimachinery apiextensions-apiserver kube-aggregator code-generator
16+
KUBE_DEPS := api apiserver apimachinery apiextensions-apiserver kube-aggregator code-generator cli-runtime
1717
KUBE_RELEASE := release-1.12
1818

1919
.PHONY: build test run clean vendor schema-check \

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ require (
1414
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 // indirect
1515
github.com/go-openapi/analysis v0.17.2 // indirect
1616
github.com/go-openapi/errors v0.17.2 // indirect
17+
github.com/go-openapi/jsonpointer v0.19.0 // indirect
18+
github.com/go-openapi/jsonreference v0.19.0 // indirect
1719
github.com/go-openapi/loads v0.17.2 // indirect
1820
github.com/go-openapi/runtime v0.17.2 // indirect
1921
github.com/go-openapi/spec v0.19.0
22+
github.com/go-openapi/swag v0.17.2 // indirect
2023
github.com/gogo/protobuf v1.2.0 // indirect
2124
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
2225
github.com/golang/mock v1.2.1-0.20190329180013-73dc87cad333
@@ -36,6 +39,7 @@ require (
3639
github.com/spf13/cobra v0.0.3
3740
github.com/stretchr/testify v1.2.2
3841
golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5 // indirect
42+
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db // indirect
3943
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
4044
google.golang.org/appengine v1.5.0 // indirect
4145
google.golang.org/grpc v1.19.1
@@ -44,6 +48,7 @@ require (
4448
k8s.io/apiextensions-apiserver v0.0.0-20190221101132-cda7b6cfba78
4549
k8s.io/apimachinery v0.0.0-20190221084156-01f179d85dbc
4650
k8s.io/apiserver v0.0.0-20190402012035-5e1c1f41ee34
51+
k8s.io/cli-runtime v0.0.0-20190221101700-11047e25a94a // indirect
4752
k8s.io/client-go v11.0.0+incompatible
4853
k8s.io/code-generator v0.0.0-20181203235156-f8cba74510f3
4954
k8s.io/gengo v0.0.0-20190327210449-e17681d19d3a // indirect

go.sum

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,12 @@ github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpR
7171
github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
7272
github.com/go-openapi/errors v0.17.2 h1:azEQ8Fnx0jmtFF2fxsnmd6I0x6rsweUF63qqSO1NmKk=
7373
github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
74-
github.com/go-openapi/jsonpointer v0.17.0 h1:nH6xp8XdXHx8dqveo0ZuJBluCO2qGrPbDNZ0dwoRHP0=
7574
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
76-
github.com/go-openapi/jsonreference v0.17.0 h1:yJW3HCkTHg7NOA+gZ83IPHzUSnUzGXhGmsdiCcMexbA=
75+
github.com/go-openapi/jsonpointer v0.19.0 h1:FTUMcX77w5rQkClIzDtTxvn6Bsa894CcrzNj2MMfeg8=
76+
github.com/go-openapi/jsonpointer v0.19.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
7777
github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
78+
github.com/go-openapi/jsonreference v0.19.0 h1:BqWKpV1dFd+AuiKlgtddwVIFQsuMpxfBDBHGfM2yNpk=
79+
github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
7880
github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
7981
github.com/go-openapi/loads v0.17.2 h1:tEXYu6Xc0pevpzzQx5ghrMN9F7IVpN/+u4iD3rkYE5o=
8082
github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
@@ -89,8 +91,9 @@ github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pL
8991
github.com/go-openapi/strfmt v0.17.2/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
9092
github.com/go-openapi/strfmt v0.18.0 h1:FqqmmVCKn3di+ilU/+1m957T1CnMz3IteVUcV3aGXWA=
9193
github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
92-
github.com/go-openapi/swag v0.17.0 h1:iqrgMg7Q7SvtbWLlltPrkMs0UBJI6oTSs79JFRUi880=
9394
github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
95+
github.com/go-openapi/swag v0.17.2 h1:K/ycE/XTUDFltNHSO32cGRUhrVGJD64o8WgAIZNyc3k=
96+
github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
9497
github.com/go-openapi/validate v0.17.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
9598
github.com/go-openapi/validate v0.17.2/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
9699
github.com/go-openapi/validate v0.18.0 h1:PVXYcP1GkTl+XIAJnyJxOmK6CSG5Q1UcvoCvNO++5Kg=
@@ -128,7 +131,7 @@ github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:Fecb
128131
github.com/gregjones/httpcache v0.0.0-20181110185634-c63ab54fda8f/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
129132
github.com/gregjones/httpcache v0.0.0-20190203031600-7a902570cb17 h1:prg2TTpTOcJF1jRWL2zSU1FQNgB0STAFNux8GK82y8k=
130133
github.com/gregjones/httpcache v0.0.0-20190203031600-7a902570cb17/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
131-
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c=
134+
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:BWIsLfhgKhV5g/oF34aRjniBHLTZe5DNekSjbAjIS6c=
132135
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
133136
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
134137
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
@@ -302,13 +305,15 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
302305
golang.org/x/sys v0.0.0-20190318195719-6c81ef8f67ca/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
303306
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e h1:nFYrTHrdrAOpShe27kaFHjsqYSEQ0KWqdWLu3xuZJts=
304307
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
305-
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
306308
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
309+
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
310+
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
307311
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
308312
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
309313
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
310314
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
311315
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
316+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
312317
golang.org/x/tools v0.0.0-20181011152555-a398e557df60/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
313318
golang.org/x/tools v0.0.0-20181207222222-4c874b978acb/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
314319
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b h1:qMK98NmNCRVDIYFycQ5yVRkvgDUFfdP8Ip4KqmDEB7g=
@@ -357,6 +362,8 @@ k8s.io/apimachinery v0.0.0-20190221084156-01f179d85dbc h1:7z9/6jKWBqkK9GI1RRB0B5
357362
k8s.io/apimachinery v0.0.0-20190221084156-01f179d85dbc/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0=
358363
k8s.io/apiserver v0.0.0-20190402012035-5e1c1f41ee34 h1:5d+YN9C7gYxZIdr9aFzYzYjaFP2cT/5O06rOImHvHIQ=
359364
k8s.io/apiserver v0.0.0-20190402012035-5e1c1f41ee34/go.mod h1:6bqaTSOSJavUIXUtfaR9Os9JtTCm8ZqH2SUl2S60C4w=
365+
k8s.io/cli-runtime v0.0.0-20190221101700-11047e25a94a h1:GAcwIisjZPZ+M1SnvTMt36TeoGLN+CNKjAn/4DG4T4I=
366+
k8s.io/cli-runtime v0.0.0-20190221101700-11047e25a94a/go.mod h1:qWnH3/b8sp/l7EvlDh7ulDU3UWA4P4N1NFbEEP791tM=
360367
k8s.io/client-go v0.0.0-20190228133956-77e032213d34 h1:6Iif3YYUETtutLCzzC1hPC6Fjvg/qdcQM3NwxS86TmA=
361368
k8s.io/client-go v0.0.0-20190228133956-77e032213d34/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s=
362369
k8s.io/code-generator v0.0.0-20181128191024-b1289fc74931 h1:5nlNOG+ShM9gcSivU8/IEhrANa/ljMMEJ1sw86/eFzQ=

pkg/package-server/provider/registry.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,9 @@ func (p *RegistryProvider) List(namespace string) (*operators.PackageManifestLis
273273
}
274274

275275
// Set request namespace to stop kube clients from complaining about global namespace mismatch.
276-
newPkg.SetNamespace(namespace)
276+
if namespace != metav1.NamespaceAll {
277+
newPkg.SetNamespace(namespace)
278+
}
277279
pkgs = append(pkgs, *newPkg)
278280
}
279281
}

pkg/package-server/storage/printer.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package storage
2+
3+
import (
4+
"time"
5+
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
8+
"k8s.io/apimachinery/pkg/runtime"
9+
"k8s.io/apimachinery/pkg/util/duration"
10+
"k8s.io/kubernetes/pkg/printers"
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+
36+
func printPackage(manifest *operators.PackageManifest, options printers.PrintOptions) ([]metav1beta1.TableRow, error) {
37+
row := metav1beta1.TableRow{
38+
Object: runtime.RawExtension{Object: manifest},
39+
}
40+
row.Cells = append(row.Cells, manifest.Name, manifest.Status.CatalogSourceDisplayName, translateTimestampSince(manifest.CreationTimestamp))
41+
return []metav1beta1.TableRow{row}, nil
42+
}
43+
44+
func printPackageList(manifestList *operators.PackageManifestList, options printers.PrintOptions) ([]metav1beta1.TableRow, error) {
45+
rows := make([]metav1beta1.TableRow, 0, len(manifestList.Items))
46+
for i := range manifestList.Items {
47+
r, err := printPackage(&manifestList.Items[i], options)
48+
if err != nil {
49+
return nil, err
50+
}
51+
rows = append(rows, r...)
52+
}
53+
return rows, nil
54+
}

pkg/package-server/storage/reststorage.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"k8s.io/apimachinery/pkg/runtime/schema"
1414
genericreq "k8s.io/apiserver/pkg/endpoints/request"
1515
"k8s.io/apiserver/pkg/registry/rest"
16+
"k8s.io/kubernetes/pkg/printers"
17+
printerstorage "k8s.io/kubernetes/pkg/printers/storage"
1618

1719
"github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators"
1820
"github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/provider"
@@ -22,20 +24,23 @@ type PackageManifestStorage struct {
2224
groupResource schema.GroupResource
2325
prov provider.PackageManifestProvider
2426
scheme *runtime.Scheme
27+
rest.TableConvertor
2528
}
2629

2730
var _ rest.Storage = &PackageManifestStorage{}
2831
var _ rest.KindProvider = &PackageManifestStorage{}
2932
var _ rest.Lister = &PackageManifestStorage{}
3033
var _ rest.Getter = &PackageManifestStorage{}
3134
var _ rest.Scoper = &PackageManifestStorage{}
35+
var _ rest.TableConvertor = &PackageManifestStorage{}
3236

3337
// NewStorage returns a struct that implements methods needed for Kubernetes to satisfy API requests for the `PackageManifest` resource
3438
func NewStorage(groupResource schema.GroupResource, prov provider.PackageManifestProvider, scheme *runtime.Scheme) *PackageManifestStorage {
3539
return &PackageManifestStorage{
36-
groupResource: groupResource,
37-
prov: prov,
38-
scheme: scheme,
40+
groupResource: groupResource,
41+
prov: prov,
42+
scheme: scheme,
43+
TableConvertor: printerstorage.TableConvertor{TablePrinter: printers.NewTablePrinter().With(addTableHandlers)},
3944
}
4045
}
4146

0 commit comments

Comments
 (0)