{
  "additionalProperties": false,
  "description": "Specify basic hardware resource requirements.\n\n\"min\" is the minimum amount of a resource that must be reserved to\nschedule a job. If \"min\" cannot be satisfied, the job should not\nbe run.\n\n\"max\" is the maximum amount of a resource that the job shall be\nallocated. If a node has sufficient resources, multiple jobs may\nbe scheduled on a single node provided each job's \"max\" resource\nrequirements are met. If a job attempts to exceed its resource\nallocation, an implementation may deny additional resources, which\nmay result in job failure.\n\nIf both \"min\" and \"max\" are specified, an implementation may\nchoose to allocate any amount between \"min\" and \"max\", with the\nactual allocation provided in the `runtime` object.\n\nIf \"min\" is specified but \"max\" is not, then \"max\" == \"min\"\nIf \"max\" is specified by \"min\" is not, then \"min\" == \"max\".\n\nIt is an error if max < min.\n\nIt is an error if the value of any of these fields is negative.\n\nIf neither \"min\" nor \"max\" is specified for a resource, use the default values below\n(see also: https://www.commonwl.org/v1.2/CommandLineTool.html#ResourceRequirement).\n",
  "properties": {
    "class": {
      "enum": [
        "ResourceRequirement"
      ],
      "type": "string",
      "x-jsonld-id": "@type"
    },
    "coresMin": {
      "default": 1,
      "description": "Minimum reserved number of CPU cores (default is 1).\n\nMay be a fractional value to indicate to a scheduling algorithm that one core can be allocated to\nmultiple jobs. For example, a value of 0.25 indicates that up to 4 jobs\nmay run in parallel on 1 core. A value of 1.25 means that up to 3 jobs\ncan run on a 4 core system (4/1.25 ~ 3).\n\nProcesses can only share a core allocation if the sum of each of their 'ramMax', 'tmpdirMax', and\n'outdirMax' requests also do not exceed the capacity of the node.\n\nProcesses sharing a core must have the same level of isolation (typically a container\nor VM) that they would normally have.\n\nThe reported number of CPU cores reserved for the process, which is available to expressions\non the 'CommandLineTool' as 'runtime.cores', must be a non-zero integer, and may be calculated by\nrounding up the cores request to the next whole number.\n\nScheduling systems may allocate fractional CPU resources by setting quotas or scheduling weights.\nScheduling systems that do not support fractional CPUs may round up the request to the next whole number.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/coresMin"
    },
    "coresMax": {
      "description": "Maximum reserved number of CPU cores.\nSee 'coresMin' for discussion about fractional CPU requests.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/coresMax"
    },
    "ramMin": {
      "default": 256,
      "description": "Minimum reserved RAM in mebibytes (2**20) (default is 256).\n\nMay be a fractional value. If so, the actual RAM request must be rounded up\nto the next whole number.\n\nThe reported amount of RAM reserved for the process, which is available to\nexpressions on the 'CommandLineTool' as 'runtime.ram', must be a non-zero integer.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/ramMin"
    },
    "ramMax": {
      "description": "Maximum reserved RAM in mebibytes (2**20).\nSee 'ramMin' for discussion about fractional RAM requests.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/ramMax"
    },
    "outdirMin": {
      "default": 1024,
      "description": "Minimum reserved filesystem based storage for the designated output\ndirectory in mebibytes (2**20).\n\nMay be a fractional value. If so, the actual storage request must be rounded\nup to the next whole number.\n\nThe reported amount of storage reserved for the process, which is available\nto expressions on the 'CommandLineTool' as 'runtime.outdirSize', must be a non-zero integer.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/outdirMin"
    },
    "outdirMax": {
      "description": "Maximum reserved filesystem based storage for the designated output\ndirectory in mebibytes (2**20).\nSee 'outdirMin' for discussion about fractional storage requests.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/outdirMax"
    },
    "tmpdirMin": {
      "default": 1024,
      "description": "Minimum reserved filesystem based storage for the designated temporary\ndirectory in mebibytes (2**20).\n\nMay be a fractional value. If so, the actual storage request must be rounded\nup to the next whole number.\n\nThe reported amount of storage reserved for the process, which is available\nto expressions on the 'CommandLineTool' as 'runtime.tmpdirSize', must be a non-zero integer.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/tmpdirMin"
    },
    "tmpdirMax": {
      "description": "Maximum reserved filesystem based storage for the designated temporary\ndirectory in mebibytes (2**20).\nSee 'tmpdirMin' for discussion about fractional storage requests.\n",
      "oneOf": [
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/ResourceQuantityOrFractional/schema.json"
        },
        {
          "$ref": "https://ogcincubator.github.io/bblocks-cwl/build/annotated/cwl/v1_2_1/CWLExpression/schema.json"
        }
      ],
      "x-jsonld-id": "https://w3id.org/cwl/cwl#ResourceRequirement/tmpdirMax"
    }
  },
  "title": "ResourceRequirement",
  "type": "object",
  "x-jsonld-prefixes": {
    "cwl": "https://w3id.org/cwl/cwl#"
  }
}