Skip to content

Commit

Permalink
Enable PgBoucner & ProxySQL for enterprise license (#330)
Browse files Browse the repository at this point in the history
Signed-off-by: Tamal Saha <tamal@appscode.com>
  • Loading branch information
tamalsaha committed Oct 26, 2020
1 parent 35b75a0 commit 07d6328
Show file tree
Hide file tree
Showing 137 changed files with 3,252 additions and 3,436 deletions.
24 changes: 12 additions & 12 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ require (
github.com/prometheus-operator/prometheus-operator v0.42.0
github.com/spf13/cobra v1.0.0
github.com/spf13/pflag v1.0.5
go.bytebuilders.dev/license-verifier v0.3.0
go.bytebuilders.dev/license-verifier/kubernetes v0.3.0
go.bytebuilders.dev/license-verifier v0.3.1
go.bytebuilders.dev/license-verifier/kubernetes v0.3.1
k8s.io/api v0.18.9
k8s.io/apiextensions-apiserver v0.18.9
k8s.io/apimachinery v0.18.9
Expand All @@ -17,16 +17,16 @@ require (
kmodules.xyz/client-go v0.0.0-20201021051118-03dac1aea508
kmodules.xyz/custom-resources v0.0.0-20201008012351-6d8090f759d4
kmodules.xyz/webhook-runtime v0.0.0-20200922211931-8337935590de
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201025093720-ecfb5d85ea71
kubedb.dev/elasticsearch v0.14.0-beta.4
kubedb.dev/memcached v0.7.0-beta.4
kubedb.dev/mongodb v0.7.0-beta.4
kubedb.dev/mysql v0.7.0-beta.4
kubedb.dev/percona-xtradb v0.1.0-beta.4
kubedb.dev/pgbouncer v0.1.0-beta.4
kubedb.dev/postgres v0.14.0-beta.4
kubedb.dev/proxysql v0.1.0-beta.4
kubedb.dev/redis v0.7.0-beta.4
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201026210629-b72968d5915d
kubedb.dev/elasticsearch v0.14.0-beta.4.0.20201026212419-a3e9a733449b
kubedb.dev/memcached v0.7.0-beta.4.0.20201026211655-7a01e8784b22
kubedb.dev/mongodb v0.7.0-beta.4.0.20201026212233-7d1586f77feb
kubedb.dev/mysql v0.7.0-beta.4.0.20201026160526-ee4285c17835
kubedb.dev/percona-xtradb v0.1.0-beta.4.0.20201026212725-f92081d17809
kubedb.dev/pgbouncer v0.1.0-beta.4.0.20201026213659-bb5741082ede
kubedb.dev/postgres v0.14.0-beta.4.0.20201026194553-4da125849674
kubedb.dev/proxysql v0.1.0-beta.4.0.20201026212606-e48bd0064608
kubedb.dev/redis v0.7.0-beta.4.0.20201026212023-5e8f1a25f76c
)

replace bitbucket.org/ww/goautoneg => gomodules.xyz/goautoneg v0.0.0-20120707110453-a547fc61f48d
Expand Down
47 changes: 25 additions & 22 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1162,8 +1162,12 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
go.bytebuilders.dev/license-verifier v0.3.0 h1:OyxDrV07KfKNh0f+rtvPQYC6BedITIeTIzexW+YiUSs=
go.bytebuilders.dev/license-verifier v0.3.0/go.mod h1:0zzm7+djZ/Ff41BNZYWH80t9mMb42T3Nx2KqQGV9N8s=
go.bytebuilders.dev/license-verifier v0.3.1 h1:HNXTH+b4ylfKESmqLcelmZ7hlnbXneywkvHu3HpCkqk=
go.bytebuilders.dev/license-verifier v0.3.1/go.mod h1:0zzm7+djZ/Ff41BNZYWH80t9mMb42T3Nx2KqQGV9N8s=
go.bytebuilders.dev/license-verifier/kubernetes v0.3.0 h1:qj/pfjtG0uvsTasaNt2DkdH6xXcbLeoRS6HQLCi0k+k=
go.bytebuilders.dev/license-verifier/kubernetes v0.3.0/go.mod h1:7Yy4OHy6+Mx+nox31jzTcxTNZd6KOrKdlMw1d6SyJ4I=
go.bytebuilders.dev/license-verifier/kubernetes v0.3.1 h1:WU08E1Jj4aFivWw67zOHEz0AkzhUBcFscVHDgmhmu68=
go.bytebuilders.dev/license-verifier/kubernetes v0.3.1/go.mod h1:7Yy4OHy6+Mx+nox31jzTcxTNZd6KOrKdlMw1d6SyJ4I=
go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk=
go.elastic.co/apm/module/apmhttp v1.5.0/go.mod h1:1FbmNuyD3ddauwzgVwFB0fqY6KbZt3JkV187tGCYYhY=
go.elastic.co/apm/module/apmot v1.5.0/go.mod h1:d2KYwhJParTpyw2WnTNy8geNlHKKFX+4oK3YLlsesWE=
Expand Down Expand Up @@ -1701,30 +1705,29 @@ kmodules.xyz/prober v0.0.0-20200922212142-743a6514664e h1:NASVP0dOE5Zdlq+3Op7Fh2
kmodules.xyz/prober v0.0.0-20200922212142-743a6514664e/go.mod h1:AZ58K5hrxkkNPf8tM+UWeZjtNG3/mn192nKcUyC93F8=
kmodules.xyz/webhook-runtime v0.0.0-20200922211931-8337935590de h1:uWgv78OoOWx9eQdu6SEkPopvbpnL8WxZEMNd3/Oye2w=
kmodules.xyz/webhook-runtime v0.0.0-20200922211931-8337935590de/go.mod h1:5A8s2nvrNAZGrt0OlsiiuZIik3xWyKW6+ZSwgljIm78=
kubedb.dev/apimachinery v0.14.0-beta.4 h1:DH2opKDzXpRUpvZQ7d1ezE/xLJjAFkIlGRJ2+kI2uZs=
kubedb.dev/apimachinery v0.14.0-beta.4/go.mod h1:3/Dy8tn3ScoG3MnPKa8Ac0CDBqOuLo2r01BI3GVHgjM=
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201025093720-ecfb5d85ea71 h1:LpWbiRHxrQgeD6sraSIw0jfvFQnf7dfXl1mql7bSbYM=
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201025093720-ecfb5d85ea71/go.mod h1:3/Dy8tn3ScoG3MnPKa8Ac0CDBqOuLo2r01BI3GVHgjM=
kubedb.dev/elasticsearch v0.14.0-beta.4 h1:mAHkK+YdZTzDhcdQtulNuOpWwSz0+RupoYDs4ydxe98=
kubedb.dev/elasticsearch v0.14.0-beta.4/go.mod h1:/hzFl/6oykDloiMEp6Ch/G5o++G8/pnvCQtZ1glgL34=
kubedb.dev/memcached v0.7.0-beta.4 h1:QjHJ//Cj0u89BbxJ2YV2LSdvpPMpcdkYhdIGcOhq978=
kubedb.dev/memcached v0.7.0-beta.4/go.mod h1:oP1Bw4NSEq21h6LWbGv3wBYiwwy/XjS0M+kKCUbV0+o=
kubedb.dev/mongodb v0.7.0-beta.4 h1:p0cnIZ7tahRBTCeorzHab9IO4IhBb2Tm+Av8ygxK9Fc=
kubedb.dev/mongodb v0.7.0-beta.4/go.mod h1:8A2tBYqYatwv+2Igq8Qf+ttWzSVxkFvIG5gJE1MHOso=
kubedb.dev/mysql v0.7.0-beta.4 h1:QXikKk/3YYvKFCP91zL3CZk2Kh9b8puy8mAji4AVirg=
kubedb.dev/mysql v0.7.0-beta.4/go.mod h1:C2+ty9cWCJec7Egaa1upGczosnA+TNMH7ZfN6Qc3RYw=
kubedb.dev/percona-xtradb v0.1.0-beta.4 h1:oXz9JO3vSdlYSI37+A26/QoGaDHx35NOdljNeo4ip3Q=
kubedb.dev/percona-xtradb v0.1.0-beta.4/go.mod h1:qr0bHHiPg7YzrJjfD5oLf9hAVmj/hAHaDv9Ot5GbQlQ=
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201026155152-6ce39fbe7b06/go.mod h1:3/Dy8tn3ScoG3MnPKa8Ac0CDBqOuLo2r01BI3GVHgjM=
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201026210629-b72968d5915d h1:eZYI/WaXIdtkCQsCCB6JoD+bSFs40PYh+zm5tlqw6N8=
kubedb.dev/apimachinery v0.14.0-beta.4.0.20201026210629-b72968d5915d/go.mod h1:3/Dy8tn3ScoG3MnPKa8Ac0CDBqOuLo2r01BI3GVHgjM=
kubedb.dev/elasticsearch v0.14.0-beta.4.0.20201026212419-a3e9a733449b h1:psOCrMLN87PE0D4B6nyecZ89OTXfl15lJP9VXVpHpRQ=
kubedb.dev/elasticsearch v0.14.0-beta.4.0.20201026212419-a3e9a733449b/go.mod h1:iV/695jKUe4qNxOL5STadDhn5vuv/de1tcAewdAnuw4=
kubedb.dev/memcached v0.7.0-beta.4.0.20201026211655-7a01e8784b22 h1:Is3P0KvZHRyEPkcnKqFNCK2XodG1ZtO5K0Bo86czDZw=
kubedb.dev/memcached v0.7.0-beta.4.0.20201026211655-7a01e8784b22/go.mod h1:ZoT+13X15ahgqynQMu6hNYS+LN9gTlFDgm8crp9ktWo=
kubedb.dev/mongodb v0.7.0-beta.4.0.20201026212233-7d1586f77feb h1:fWoCwAx6HlkGphG90s0FBInKMlBpnsROCOqTbql7Ys0=
kubedb.dev/mongodb v0.7.0-beta.4.0.20201026212233-7d1586f77feb/go.mod h1:my3ZmBXRgGhh9pEt+x8Lz0ZF2MbnjgyCL6ZQHkCjhBE=
kubedb.dev/mysql v0.7.0-beta.4.0.20201026160526-ee4285c17835 h1:TXdXThyprCNr3P2bEvDwFRmI2lvKSul0T49vwhawE84=
kubedb.dev/mysql v0.7.0-beta.4.0.20201026160526-ee4285c17835/go.mod h1:xbgW/YkAPSeWwhU85x62uc3DvmBTKdIvOqKjWhZWxtY=
kubedb.dev/percona-xtradb v0.1.0-beta.4.0.20201026212725-f92081d17809 h1:gRydn4hzyjidofZa1bwvNhADEJjdNwCHliDY2o7YO04=
kubedb.dev/percona-xtradb v0.1.0-beta.4.0.20201026212725-f92081d17809/go.mod h1:vf5X6Yq3F5iD8YjjVowSwrEPR+B7MeJ6PjIkFEEq2Z0=
kubedb.dev/pg-leader-election v0.2.0-beta.4 h1:EtTYPiURsUfWHQ9YjkrVwIpd6TYz3wjXxjGtVztKdxk=
kubedb.dev/pg-leader-election v0.2.0-beta.4/go.mod h1:OfRFyqJvJPkCN0Ksee0Kmosu2c7bYZ4IFqlZPMmh2KI=
kubedb.dev/pgbouncer v0.1.0-beta.4 h1:kf14VwKLJ2YNfgVLUrktw6pzbu7zPmwIH59YwvAoMco=
kubedb.dev/pgbouncer v0.1.0-beta.4/go.mod h1:pqtkACKmEB7T021YcwXlSAj7WMyg+ABM9X+MmsxRUE8=
kubedb.dev/postgres v0.14.0-beta.4 h1:fAY0KKpXKMZWtryHV+CXI8YqViCZxMR/AXVLOtAErZo=
kubedb.dev/postgres v0.14.0-beta.4/go.mod h1:1PFnIuMt5nEkF7XvWr6HtTZChr9HC907lqhfQAEnZkI=
kubedb.dev/proxysql v0.1.0-beta.4 h1:CVlHPtqxsGu4xbiklhcVy6qC8Ae2bXsFcN3+x28WqF0=
kubedb.dev/proxysql v0.1.0-beta.4/go.mod h1:RtQrmNJw3WbdRXzAwFcI0tD0AVnJE1VqjELhM+HfWyM=
kubedb.dev/redis v0.7.0-beta.4 h1:O87N5e8OM9RPyHfYLaXlbHbVYPlX3WH9Atm8vvR2KMA=
kubedb.dev/redis v0.7.0-beta.4/go.mod h1:ss6+A5J9UPf2HmEo0AO6iCYgz7JctimQCIe9cxuwFrU=
kubedb.dev/pgbouncer v0.1.0-beta.4.0.20201026213659-bb5741082ede h1:rwDwzmQEBR1JHIyXQQtPv7+rk1Z8AC8tgQ9T6OZd7Oc=
kubedb.dev/pgbouncer v0.1.0-beta.4.0.20201026213659-bb5741082ede/go.mod h1:yjqNe+3WsUf5ZmmEOUUmljadp+lakdrZrtqfZIM3a20=
kubedb.dev/postgres v0.14.0-beta.4.0.20201026194553-4da125849674 h1:8zjVcKrXlVmH66LbFdL/rdXO35iV6YHcrZM9+5+4veM=
kubedb.dev/postgres v0.14.0-beta.4.0.20201026194553-4da125849674/go.mod h1:WxRUAUS/ENCfmEjP/E46JAq0fw/Z1OpcI8xZgxRSEAY=
kubedb.dev/proxysql v0.1.0-beta.4.0.20201026212606-e48bd0064608 h1:mlhiX1evfAnB8jDlPVHEh3xKi+aAawuf9Xn++8eYGQs=
kubedb.dev/proxysql v0.1.0-beta.4.0.20201026212606-e48bd0064608/go.mod h1:CABoEfaIySunG4vNy8dI44Nt9jxWFtIdfptLEO4+CHc=
kubedb.dev/redis v0.7.0-beta.4.0.20201026212023-5e8f1a25f76c h1:sHXMpRoc4Adm6uHz/KNhPcYSjNZmwdGaW5nJYapP+ic=
kubedb.dev/redis v0.7.0-beta.4.0.20201026212023-5e8f1a25f76c/go.mod h1:YpClG9E3026zCpJNTAKy7AMLu4fFnYwj5tWVjUiCoq4=
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
Expand Down
36 changes: 10 additions & 26 deletions pkg/cmds/server/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (

prom "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/typed/monitoring/v1"
"github.com/spf13/pflag"
license "go.bytebuilders.dev/license-verifier/kubernetes"
core "k8s.io/api/core/v1"
crd_cs "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/client-go/dynamic"
Expand All @@ -36,39 +37,26 @@ import (
"k8s.io/client-go/kubernetes"
corelisters "k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"kmodules.xyz/client-go/meta"
"kmodules.xyz/client-go/tools/cli"
appcat_cs "kmodules.xyz/custom-resources/client/clientset/versioned"
appcatinformers "kmodules.xyz/custom-resources/client/informers/externalversions"
)

type ExtraOptions struct {
LicenseFile string
OperatorNamespace string
RestrictToOperatorNamespace bool
GoverningService string
QPS float64
Burst int
ResyncPeriod time.Duration
ReadinessProbeInterval time.Duration
MaxNumRequeues int
NumThreads int
LicenseFile string
QPS float64
Burst int
ResyncPeriod time.Duration
ReadinessProbeInterval time.Duration
MaxNumRequeues int
NumThreads int

EnableMutatingWebhook bool
EnableValidatingWebhook bool
}

func (s ExtraOptions) WatchNamespace() string {
if s.RestrictToOperatorNamespace {
return s.OperatorNamespace
}
return core.NamespaceAll
}

func NewExtraOptions() *ExtraOptions {
return &ExtraOptions{
OperatorNamespace: meta.Namespace(),
GoverningService: "kubedb",
ResyncPeriod: 10 * time.Minute,
ReadinessProbeInterval: 10 * time.Second,
MaxNumRequeues: 5,
Expand All @@ -83,15 +71,12 @@ func NewExtraOptions() *ExtraOptions {

func (s *ExtraOptions) AddGoFlags(fs *flag.FlagSet) {
fs.StringVar(&s.LicenseFile, "license-file", s.LicenseFile, "Path to license file")
fs.StringVar(&s.GoverningService, "governing-service", s.GoverningService, "Governing service for database statefulset")

fs.Float64Var(&s.QPS, "qps", s.QPS, "The maximum QPS to the master from this client")
fs.IntVar(&s.Burst, "burst", s.Burst, "The maximum burst for throttle")
fs.DurationVar(&s.ResyncPeriod, "resync-period", s.ResyncPeriod, "If non-zero, will re-list this often. Otherwise, re-list will be delayed aslong as possible (until the upstream source closes the watch or times out.")
fs.DurationVar(&s.ReadinessProbeInterval, "readiness-probe-interval", s.ReadinessProbeInterval, "The time between two consecutive health checks that the operator performs to the database.")

fs.BoolVar(&s.RestrictToOperatorNamespace, "restrict-to-operator-namespace", s.RestrictToOperatorNamespace, "If true, KubeDB operator will only handle Kubernetes objects in its own namespace.")

fs.BoolVar(&s.EnableMutatingWebhook, "enable-mutating-webhook", s.EnableMutatingWebhook, "If true, enables mutating webhooks for KubeDB CRDs.")
fs.BoolVar(&s.EnableValidatingWebhook, "enable-validating-webhook", s.EnableValidatingWebhook, "If true, enables validating webhooks for KubeDB CRDs.")
}
Expand All @@ -106,8 +91,7 @@ func (s *ExtraOptions) ApplyTo(cfg *controller.OperatorConfig) error {
var err error

cfg.LicenseFile = s.LicenseFile
cfg.OperatorNamespace = s.OperatorNamespace
cfg.GoverningService = s.GoverningService
cfg.License = license.NewLicenseEnforcer(cfg.ClientConfig, s.LicenseFile).LoadLicense()

cfg.EnableAnalytics = cli.EnableAnalytics
cfg.AnalyticsClientID = cli.AnalyticsClientID
Expand All @@ -119,7 +103,7 @@ func (s *ExtraOptions) ApplyTo(cfg *controller.OperatorConfig) error {
cfg.ReadinessProbeInterval = s.ReadinessProbeInterval
cfg.MaxNumRequeues = s.MaxNumRequeues
cfg.NumThreads = s.NumThreads
cfg.WatchNamespace = s.WatchNamespace()
cfg.WatchNamespace = core.NamespaceAll
cfg.EnableMutatingWebhook = s.EnableMutatingWebhook
cfg.EnableValidatingWebhook = s.EnableValidatingWebhook

Expand Down
22 changes: 16 additions & 6 deletions pkg/controller/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ import (
rdc "kubedb.dev/redis/pkg/controller"

pcm "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/typed/monitoring/v1"
"go.bytebuilders.dev/license-verifier/kubernetes/apis/licenses/v1alpha1"
crd_cs "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/metadata"
Expand All @@ -54,6 +56,7 @@ type OperatorConfig struct {
amc.Config

LicenseFile string
License v1alpha1.License
ClientConfig *rest.Config
KubeClient kubernetes.Interface
CRDClient crd_cs.Interface
Expand Down Expand Up @@ -98,12 +101,15 @@ func (c *OperatorConfig) New() (*Controller, error) {
ctrl.mcCtrl = mcc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.AppCatalogClient, c.PromClient, ctrl.Config, topology, c.Recorder)
ctrl.mgCtrl = mgc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, topology, c.Recorder)
ctrl.myCtrl = myc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, c.Recorder)
ctrl.pgbCtrl = pgb.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, topology, c.Recorder)
ctrl.pgCtrl = pgc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, topology, c.Recorder)
ctrl.prCtrl = prc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.PromClient, ctrl.Config, c.Recorder)
ctrl.pxCtrl = pxc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, c.Recorder)
ctrl.rdCtrl = rdc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, topology, c.Recorder)

if sets.NewString(c.License.Products...).Has("kubedb-enterprise") {
ctrl.pgbCtrl = pgb.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.AppCatalogClient, c.PromClient, ctrl.Config, topology, c.Recorder)
ctrl.prCtrl = prc.New(c.ClientConfig, c.KubeClient, c.CRDClient, c.DBClient, c.DynamicClient, c.PromClient, ctrl.Config, c.Recorder)
}

if err := ctrl.Init(); err != nil {
return nil, err
}
Expand Down Expand Up @@ -143,16 +149,20 @@ func (c *Controller) Init() error {
return err
}

if err := c.pgbCtrl.Init(); err != nil {
return err
if c.pgbCtrl != nil {
if err := c.pgbCtrl.Init(); err != nil {
return err
}
}

if err := c.pgCtrl.Init(); err != nil {
return err
}

if err := c.prCtrl.Init(); err != nil {
return err
if c.prCtrl != nil {
if err := c.prCtrl.Init(); err != nil {
return err
}
}

if err := c.pxCtrl.Init(); err != nil {
Expand Down
7 changes: 6 additions & 1 deletion pkg/controller/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,13 @@ func (c *Controller) StartAndRunControllers(stopCh <-chan struct{}) {
c.mcCtrl.RunControllers(stopCh)
c.mgCtrl.RunControllers(stopCh)
c.myCtrl.RunControllers(stopCh)
if c.pgbCtrl != nil {
c.pgbCtrl.RunControllers(stopCh)
}
c.pgCtrl.RunControllers(stopCh)
c.prCtrl.RunControllers(stopCh)
if c.prCtrl != nil {
c.prCtrl.RunControllers(stopCh)
}
c.pxCtrl.RunControllers(stopCh)
c.rdCtrl.RunControllers(stopCh)

Expand Down
109 changes: 54 additions & 55 deletions vendor/go.bytebuilders.dev/license-verifier/kubernetes/lib.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,64 +171,63 @@ func (le *LicenseEnforcer) Install(c *mux.PathRecorderMux) {
w.Header().Set("Content-Type", "application/json")
w.Header().Set("x-content-type-options", "nosniff")

var license v1alpha1.License
license.TypeMeta = metav1.TypeMeta{
APIVersion: v1alpha1.SchemeGroupVersion.String(),
Kind: meta.GetKind(license),
}
utilruntime.Must(json.NewEncoder(w).Encode(le.LoadLicense()))
}))
}

// Read cluster UID (UID of the "kube-system" namespace)
err = le.readClusterUID()
if err != nil {
license.Status = v1alpha1.LicenseUnknown
license.Reason = err.Error()
utilruntime.Must(json.NewEncoder(w).Encode(license))
return
}
// Read license from file
err = le.readLicenseFromFile()
if err != nil {
license.Status = v1alpha1.LicenseUnknown
license.Reason = err.Error()
utilruntime.Must(json.NewEncoder(w).Encode(license))
return
}
// Parse license

block, _ := pem.Decode(le.opts.License)
if block == nil {
// This probably is a JWT token, should be check for that when ready
license.Status = v1alpha1.LicenseUnknown
license.Reason = "failed to parse certificate PEM"
utilruntime.Must(json.NewEncoder(w).Encode(license))
return
}
cert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
license.Status = v1alpha1.LicenseUnknown
license.Reason = "failed to parse certificate, reason:" + err.Error()
utilruntime.Must(json.NewEncoder(w).Encode(license))
return
}
func (le *LicenseEnforcer) LoadLicense() v1alpha1.License {
var license v1alpha1.License
license.TypeMeta = metav1.TypeMeta{
APIVersion: v1alpha1.SchemeGroupVersion.String(),
Kind: meta.GetKind(license),
}

license = v1alpha1.License{
Issuer: "byte.builders",
Clusters: cert.DNSNames,
NotBefore: &metav1.Time{Time: cert.NotBefore},
NotAfter: &metav1.Time{Time: cert.NotAfter},
ID: cert.SerialNumber.String(),
Products: cert.Subject.Organization,
}
// ref: https://github.com/appscode/gitea/blob/master/models/stripe_license.go#L117-L126
if err = verifier.VerifyLicense(le.opts); err != nil {
license.Status = v1alpha1.LicenseExpired
license.Reason = err.Error()
} else {
license.Status = v1alpha1.LicenseActive
}
// Read cluster UID (UID of the "kube-system" namespace)
err := le.readClusterUID()
if err != nil {
license.Status = v1alpha1.LicenseUnknown
license.Reason = err.Error()
return license
}
// Read license from file
err = le.readLicenseFromFile()
if err != nil {
license.Status = v1alpha1.LicenseUnknown
license.Reason = err.Error()
return license
}
// Parse license

block, _ := pem.Decode(le.opts.License)
if block == nil {
// This probably is a JWT token, should be check for that when ready
license.Status = v1alpha1.LicenseUnknown
license.Reason = "failed to parse certificate PEM"
return license
}
cert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
license.Status = v1alpha1.LicenseUnknown
license.Reason = "failed to parse certificate, reason:" + err.Error()
return license
}

utilruntime.Must(json.NewEncoder(w).Encode(license))
}))
license = v1alpha1.License{
Issuer: "byte.builders",
Clusters: cert.DNSNames,
NotBefore: &metav1.Time{Time: cert.NotBefore},
NotAfter: &metav1.Time{Time: cert.NotAfter},
ID: cert.SerialNumber.String(),
Products: cert.Subject.Organization,
}
// ref: https://github.com/appscode/gitea/blob/master/models/stripe_license.go#L117-L126
if err = verifier.VerifyLicense(le.opts); err != nil {
license.Status = v1alpha1.LicenseExpired
license.Reason = err.Error()
} else {
license.Status = v1alpha1.LicenseActive
}
return license
}

// VerifyLicensePeriodically periodically verifies whether the provided license is valid for the current cluster or not.
Expand Down
Loading

0 comments on commit 07d6328

Please sign in to comment.