diff --git a/pkg/kn/commands/flags/sink.go b/pkg/kn/commands/flags/sink.go index e0cabb6ecf..9cc8fea7e1 100644 --- a/pkg/kn/commands/flags/sink.go +++ b/pkg/kn/commands/flags/sink.go @@ -108,7 +108,21 @@ func (i *SinkFlags) ResolveSink(ctx context.Context, knclient clientdynamic.KnDy if prefix == "svc" || prefix == "service" { return nil, fmt.Errorf("unsupported sink prefix: '%s', please use prefix 'ksvc' for knative service", prefix) } - return nil, fmt.Errorf("unsupported sink prefix: '%s', if referring to a knative service in another namespace, 'ksvc:name:namespace' combination must be provided explicitly", prefix) + idx := strings.LastIndex(prefix, "/") + var groupVersion string + var kind string + if idx != -1 && idx < len(prefix)-1 { + groupVersion, kind = prefix[:idx], prefix[idx+1:] + } else { + kind = prefix + } + parsedVersion, _ := schema.ParseGroupVersion(groupVersion) + + typ = schema.GroupVersionResource{ + Group: parsedVersion.Group, + Version: parsedVersion.Version, + Resource: kind, + } } if ns != "" { namespace = ns diff --git a/pkg/kn/commands/flags/sink_test.go b/pkg/kn/commands/flags/sink_test.go index 3f63529d01..a194759a8d 100644 --- a/pkg/kn/commands/flags/sink_test.go +++ b/pkg/kn/commands/flags/sink_test.go @@ -117,7 +117,7 @@ func TestResolve(t *testing.T) { {"http://target.example.com", &duckv1.Destination{ URI: targetExampleCom, }, ""}, - {"k8ssvc:foo", nil, "unsupported sink prefix: 'k8ssvc'"}, + {"k8ssvc:foo", nil, "k8ssvc \"foo\" not found"}, {"svc:foo", nil, "please use prefix 'ksvc' for knative service"}, {"service:foo", nil, "please use prefix 'ksvc' for knative service"}, }