@@ -18,6 +18,8 @@ package manager
1818
1919import (
2020 "context"
21+ "crypto/x509"
22+ "errors"
2123 "fmt"
2224 "os"
2325 "path/filepath"
@@ -35,6 +37,8 @@ import (
3537 core "k8s.io/api/core/v1"
3638 apierrors "k8s.io/apimachinery/pkg/api/errors"
3739 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
40+ utilerrors "k8s.io/apimachinery/pkg/util/errors"
41+ "k8s.io/klog/v2"
3842 clusterv1 "open-cluster-management.io/api/cluster/v1"
3943 ctrl "sigs.k8s.io/controller-runtime"
4044 "sigs.k8s.io/controller-runtime/pkg/client"
@@ -129,6 +133,8 @@ func (r *LicenseAcquirer) reconcile(ctx context.Context, clusterName, cid string
129133 return err
130134 }
131135
136+ var errList []error
137+
132138 reg , err := r .getLicenseRegistry (cid )
133139 if err != nil {
134140 return err
@@ -138,19 +144,28 @@ func (r *LicenseAcquirer) reconcile(ctx context.Context, clusterName, cid string
138144 if ! found {
139145 var c * v1alpha1.Contract
140146 l , c , err = r .getNewLicense (ctx , cid , []string {feature })
141- if err != nil {
142- return err
147+ if err == nil {
148+ reg .Add (l , c )
149+ } else {
150+ klog .ErrorS (err , "failed to get new license" , "feature" , feature )
151+ var ce * x509.CertificateInvalidError
152+ if ! errors .As (err , & ce ) {
153+ errList = append (errList , err )
154+ }
143155 }
144- reg .Add (l , c )
145156 }
146- sec .Data [l .PlanName ] = l .Data
157+ if l != nil && l .Status == v1alpha1 .LicenseActive {
158+ sec .Data [l .PlanName ] = l .Data
159+ }
147160 }
148161
149162 if secretExists {
150- return r .Update (context .TODO (), & sec )
163+ errList = append ( errList , r .Update (context .TODO (), & sec ) )
151164 } else {
152- return r .Create (context .TODO (), & sec )
165+ errList = append ( errList , r .Create (context .TODO (), & sec ) )
153166 }
167+
168+ return utilerrors .NewAggregate (errList )
154169}
155170
156171func (r * LicenseAcquirer ) getNewLicense (ctx context.Context , cid string , features []string ) (* v1alpha1.License , * v1alpha1.Contract , error ) {
0 commit comments