---
apiVersion: metacontroller.k8s.io/v1alpha1
kind: CompositeController
metadata:
  name: crawljobs-operator
spec:
  generateSelector: false
  resyncPeriodSeconds: {{ .Values.operator_resync_seconds | default 10 }}
  parentResource:
    apiVersion: btrix.cloud/v1
    resource: crawljobs
  childResources:
  - apiVersion: v1
    resource: pods
    updateStrategy:
      method: OnDelete

  - apiVersion: v1
    resource: persistentvolumeclaims
    updateStrategy:
      method: InPlace

  - apiVersion: v1
    resource: configmaps
    updateStrategy:
      method: InPlace

  hooks:
    sync:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/crawls/sync

    finalize:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/crawls/finalize

    customize:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/crawls/customize

---
apiVersion: metacontroller.k8s.io/v1alpha1
kind: CompositeController
metadata:
  name: profilejobs-operator
spec:
  generateSelector: false
  resyncPeriodSeconds: 30
  parentResource:
    apiVersion: btrix.cloud/v1
    resource: profilejobs
  childResources:
  - apiVersion: v1
    resource: pods
    updateStrategy:
      method: InPlace
 
  hooks:
    sync:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/profilebrowsers/sync

---
apiVersion: metacontroller.k8s.io/v1alpha1
kind: DecoratorController
metadata:
  name: cron-crawljobs-operator
spec:
  resyncPeriodSeconds: 60
  resources:
  - apiVersion: batch/v1
    resource: jobs
    labelSelector:
      matchLabels:
        role: scheduled-crawljob

  attachments:
  - apiVersion: btrix.cloud/v1
    resource: crawljobs
    updateStrategy:
      method: OnDelete

  hooks:
    sync:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/cronjob/sync

---
apiVersion: metacontroller.k8s.io/v1alpha1
kind: DecoratorController
metadata:
  name: background-job-operator
spec:
  resyncPeriodSeconds: 60
  resources:
  - apiVersion: batch/v1
    resource: jobs
    labelSelector:
      matchLabels:
        role: background-job
  hooks:
    sync:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/backgroundjob/sync
    finalize:
      webhook:
        service:
          namespace: {{ .Release.Namespace }}
          name: {{ .Values.name }}-backend
          port: {{ .Values.opPort }}
        path: /op/backgroundjob/finalize
