#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
apiVersion: v1
kind: Namespace
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
    control-plane: controller-manager
  name: hugegraph-computer-operator-system
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cert-manager.io/inject-ca-from: hugegraph-computer-operator-system/hugegraph-computer-operator-serving-cert
    controller-gen.kubebuilder.io/version: v0.5.0
  name: hugegraphcomputerjobs.operator.hugegraph.apache.org
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: hugegraph-computer-operator-webhook-service
          namespace: hugegraph-computer-operator-system
          path: /convert
      conversionReviewVersions:
      - v1
  group: operator.hugegraph.apache.org
  names:
    kind: HugeGraphComputerJob
    listKind: HugeGraphComputerJobList
    plural: hugegraphcomputerjobs
    shortNames:
    - hcjob
    singular: hugegraphcomputerjob
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.jobId
      name: JobId
      type: string
    - jsonPath: .status.jobStatus
      name: JobStatus
      type: string
    - jsonPath: .status.jobState.superstep
      name: Superstep
      type: integer
    - jsonPath: .status.jobState.maxSuperstep
      name: MaxSuperstep
      type: integer
    - jsonPath: .status.jobState.lastSuperstepStat
      name: SuperstepStat
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        properties:
          apiVersion:
            type: string
          kind:
            type: string
          metadata:
            type: object
          spec:
            properties:
              algorithmName:
                type: string
              computerConf:
                additionalProperties:
                  type: string
                type: object
              configMapPaths:
                additionalProperties:
                  type: string
                type: object
              envFrom:
                items:
                  properties:
                    configMapRef:
                      properties:
                        name:
                          type: string
                        optional:
                          type: boolean
                      type: object
                    prefix:
                      type: string
                    secretRef:
                      properties:
                        name:
                          type: string
                        optional:
                          type: boolean
                      type: object
                  type: object
                type: array
              envVars:
                items:
                  properties:
                    name:
                      type: string
                    value:
                      type: string
                    valueFrom:
                      properties:
                        configMapKeyRef:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                            optional:
                              type: boolean
                          required:
                          - key
                          type: object
                        fieldRef:
                          properties:
                            apiVersion:
                              type: string
                            fieldPath:
                              type: string
                          required:
                          - fieldPath
                          type: object
                        resourceFieldRef:
                          properties:
                            containerName:
                              type: string
                            divisor:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            resource:
                              type: string
                          required:
                          - resource
                          type: object
                        secretKeyRef:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                            optional:
                              type: boolean
                          required:
                          - key
                          type: object
                      type: object
                  required:
                  - name
                  type: object
                type: array
              image:
                type: string
              jarFile:
                type: string
              jobId:
                type: string
              jvmOptions:
                type: string
              log4jXml:
                type: string
              masterArgs:
                items:
                  type: string
                type: array
              masterCommand:
                items:
                  type: string
                type: array
              masterCpu:
                anyOf:
                - type: integer
                - type: string
                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                x-kubernetes-int-or-string: true
              masterMemory:
                anyOf:
                - type: integer
                - type: string
                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                x-kubernetes-int-or-string: true
              podTemplateSpec:
                x-kubernetes-preserve-unknown-fields: true
              pullPolicy:
                enum:
                - Always
                - Never
                - IfNotPresent
                type: string
              pullSecrets:
                items:
                  properties:
                    name:
                      type: string
                  type: object
                type: array
              remoteJarUri:
                pattern: ^(http|https):\/\/([\w.]+\/?)\S*$
                type: string
              secretPaths:
                additionalProperties:
                  type: string
                type: object
              securityContext:
                properties:
                  allowPrivilegeEscalation:
                    type: boolean
                  capabilities:
                    properties:
                      add:
                        items:
                          type: string
                        type: array
                      drop:
                        items:
                          type: string
                        type: array
                    type: object
                  privileged:
                    type: boolean
                  procMount:
                    type: string
                  readOnlyRootFilesystem:
                    type: boolean
                  runAsGroup:
                    format: int64
                    type: integer
                  runAsNonRoot:
                    type: boolean
                  runAsUser:
                    format: int64
                    type: integer
                  seLinuxOptions:
                    properties:
                      level:
                        type: string
                      role:
                        type: string
                      type:
                        type: string
                      user:
                        type: string
                    type: object
                  seccompProfile:
                    properties:
                      localhostProfile:
                        type: string
                      type:
                        type: string
                    required:
                    - type
                    type: object
                  windowsOptions:
                    properties:
                      gmsaCredentialSpec:
                        type: string
                      gmsaCredentialSpecName:
                        type: string
                      hostProcess:
                        type: boolean
                      runAsUserName:
                        type: string
                    type: object
                type: object
              volumeMounts:
                items:
                  properties:
                    mountPath:
                      type: string
                    mountPropagation:
                      type: string
                    name:
                      type: string
                    readOnly:
                      type: boolean
                    subPath:
                      type: string
                    subPathExpr:
                      type: string
                  required:
                  - mountPath
                  - name
                  type: object
                type: array
              volumes:
                items:
                  properties:
                    awsElasticBlockStore:
                      properties:
                        fsType:
                          type: string
                        partition:
                          format: int32
                          type: integer
                        readOnly:
                          type: boolean
                        volumeID:
                          type: string
                      required:
                      - volumeID
                      type: object
                    azureDisk:
                      properties:
                        cachingMode:
                          type: string
                        diskName:
                          type: string
                        diskURI:
                          type: string
                        fsType:
                          type: string
                        kind:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - diskName
                      - diskURI
                      type: object
                    azureFile:
                      properties:
                        readOnly:
                          type: boolean
                        secretName:
                          type: string
                        shareName:
                          type: string
                      required:
                      - secretName
                      - shareName
                      type: object
                    cephfs:
                      properties:
                        monitors:
                          items:
                            type: string
                          type: array
                        path:
                          type: string
                        readOnly:
                          type: boolean
                        secretFile:
                          type: string
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        user:
                          type: string
                      required:
                      - monitors
                      type: object
                    cinder:
                      properties:
                        fsType:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        volumeID:
                          type: string
                      required:
                      - volumeID
                      type: object
                    configMap:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        items:
                          items:
                            properties:
                              key:
                                type: string
                              mode:
                                format: int32
                                type: integer
                              path:
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                        name:
                          type: string
                        optional:
                          type: boolean
                      type: object
                    csi:
                      properties:
                        driver:
                          type: string
                        fsType:
                          type: string
                        nodePublishSecretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        readOnly:
                          type: boolean
                        volumeAttributes:
                          additionalProperties:
                            type: string
                          type: object
                      required:
                      - driver
                      type: object
                    downwardAPI:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        items:
                          items:
                            properties:
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                - fieldPath
                                type: object
                              mode:
                                format: int32
                                type: integer
                              path:
                                type: string
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  resource:
                                    type: string
                                required:
                                - resource
                                type: object
                            required:
                            - path
                            type: object
                          type: array
                      type: object
                    emptyDir:
                      properties:
                        medium:
                          type: string
                        sizeLimit:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      type: object
                    ephemeral:
                      properties:
                        volumeClaimTemplate:
                          properties:
                            metadata:
                              type: object
                            spec:
                              properties:
                                accessModes:
                                  items:
                                    type: string
                                  type: array
                                dataSource:
                                  properties:
                                    apiGroup:
                                      type: string
                                    kind:
                                      type: string
                                    name:
                                      type: string
                                  required:
                                  - kind
                                  - name
                                  type: object
                                dataSourceRef:
                                  properties:
                                    apiGroup:
                                      type: string
                                    kind:
                                      type: string
                                    name:
                                      type: string
                                    namespace:
                                      type: string
                                  required:
                                  - kind
                                  - name
                                  type: object
                                resources:
                                  properties:
                                    claims:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                        required:
                                        - name
                                        type: object
                                      type: array
                                      x-kubernetes-list-map-keys:
                                      - name
                                      x-kubernetes-list-type: map
                                    limits:
                                      additionalProperties:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      type: object
                                    requests:
                                      additionalProperties:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      type: object
                                  type: object
                                selector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                storageClassName:
                                  type: string
                                volumeMode:
                                  type: string
                                volumeName:
                                  type: string
                              type: object
                          required:
                          - spec
                          type: object
                      type: object
                    fc:
                      properties:
                        fsType:
                          type: string
                        lun:
                          format: int32
                          type: integer
                        readOnly:
                          type: boolean
                        targetWWNs:
                          items:
                            type: string
                          type: array
                        wwids:
                          items:
                            type: string
                          type: array
                      type: object
                    flexVolume:
                      properties:
                        driver:
                          type: string
                        fsType:
                          type: string
                        options:
                          additionalProperties:
                            type: string
                          type: object
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                      required:
                      - driver
                      type: object
                    flocker:
                      properties:
                        datasetName:
                          type: string
                        datasetUUID:
                          type: string
                      type: object
                    gcePersistentDisk:
                      properties:
                        fsType:
                          type: string
                        partition:
                          format: int32
                          type: integer
                        pdName:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - pdName
                      type: object
                    gitRepo:
                      properties:
                        directory:
                          type: string
                        repository:
                          type: string
                        revision:
                          type: string
                      required:
                      - repository
                      type: object
                    glusterfs:
                      properties:
                        endpoints:
                          type: string
                        path:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - endpoints
                      - path
                      type: object
                    hostPath:
                      properties:
                        path:
                          type: string
                        type:
                          type: string
                      required:
                      - path
                      type: object
                    iscsi:
                      properties:
                        chapAuthDiscovery:
                          type: boolean
                        chapAuthSession:
                          type: boolean
                        fsType:
                          type: string
                        initiatorName:
                          type: string
                        iqn:
                          type: string
                        iscsiInterface:
                          type: string
                        lun:
                          format: int32
                          type: integer
                        portals:
                          items:
                            type: string
                          type: array
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        targetPortal:
                          type: string
                      required:
                      - iqn
                      - lun
                      - targetPortal
                      type: object
                    name:
                      type: string
                    nfs:
                      properties:
                        path:
                          type: string
                        readOnly:
                          type: boolean
                        server:
                          type: string
                      required:
                      - path
                      - server
                      type: object
                    persistentVolumeClaim:
                      properties:
                        claimName:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - claimName
                      type: object
                    photonPersistentDisk:
                      properties:
                        fsType:
                          type: string
                        pdID:
                          type: string
                      required:
                      - pdID
                      type: object
                    portworxVolume:
                      properties:
                        fsType:
                          type: string
                        readOnly:
                          type: boolean
                        volumeID:
                          type: string
                      required:
                      - volumeID
                      type: object
                    projected:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        sources:
                          items:
                            properties:
                              configMap:
                                properties:
                                  items:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                              downwardAPI:
                                properties:
                                  items:
                                    items:
                                      properties:
                                        fieldRef:
                                          properties:
                                            apiVersion:
                                              type: string
                                            fieldPath:
                                              type: string
                                          required:
                                          - fieldPath
                                          type: object
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                        resourceFieldRef:
                                          properties:
                                            containerName:
                                              type: string
                                            divisor:
                                              anyOf:
                                              - type: integer
                                              - type: string
                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              type: string
                                          required:
                                          - resource
                                          type: object
                                      required:
                                      - path
                                      type: object
                                    type: array
                                type: object
                              secret:
                                properties:
                                  items:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                              serviceAccountToken:
                                properties:
                                  audience:
                                    type: string
                                  expirationSeconds:
                                    format: int64
                                    type: integer
                                  path:
                                    type: string
                                required:
                                - path
                                type: object
                            type: object
                          type: array
                      type: object
                    quobyte:
                      properties:
                        group:
                          type: string
                        readOnly:
                          type: boolean
                        registry:
                          type: string
                        tenant:
                          type: string
                        user:
                          type: string
                        volume:
                          type: string
                      required:
                      - registry
                      - volume
                      type: object
                    rbd:
                      properties:
                        fsType:
                          type: string
                        image:
                          type: string
                        keyring:
                          type: string
                        monitors:
                          items:
                            type: string
                          type: array
                        pool:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        user:
                          type: string
                      required:
                      - image
                      - monitors
                      type: object
                    scaleIO:
                      properties:
                        fsType:
                          type: string
                        gateway:
                          type: string
                        protectionDomain:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        sslEnabled:
                          type: boolean
                        storageMode:
                          type: string
                        storagePool:
                          type: string
                        system:
                          type: string
                        volumeName:
                          type: string
                      required:
                      - gateway
                      - secretRef
                      - system
                      type: object
                    secret:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        items:
                          items:
                            properties:
                              key:
                                type: string
                              mode:
                                format: int32
                                type: integer
                              path:
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                        optional:
                          type: boolean
                        secretName:
                          type: string
                      type: object
                    storageos:
                      properties:
                        fsType:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              type: string
                          type: object
                        volumeName:
                          type: string
                        volumeNamespace:
                          type: string
                      type: object
                    vsphereVolume:
                      properties:
                        fsType:
                          type: string
                        storagePolicyID:
                          type: string
                        storagePolicyName:
                          type: string
                        volumePath:
                          type: string
                      required:
                      - volumePath
                      type: object
                  required:
                  - name
                  type: object
                type: array
              workerArgs:
                items:
                  type: string
                type: array
              workerCommand:
                items:
                  type: string
                type: array
              workerCpu:
                anyOf:
                - type: integer
                - type: string
                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                x-kubernetes-int-or-string: true
              workerInstances:
                format: int32
                minimum: 1
                type: integer
              workerMemory:
                anyOf:
                - type: integer
                - type: string
                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                x-kubernetes-int-or-string: true
            required:
            - algorithmName
            - computerConf
            - image
            - jobId
            - workerInstances
            type: object
          status:
            properties:
              componentStates:
                properties:
                  configMap:
                    properties:
                      errorLog:
                        type: string
                      message:
                        type: string
                      name:
                        type: string
                      state:
                        type: string
                    required:
                    - name
                    - state
                    type: object
                  masterJob:
                    properties:
                      errorLog:
                        type: string
                      message:
                        type: string
                      name:
                        type: string
                      state:
                        type: string
                    required:
                    - name
                    - state
                    type: object
                  workerJob:
                    properties:
                      errorLog:
                        type: string
                      message:
                        type: string
                      name:
                        type: string
                      state:
                        type: string
                    required:
                    - name
                    - state
                    type: object
                type: object
              jobState:
                properties:
                  lastSuperstepStat:
                    type: string
                  maxSuperstep:
                    format: int32
                    type: integer
                  superstep:
                    format: int32
                    type: integer
                type: object
              jobStatus:
                type: string
              lastUpdateTime:
                format: date-time
                type: string
            required:
            - jobStatus
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.5.0
  creationTimestamp: null
  name: hugegraphcomputerjobs.operator.hugegraph.apache.org
