Skip to content

Commit

Permalink
fix(serving): Remove hardcoded GVK and look it up from schema
Browse files Browse the repository at this point in the history
  • Loading branch information
rhuss committed Jun 29, 2019
1 parent 43b37a6 commit 313cf50
Show file tree
Hide file tree
Showing 59 changed files with 3,818 additions and 710 deletions.
27 changes: 11 additions & 16 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,42 @@ module github.com/knative/client

require (
github.com/cpuguy83/go-md2man v1.0.10 // indirect
github.com/evanphx/json-patch v4.2.0+incompatible // indirect
github.com/evanphx/json-patch v4.5.0+incompatible // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/gogo/protobuf v1.2.1 // indirect
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
github.com/golang/protobuf v1.3.1 // indirect
github.com/google/btree v1.0.0 // indirect
github.com/google/go-cmp v0.3.0 // indirect
github.com/google/go-containerregistry v0.0.0-20190503220729-1c6c7f61e8a5 // indirect
github.com/google/go-containerregistry v0.0.0-20190623150931-ca8b66cb1b79 // indirect
github.com/google/gofuzz v1.0.0 // indirect
github.com/google/licenseclassifier v0.0.0-20190501212618-47b603fe1b8c // indirect
github.com/googleapis/gnostic v0.2.0 // indirect
github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc // indirect
github.com/googleapis/gnostic v0.3.0 // indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
github.com/hashicorp/golang-lru v0.5.1 // indirect
github.com/imdario/mergo v0.3.7 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/json-iterator/go v1.1.6 // indirect
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 // indirect
github.com/knative/build v0.6.0 // indirect
github.com/knative/pkg v0.0.0-20190518173526-34792a92cec2
github.com/knative/build v0.7.0 // indirect
github.com/knative/pkg v0.0.0-20190617142447-13b093adc272
github.com/knative/serving v0.6.0
github.com/knative/test-infra v0.0.0-20190624052103-517330119155
github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a // indirect
github.com/mitchellh/go-homedir v1.1.0
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.8.1 // indirect
github.com/spf13/cobra v0.0.3
github.com/spf13/pflag v1.0.3
github.com/spf13/viper v1.3.1
github.com/stretchr/objx v0.2.0 // indirect
go.uber.org/atomic v1.4.0 // indirect
go.uber.org/multierr v1.1.0 // indirect
go.uber.org/zap v1.10.0 // indirect
golang.org/x/net v0.0.0-20190514140710-3ec191127204 // indirect
golang.org/x/oauth2 v0.0.0-20190517181255-950ef44c6e07 // indirect
golang.org/x/net v0.0.0-20190628185345-da137c7871d7 // indirect
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 // indirect
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect
golang.org/x/tools v0.0.0-20190628034336-212fb13d595e // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gotest.tools v2.2.0+incompatible
k8s.io/api v0.0.0-20190226173710-145d52631d00
k8s.io/apimachinery v0.0.0-20190221084156-01f179d85dbc
k8s.io/cli-runtime v0.0.0-20190325194458-f2b4781c3ae1
k8s.io/client-go v0.0.0-20190226174127-78295b709ec6
k8s.io/kube-openapi v0.0.0-20190510232812-a01b7d5d6c22 // indirect
k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 // indirect
sigs.k8s.io/yaml v1.1.0
)
236 changes: 35 additions & 201 deletions go.sum

Large diffs are not rendered by default.

15 changes: 13 additions & 2 deletions pkg/kn/commands/namespaced.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func AddNamespaceFlags(flags *pflag.FlagSet, allowAll bool) {
}

