Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 123 additions & 0 deletions crds/sme.sap.com_subscriptionproviders.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
name: subscriptionproviders.sme.sap.com
spec:
group: sme.sap.com
names:
kind: SubscriptionProvider
listKind: SubscriptionProviderList
plural: subscriptionproviders
shortNames:
- subpro
singular: subscriptionprovider
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.appName
name: SubscriptionProvider
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
- jsonPath: .status.state
name: State
type: string
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
appName:
type: string
providerSubaccountId:
type: string
subscriptionInfo:
properties:
authSecret:
type: string
subscriptionSecret:
type: string
type:
type: string
required:
- subscriptionSecret
- type
type: object
required:
- appName
- providerSubaccountId
- subscriptionInfo
type: object
status:
properties:
conditions:
items:
properties:
lastTransitionTime:
format: date-time
type: string
message:
maxLength: 32768
type: string
observedGeneration:
format: int64
minimum: 0
type: integer
reason:
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
enum:
- "True"
- "False"
- Unknown
type: string
type:
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
dependencies:
type: string
observedGeneration:
format: int64
type: integer
state:
enum:
- ""
- Ready
- Error
- Processing
- Deleting
type: string
required:
- state
type: object
required:
- metadata
- spec
type: object
served: true
storage: true
subresources:
status: {}
125 changes: 125 additions & 0 deletions crds/sme.sap.com_subscriptions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.21.0
name: subscriptions.sme.sap.com
spec:
group: sme.sap.com
names:
kind: Subscription
listKind: SubscriptionList
plural: subscriptions
shortNames:
- sub
singular: subscription
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.appName
name: App
type: string
- jsonPath: .spec.subscriptionGuid
name: Guid
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
- jsonPath: .status.state
name: State
type: string
- jsonPath: .status.url
name: Url
type: string
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
properties:
appName:
type: string
providerSubaccountId:
type: string
subscriptionGuid:
type: string
subscriptionRequestPayload:
type: string
tenantId:
type: string
required:
- appName
- providerSubaccountId
- subscriptionGuid
- subscriptionRequestPayload
- tenantId
type: object
status:
properties:
conditions:
items:
properties:
lastTransitionTime:
format: date-time
type: string
message:
maxLength: 32768
type: string
observedGeneration:
format: int64
minimum: 0
type: integer
reason:
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
enum:
- "True"
- "False"
- Unknown
type: string
type:
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
observedGeneration:
format: int64
type: integer
state:
enum:
- ""
- Ready
- Error
- Processing
- Deleting
type: string
url:
type: string
required:
- state
type: object
required:
- metadata
- spec
type: object
served: true
storage: true
subresources:
status: {}
6 changes: 6 additions & 0 deletions internal/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ func NewController(client kubernetes.Interface, crdClient versioned.Interface, i
ResourceCAPTenantOperation: workqueue.NewTypedRateLimitingQueueWithConfig(customRateLimiter(), workqueue.TypedRateLimitingQueueConfig[QueueItem]{Name: KindMap[ResourceCAPTenantOperation]}),
ResourceDomain: workqueue.NewTypedRateLimitingQueueWithConfig(workqueue.DefaultTypedControllerRateLimiter[QueueItem](), workqueue.TypedRateLimitingQueueConfig[QueueItem]{Name: KindMap[ResourceDomain]}),
ResourceClusterDomain: workqueue.NewTypedRateLimitingQueueWithConfig(workqueue.DefaultTypedControllerRateLimiter[QueueItem](), workqueue.TypedRateLimitingQueueConfig[QueueItem]{Name: KindMap[ResourceClusterDomain]}),
ResourceSubscriptionProvider: workqueue.NewTypedRateLimitingQueueWithConfig(workqueue.DefaultTypedControllerRateLimiter[QueueItem](), workqueue.TypedRateLimitingQueueConfig[QueueItem]{Name: KindMap[ResourceSubscriptionProvider]}),
ResourceSubscription: workqueue.NewTypedRateLimitingQueueWithConfig(customRateLimiter(), workqueue.TypedRateLimitingQueueConfig[QueueItem]{Name: KindMap[ResourceSubscription]}),
}

