Skip to content

Commit 29a8c31

Browse files
committed
Fix license expiration check
Signed-off-by: Tamal Saha <tamal@appscode.com>
1 parent e93a886 commit 29a8c31

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

pkg/controllers/secret/license_syncer.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ import (
2020
"context"
2121
"crypto/x509"
2222
"fmt"
23+
"time"
2324

2425
"go.bytebuilders.dev/license-proxyserver/pkg/common"
2526
"go.bytebuilders.dev/license-proxyserver/pkg/storage"
2627
verifier "go.bytebuilders.dev/license-verifier"
2728

2829
core "k8s.io/api/core/v1"
2930
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
31+
"k8s.io/klog/v2"
3032
kutil "kmodules.xyz/client-go"
3133
cu "kmodules.xyz/client-go/client"
3234
ctrl "sigs.k8s.io/controller-runtime"
@@ -100,6 +102,14 @@ func (r *LicenseSyncer) addLicense(data []byte) error {
100102
if err != nil {
101103
return err
102104
}
105+
106+
klog.InfoS("adding license",
107+
"id", license.ID,
108+
"product", license.ProductLine,
109+
"plan", license.PlanName,
110+
"tier", license.TierName,
111+
"expiry", license.NotAfter.UTC().Format(time.RFC822),
112+
)
103113
r.R.Add(&license, nil)
104114
return nil
105115
}

pkg/manager/license_acquirer.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"path/filepath"
2626
"strings"
2727
"sync"
28+
"time"
2829

2930
"go.bytebuilders.dev/license-proxyserver/pkg/common"
3031
"go.bytebuilders.dev/license-proxyserver/pkg/storage"
@@ -169,8 +170,6 @@ func (r *LicenseAcquirer) reconcile(ctx context.Context, clusterName, cid string
169170
}
170171

171172
func (r *LicenseAcquirer) getNewLicense(ctx context.Context, cid string, features []string) (*v1alpha1.License, *v1alpha1.Contract, error) {
172-
logger := log.FromContext(ctx)
173-
174173
lc, err := pc.NewClient(r.BaseURL, r.Token, cid, r.CaCert, r.InsecureSkipTLSVerify, fmt.Sprintf("license-proxyserver-manager/%s", v.Version.Version))
175174
if err != nil {
176175
return nil, nil, err
@@ -180,7 +179,6 @@ func (r *LicenseAcquirer) getNewLicense(ctx context.Context, cid string, feature
180179
if err != nil {
181180
return nil, nil, err
182181
}
183-
logger.Info("acquired new license", "cid", cid, "features", strings.Join(features, ","))
184182

185183
caData, err := info.LoadLicenseCA()
186184
if err != nil {
@@ -200,5 +198,13 @@ func (r *LicenseAcquirer) getNewLicense(ctx context.Context, cid string, feature
200198
return nil, nil, err
201199
}
202200

201+
klog.InfoS("acquired new license",
202+
"cluster", cid,
203+
"id", l.ID,
204+
"product", l.ProductLine,
205+
"plan", l.PlanName,
206+
"tier", l.TierName,
207+
"expiry", l.NotAfter.UTC().Format(time.RFC822),
208+
)
203209
return &l, con, nil
204210
}

pkg/registry/proxyserver/licenserequest/storage.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"crypto/x509"
2222
"sort"
2323
"strings"
24+
"time"
2425

2526
proxyv1alpha1 "go.bytebuilders.dev/license-proxyserver/apis/proxyserver/v1alpha1"
2627
"go.bytebuilders.dev/license-proxyserver/pkg/common"
@@ -36,6 +37,7 @@ import (
3637
"k8s.io/apimachinery/pkg/util/sets"
3738
"k8s.io/apiserver/pkg/endpoints/request"
3839
"k8s.io/apiserver/pkg/registry/rest"
40+
"k8s.io/klog/v2"
3941
clustermeta "kmodules.xyz/client-go/cluster"
4042
clusterv1alpha1 "open-cluster-management.io/api/cluster/v1alpha1"
4143
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -143,6 +145,7 @@ func (r *Storage) Create(ctx context.Context, obj runtime.Object, _ rest.Validat
143145
}
144146
} else {
145147
// return blank response instead of error
148+
// typically license mounted via secret has expired
146149
in.Response = &proxyv1alpha1.LicenseRequestResponse{}
147150
}
148151

@@ -172,6 +175,14 @@ func (r *Storage) getLicense(features []string) (*v1alpha1.License, error) {
172175
if err != nil {
173176
return nil, err
174177
}
178+
179+
klog.InfoS("adding license",
180+
"id", l.ID,
181+
"product", l.ProductLine,
182+
"plan", l.PlanName,
183+
"tier", l.TierName,
184+
"expiry", l.NotAfter.UTC().Format(time.RFC822),
185+
)
175186
r.reg.Add(&l, c)
176187
return &l, nil
177188
}

pkg/storage/loader.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package storage
1919
import (
2020
"os"
2121
"path/filepath"
22+
"time"
2223

2324
verifier "go.bytebuilders.dev/license-verifier"
2425
"go.bytebuilders.dev/license-verifier/info"
@@ -69,6 +70,14 @@ func LoadDir(cid, dir string, reg *LicenseRegistry) error {
6970
klog.ErrorS(err, "Skipping", "file", filename)
7071
continue
7172
} else {
73+
klog.InfoS("adding license",
74+
"dir", dir,
75+
"id", license.ID,
76+
"product", license.ProductLine,
77+
"plan", license.PlanName,
78+
"tier", license.TierName,
79+
"expiry", license.NotAfter.UTC().Format(time.RFC822),
80+
)
7281
reg.Add(&license, nil)
7382
}
7483
}

pkg/storage/store.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import (
2525
"time"
2626

2727
"go.bytebuilders.dev/license-verifier/apis/licenses/v1alpha1"
28+
29+
"k8s.io/klog/v2"
2830
)
2931

3032
const minRemainingLife = 10 * time.Minute
@@ -109,13 +111,20 @@ func (r *LicenseRegistry) LicenseForFeature(feature string) (*v1alpha1.License,
109111
if !ok {
110112
return nil, false
111113
}
112-
now := time.Now().Add(minRemainingLife)
113114
for q.Len() > 0 {
114115
// ref: https://stackoverflow.com/a/63328950
115116
item := q[0]
116-
if now.After(item.NotAfter.Time) {
117+
if time.Until(item.NotAfter.Time) < minRemainingLife {
117118
heap.Pop(&q)
118119
r.reg[feature] = q
120+
121+
klog.InfoS("removing license",
122+
"id", item.ID,
123+
"product", item.ProductLine,
124+
"plan", item.PlanName,
125+
"tier", item.TierName,
126+
"expiry", item.NotAfter.UTC().Format(time.RFC822),
127+
)
119128
r.removeFromStore(item)
120129
} else {
121130
return item, true

0 commit comments

Comments
 (0)