Skip to content

Commit

Permalink
Include support for built-in license attributes in LicenseFieldValue …
Browse files Browse the repository at this point in the history
…template
  • Loading branch information
marccampbell committed Jul 22, 2020
1 parent b9f2bcc commit 6b1844f
Show file tree
Hide file tree
Showing 2 changed files with 167 additions and 7 deletions.
32 changes: 28 additions & 4 deletions pkg/template/license_context.go
Expand Up @@ -4,6 +4,7 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"strconv"
"text/template"

kotsv1beta1 "github.com/replicatedhq/kots/kotskinds/apis/kots/v1beta1"
Expand All @@ -27,11 +28,34 @@ func (ctx LicenseCtx) licenseFieldValue(name string) string {
return ""
}

entitlement, ok := ctx.License.Spec.Entitlements[name]
if ok {
return fmt.Sprintf("%v", entitlement.Value.Value())
switch name {
case "isGitOpsSupported":
return strconv.FormatBool(ctx.License.Spec.IsGitOpsSupported)
case "isAirgapSupported":
return strconv.FormatBool(ctx.License.Spec.IsAirgapSupported)
case "licenseType":
return ctx.License.Spec.LicenseType
case "licenseSequence":
return strconv.FormatInt(ctx.License.Spec.LicenseSequence, 10)
case "signature":
return string(ctx.License.Spec.Signature)
case "appSlug":
return ctx.License.Spec.AppSlug
case "channelName":
return ctx.License.Spec.ChannelName
case "customerName":
return ctx.License.Spec.CustomerName
case "endpoint":
return ctx.License.Spec.Endpoint
case "licenseID", "licenseId":
return ctx.License.Spec.LicenseID
default:
entitlement, ok := ctx.License.Spec.Entitlements[name]
if ok {
return fmt.Sprintf("%v", entitlement.Value.Value())
}
return ""
}
return ""
}

func (ctx LicenseCtx) licenseDockercfg() string {
Expand Down
142 changes: 139 additions & 3 deletions pkg/template/license_context_test.go
Expand Up @@ -44,7 +44,7 @@ func TestLicenseCtx_licenseFieldValue(t *testing.T) {
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
Entitlements: map[string]kotsv1beta1.EntitlementField{
"abc": kotsv1beta1.EntitlementField{
"abc": {
Value: kotsv1beta1.EntitlementValue{
Type: kotsv1beta1.String,
StrVal: "abc",
Expand All @@ -61,7 +61,7 @@ func TestLicenseCtx_licenseFieldValue(t *testing.T) {
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
Entitlements: map[string]kotsv1beta1.EntitlementField{
"integerField": kotsv1beta1.EntitlementField{
"integerField": {
Value: kotsv1beta1.EntitlementValue{
Type: kotsv1beta1.Int,
IntVal: 587,
Expand All @@ -78,7 +78,7 @@ func TestLicenseCtx_licenseFieldValue(t *testing.T) {
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
Entitlements: map[string]kotsv1beta1.EntitlementField{
"strField": kotsv1beta1.EntitlementField{
"strField": {
Value: kotsv1beta1.EntitlementValue{
Type: kotsv1beta1.String,
StrVal: "strValue",
Expand All @@ -90,6 +90,142 @@ func TestLicenseCtx_licenseFieldValue(t *testing.T) {
fieldName: "strField",
want: "strValue",
},
{
name: "built-in isGitOpsSupported",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
IsGitOpsSupported: true,
Entitlements: map[string]kotsv1beta1.EntitlementField{
"strField": {
Value: kotsv1beta1.EntitlementValue{
Type: kotsv1beta1.String,
StrVal: "strValue",
},
},
},
},
},
fieldName: "isGitOpsSupported",
want: "true",
},
{
name: "built-in isAirgapSupported",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
IsAirgapSupported: true,
},
},
fieldName: "isAirgapSupported",
want: "true",
},
{
name: "built-in licenseSequence",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
LicenseSequence: 987,
},
},
fieldName: "licenseSequence",
want: "987",
},
{
name: "built-in licenseType",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
LicenseType: "test",
},
},
fieldName: "licenseType",
want: "test",
},
{
name: "built-in appSlug",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
AppSlug: "appSlug",
},
},
fieldName: "appSlug",
want: "appSlug",
},
{
name: "built-in channelName",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
ChannelName: "stable",
},
},
fieldName: "channelName",
want: "stable",
},
{
name: "built-in customerName",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
CustomerName: "name",
},
},
fieldName: "customerName",
want: "name",
},
{
name: "built-in licenseID",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
LicenseID: "123",
},
},
fieldName: "licenseID",
want: "123",
},
{
name: "built-in licenseId",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
LicenseID: "123",
},
},
fieldName: "licenseId",
want: "123",
},
{
name: "built-in signature",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
IsGitOpsSupported: true,
Entitlements: map[string]kotsv1beta1.EntitlementField{
"strField": {
Value: kotsv1beta1.EntitlementValue{
Type: kotsv1beta1.String,
StrVal: "strValue",
},
},
},
Signature: []byte("abcdef0123456789"),
},
},
fieldName: "signature",
want: "abcdef0123456789",
},
{
name: "built-in signature with a custom field of the same name",
License: &kotsv1beta1.License{
Spec: kotsv1beta1.LicenseSpec{
IsGitOpsSupported: true,
Entitlements: map[string]kotsv1beta1.EntitlementField{
"signature": {
Value: kotsv1beta1.EntitlementValue{
Type: kotsv1beta1.String,
StrVal: "strValue",
},
},
},
Signature: []byte("abcdef0123456789"),
},
},
fieldName: "signature",
want: "abcdef0123456789",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down

0 comments on commit 6b1844f

Please sign in to comment.