// Use 30mins as the default Resync interval for kube / proprietary resources
Expand Down Expand Up @@ -310,6 +312,10 @@ func (c *Controller) processQueueItem(ctx context.Context, key, workerId int) er
result, err = c.reconcileDomain(ctx, item, attempts)
case ResourceClusterDomain:
result, err = c.reconcileClusterDomain(ctx, item, attempts)
case ResourceSubscriptionProvider:
result, err = c.reconcileSubscriptionProvider(ctx, item, attempts)
case ResourceSubscription:
result, err = c.reconcileSubscription(ctx, item, attempts)
default:
err = errors.New("unidentified queue item")
skipItem = true
Expand Down
23 changes: 22 additions & 1 deletion internal/controller/informers.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ const (
ResourceCAPTenantOperation
ResourceDomain
ResourceClusterDomain
ResourceSubscriptionProvider
ResourceSubscription
ResourceSecret
ResourceJob
ResourceGateway
Expand All @@ -45,6 +47,8 @@ var (
ResourceCAPTenantOperation: v1alpha1.CAPTenantOperationKind,
ResourceDomain: v1alpha1.DomainKind,
ResourceClusterDomain: v1alpha1.ClusterDomainKind,
ResourceSubscriptionProvider: v1alpha1.SubscriptionProviderKind,
ResourceSubscription: v1alpha1.SubscriptionKind,
}
)

Expand All @@ -56,10 +60,12 @@ type NamespacedResourceKey struct {
var QueueMapping map[int]map[int]string = map[int]map[int]string{
ResourceCAPApplication: {ResourceCAPApplication: v1alpha1.CAPApplicationKind},
ResourceCAPApplicationVersion: {ResourceCAPApplicationVersion: v1alpha1.CAPApplicationVersionKind, ResourceCAPApplication: v1alpha1.CAPApplicationKind},
ResourceCAPTenant: {ResourceCAPTenant: v1alpha1.CAPTenantKind, ResourceCAPApplication: v1alpha1.CAPApplicationKind},
ResourceCAPTenant: {ResourceCAPTenant: v1alpha1.CAPTenantKind, ResourceCAPApplication: v1alpha1.CAPApplicationKind, ResourceSubscription: v1alpha1.SubscriptionKind},
ResourceCAPTenantOperation: {ResourceCAPTenantOperation: v1alpha1.CAPTenantOperationKind, ResourceCAPTenant: v1alpha1.CAPTenantKind},
ResourceDomain: {ResourceDomain: v1alpha1.DomainKind},
ResourceClusterDomain: {ResourceClusterDomain: v1alpha1.ClusterDomainKind},
ResourceSubscriptionProvider: {ResourceSubscriptionProvider: v1alpha1.SubscriptionProviderKind},
ResourceSubscription: {ResourceSubscription: v1alpha1.SubscriptionKind},
ResourceJob: {ResourceCAPTenantOperation: v1alpha1.CAPTenantOperationKind, ResourceCAPApplicationVersion: v1alpha1.CAPApplicationVersionKind},
ResourceGateway: {ResourceDomain: v1alpha1.DomainKind, ResourceClusterDomain: v1alpha1.ClusterDomainKind},
ResourceCertificate: {ResourceDomain: v1alpha1.DomainKind, ResourceClusterDomain: v1alpha1.ClusterDomainKind},
Expand All @@ -80,23 +86,28 @@ func (c *Controller) initializeInformers() {
c.registerCAPTenantOperationListeners()
c.registerDomainListeners()
c.registerClusterDomainListeners()
c.registerSubscriptionProviderListeners()
c.registerSubscriptionListeners()
c.registerJobListeners()
c.registerSecretListeners()
c.registerGatewayListeners()
c.registerVirtualServiceListeners()
c.registerDestinationRuleListeners()

switch certificateManager() {
case certManagerGardener:
c.registerGardenerCertificateListeners()
case certManagerCertManagerIO:
c.registerCertManagerCertificateListeners()
}

switch dnsManager() {
case dnsManagerGardener:
c.registerGardenerDNSEntrytListeners()
case dnsManagerKubernetes:
// no activity needed on our side so far
}

klog.InfoS("informers initialized")
}

Expand Down Expand Up @@ -148,6 +159,16 @@ func (c *Controller) registerDomainListeners() {
AddEventHandler(c.getEventHandlerFuncsForResource(ResourceDomain))
}

func (c *Controller) registerSubscriptionProviderListeners() {
c.crdInformerFactory.Sme().V1alpha1().SubscriptionProviders().Informer().
AddEventHandler(c.getEventHandlerFuncsForResource(ResourceSubscriptionProvider))
}

func (c *Controller) registerSubscriptionListeners() {
c.crdInformerFactory.Sme().V1alpha1().Subscriptions().Informer().
AddEventHandler(c.getEventHandlerFuncsForResource(ResourceSubscription))
}

func (c *Controller) registerJobListeners() {
c.kubeInformerFactory.Batch().V1().Jobs().Informer().
AddEventHandler(c.getEventHandlerFuncsForResource(ResourceJob))
Expand Down
Loading