diff --git a/Gopkg.lock b/Gopkg.lock index b648e875..5bd3e4ea 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -931,7 +931,7 @@ [[projects]] branch = "master" - digest = "1:86a6a4c7d3720415afcf3067cc52b0bbf6b810e58544c7336e514e32cba4a540" + digest = "1:39b9c37fd5c6e531b1a2e740ab2ed2fbe237b3f142255fbd8ebae905a957d942" name = "knative.dev/pkg" packages = [ "apis", @@ -950,7 +950,7 @@ "metrics/metricskey", ] pruneopts = "T" - revision = "587055b113b227ec89894f3907c960e3a9e1f85a" + revision = "169ef0797c1f7e548574e6aee289002c0f22dc0a" [[projects]] branch = "master" @@ -961,7 +961,7 @@ "tools/dep-collector", ] pruneopts = "UT" - revision = "935a8f052a483d4a1b1bebe2c80235d6867a8d91" + revision = "c6031e2873d748338362bccaab46d2d347329d58" [[projects]] digest = "1:8730e0150dfb2b7e173890c8b9868e7a273082ef8e39f4940e3506a481cf895c" diff --git a/vendor/knative.dev/pkg/Gopkg.lock b/vendor/knative.dev/pkg/Gopkg.lock index fb8c2a68..af19cf85 100644 --- a/vendor/knative.dev/pkg/Gopkg.lock +++ b/vendor/knative.dev/pkg/Gopkg.lock @@ -721,16 +721,15 @@ revision = "8b927904ee0dec805c89aaf9172f4459296ed6e8" [[projects]] - branch = "master" - digest = "1:48871545d029f0561819b6f761e11ed3111e79f29f7f1ba36e2e428e05ceaa9d" + digest = "1:081608ceb454c46b54d24b7561e5744088f3ff69478b23f50277ec83bd8636b0" name = "google.golang.org/api" packages = [ "container/v1beta1", - "gensupport", "googleapi", - "googleapi/internal/uritemplates", "googleapi/transport", "internal", + "internal/gensupport", + "internal/third_party/uritemplates", "iterator", "option", "storage/v1", @@ -741,7 +740,8 @@ "transport/http/internal/propagation", ] pruneopts = "NUT" - revision = "aa15faf3c8a1cffc77fc3dabe95703bb12c5f6a9" + revision = "aa5d4e47691e7ae1aebb5221ff8e4beea23fad72" + version = "v0.15.0" [[projects]] digest = "1:a955e7c44c2be14b61aa2ddda744edfdfbc6817e993703a16e303c277ba84449" @@ -1243,15 +1243,17 @@ [[projects]] branch = "master" - digest = "1:df1c1cf6d2c9ca0781705ef095cb15e06f777cddb493775aad41b72f79867d7a" + digest = "1:85d1708cf70b4fa56e184b16a5af5350945f3239978529719f4a53cbcd67ca2a" name = "k8s.io/test-infra" packages = [ "boskos/client", "boskos/common", "boskos/storage", + "prow/config/secret", + "prow/logrusutil", ] pruneopts = "NUT" - revision = "356470ae778d26af50f27ff8673434bf5cf73c07" + revision = "70b0b49fe2476f06f97272e77f47ba432cb54244" [[projects]] branch = "master" diff --git a/vendor/knative.dev/pkg/test/README.md b/vendor/knative.dev/pkg/test/README.md index 0110c814..d106ffec 100644 --- a/vendor/knative.dev/pkg/test/README.md +++ b/vendor/knative.dev/pkg/test/README.md @@ -121,6 +121,10 @@ Tests importing [`knative.dev/pkg/test`](#test-library) recognize these flags: - [`--cluster`](#specifying-cluster) - [`--namespace`](#specifying-namespace) - [`--logverbose`](#output-verbose-logs) +- [`--ingressendpoint`](#specifying-ingress-endpoint) +- [`--dockerrepo`](#specifying-docker-repo) +- [`--tag`](#specifying-tag) +- [`--imagetemplate`](#specifying-image-template) ### Specifying kubeconfig @@ -178,6 +182,34 @@ The `--logverbose` argument lets you see verbose test logs and k8s logs. go test ./test --logverbose ``` +### Specifying docker repo + +The `--dockerrepo` argument lets you specify a uri of the docker repo where you +have uploaded the test image to using `uploadtestimage.sh`. Defaults to +`$KO_DOCKER_REPO` + +```bash +go test ./test --dockerrepo myspecialdockerrepo +``` + +### Specifying tag + +The `--tag` argument lets you specify the version tag for the test images. + +```bash +go test ./test --tag v1.0 +``` + +### Specifying image template + +The `--imagetemplate` argument lets you specify a template to generate the +reference to an image from the test. Defaults to +`{{.Repository}}/{{.Name}}:{{.Tag}}` + +```bash +go test ./test --imagetemplate {{.Repository}}/{{.Name}}:{{.Tag}} +``` + --- Except as otherwise noted, the content of this page is licensed under the diff --git a/vendor/knative.dev/pkg/test/gke/request.go b/vendor/knative.dev/pkg/test/gke/request.go index e3ce6df8..0cb89fc6 100644 --- a/vendor/knative.dev/pkg/test/gke/request.go +++ b/vendor/knative.dev/pkg/test/gke/request.go @@ -32,6 +32,11 @@ type Request struct { // GKEVersion: GKE version of the cluster, default to be latest if not provided GKEVersion string + // ReleaseChannel: GKE release channel. Only one of GKEVersion or ReleaseChannel can be + // specified at a time. + // https://cloud.google.com/kubernetes-engine/docs/concepts/release-channels + ReleaseChannel string + // ClusterName: name of the cluster ClusterName string @@ -63,6 +68,7 @@ func (r *Request) DeepCopy() *Request { return &Request{ Project: r.Project, GKEVersion: r.GKEVersion, + ReleaseChannel: r.ReleaseChannel, ClusterName: r.ClusterName, MinNodes: r.MinNodes, MaxNodes: r.MaxNodes, @@ -91,9 +97,8 @@ func NewCreateClusterRequest(request *Request) (*container.CreateClusterRequest, if request.EnableWorkloadIdentity && request.Project == "" { return nil, errors.New("project cannot be empty if you want Workload Identity") } - - if request.GKEVersion == "" { - request.GKEVersion = defaultGKEVersion + if request.GKEVersion != "" && request.ReleaseChannel != "" { + return nil, errors.New("can only specify one of GKE version or release channel (not both)") } ccr := &container.CreateClusterRequest{ @@ -113,9 +118,6 @@ func NewCreateClusterRequest(request *Request) (*container.CreateClusterRequest, }, }, Name: request.ClusterName, - // The default cluster version is not latest, has to explicitly - // set it as "latest" - InitialClusterVersion: request.GKEVersion, // Installing addons after cluster creation takes at least 5 // minutes, so install addons as part of cluster creation, which // doesn't seem to add much time on top of cluster creation @@ -135,5 +137,16 @@ func NewCreateClusterRequest(request *Request) (*container.CreateClusterRequest, IdentityNamespace: request.Project + ".svc.id.goog", } } + + // Manage the GKE cluster version. Only one of initial cluster version or release channel can be specified. + if request.ReleaseChannel != "" { + ccr.Cluster.ReleaseChannel = &container.ReleaseChannel{Channel: request.ReleaseChannel} + } else if request.GKEVersion != "" { + ccr.Cluster.InitialClusterVersion = request.GKEVersion + } else { + // The default cluster version is not latest, has to explicitly + // set it as "latest" + ccr.Cluster.InitialClusterVersion = defaultGKEVersion + } return ccr, nil } diff --git a/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/boskos.go b/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/boskos.go index 4d16601c..28f309c1 100644 --- a/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/boskos.go +++ b/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/boskos.go @@ -37,30 +37,43 @@ var ( defaultWaitDuration = time.Minute * 20 ) +// Operation defines actions for handling GKE resources type Operation interface { - AcquireGKEProject(*string, string) (*boskoscommon.Resource, error) - ReleaseGKEProject(*string, string) error + AcquireGKEProject(string) (*boskoscommon.Resource, error) + ReleaseGKEProject(string) error } +// Client a wrapper around k8s boskos client that implements Operation type Client struct { *boskosclient.Client } -func newClient(host *string) *boskosclient.Client { - if host == nil { - hostName := common.GetOSEnv("JOB_NAME") - host = &hostName +// NewClient creates a boskos Client with GKE operation. The owner of any resources acquired +// by this client is the same as the host name. `user` and `pass` are used for basic +// authentication for boskos client where pass is a password file. `user` and `pass` fields +// are passed directly to k8s boskos client. Refer to +// [k8s boskos](https://github.com/kubernetes/test-infra/tree/master/boskos) for more details. +// If host is "", it looks up JOB_NAME environment variable and set it to be the host name. +func NewClient(host string, user string, pass string) (*Client, error) { + if host == "" { + host = common.GetOSEnv("JOB_NAME") } - return boskosclient.NewClient(*host, boskosURI) + + c, err := boskosclient.NewClient(host, boskosURI, user, pass) + if err != nil { + return nil, err + } + + return &Client{c}, nil } // AcquireGKEProject acquires GKE Boskos Project with "free" state, and not // owned by anyone, sets its state to "busy" and assign it an owner of *host, // which by default is env var `JOB_NAME`. -func (c *Client) AcquireGKEProject(host *string, resType string) (*boskoscommon.Resource, error) { +func (c *Client) AcquireGKEProject(resType string) (*boskoscommon.Resource, error) { ctx, cancel := context.WithTimeout(context.Background(), defaultWaitDuration) defer cancel() - p, err := newClient(host).AcquireWait(ctx, resType, boskoscommon.Free, boskoscommon.Busy) + p, err := c.AcquireWait(ctx, resType, boskoscommon.Free, boskoscommon.Busy) if err != nil { return nil, fmt.Errorf("boskos failed to acquire GKE project: %v", err) } @@ -75,9 +88,8 @@ func (c *Client) AcquireGKEProject(host *string, resType string) (*boskoscommon. // "dirty" for Janitor picking up. // This function is very powerful, it can release Boskos resource acquired by // other processes, regardless of where the other process is running. -func (c *Client) ReleaseGKEProject(host *string, name string) error { - client := newClient(host) - if err := client.Release(name, boskoscommon.Dirty); err != nil { +func (c *Client) ReleaseGKEProject(name string) error { + if err := c.Release(name, boskoscommon.Dirty); err != nil { return fmt.Errorf("boskos failed to release GKE project '%s': %v", name, err) } return nil diff --git a/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/fake/fake.go b/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/fake/fake.go index e060ed1e..85cab7d8 100644 --- a/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/fake/fake.go +++ b/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/boskos/fake/fake.go @@ -44,11 +44,11 @@ func (c *FakeBoskosClient) GetResources() []*boskoscommon.Resource { } // AcquireGKEProject fakes to be no op -func (c *FakeBoskosClient) AcquireGKEProject(host *string, resType string) (*boskoscommon.Resource, error) { +func (c *FakeBoskosClient) AcquireGKEProject(resType string) (*boskoscommon.Resource, error) { for _, res := range c.resources { if res.State == boskoscommon.Free { res.State = boskoscommon.Busy - res.Owner = c.getOwner(host) + res.Owner = c.getOwner(nil) res.Type = resType return res, nil } @@ -57,8 +57,8 @@ func (c *FakeBoskosClient) AcquireGKEProject(host *string, resType string) (*bos } // ReleaseGKEProject fakes to be no op -func (c *FakeBoskosClient) ReleaseGKEProject(host *string, name string) error { - owner := c.getOwner(host) +func (c *FakeBoskosClient) ReleaseGKEProject(name string) error { + owner := c.getOwner(nil) for _, res := range c.resources { if res.Name == name { if res.Owner == owner { diff --git a/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/gke.go b/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/gke.go index 93b73c33..bede1e6d 100644 --- a/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/gke.go +++ b/vendor/knative.dev/pkg/testutils/clustermanager/e2e-tests/gke.go @@ -135,11 +135,16 @@ func (gs *GKEClient) Setup(r GKERequest) ClusterOperations { client, err := gke.NewSDKClient() if err != nil { - log.Fatalf("failed to create GKE SDK client: '%v'", err) + log.Fatalf("Failed to create GKE SDK client: '%v'", err) } gc.operations = client - gc.boskosOps = &boskos.Client{} + gc.boskosOps, err = boskos.NewClient("", /* boskos owner */ + "", /* boskos user */ + "" /* boskos password file */) + if err != nil { + log.Fatalf("Failed to create boskos client: '%v", err) + } return gc } @@ -176,7 +181,7 @@ func (gc *GKECluster) Acquire() error { // Get project name from boskos if running in Prow, otherwise it should fail // since we don't know which project to use if common.IsProw() { - project, err := gc.boskosOps.AcquireGKEProject(nil, gc.Request.ResourceType) + project, err := gc.boskosOps.AcquireGKEProject(gc.Request.ResourceType) if err != nil { return fmt.Errorf("failed acquiring boskos project: '%v'", err) } @@ -264,7 +269,7 @@ func (gc *GKECluster) Delete() error { // clusters deleting if common.IsProw() { log.Printf("Releasing Boskos resource: '%v'", gc.Project) - return gc.boskosOps.ReleaseGKEProject(nil, gc.Project) + return gc.boskosOps.ReleaseGKEProject(gc.Project) } // NeedsCleanup is only true if running locally and cluster created by the diff --git a/vendor/knative.dev/pkg/testutils/clustermanager/prow-cluster-operation/options/options.go b/vendor/knative.dev/pkg/testutils/clustermanager/prow-cluster-operation/options/options.go index 7d0391b5..73982846 100644 --- a/vendor/knative.dev/pkg/testutils/clustermanager/prow-cluster-operation/options/options.go +++ b/vendor/knative.dev/pkg/testutils/clustermanager/prow-cluster-operation/options/options.go @@ -55,6 +55,7 @@ func (rw *RequestWrapper) addOptions() { flag.StringVar(&rw.Request.Zone, "zone", "", "GCP zone") flag.StringVar(&rw.Request.Project, "project", "", "GCP project") flag.StringVar(&rw.Request.ClusterName, "name", "", "cluster name") + flag.StringVar(&rw.Request.ReleaseChannel, "release-channel", "", "GKE release channel") flag.StringVar(&rw.Request.ResourceType, "resource-type", "", "Boskos Resource Type") flag.StringVar(&rw.BackupRegionsStr, "backup-regions", "", "GCP regions as backup, separated by comma") flag.StringVar(&rw.AddonsStr, "addons", "", "addons to be added, separated by comma")