spec:
  additionalPrinterColumns:
  - JSONPath: .spec.jobId
    name: JobId
    type: string
  - JSONPath: .status.jobStatus
    name: JobStatus
    type: string
  - JSONPath: .status.jobState.superstep
    name: Superstep
    type: integer
  - JSONPath: .status.jobState.maxSuperstep
    name: MaxSuperstep
    type: integer
  - JSONPath: .status.jobState.lastSuperstepStat
    name: SuperstepStat
    type: string
  group: operator.hugegraph.apache.org
  names:
    kind: HugeGraphComputerJob
    listKind: HugeGraphComputerJobList
    plural: hugegraphcomputerjobs
    shortNames:
    - hcjob
    singular: hugegraphcomputerjob
  preserveUnknownFields: false
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            algorithmName:
              type: string
            computerConf:
              additionalProperties:
                type: string
              type: object
            configMapPaths:
              additionalProperties:
                type: string
              type: object
            envFrom:
              items:
                properties:
                  configMapRef:
                    properties:
                      name:
                        type: string
                      optional:
                        type: boolean
                    type: object
                  prefix:
                    type: string
                  secretRef:
                    properties:
                      name:
                        type: string
                      optional:
                        type: boolean
                    type: object
                type: object
              type: array
            envVars:
              items:
                properties:
                  name:
                    type: string
                  value:
                    type: string
                  valueFrom:
                    properties:
                      configMapKeyRef:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          optional:
                            type: boolean
                        required:
                        - key
                        type: object
                      fieldRef:
                        properties:
                          apiVersion:
                            type: string
                          fieldPath:
                            type: string
                        required:
                        - fieldPath
                        type: object
                      resourceFieldRef:
                        properties:
                          containerName:
                            type: string
                          divisor:
                            anyOf:
                            - type: integer
                            - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          resource:
                            type: string
                        required:
                        - resource
                        type: object
                      secretKeyRef:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                          optional:
                            type: boolean
                        required:
                        - key
                        type: object
                    type: object
                required:
                - name
                type: object
              type: array
            image:
              type: string
            jarFile:
              type: string
            jobId:
              type: string
            jvmOptions:
              type: string
            log4jXml:
              type: string
            masterArgs:
              items:
                type: string
              type: array
            masterCommand:
              items:
                type: string
              type: array
            masterCpu:
              anyOf:
              - type: integer
              - type: string
              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
              x-kubernetes-int-or-string: true
            masterMemory:
              anyOf:
              - type: integer
              - type: string
              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
              x-kubernetes-int-or-string: true
            podTemplateSpec:
              x-kubernetes-preserve-unknown-fields: true
            pullPolicy:
              enum:
              - Always
              - Never
              - IfNotPresent
              type: string
            pullSecrets:
              items:
                properties:
                  name:
                    type: string
                type: object
              type: array
            remoteJarUri:
              pattern: ^(http|https):\/\/([\w.]+\/?)\S*$
              type: string
            secretPaths:
              additionalProperties:
                type: string
              type: object
            securityContext:
              properties:
                allowPrivilegeEscalation:
                  type: boolean
                capabilities:
                  properties:
                    add:
                      items:
                        type: string
                      type: array
                    drop:
                      items:
                        type: string
                      type: array
                  type: object
                privileged:
                  type: boolean
                procMount:
                  type: string
                readOnlyRootFilesystem:
                  type: boolean
                runAsGroup:
                  format: int64
                  type: integer
                runAsNonRoot:
                  type: boolean
                runAsUser:
                  format: int64
                  type: integer
                seLinuxOptions:
                  properties:
                    level:
                      type: string
                    role:
                      type: string
                    type:
                      type: string
                    user:
                      type: string
                  type: object
                seccompProfile:
                  properties:
                    localhostProfile:
                      type: string
                    type:
                      type: string
                  required:
                  - type
                  type: object
                windowsOptions:
                  properties:
                    gmsaCredentialSpec:
                      type: string
                    gmsaCredentialSpecName:
                      type: string
                    hostProcess:
                      type: boolean
                    runAsUserName:
                      type: string
                  type: object
              type: object
            volumeMounts:
              items:
                properties:
                  mountPath:
                    type: string
                  mountPropagation:
                    type: string
                  name:
                    type: string
                  readOnly:
                    type: boolean
                  subPath:
                    type: string
                  subPathExpr:
                    type: string
                required:
                - mountPath
                - name
                type: object
              type: array
            volumes:
              items:
                properties:
                  awsElasticBlockStore:
                    properties:
                      fsType:
                        type: string
                      partition:
                        format: int32
                        type: integer
                      readOnly:
                        type: boolean
                      volumeID:
                        type: string
                    required:
                    - volumeID
                    type: object
                  azureDisk:
                    properties:
                      cachingMode:
                        type: string
                      diskName:
                        type: string
                      diskURI:
                        type: string
                      fsType:
                        type: string
                      kind:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - diskName
                    - diskURI
                    type: object
                  azureFile:
                    properties:
                      readOnly:
                        type: boolean
                      secretName:
                        type: string
                      shareName:
                        type: string
                    required:
                    - secretName
                    - shareName
                    type: object
                  cephfs:
                    properties:
                      monitors:
                        items:
                          type: string
                        type: array
                      path:
                        type: string
                      readOnly:
                        type: boolean
                      secretFile:
                        type: string
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      user:
                        type: string
                    required:
                    - monitors
                    type: object
                  cinder:
                    properties:
                      fsType:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      volumeID:
                        type: string
                    required:
                    - volumeID
                    type: object
                  configMap:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      items:
                        items:
                          properties:
                            key:
                              type: string
                            mode:
                              format: int32
                              type: integer
                            path:
                              type: string
                          required:
                          - key
                          - path
                          type: object
                        type: array
                      name:
                        type: string
                      optional:
                        type: boolean
                    type: object
                  csi:
                    properties:
                      driver:
                        type: string
                      fsType:
                        type: string
                      nodePublishSecretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      readOnly:
                        type: boolean
                      volumeAttributes:
                        additionalProperties:
                          type: string
                        type: object
                    required:
                    - driver
                    type: object
                  downwardAPI:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      items:
                        items:
                          properties:
                            fieldRef:
                              properties:
                                apiVersion:
                                  type: string
                                fieldPath:
                                  type: string
                              required:
                              - fieldPath
                              type: object
                            mode:
                              format: int32
                              type: integer
                            path:
                              type: string
                            resourceFieldRef:
                              properties:
                                containerName:
                                  type: string
                                divisor:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                resource:
                                  type: string
                              required:
                              - resource
                              type: object
                          required:
                          - path
                          type: object
                        type: array
                    type: object
                  emptyDir:
                    properties:
                      medium:
                        type: string
                      sizeLimit:
                        anyOf:
                        - type: integer
                        - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    type: object
                  ephemeral:
                    properties:
                      volumeClaimTemplate:
                        properties:
                          metadata:
                            type: object
                          spec:
                            properties:
                              accessModes:
                                items:
                                  type: string
                                type: array
                              dataSource:
                                properties:
                                  apiGroup:
                                    type: string
                                  kind:
                                    type: string
                                  name:
                                    type: string
                                required:
                                - kind
                                - name
                                type: object
                              dataSourceRef:
                                properties:
                                  apiGroup:
                                    type: string
                                  kind:
                                    type: string
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                required:
                                - kind
                                - name
                                type: object
                              resources:
                                properties:
                                  claims:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                      required:
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - name
                                    x-kubernetes-list-type: map
                                  limits:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    type: object
                                  requests:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    type: object
                                type: object
                              selector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                              storageClassName:
                                type: string
                              volumeMode:
                                type: string
                              volumeName:
                                type: string
                            type: object
                        required:
                        - spec
                        type: object
                    type: object
                  fc:
                    properties:
                      fsType:
                        type: string
                      lun:
                        format: int32
                        type: integer
                      readOnly:
                        type: boolean
                      targetWWNs:
                        items:
                          type: string
                        type: array
                      wwids:
                        items:
                          type: string
                        type: array
                    type: object
                  flexVolume:
                    properties:
                      driver:
                        type: string
                      fsType:
                        type: string
                      options:
                        additionalProperties:
                          type: string
                        type: object
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                    required:
                    - driver
                    type: object
                  flocker:
                    properties:
                      datasetName:
                        type: string
                      datasetUUID:
                        type: string
                    type: object
                  gcePersistentDisk:
                    properties:
                      fsType:
                        type: string
                      partition:
                        format: int32
                        type: integer
                      pdName:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - pdName
                    type: object
                  gitRepo:
                    properties:
                      directory:
                        type: string
                      repository:
                        type: string
                      revision:
                        type: string
                    required:
                    - repository
                    type: object
                  glusterfs:
                    properties:
                      endpoints:
                        type: string
                      path:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - endpoints
                    - path
                    type: object
                  hostPath:
                    properties:
                      path:
                        type: string
                      type:
                        type: string
                    required:
                    - path
                    type: object
                  iscsi:
                    properties:
                      chapAuthDiscovery:
                        type: boolean
                      chapAuthSession:
                        type: boolean
                      fsType:
                        type: string
                      initiatorName:
                        type: string
                      iqn:
                        type: string
                      iscsiInterface:
                        type: string
                      lun:
                        format: int32
                        type: integer
                      portals:
                        items:
                          type: string
                        type: array
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      targetPortal:
                        type: string
                    required:
                    - iqn
                    - lun
                    - targetPortal
                    type: object
                  name:
                    type: string
                  nfs:
                    properties:
                      path:
                        type: string
                      readOnly:
                        type: boolean
                      server:
                        type: string
                    required:
                    - path
                    - server
                    type: object
                  persistentVolumeClaim:
                    properties:
                      claimName:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - claimName
                    type: object
                  photonPersistentDisk:
                    properties:
                      fsType:
                        type: string
                      pdID:
                        type: string
                    required:
                    - pdID
                    type: object
                  portworxVolume:
                    properties:
                      fsType:
                        type: string
                      readOnly:
                        type: boolean
                      volumeID:
                        type: string
                    required:
                    - volumeID
                    type: object
                  projected:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      sources:
                        items:
                          properties:
                            configMap:
                              properties:
                                items:
                                  items:
                                    properties:
                                      key:
                                        type: string
                                      mode:
                                        format: int32
                                        type: integer
                                      path:
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            downwardAPI:
                              properties:
                                items:
                                  items:
                                    properties:
                                      fieldRef:
                                        properties:
                                          apiVersion:
                                            type: string
                                          fieldPath:
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                      mode:
                                        format: int32
                                        type: integer
                                      path:
                                        type: string
                                      resourceFieldRef:
                                        properties:
                                          containerName:
                                            type: string
                                          divisor:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          resource:
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                    required:
                                    - path
                                    type: object
                                  type: array
                              type: object
                            secret:
                              properties:
                                items:
                                  items:
                                    properties:
                                      key:
                                        type: string
                                      mode:
                                        format: int32
                                        type: integer
                                      path:
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            serviceAccountToken:
                              properties:
                                audience:
                                  type: string
                                expirationSeconds:
                                  format: int64
                                  type: integer
                                path:
                                  type: string
                              required:
                              - path
                              type: object
                          type: object
                        type: array
                    type: object
                  quobyte:
                    properties:
                      group:
                        type: string
                      readOnly:
                        type: boolean
                      registry:
                        type: string
                      tenant:
                        type: string
                      user:
                        type: string
                      volume:
                        type: string
                    required:
                    - registry
                    - volume
                    type: object
                  rbd:
                    properties:
                      fsType:
                        type: string
                      image:
                        type: string
                      keyring:
                        type: string
                      monitors:
                        items:
                          type: string
                        type: array
                      pool:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      user:
                        type: string
                    required:
                    - image
                    - monitors
                    type: object
                  scaleIO:
                    properties:
                      fsType:
                        type: string
                      gateway:
                        type: string
                      protectionDomain:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      sslEnabled:
                        type: boolean
                      storageMode:
                        type: string
                      storagePool:
                        type: string
                      system:
                        type: string
                      volumeName:
                        type: string
                    required:
                    - gateway
                    - secretRef
                    - system
                    type: object
                  secret:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      items:
                        items:
                          properties:
                            key:
                              type: string
                            mode:
                              format: int32
                              type: integer
                            path:
                              type: string
                          required:
                          - key
                          - path
                          type: object
                        type: array
                      optional:
                        type: boolean
                      secretName:
                        type: string
                    type: object
                  storageos:
                    properties:
                      fsType:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      volumeName:
                        type: string
                      volumeNamespace:
                        type: string
                    type: object
                  vsphereVolume:
                    properties:
                      fsType:
                        type: string
                      storagePolicyID:
                        type: string
                      storagePolicyName:
                        type: string
                      volumePath:
                        type: string
                    required:
                    - volumePath
                    type: object
                required:
                - name
                type: object
              type: array
            workerArgs:
              items:
                type: string
              type: array
            workerCommand:
              items:
                type: string
              type: array
            workerCpu:
              anyOf:
              - type: integer
              - type: string
              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
              x-kubernetes-int-or-string: true
            workerInstances:
              format: int32
              minimum: 1
              type: integer
            workerMemory:
              anyOf:
              - type: integer
              - type: string
              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
              x-kubernetes-int-or-string: true
          required:
          - algorithmName
          - computerConf
          - image
          - jobId
          - workerInstances
          type: object
        status:
          properties:
            componentStates:
              properties:
                configMap:
                  properties:
                    errorLog:
                      type: string
                    message:
                      type: string
                    name:
                      type: string
                    state:
                      type: string
                  required:
                  - name
                  - state
                  type: object
                masterJob:
                  properties:
                    errorLog:
                      type: string
                    message:
                      type: string
                    name:
                      type: string
                    state:
                      type: string
                  required:
                  - name
                  - state
                  type: object
                workerJob:
                  properties:
                    errorLog:
                      type: string
                    message:
                      type: string
                    name:
                      type: string
                    state:
                      type: string
                  required:
                  - name
                  - state
                  type: object
              type: object
            jobState:
              properties:
                lastSuperstepStat:
                  type: string
                maxSuperstep:
                  format: int32
                  type: integer
                superstep:
                  format: int32
                  type: integer
              type: object
            jobStatus:
              type: string
            lastUpdateTime:
              format: date-time
              type: string
          required:
          - jobStatus
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-controller-manager
  namespace: hugegraph-computer-operator-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-leader-election-role
  namespace: hugegraph-computer-operator-system
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-manager-role
rules:
- apiGroups:
  - apps
  resources:
  - deployments
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - apps
  resources:
  - deployments/status
  verbs:
  - get
