{
  "$schema": "http://json-schema.org/schema#",
  "type": "object",
  "properties": {
    "resources": {
      "description": "Your service will have at least the requested resources and never more than its limits. No limit for a resource and you can consume everything left on the host machine.",
      "type": "object",
      "properties": {
        "requests": {
          "description": "Guaranteed resources",
          "type": "object",
          "properties": {
            "cpu": {
              "description": "The amount of cpu guaranteed",
              "title": "CPU",
              "type": "string",
              "default": "100m",
              "render": "slider",
              "sliderMin": 50,
              "sliderMax": 40000,
              "sliderStep": 50,
              "sliderUnit": "m",
              "sliderExtremity": "down",
              "sliderExtremitySemantic": "guaranteed",
              "sliderRangeId": "cpu",
              "x-onyxia": {
                "overwriteDefaultWith": "region.resources.cpuRequest",
                "useRegionSliderConfig": "cpu"
              }
            },
            "memory": {
              "description": "The amount of memory guaranteed",
              "title": "memory",
              "type": "string",
              "default": "2Gi",
              "render": "slider",
              "sliderMin": 1,
              "sliderMax": 200,
              "sliderStep": 1,
              "sliderUnit": "Gi",
              "sliderExtremity": "down",
              "sliderExtremitySemantic": "guaranteed",
              "sliderRangeId": "memory",
              "x-onyxia": {
                "overwriteDefaultWith": "region.resources.memoryRequest",
                "useRegionSliderConfig": "memory"
              }
            }
          }
        },
        "limits": {
          "description": "max resources",
          "type": "object",
          "properties": {
            "cpu": {
              "description": "The maximum amount of cpu",
              "title": "CPU",
              "type": "string",
              "default": "30000m",
              "render": "slider",
              "sliderMin": 50,
              "sliderMax": 40000,
              "sliderStep": 50,
              "sliderUnit": "m",
              "sliderExtremity": "up",
              "sliderExtremitySemantic": "Maximum",
              "sliderRangeId": "cpu",
              "x-onyxia": {
                "overwriteDefaultWith": "region.resources.cpuLimit",
                "useRegionSliderConfig": "cpu"
              }
            },
            "memory": {
              "description": "The maximum amount of memory",
              "title": "Memory",
              "type": "string",
              "default": "50Gi",
              "render": "slider",
              "sliderMin": 1,
              "sliderMax": 200,
              "sliderStep": 1,
              "sliderUnit": "Gi",
              "sliderExtremity": "up",
              "sliderExtremitySemantic": "Maximum",
              "sliderRangeId": "memory",
              "x-onyxia": {
                "overwriteDefaultWith": "region.resources.memoryLimit",
                "useRegionSliderConfig": "memory"
              }
            }
          }
        }
      }
    },
    "discovery": {
      "description": "configure your service to autodetect some ressources.",
      "type": "object",
      "properties": {
        "hive": {
          "type": "boolean",
          "title": "Enable hive metastore discovery",
          "description": "discover your hive metastore service",
          "default": true
        },
        "mlflow": {
          "type": "boolean",
          "title": "Enable mlflow discovery",
          "description": "discover your mlflow service",
          "default": true
        },
        "metaflow": {
          "type": "boolean",
          "title": "Enable metaflow discovery",
          "description": "discover your metaflow service",
          "default": true
        }
      }
    },
    "service": {
      "description": "spark-history specific configuration",
      "type": "object",
      "properties": {
        "image": {
          "description": "image docker",
          "type": "object",
          "properties": {
            "pullPolicy": {
              "type": "string",
              "description": "option when pulling the docker image",
              "default": "IfNotPresent",
              "enum": [
                "IfNotPresent",
                "Always",
                "Never"
              ]
            },
            "version": {
              "description": "vscode supported version",
              "type": "string",
              "default": "inseefrlab/onyxia-vscode-python:py3.11.6",
              "listEnum": [
                "inseefrlab/onyxia-vscode-python:py3.11.6",
                "inseefrlab/onyxia-vscode-python:py3.10.13"
              ],
              "render": "list",
              "hidden": {
                "value": true,
                "path": "service/image/custom/enabled"
              }
            },
            "custom": {
              "description": "use a custom vscode docker image",
              "type": "object",
              "properties": {
                "enabled": {
                  "title": "custom image",
                  "type": "boolean",
                  "description": "use a custom vscode docker images",
                  "default": false
                },
                "version": {
                  "description": "vscode unsupported version",
                  "type": "string",
                  "default": "inseefrlab/onyxia-vscode-python:py3.11.6",
                  "hidden": {
                    "value": false,
                    "path": "service/image/custom/enabled"
                  }
                }
              }
            }
          }
        }
      }
    },
    "persistence": {
      "description": "Configuration for persistence",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Create a persistent volume",
          "default": true
        },
        "size": {
          "type": "string",
          "title": "Persistent volume size",
          "description": "Size of the persistent volume",
          "default": "10Gi",
          "form": true,
          "render": "slider",
          "sliderMin": 1,
          "sliderMax": 100,
          "sliderStep": 1,
          "sliderUnit": "Gi",
          "x-onyxia": {
            "overwriteDefaultWith": "region.resources.disk",
            "useRegionSliderConfig": "disk"
          },
          "hidden": {
            "value": false,
            "path": "persistence/enabled"
          }
        }
      }
    },
    "security": {
      "description": "security specific configuration",
      "type": "object",
      "properties": {
        "password": {
          "type": "string",
          "title": "Password for your service",
          "description": "Password for your service"
        }
      }
    }
  }
}
