Skip to content

Commit 5723332

Browse files
committed
fix(packageserver): cache packagemanifests
1 parent b549266 commit 5723332

Some content is hidden

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

51 files changed

+503
-288
lines changed

cmd/package-server/main.go

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,58 +3,25 @@ package main
33
import (
44
"flag"
55
"os"
6-
"time"
76

87
log "github.com/sirupsen/logrus"
9-
"github.com/spf13/cobra"
108
"k8s.io/component-base/logs"
119

12-
"github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/server"
1310
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/signals"
11+
"github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/server"
1412
)
1513

16-
const (
17-
defaultWakeupInterval = 5 * time.Minute
18-
)
19-
20-
// config flags defined globally so that they appear on the test binary as well
21-
var (
22-
ctx = signals.Context()
23-
options = server.NewPackageServerOptions(os.Stdout, os.Stderr)
24-
cmd = &cobra.Command{
25-
Short: "Launch a package-server",
26-
Long: "Launch a package-server",
27-
RunE: func(c *cobra.Command, args []string) error {
28-
if err := options.Run(ctx); err != nil {
29-
return err
30-
}
31-
return nil
32-
},
33-
}
34-
)
35-
36-
func init() {
37-
flags := cmd.Flags()
38-
39-
flags.DurationVar(&options.WakeupInterval, "interval", options.WakeupInterval, "Interval at which to re-sync CatalogSources")
40-
flags.StringVar(&options.GlobalNamespace, "global-namespace", options.GlobalNamespace, "Name of the namespace where the global CatalogSources are located")
41-
flags.StringSliceVar(&options.WatchedNamespaces, "watched-namespaces", options.WatchedNamespaces, "List of namespaces the package-server will watch watch for CatalogSources")
42-
flags.StringVar(&options.Kubeconfig, "kubeconfig", options.Kubeconfig, "The path to the kubeconfig used to connect to the Kubernetes API server and the Kubelets (defaults to in-cluster config)")
43-
flags.BoolVar(&options.Debug, "debug", options.Debug, "use debug log level")
44-
45-
options.SecureServing.AddFlags(flags)
46-
options.Authentication.AddFlags(flags)
47-
options.Authorization.AddFlags(flags)
48-
options.Features.AddFlags(flags)
49-
50-
flags.AddGoFlagSet(flag.CommandLine)
51-
flags.Parse(flag.Args())
52-
}
53-
5414
func main() {
5515
logs.InitLogs()
5616
defer logs.FlushLogs()
5717

18+
ctx := signals.Context()
19+
options := server.NewPackageServerOptions(os.Stdout, os.Stderr)
20+
cmd := server.NewCommandStartPackageServer(ctx, options)
21+
cmd.Flags().AddGoFlagSet(flag.CommandLine)
22+
if err := cmd.Flags().Parse(flag.Args()); err != nil {
23+
log.Fatal(err)
24+
}
5825
if err := cmd.Execute(); err != nil {
5926
log.Fatal(err)
6027
}

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ require (
1313
github.com/fsnotify/fsnotify v1.4.7
1414
github.com/ghodss/yaml v1.0.0
1515
github.com/go-openapi/spec v0.19.2
16-
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
1716
github.com/golang/groupcache v0.0.0-20181024230925-c65c006176ff // indirect
1817
github.com/golang/mock v1.3.1
1918
github.com/google/btree v1.0.0 // indirect
@@ -34,6 +33,7 @@ require (
3433
github.com/stretchr/testify v1.4.0
3534
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect
3635
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect
36+
golang.org/x/sync v0.0.0-20190423024810-112230192c58
3737
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
3838
gonum.org/v1/gonum v0.0.0-20190710053202-4340aa3071a0 // indirect
3939
google.golang.org/grpc v1.23.0
@@ -44,6 +44,7 @@ require (
4444
k8s.io/client-go v8.0.0+incompatible
4545
k8s.io/code-generator v0.0.0
4646
k8s.io/component-base v0.0.0
47+
k8s.io/klog v0.4.0
4748
k8s.io/kube-aggregator v0.0.0
4849
k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf
4950
k8s.io/kubernetes v1.16.0

go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
609609
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
610610
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
611611
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
612+
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
612613
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
613614
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
614615
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=

pkg/lib/event/event.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package event
22

33
import (
4-
"github.com/golang/glog"
54
v1 "k8s.io/api/core/v1"
65
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
76
"k8s.io/client-go/tools/record"
7+
"k8s.io/klog"
88

99
"github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned/scheme"
1010
)
@@ -15,7 +15,7 @@ const component string = "operator-lifecycle-manager"
1515
// used to post Events to different object's lifecycles.
1616
func NewRecorder(event typedcorev1.EventInterface) (record.EventRecorder, error) {
1717
eventBroadcaster := record.NewBroadcaster()
18-
eventBroadcaster.StartLogging(glog.Infof)
18+
eventBroadcaster.StartLogging(klog.Infof)
1919
eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: event})
2020
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: component})
2121

pkg/lib/operatorclient/apiservice.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ package operatorclient
33
import (
44
"fmt"
55

6-
"github.com/golang/glog"
76
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
87
"k8s.io/apimachinery/pkg/types"
8+
"k8s.io/klog"
99
apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
1010
)
1111

@@ -26,7 +26,7 @@ func (c *Client) DeleteAPIService(name string, options *metav1.DeleteOptions) er
2626

2727
// UpdateAPIService will update the given APIService resource.
2828
func (c *Client) UpdateAPIService(apiService *apiregistrationv1.APIService) (*apiregistrationv1.APIService, error) {
29-
glog.V(4).Infof("[UPDATE APIService]: %s", apiService.GetName())
29+
klog.V(4).Infof("[UPDATE APIService]: %s", apiService.GetName())
3030
oldAPIService, err := c.GetAPIService(apiService.GetName())
3131
if err != nil {
3232
return nil, err

pkg/lib/operatorclient/clusterrole.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package operatorclient
33
import (
44
"fmt"
55

6-
"github.com/golang/glog"
76
rbacv1 "k8s.io/api/rbac/v1"
87
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
98
"k8s.io/apimachinery/pkg/types"
9+
"k8s.io/klog"
1010
)
1111

1212
// CreateClusterRole creates the ClusterRole.
@@ -26,7 +26,7 @@ func (c *Client) DeleteClusterRole(name string, options *metav1.DeleteOptions) e
2626

2727
// UpdateClusterRole will update the given ClusterRole.
2828
func (c *Client) UpdateClusterRole(crb *rbacv1.ClusterRole) (*rbacv1.ClusterRole, error) {
29-
glog.V(4).Infof("[UPDATE Role]: %s", crb.GetName())
29+
klog.V(4).Infof("[UPDATE Role]: %s", crb.GetName())
3030
oldCrb, err := c.GetClusterRole(crb.GetName())
3131
if err != nil {
3232
return nil, err

pkg/lib/operatorclient/clusterrolebinding.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package operatorclient
33
import (
44
"fmt"
55

6-
"github.com/golang/glog"
76
rbacv1 "k8s.io/api/rbac/v1"
87
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
98
"k8s.io/apimachinery/pkg/types"
9+
"k8s.io/klog"
1010
)
1111

1212
// CreateRoleBinding creates the roleBinding.
@@ -26,7 +26,7 @@ func (c *Client) DeleteClusterRoleBinding(name string, options *metav1.DeleteOpt
2626

2727
// UpdateRoleBinding will update the given RoleBinding resource.
2828
func (c *Client) UpdateClusterRoleBinding(crb *rbacv1.ClusterRoleBinding) (*rbacv1.ClusterRoleBinding, error) {
29-
glog.V(4).Infof("[UPDATE RoleBinding]: %s", crb.GetName())
29+
klog.V(4).Infof("[UPDATE RoleBinding]: %s", crb.GetName())
3030
oldCrb, err := c.GetClusterRoleBinding(crb.GetName())
3131
if err != nil {
3232
return nil, err

pkg/lib/operatorclient/customresources.go

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import (
77
"strings"
88
"time"
99

10-
"github.com/golang/glog"
1110
"k8s.io/apimachinery/pkg/api/errors"
1211
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1312
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1413
"k8s.io/apimachinery/pkg/util/wait"
14+
"k8s.io/klog"
1515
)
1616

1717
// CustomResourceList represents a list of custom resource objects that will
@@ -25,7 +25,7 @@ type CustomResourceList struct {
2525

2626
// GetCustomResource returns the custom resource as *unstructured.Unstructured by the given name.
2727
func (c *Client) GetCustomResource(apiGroup, version, namespace, resourcePlural, resourceName string) (*unstructured.Unstructured, error) {
28-
glog.V(4).Infof("[GET CUSTOM RESOURCE]: %s:%s", namespace, resourceName)
28+
klog.V(4).Infof("[GET CUSTOM RESOURCE]: %s:%s", namespace, resourceName)
2929
var object unstructured.Unstructured
3030

3131
b, err := c.GetCustomResourceRaw(apiGroup, version, namespace, resourcePlural, resourceName)
@@ -41,17 +41,17 @@ func (c *Client) GetCustomResource(apiGroup, version, namespace, resourcePlural,
4141

4242
// GetCustomResourceRaw returns the custom resource's raw body data by the given name.
4343
func (c *Client) GetCustomResourceRaw(apiGroup, version, namespace, resourcePlural, resourceName string) ([]byte, error) {
44-
glog.V(4).Infof("[GET CUSTOM RESOURCE RAW]: %s:%s", namespace, resourceName)
44+
klog.V(4).Infof("[GET CUSTOM RESOURCE RAW]: %s:%s", namespace, resourceName)
4545
httpRestClient := c.extInterface.ApiextensionsV1beta1().RESTClient()
4646
uri := customResourceURI(apiGroup, version, namespace, resourcePlural, resourceName)
47-
glog.V(4).Infof("[GET]: %s", uri)
47+
klog.V(4).Infof("[GET]: %s", uri)
4848

4949
return httpRestClient.Get().RequestURI(uri).DoRaw()
5050
}
5151

5252
// CreateCustomResource creates the custom resource.
5353
func (c *Client) CreateCustomResource(item *unstructured.Unstructured) error {
54-
glog.V(4).Infof("[CREATE CUSTOM RESOURCE]: %s:%s", item.GetNamespace(), item.GetName())
54+
klog.V(4).Infof("[CREATE CUSTOM RESOURCE]: %s:%s", item.GetNamespace(), item.GetName())
5555
kind := item.GetKind()
5656
namespace := item.GetNamespace()
5757
apiVersion := item.GetAPIVersion()
@@ -70,20 +70,20 @@ func (c *Client) CreateCustomResource(item *unstructured.Unstructured) error {
7070

7171
// CreateCustomResourceRaw creates the raw bytes of the custom resource.
7272
func (c *Client) CreateCustomResourceRaw(apiGroup, version, namespace, kind string, data []byte) error {
73-
glog.V(4).Infof("[CREATE CUSTOM RESOURCE RAW]: %s:%s", namespace, kind)
73+
klog.V(4).Infof("[CREATE CUSTOM RESOURCE RAW]: %s:%s", namespace, kind)
7474
var statusCode int
7575

7676
httpRestClient := c.extInterface.ApiextensionsV1beta1().RESTClient()
7777
uri := customResourceDefinitionURI(apiGroup, version, namespace, kind)
78-
glog.V(4).Infof("[POST]: %s", uri)
78+
klog.V(4).Infof("[POST]: %s", uri)
7979
result := httpRestClient.Post().RequestURI(uri).Body(data).Do()
8080

8181
if result.Error() != nil {
8282
return result.Error()
8383
}
8484

8585
result.StatusCode(&statusCode)
86-
glog.V(4).Infof("Written %s, status: %d", uri, statusCode)
86+
klog.V(4).Infof("Written %s, status: %d", uri, statusCode)
8787

8888
if statusCode != 201 {
8989
return fmt.Errorf("unexpected status code %d, expecting 201", statusCode)
@@ -94,7 +94,7 @@ func (c *Client) CreateCustomResourceRaw(apiGroup, version, namespace, kind stri
9494
// CreateCustomResourceRawIfNotFound creates the raw bytes of the custom resource if it doesn't exist.
9595
// It also returns a boolean to indicate whether a new custom resource is created.
9696
func (c *Client) CreateCustomResourceRawIfNotFound(apiGroup, version, namespace, kind, name string, data []byte) (bool, error) {
97-
glog.V(4).Infof("[CREATE CUSTOM RESOURCE RAW if not found]: %s:%s", namespace, name)
97+
klog.V(4).Infof("[CREATE CUSTOM RESOURCE RAW if not found]: %s:%s", namespace, name)
9898
_, err := c.GetCustomResource(apiGroup, version, namespace, kind, name)
9999
if err == nil {
100100
return false, nil
@@ -112,7 +112,7 @@ func (c *Client) CreateCustomResourceRawIfNotFound(apiGroup, version, namespace,
112112
// UpdateCustomResource updates the custom resource.
113113
// To do an atomic update, use AtomicModifyCustomResource().
114114
func (c *Client) UpdateCustomResource(item *unstructured.Unstructured) error {
115-
glog.V(4).Infof("[UPDATE CUSTOM RESOURCE]: %s:%s", item.GetNamespace(), item.GetName())
115+
klog.V(4).Infof("[UPDATE CUSTOM RESOURCE]: %s:%s", item.GetNamespace(), item.GetName())
116116
kind := item.GetKind()
117117
name := item.GetName()
118118
namespace := item.GetNamespace()
@@ -132,20 +132,20 @@ func (c *Client) UpdateCustomResource(item *unstructured.Unstructured) error {
132132

133133
// UpdateCustomResourceRaw updates the thirdparty resource with the raw data.
134134
func (c *Client) UpdateCustomResourceRaw(apiGroup, version, namespace, resourcePlural, resourceName string, data []byte) error {
135-
glog.V(4).Infof("[UPDATE CUSTOM RESOURCE RAW]: %s:%s", namespace, resourceName)
135+
klog.V(4).Infof("[UPDATE CUSTOM RESOURCE RAW]: %s:%s", namespace, resourceName)
136136
var statusCode int
137137

138138
httpRestClient := c.extInterface.ApiextensionsV1beta1().RESTClient()
139139
uri := customResourceURI(apiGroup, version, namespace, resourcePlural, resourceName)
140-
glog.V(4).Infof("[PUT]: %s", uri)
140+
klog.V(4).Infof("[PUT]: %s", uri)
141141
result := httpRestClient.Put().RequestURI(uri).Body(data).Do()
142142

143143
if result.Error() != nil {
144144
return result.Error()
145145
}
146146

147147
result.StatusCode(&statusCode)
148-
glog.V(4).Infof("Updated %s, status: %d", uri, statusCode)
148+
klog.V(4).Infof("Updated %s, status: %d", uri, statusCode)
149149

150150
if statusCode != 200 {
151151
return fmt.Errorf("unexpected status code %d, expecting 200", statusCode)
@@ -156,7 +156,7 @@ func (c *Client) UpdateCustomResourceRaw(apiGroup, version, namespace, resourceP
156156
// CreateOrUpdateCustomeResourceRaw creates the custom resource if it doesn't exist.
157157
// If the custom resource exists, it updates the existing one.
158158
func (c *Client) CreateOrUpdateCustomeResourceRaw(apiGroup, version, namespace, resourcePlural, resourceName string, data []byte) error {
159-
glog.V(4).Infof("[CREATE OR UPDATE UPDATE CUSTOM RESOURCE RAW]: %s:%s", namespace, resourceName)
159+
klog.V(4).Infof("[CREATE OR UPDATE UPDATE CUSTOM RESOURCE RAW]: %s:%s", namespace, resourceName)
160160
old, err := c.GetCustomResourceRaw(apiGroup, version, namespace, resourcePlural, resourceName)
161161
if err != nil {
162162
if !errors.IsNotFound(err) {
@@ -186,11 +186,11 @@ func (c *Client) CreateOrUpdateCustomeResourceRaw(apiGroup, version, namespace,
186186

187187
// DeleteCustomResource deletes the with the given name.
188188
func (c *Client) DeleteCustomResource(apiGroup, version, namespace, resourcePlural, resourceName string) error {
189-
glog.V(4).Infof("[DELETE CUSTOM RESOURCE]: %s:%s", namespace, resourceName)
189+
klog.V(4).Infof("[DELETE CUSTOM RESOURCE]: %s:%s", namespace, resourceName)
190190
httpRestClient := c.extInterface.ApiextensionsV1beta1().RESTClient()
191191
uri := customResourceURI(apiGroup, version, namespace, resourcePlural, resourceName)
192192

193-
glog.V(4).Infof("[DELETE]: %s", uri)
193+
klog.V(4).Infof("[DELETE]: %s", uri)
194194
_, err := httpRestClient.Delete().RequestURI(uri).DoRaw()
195195
return err
196196
}
@@ -201,31 +201,31 @@ type CustomResourceModifier func(*unstructured.Unstructured, interface{}) error
201201
// AtomicModifyCustomResource gets the custom resource, modifies it and writes it back.
202202
// If it's modified by other writers, we will retry until it succeeds.
203203
func (c *Client) AtomicModifyCustomResource(apiGroup, version, namespace, resourcePlural, resourceName string, f CustomResourceModifier, data interface{}) error {
204-
glog.V(4).Infof("[ATOMIC MODIFY CUSTOM RESOURCE]: %s:%s", namespace, resourceName)
204+
klog.V(4).Infof("[ATOMIC MODIFY CUSTOM RESOURCE]: %s:%s", namespace, resourceName)
205205
return wait.PollInfinite(time.Second, func() (bool, error) {
206206
var customResource unstructured.Unstructured
207207
b, err := c.GetCustomResourceRaw(apiGroup, version, namespace, resourcePlural, resourceName)
208208
if err != nil {
209-
glog.Errorf("Failed to get CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
209+
klog.Errorf("Failed to get CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
210210
return false, err
211211
}
212212

213213
if err := json.Unmarshal(b, &customResource); err != nil {
214-
glog.Errorf("Failed to unmarshal CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
214+
klog.Errorf("Failed to unmarshal CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
215215
return false, err
216216
}
217217

218218
if err := f(&customResource, data); err != nil {
219-
glog.Errorf("Failed to modify the CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
219+
klog.Errorf("Failed to modify the CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
220220
return false, err
221221
}
222222

223223
if err := c.UpdateCustomResource(&customResource); err != nil {
224224
if errors.IsConflict(err) {
225-
glog.Errorf("Failed to update CUSTOM RESOURCE %q, kind:%q: %v, will retry", resourceName, resourcePlural, err)
225+
klog.Errorf("Failed to update CUSTOM RESOURCE %q, kind:%q: %v, will retry", resourceName, resourcePlural, err)
226226
return false, nil
227227
}
228-
glog.Errorf("Failed to update CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
228+
klog.Errorf("Failed to update CUSTOM RESOURCE %q, kind:%q: %v", resourceName, resourcePlural, err)
229229
return false, err
230230
}
231231

@@ -273,13 +273,13 @@ func customResourceDefinitionURI(apiGroup, version, namespace, resourcePlural st
273273

274274
// ListCustomResource lists all custom resources for the given namespace.
275275
func (c *Client) ListCustomResource(apiGroup, version, namespace, resourcePlural string) (*CustomResourceList, error) {
276-
glog.V(4).Infof("LIST CUSTOM RESOURCE]: %s", resourcePlural)
276+
klog.V(4).Infof("LIST CUSTOM RESOURCE]: %s", resourcePlural)
277277

278278
var crList CustomResourceList
279279

280280
httpRestClient := c.extInterface.ApiextensionsV1beta1().RESTClient()
281281
uri := customResourceDefinitionURI(apiGroup, version, namespace, resourcePlural)
282-
glog.V(4).Infof("[GET]: %s", uri)
282+
klog.V(4).Infof("[GET]: %s", uri)
283283
bytes, err := httpRestClient.Get().RequestURI(uri).DoRaw()
284284
if err != nil {
285285
return nil, fmt.Errorf("failed to get custom resource list: %v", err)

0 commit comments

Comments
 (0)