- apiGroups:
  - apps
  resources:
  - statefulsets
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - apps
  resources:
  - statefulsets/status
  verbs:
  - get
- apiGroups:
  - batch
  resources:
  - jobs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - batch
  resources:
  - jobs/status
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - ""
  resources:
  - events/status
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - namespaces
  verbs:
  - create
  - get
  - update
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - pods/log
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - pods/status
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - services
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - ""
  resources:
  - services/status
  verbs:
  - get
- apiGroups:
  - extensions
  resources:
  - ingresses
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - extensions
  resources:
  - ingresses/status
  verbs:
  - get
- apiGroups:
  - hugegraph.apache.org
  resources:
  - hugegraphcomputerjobs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - hugegraph.apache.org
  resources:
  - hugegraphcomputerjobs/finalizers
  verbs:
  - update
- apiGroups:
  - hugegraph.apache.org
  resources:
  - hugegraphcomputerjobs/status
  verbs:
  - get
  - patch
  - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-metrics-reader
rules:
- nonResourceURLs:
  - /metrics
  verbs:
  - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-proxy-role
rules:
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-leader-election-rolebinding
  namespace: hugegraph-computer-operator-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: hugegraph-computer-operator-leader-election-role
subjects:
- kind: ServiceAccount
  name: hugegraph-computer-operator-controller-manager
  namespace: hugegraph-computer-operator-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-manager-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: hugegraph-computer-operator-manager-role
