Skip to content

Commit

Permalink
Adding --tls option to domain create command
Browse files Browse the repository at this point in the history
  • Loading branch information
vyasgun committed Aug 5, 2021
1 parent 4e1297a commit abdb321
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 11 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
|===
| | Description | PR

| 🎁
| Adding --tls option to domain create command
| https://github.com/knative/client/pull/1419[#1419]

| 🎁
| Add an `client.knative.dev/updateTimestamp` annotation to trigger a new revision when required
| https://github.com/knative/client/pull/1364[#1364]
Expand Down
8 changes: 7 additions & 1 deletion pkg/kn/commands/domain/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (

"github.com/spf13/cobra"

"k8s.io/apimachinery/pkg/util/validation"
knerrors "knative.dev/client/pkg/errors"
"knative.dev/client/pkg/kn/commands"
clientv1alpha1 "knative.dev/client/pkg/serving/v1alpha1"
Expand Down Expand Up @@ -53,9 +54,14 @@ func NewDomainMappingCreateCommand(p *commands.KnParams) *cobra.Command {
return err
}

errs := validation.IsDNS1123Subdomain(refFlags.tls)
if refFlags.tls != "" && len(errs) != 0 {
return fmt.Errorf("invalid secret name %q: %s", refFlags.tls, errs[0])
}
builder := clientv1alpha1.NewDomainMappingBuilder(name).
Namespace(namespace).
Reference(*reference)
Reference(*reference).
TLS(refFlags.tls)

client, err := p.NewServingV1alpha1Client(namespace)
if err != nil {
Expand Down
14 changes: 13 additions & 1 deletion pkg/kn/commands/domain/create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,21 @@ func TestDomainMappingCreate(t *testing.T) {
dynamicClient := dynamicfake.CreateFakeKnDynamicClient(client.Namespace(), createService("foo"))

servingRecorder := client.Recorder()
servingRecorder.CreateDomainMapping(createDomainMapping("foo.bar", createServiceRef("foo", "default")), nil)
servingRecorder.CreateDomainMapping(createDomainMapping("foo.bar", createServiceRef("foo", "default"), ""), nil)

out, err := executeDomainCommand(client, dynamicClient, "create", "foo.bar", "--ref", "foo")
assert.NilError(t, err, "Domain mapping should be created")
assert.Assert(t, util.ContainsAll(out, "Domain", "mapping", "foo.bar", "created", "namespace", "default"))

servingRecorder.Validate()

servingRecorder.CreateDomainMapping(createDomainMapping("foo.bar", createServiceRef("foo", "default"), "my-tls-secret"), nil)

out, err = executeDomainCommand(client, dynamicClient, "create", "foo.bar", "--ref", "foo", "--tls", "my-tls-secret")
assert.NilError(t, err, "Domain mapping should be created")
assert.Assert(t, util.ContainsAll(out, "Domain", "mapping", "foo.bar", "created", "namespace", "default"))

servingRecorder.Validate()
}
func TestDomainMappingCreateWithError(t *testing.T) {
client := v1alpha1.NewMockKnServiceClient(t)
Expand All @@ -56,5 +64,9 @@ func TestDomainMappingCreateWithError(t *testing.T) {
assert.ErrorContains(t, err, "not found")
assert.Assert(t, util.ContainsAll(err.Error(), "services", "\"bar\"", "not", "found"))

_, err = executeDomainCommand(client, dynamicClient, "create", "foo.bar", "--ref", "foo", "--tls", "my-TLS-secret")
assert.ErrorContains(t, err, "invalid")
assert.Assert(t, util.ContainsAll(err.Error(), "invalid", "name", "RFC 1123 subdomain"))

servingRecorder.Validate()
}
2 changes: 1 addition & 1 deletion pkg/kn/commands/domain/describe_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func TestDomainMappingDescribeYAML(t *testing.T) {
}

func getDomainMapping() *servingv1alpha1.DomainMapping {
dm := createDomainMapping("foo.bar", createServiceRef("foo", "default"))
dm := createDomainMapping("foo.bar", createServiceRef("foo", "default"), "")
dm.TypeMeta = v1.TypeMeta{
Kind: "DomainMapping",
APIVersion: "serving.knative.dev/v1alpha1",
Expand Down
2 changes: 2 additions & 0 deletions pkg/kn/commands/domain/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ func NewDomainCommand(p *commands.KnParams) *cobra.Command {

type RefFlags struct {
reference string
tls string
}

var refMappings = map[string]schema.GroupVersionResource{
Expand All @@ -60,6 +61,7 @@ var refMappings = map[string]schema.GroupVersionResource{
}

func (f *RefFlags) Add(cmd *cobra.Command) {
cmd.Flags().StringVar(&f.tls, "tls", "", "TLS secret name.")
cmd.Flags().StringVar(&f.reference, "ref", "", "")
cmd.Flag("ref").Usage = "Addressable target reference for Domain Mapping. " +
"You can specify a Knative service, a Knative route. " +
Expand Down
6 changes: 3 additions & 3 deletions pkg/kn/commands/domain/domain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ func TestResolve(t *testing.T) {
}
dynamicClient := dynamicfake.CreateFakeKnDynamicClient("default", myksvc, mykroute, myksvcInOther, mykrouteInOther)
for _, c := range cases {
i := &RefFlags{c.ref}
i := &RefFlags{reference: c.ref}
result, err := i.Resolve(context.Background(), dynamicClient, "default")
if c.destination != nil {
assert.DeepEqual(t, result, c.destination)
Expand Down Expand Up @@ -178,8 +178,8 @@ func createService(name string) *servingv1.Service {
}
}

func createDomainMapping(name string, ref duckv1.KReference) *servingv1alpha1.DomainMapping {
return clientservingv1alpha1.NewDomainMappingBuilder(name).Namespace("default").Reference(ref).Build()
func createDomainMapping(name string, ref duckv1.KReference, tls string) *servingv1alpha1.DomainMapping {
return clientservingv1alpha1.NewDomainMappingBuilder(name).Namespace("default").Reference(ref).TLS(tls).Build()
}

func createServiceRef(service, namespace string) duckv1.KReference {
Expand Down
4 changes: 2 additions & 2 deletions pkg/kn/commands/domain/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ import (
func TestDomainMappingList(t *testing.T) {
client := v1alpha1.NewMockKnServiceClient(t)

dm1 := createDomainMapping("foo1", createServiceRef("foo1", "default"))
dm2 := createDomainMapping("foo2", createServiceRef("foo2", "default"))
dm1 := createDomainMapping("foo1", createServiceRef("foo1", "default"), "")
dm2 := createDomainMapping("foo2", createServiceRef("foo2", "default"), "")
servingRecorder := client.Recorder()
servingRecorder.ListDomainMappings(&servingv1alpha1.DomainMappingList{Items: []servingv1alpha1.DomainMapping{*dm1, *dm2}}, nil)

Expand Down
6 changes: 3 additions & 3 deletions pkg/kn/commands/domain/update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ func TestDomainMappingUpdate(t *testing.T) {
dynamicClient := dynamicfake.CreateFakeKnDynamicClient(client.Namespace(), createService("foo"), createService("bar"))

servingRecorder := client.Recorder()
servingRecorder.GetDomainMapping("foo.bar", createDomainMapping("foo.bar", createServiceRef("foo", "default")), nil)
servingRecorder.UpdateDomainMapping(createDomainMapping("foo.bar", createServiceRef("bar", "default")), nil)
servingRecorder.GetDomainMapping("foo.bar", createDomainMapping("foo.bar", createServiceRef("foo", "default"), ""), nil)
servingRecorder.UpdateDomainMapping(createDomainMapping("foo.bar", createServiceRef("bar", "default"), ""), nil)

out, err := executeDomainCommand(client, dynamicClient, "update", "foo.bar", "--ref", "bar")
assert.NilError(t, err, "Domain mapping should be updated")
Expand All @@ -59,7 +59,7 @@ func TestDomainMappingUpdateNotFound(t *testing.T) {
func TestDomainMappingUpdateDeletingError(t *testing.T) {
client := v1alpha1.NewMockKnServiceClient(t)

deletingDM := createDomainMapping("foo.bar", createServiceRef("foo", "default"))
deletingDM := createDomainMapping("foo.bar", createServiceRef("foo", "default"), "")
deletingDM.DeletionTimestamp = &v1.Time{Time: time.Now()}

servingRecorder := client.Recorder()
Expand Down
9 changes: 9 additions & 0 deletions pkg/serving/v1alpha1/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,15 @@ func (b *DomainMappingBuilder) Reference(reference duckv1.KReference) *DomainMap
return b
}

// TLS for domainMapping builder
func (b *DomainMappingBuilder) TLS(tls string) *DomainMappingBuilder {
if tls == "" {
return b
}
b.domainMapping.Spec.TLS = &servingv1alpha1.SecretTLS{SecretName: tls}
return b
}

// Build to return an instance of domainMapping object
func (b *DomainMappingBuilder) Build() *servingv1alpha1.DomainMapping {
return b.domainMapping
Expand Down

0 comments on commit abdb321

Please sign in to comment.