{
  "$schema": "http://json-schema.org/schema",
  "$id": "SchematicsHelm",
  "title": "helm Options Schema",
  "type": "object",
  "properties": {
    "serviceName": {
      "type": "string",
      "description": "service name to deploy on kubernetes",
      "x-prompt": "What is the name of the service you want to config deployment?"
    },
    "imageName": {
      "type": "string",
      "description": "docker image name to deploy on kubernetes",
      "x-prompt": "What image do you want to config deployment?"
    },
    "containerPort": {
      "type": "number",
      "description": "port to expose on the container",
      "x-prompt": "What port do you want to expose on the container?",
      "default": 4000
    },
    "portProtocol": {
      "type": "string",
      "description": "protocol to expose on the container",
      "x-prompt": "What protocol do you want to expose on the container?",
      "default": "TCP"
    },
    "livenessProbePath": {
      "type": "string",
      "description": "path to check liveness probe",
      "x-prompt": "What path do you want to check liveness probe?",
      "default": "/"
    },
    "readinessProbePath": {
      "type": "string",
      "description": "path to check readyness probe",
      "x-prompt": "What path do you want to check readyness probe?",
      "default": "/"
    },
    "resourcesLimitCpu": {
      "type": "number",
      "description": "max cpu used by a pod",
      "x-prompt": "What is the CPU limit per pod (specified in 'm' units)?",
      "default": 100
    },
    "resourcesLimitMemory": {
      "type": "number",
      "description": "max memory used by a pod",
      "x-prompt": "What is the memory limit per pod (specified in 'Mi' units)?",
      "default": 128
    },
    "resourcesRequestCpu": {
      "type": "number",
      "description": "requested cpu by a pod to be launched",
      "x-prompt": "What is the CPU requested per pod (specified in 'm' units)?",
      "default": 100
    },
    "resourcesRequestMemory": {
      "type": "number",
      "description": "requested memory by a pod to be launched",
      "x-prompt": "What is the memory requested per pod (specified in 'Mi' units)?",
      "default": 128
    },
    "autoscalingEnabled": {
      "type": "boolean",
      "description": "autoscaling feature on pods",
      "x-prompt": "Is autoscaling enabled in this pod?",
      "default": true
    },
    "autoscalingReplicasMin": {
      "type": "number",
      "description": "Minimum number of autoscaled pods",
      "x-prompt": "What is the minimum number of autoscaled pods?",
      "default": 1
    },
    "autoscalingReplicasMax": {
      "type": "number",
      "description": "Maximum number of autoscaled pods",
      "x-prompt": "What is the maximum number of autoscaled pods?",
      "default": 5
    },
    "autoscalingTargetCpu": {
      "type": "number",
      "description": "Target cpu to enable pods autoscaling",
      "x-prompt": "What is the target percentage cpu to autoscale pods?",
      "default": 75
    },
    "ingressController": {
      "type": "string",
      "description": "Ingress controller to be used",
      "x-prompt": {
        "message": "What ingress controller do you want to use?",
        "type": "list",
        "items": [
          {
            "value": "generic",
            "description": "Generic ingress controller"
          },
          {
            "value": "traefik",
            "description": "Traefik ingress controller"
          }
        ]
      },
      "default": "generic"
    },
    "tlsCertManager": {
      "type": "string",
      "description": "TLS certificate manager to be used",
      "x-prompt": {
        "message": "What tls cert manager do you want to use?",
        "type": "list",
        "items": [
          {
            "value": "none",
            "description": "No tls cert manager"
          },
          {
            "value": "cert-manager",
            "description": "cert-manager"
          }
        ]
      },
      "default": "none"
    },
    "domainName": {
      "type": "string",
      "description": "Domain name for the service",
      "x-prompt": "What damain name do you want to provide to the service?",
      "default": "chart-example.local"
    }
  },
  "required": ["serviceName", "imageName"]
}