subjects:
- kind: ServiceAccount
  name: hugegraph-computer-operator-controller-manager
  namespace: hugegraph-computer-operator-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-proxy-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: hugegraph-computer-operator-proxy-role
subjects:
- kind: ServiceAccount
  name: hugegraph-computer-operator-controller-manager
  namespace: hugegraph-computer-operator-system
---
apiVersion: v1
data:
  controller_manager_config.yaml: |
    #
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #    http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
    kind: ControllerManagerConfig
    health:
      healthProbeBindAddress: :9892
    metrics:
      bindAddress: 127.0.0.1:8080
    webhook:
      port: 9443
    leaderElection:
      leaderElect: true
      resourceName: 11f2b593.hugegraph.apache.org
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-manager-config
  namespace: hugegraph-computer-operator-system
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-controller-manager-metrics-service
  namespace: hugegraph-computer-operator-system
spec:
  ports:
  - name: https
    port: 8443
    protocol: TCP
    targetPort: https
  selector:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
    control-plane: controller-manager
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator-etcd
    app.kubernetes.io/version: v1
    service.app: hugegraph-computer-operator-etcd
  name: hugegraph-computer-operator-etcd
  namespace: hugegraph-computer-operator-system
spec:
  clusterIP: None
  ports:
  - name: client
    port: 2379
    protocol: TCP
    targetPort: 2379
  - name: peer
    port: 2380
    protocol: TCP
    targetPort: 2380
  selector:
    app.kubernetes.io/name: hugegraph-computer-operator-etcd
    app.kubernetes.io/version: v1
    service.app: hugegraph-computer-operator-etcd
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  name: hugegraph-computer-operator-webhook-service
  namespace: hugegraph-computer-operator-system