// GetNamespace returns namespace from command specified by flag
func (kn *KnParams) GetNamespace(cmd *cobra.Command) (string, error) {
func (params *KnParams) GetNamespace(cmd *cobra.Command) (string, error) {
namespace := cmd.Flag("namespace").Value.String()
// check value of all-namepace only if its defined
if cmd.Flags().Lookup("all-namespaces") != nil {
Expand All @@ -55,10 +55,21 @@ func (kn *KnParams) GetNamespace(cmd *cobra.Command) (string, error) {
// if all-namepaces=False or namespace not given, use default namespace
if namespace == "" {
var err error
namespace, err = kn.NamespaceFactory()
namespace, err = params.CurrentNamespace()
if err != nil {
return "", err
}
}
return namespace, nil
}

func (params *KnParams) CurrentNamespace() (string, error) {
if params.fixedCurrentNamespace != "" {
return params.fixedCurrentNamespace, nil
}
if params.ClientConfig == nil {
params.ClientConfig = params.GetClientConfig()
}
name, _, err := params.ClientConfig.Namespace()
return name, err
}
10 changes: 5 additions & 5 deletions pkg/kn/commands/namespaced_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func TestGetNamespaceSample(t *testing.T) {
expectedNamespace := "test1"
testCmd.SetArgs([]string{"--namespace", expectedNamespace})
testCmd.Execute()
kp := &KnParams{NamespaceFactory: func() (string, error) { return FakeNamespace, nil }}
kp := &KnParams{fixedCurrentNamespace: FakeNamespace}
actualNamespace, err := kp.GetNamespace(testCmd)
if err != nil {
t.Fatal(err)
Expand All @@ -52,7 +52,7 @@ func TestGetNamespaceDefault(t *testing.T) {
testCmd := testCommandGenerator(true)
expectedNamespace := "current"
testCmd.Execute()
kp := &KnParams{NamespaceFactory: func() (string, error) { return FakeNamespace, nil }}
kp := &KnParams{fixedCurrentNamespace: FakeNamespace}
actualNamespace, err := kp.GetNamespace(testCmd)
if err != nil {
t.Fatal(err)
Expand All @@ -70,7 +70,7 @@ func TestGetNamespaceAllNamespacesSet(t *testing.T) {
sampleNamespace := "test1"
testCmd.SetArgs([]string{"--namespace", sampleNamespace, "--all-namespaces"})
testCmd.Execute()
kp := &KnParams{NamespaceFactory: func() (string, error) { return FakeNamespace, nil }}
kp := &KnParams{fixedCurrentNamespace: FakeNamespace}
actualNamespace, err := kp.GetNamespace(testCmd)
if err != nil {
t.Fatal(err)
Expand All @@ -87,7 +87,7 @@ func TestGetNamespaceDefaultAllNamespacesUnset(t *testing.T) {
expectedNamespace := ""
testCmd.SetArgs([]string{"--all-namespaces"})
testCmd.Execute()
kp := &KnParams{NamespaceFactory: func() (string, error) { return FakeNamespace, nil }}
kp := &KnParams{fixedCurrentNamespace: FakeNamespace}
actualNamespace, err := kp.GetNamespace(testCmd)
if err != nil {
t.Fatal(err)
Expand All @@ -103,7 +103,7 @@ func TestGetNamespaceAllNamespacesNotDefined(t *testing.T) {
expectedNamespace := "test1"
testCmd.SetArgs([]string{"--namespace", expectedNamespace})
testCmd.Execute()
kp := &KnParams{NamespaceFactory: func() (string, error) { return FakeNamespace, nil }}
kp := &KnParams{fixedCurrentNamespace: FakeNamespace}
actualNamespace, err := kp.GetNamespace(testCmd)
if err != nil {
t.Fatal(err)
Expand Down
13 changes: 5 additions & 8 deletions pkg/kn/commands/revision/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import (
"errors"
"fmt"

"github.com/knative/client/pkg/kn/commands"
"github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/knative/client/pkg/kn/commands"
)

// NewRevisionDeleteCommand represent 'revision delete' command
Expand All @@ -35,18 +35,15 @@ func NewRevisionDeleteCommand(p *commands.KnParams) *cobra.Command {
if len(args) != 1 {
return errors.New("'revision delete' requires the revision name given as single argument")
}
client, err := p.ServingFactory()
namespace, err := p.GetNamespace(cmd)
if err != nil {
return err
}
namespace, err := p.GetNamespace(cmd)
client, err := p.NewClient(namespace)
if err != nil {
return err
}
err = client.Revisions(namespace).Delete(
args[0],
&metav1.DeleteOptions{},
)
err = client.DeleteRevision(args[0])
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/kn/commands/revision/human_readable_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func printRevisionList(revisionList *servingv1alpha1.RevisionList, options hprin

// printRevision populates the knative revision table rows
func printRevision(revision *servingv1alpha1.Revision, options hprinters.PrintOptions) ([]metav1beta1.TableRow, error) {
service := revision.Labels[serving.ConfigurationLabelKey]
service := revision.Labels[serving.ServiceLabelKey]
name := revision.Name
age := commands.TranslateTimestampSince(revision.CreationTimestamp)
conditions := commands.ConditionsValue(revision.Status.Conditions)
Expand Down
15 changes: 5 additions & 10 deletions pkg/kn/commands/revision/revision_describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ import (

"github.com/knative/client/pkg/kn/commands"
"github.com/spf13/cobra"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/cli-runtime/pkg/genericclioptions"
)

Expand All @@ -34,16 +32,16 @@ func NewRevisionDescribeCommand(p *commands.KnParams) *cobra.Command {
return errors.New("requires the revision name.")
}

client, err := p.ServingFactory()
namespace, err := p.GetNamespace(cmd)
if err != nil {
return err
}

namespace, err := p.GetNamespace(cmd)
client, err := p.NewClient(namespace)
if err != nil {
return err
}
revision, err := client.Revisions(namespace).Get(args[0], v1.GetOptions{})

revision, err := client.GetRevision(args[0])
if err != nil {
return err
}
Expand All @@ -52,10 +50,7 @@ func NewRevisionDescribeCommand(p *commands.KnParams) *cobra.Command {
if err != nil {
return err
}
revision.GetObjectKind().SetGroupVersionKind(schema.GroupVersionKind{
Group: "knative.dev",
Version: "v1alpha1",
Kind: "Revision"})

err = printer.PrintObj(revision, cmd.OutOrStdout())
if err != nil {
return err
Expand Down
55 changes: 29 additions & 26 deletions pkg/kn/commands/revision/revision_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,10 @@ package revision
import (
"fmt"

"github.com/knative/client/pkg/kn/commands"
"github.com/knative/serving/pkg/apis/serving"
"github.com/knative/serving/pkg/apis/serving/v1alpha1"
"github.com/spf13/cobra"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema"

"github.com/knative/client/pkg/kn/commands"
)

// NewRevisionListCommand represents 'kn revision list' command
Expand All @@ -40,42 +38,47 @@ func NewRevisionListCommand(p *commands.KnParams) *cobra.Command {
# List revisions for a service 'svc1' in namespace 'myapp'
kn revision list -s svc1 -n myapp`,
RunE: func(cmd *cobra.Command, args []string) error {
client, err := p.ServingFactory()
namespace, err := p.GetNamespace(cmd)
if err != nil {
return err
}
namespace, err := p.GetNamespace(cmd)
client, err := p.NewClient(namespace)
if err != nil {
return err
}
listOptions := v1.ListOptions{}
var revisionList *v1alpha1.RevisionList
if cmd.Flags().Changed("service") {
service := cmd.Flag("service").Value.String()
// Ensure requested service exist
_, err := client.Services(namespace).Get(service, v1.GetOptions{})
serviceName := cmd.Flag("service").Value.String()

// Verify that service exists
_, err := client.GetService(serviceName)
if err != nil {
return err
}
listOptions.LabelSelector = labels.Set(
map[string]string{serving.ConfigurationLabelKey: service}).String()
}
revision, err := client.Revisions(namespace).List(listOptions)
if err != nil {
return err
}
if len(revision.Items) == 0 {
fmt.Fprintf(cmd.OutOrStdout(), "No resources found.\n")
return nil
revisionList, err = client.ListRevisionsForService(serviceName)
if err != nil {
return err
}
if len(revisionList.Items) == 0 {
fmt.Fprintf(cmd.OutOrStdout(), "No revisions found for service '%s'.\n", serviceName)
return nil
}
} else {
revisionList, err = client.ListRevisions()
if err != nil {
return err
}
if len(revisionList.Items) == 0 {
fmt.Fprintf(cmd.OutOrStdout(), "No revisions found.\n")
return nil
}
}
revision.GetObjectKind().SetGroupVersionKind(schema.GroupVersionKind{
Group: "knative.dev",
Version: "v1alpha1",
Kind: "revision"})

printer, err := revisionListFlags.ToPrinter()
if err != nil {
return err
}
err = printer.PrintObj(revision, cmd.OutOrStdout())
err = printer.PrintObj(revisionList, cmd.OutOrStdout())
if err != nil {
return err
}
Expand Down
14 changes: 7 additions & 7 deletions pkg/kn/commands/revision/revision_list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import (
"testing"

"github.com/knative/client/pkg/kn/commands"
serving "github.com/knative/serving/pkg/apis/serving"
v1alpha1 "github.com/knative/serving/pkg/apis/serving/v1alpha1"
"github.com/knative/serving/pkg/apis/serving"
"github.com/knative/serving/pkg/apis/serving/v1alpha1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
client_testing "k8s.io/client-go/testing"
Expand Down Expand Up @@ -53,7 +53,7 @@ func TestRevisionListEmpty(t *testing.T) {
t.Errorf("No action")
} else if !action.Matches("list", "revisions") {
t.Errorf("Bad action %v", action)
} else if output[0] != "No resources found." {
} else if output[0] != "No revisions found." {
t.Errorf("Bad output %s", output[0])
}
}
Expand Down Expand Up @@ -113,11 +113,11 @@ func TestRevisionListForService(t *testing.T) {
}
if action == nil {
t.Errorf("No action")
} else if !action.Matches("list", "revisions") {
}
if !action.Matches("list", "revisions") {
t.Errorf("Bad action %v", action)
} else if !strings.Contains(output[0], "No resources found.") {
t.Errorf("Bad output %s", output[0])
}
testContains(t, output[0], []string{"No", "revisions", "svc3"}, "revision")
}

func testContains(t *testing.T, output string, sub []string, element string) {
Expand All @@ -137,7 +137,7 @@ func createMockRevisionWithParams(name, svcName string) *v1alpha1.Revision {
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: "default",
Labels: map[string]string{serving.ConfigurationLabelKey: svcName},
Labels: map[string]string{serving.ServiceLabelKey: svcName},
},
}
return revision
Expand Down
Loading

0 comments on commit 313cf50

Please sign in to comment.