spec:
  ports:
  - port: 443
    protocol: TCP
    targetPort: 9443
  selector:
    control-plane: controller-manager
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator
    app.kubernetes.io/version: v1
    control-plane: controller-manager
  name: hugegraph-computer-operator-controller-manager
  namespace: hugegraph-computer-operator-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: hugegraph-computer-operator
      app.kubernetes.io/version: v1
      control-plane: controller-manager
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: manager
      labels:
        app.kubernetes.io/name: hugegraph-computer-operator
        app.kubernetes.io/version: v1
        control-plane: controller-manager
    spec:
      containers:
      - args:
        - --leader-elect
        command:
        - /manager
        image: hugegraph/hugegraph-computer-operator-manager:latest
        livenessProbe:
          httpGet:
            path: /health
            port: 9892
          initialDelaySeconds: 15
          periodSeconds: 20
        name: manager
        ports:
        - containerPort: 9443
          name: webhook-server
          protocol: TCP
        readinessProbe:
          httpGet:
            path: /ready
            port: 9892
          initialDelaySeconds: 5
          periodSeconds: 10
        resources:
          limits:
            cpu: 500m
            memory: 256Mi
          requests:
            cpu: 10m
            memory: 128Mi
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - ALL
        volumeMounts:
        - mountPath: /tmp/k8s-webhook-server/serving-certs
          name: cert
          readOnly: true
      - args: []
        command:
        - java
        - -jar
        - hugegraph-computer-operator.jar
        env:
        - name: PROBE_PORT
          value: "9892"
        - name: WATCH_NAMESPACE
          value: hugegraph-computer-operator-system
        - name: RECONCILER_COUNT
          value: "6"
        - name: INTERNAL_ETCD_URL
          value: http://hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2379
        - name: LOG_LEVEL
          value: INFO
        - name: AUTO_DESTROY_POD
          value: "true"
        image: hugegraph/hugegraph-computer-operator:latest
        imagePullPolicy: Always
        name: controller
        resources:
          limits:
            cpu: 1000m
            memory: 512Mi
          requests:
            cpu: 250m
            memory: 512Mi
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - ALL
      serviceAccountName: hugegraph-computer-operator-controller-manager
      terminationGracePeriodSeconds: 10
      volumes:
      - name: cert
        secret:
          defaultMode: 420
          secretName: webhook-server-cert
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: hugegraph-computer-operator-etcd
    app.kubernetes.io/version: v1
  name: hugegraph-computer-operator-etcd
  namespace: hugegraph-computer-operator-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: hugegraph-computer-operator-etcd
      app.kubernetes.io/version: v1
      service.app: hugegraph-computer-operator-etcd
  template:
    metadata:
      labels:
        app.kubernetes.io/name: hugegraph-computer-operator-etcd
        app.kubernetes.io/version: v1
        service.app: hugegraph-computer-operator-etcd
    spec:
      containers:
      - command:
        - /bin/sh
        - -ec
        - |
          HOSTNAME=$(hostname)
          etcd --name ${HOSTNAME} \
          --data-dir /var/etcd/data \
          --initial-advertise-peer-urls http://${HOSTNAME}.hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2380 \
          --listen-peer-urls http://0.0.0.0:2380 \
          --listen-client-urls http://0.0.0.0:2379 \
          --advertise-client-urls http://${HOSTNAME}.hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2379 \
          --initial-cluster ${HOSTNAME}=http://${HOSTNAME}.hugegraph-computer-operator-etcd.hugegraph-computer-operator-system:2380 \
          --initial-cluster-state new
        image: quay.io/coreos/etcd:v3.5.0
        livenessProbe:
          exec:
            command:
            - /bin/sh
            - -ec
            - ETCDCTL_API=3 etcdctl endpoint status
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 60
          successThreshold: 1
          timeoutSeconds: 10
        name: hugegraph-computer-operator-etcd
        ports:
        - containerPort: 2379
          name: client
        - containerPort: 2380
          name: peer
        readinessProbe:
          exec:
            command:
            - /bin/sh
            - -ec
            - ETCDCTL_API=3 etcdctl endpoint status
          failureThreshold: 3
          initialDelaySeconds: 1
          periodSeconds: 5
          successThreshold: 1
          timeoutSeconds: 5
      hostname: hugegraph-computer-operator-etcd-0
      subdomain: hugegraph-computer-operator-etcd
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: hugegraph-computer-operator-serving-cert
  namespace: hugegraph-computer-operator-system
spec:
  dnsNames:
  - hugegraph-computer-operator-webhook-service.hugegraph-computer-operator-system.svc
  - hugegraph-computer-operator-webhook-service.hugegraph-computer-operator-system.svc.cluster.local
  issuerRef:
    kind: Issuer
    name: hugegraph-computer-operator-selfsigned-issuer
  secretName: webhook-server-cert
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: hugegraph-computer-operator-selfsigned-issuer
  namespace: hugegraph-computer-operator-system
spec:
  selfSigned: {}
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: hugegraph-computer-operator-system/hugegraph-computer-operator-serving-cert
  name: hugegraph-computer-operator-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: hugegraph-computer-operator-webhook-service
      namespace: hugegraph-computer-operator-system
      path: /mutate-operator-hugegraph-apache-org-v1-hugegraphcomputerjob
  failurePolicy: Fail
  name: mhugegraphcomputerjob.kb.io
  rules:
  - apiGroups:
    - operator.hugegraph.apache.org
    apiVersions:
    - v1
    operations:
    - CREATE
    - UPDATE
    resources:
    - hugegraphcomputerjobs
  sideEffects: None
---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: hugegraph-computer-operator-system/hugegraph-computer-operator-serving-cert
  name: hugegraph-computer-operator-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1
  clientConfig:
    service:
      name: hugegraph-computer-operator-webhook-service
      namespace: hugegraph-computer-operator-system
      path: /validate-operator-hugegraph-apache-org-v1-hugegraphcomputerjob
  failurePolicy: Fail
  name: vhugegraphcomputerjob.kb.io
  rules:
  - apiGroups:
    - operator.hugegraph.apache.org
    apiVersions:
    - v1
    operations:
    - CREATE
    - UPDATE
    resources:
    - hugegraphcomputerjobs
  sideEffects: None
