diff --git a/cray/modules/bos/swagger3.json b/cray/modules/bos/swagger3.json index 975fdb1..5e2d770 100644 --- a/cray/modules/bos/swagger3.json +++ b/cray/modules/bos/swagger3.json @@ -1,9 +1,9 @@ { - "openapi": "3.0.2", + "openapi": "3.0.3", "info": { "title": "Boot Orchestration Service", - "version": "0.0.0-api", - "description": "The Boot Orchestration Service (BOS) provides coordinated provisioning actions\nover defined hardware sets to enable boot, reboot, shutdown, configuration and\nstaging for specified hardware subsets. These provisioning actions apply state\nthrough numerous system management APIs at the request of system administrators\nfor managed product environments.\n\nThe default content type for the BOS API is \"application/json\". Unsuccessful\nAPI calls return a content type of \"application/problem+json\" as per RFC 7807.\n\n## Resources\n\n\n### /sessiontemplate\n\nA session template sets the operational context of which nodes to operate on for\nany given set of nodes. It is largely comprised of one or more boot\nsets and their associated software configuration.\n\nA boot set defines a list of nodes, the image you want to boot/reboot the nodes with,\nkernel parameters to use to boot the nodes, and additional configuration management\nframework actions to apply during node bring up.\n\n### /session\n\nA BOS session applies a provided action to the nodes defined in a session\ntemplate.\n\n## Workflow\n\n\n### Create a New Session\n\n#### GET /sessiontemplate\n\nList available session templates.\nNote the *name* which uniquely identifies each session template.\nThis value can be used to create a new session later,\nif specified in the request body of POST /session.\n\n#### POST /sessiontemplate\n\nIf no session template pre-exists that satisfies requirements,\nthen create a new session template. *name* uniquely identifies the\nsession template.\nThis value can be used to create a new session later,\nif specified in the request body of POST /session.\n\n#### POST /session\n\nSpecify template_name and an\noperation to create a new session.\nThe template_name corresponds to the session template *name*.\nA new session is launched as a result of this call.\n\nA limit can also be specified to narrow the scope of the session. The limit\ncan consist of nodes, groups, or roles in a comma-separated list.\nMultiple groups are treated as separated by OR, unless \"&\" is added to\nthe start of the component, in which case this becomes an AND. Components\ncan also be preceded by \"!\" to exclude them.\n\nNote, the response from a successful session launch contains *links*.\nWithin *links*, *href* is a string that uniquely identifies the session.\n*href* is constructed using the session template name and a generated UUID.\nUse the entire *href* string as the path parameter *session_id*\nto uniquely identify a session in for the /session/{session_id}\nendpoint.\n\n\n#### GET /session/{session_id}\n\nGet session details by session id.\n\nList all in progress and completed sessions.\n\n\n## Interactions with Other APIs\n\n\nBOS works in concert with Image Management Service (IMS) to access boot images,\nand if *enable_cfs* is true then\nBOS will invoke CFS to configure the compute nodes.\n\n\nAll boot images specified via the session template, must be available via IMS.\n" + "version": "2.8.0", + "description": "The Boot Orchestration Service (BOS) provides coordinated provisioning actions\nover defined hardware sets to enable boot, reboot, shutdown, configuration and\nstaging for specified hardware subsets. These provisioning actions apply state\nthrough numerous system management APIs at the request of system administrators\nfor managed product environments.\n\nThe default content type for the BOS API is \"application/json\". Unsuccessful\nAPI calls return a content type of \"application/problem+json\" as per RFC 7807.\n\n## Resources\n\n\n### Session Template\n\nA Session Template sets the operational context of which nodes to operate on for\nany given set of nodes. It is largely comprised of one or more boot\nsets and their associated software configuration.\n\nA Boot Set defines a list of nodes, the image you want to boot/reboot the nodes with,\nkernel parameters to use to boot the nodes, and additional configuration management\nframework actions to apply during node bring up.\n\n### Session\n\nA BOS Session applies a provided action to the nodes defined in a Session Template.\n\n\n## Workflow: Create a New Session\n\n1. Choose the Session Template to use.\n\n Session Templates which do not belong to a tenant are uniquely identified by their\n names. All Session Templates that belong to a given tenant are uniquely identified\n by their names, but may share names with Session Templates that belong to other\n tenants or that do not belong to a tenant.\n\n a. List available Session Templates.\n\n GET /v2/sessiontemplates\n\n b. Create a new Session Template if desired.\n\n PUT /v2/sessiontemplate/{template_name}\n\n If no Session Template exists that satisfies requirements,\n then create a new Session Template.\n This Session Template can be used to create a new Session later.\n\n2. Create the Session.\n\n POST /v2/sessions\n\n Specify template_name and an operation to create a new Session.\n The template_name corresponds to the Session Template *name*.\n A new Session is launched as a result of this call (in the case of\n /v2/sessions, the option to stage but not begin the Session also exists).\n\n A limit can also be specified to narrow the scope of the Session. The limit\n can consist of nodes, groups, or roles in a comma-separated list.\n Multiple groups are treated as separated by OR, unless \"&\" is added to\n the start of the component, in which case this becomes an AND. Components\n can also be preceded by \"!\" to exclude them.\n\n Note, the response from a successful Session launch contains *links*.\n Within *links*, *href* is a string that uniquely identifies the Session.\n *href* is constructed using the Session Template name and a generated UUID.\n Use the entire *href* string as the path parameter *session_id*\n to uniquely identify a Session.\n\n3. Get details on the Session.\n\n GET /v2/sessions/{session_id}\n\n\n## Interactions with Other APIs\n\n### Configuration Framework Service (CFS)\n\nIf *enable_cfs* is true in a Session Template, then BOS will invoke CFS to\nconfigure the target nodes during *boot* or *reboot* operations.\n\n### Hardware State Manager (HSM)\n\nIn some situations BOS checks HSM to determine if a node has been disabled.\n\n### Image Management Service (IMS)\n\nBOS works in concert with IMS to access boot images.\nAll boot images specified via the Session Template must be available via IMS.\n" }, "servers": [ { @@ -17,6 +17,109 @@ ], "components": { "schemas": { + "AgeString": { + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 + }, + "BootInitrdPath": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + }, + "BootKernelPath": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "BootManifestPath": { + "type": "string", + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 + }, + "BootKernelParameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "BootSetEtag": { + "type": "string", + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 + }, + "BootSetName": { + "type": "string", + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true + }, + "BootSetRootfsProvider": { + "type": "string", + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 + }, + "BootSetRootfsProviderPassthrough": { + "type": "string", + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 + }, + "BootSetType": { + "type": "string", + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 + }, + "CfsConfiguration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + }, + "EmptyString": { + "type": "string", + "description": "An empty string value.", + "enum": [ + "" + ], + "maxLength": 0 + }, + "EmptyStringNullable": { + "type": "string", + "description": "An empty string value.", + "enum": [ + "" + ], + "nullable": true, + "maxLength": 0 + }, + "EnableCfs": { + "type": "boolean", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", + "default": true + }, + "HardwareComponentName": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + }, "Healthz": { "description": "Service health status", "type": "object", @@ -30,50 +133,112 @@ }, "additionalProperties": false }, - "Version": { - "description": "Version data", + "Link": { + "description": "Link to other resources", "type": "object", "properties": { - "major": { - "type": "integer" - }, - "minor": { - "type": "integer" - }, - "patch": { - "type": "integer" + "href": { + "type": "string" }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } + "rel": { + "type": "string" } }, "additionalProperties": false }, + "LinkList": { + "description": "List of links to other resources", + "type": "array", + "items": { + "description": "Link to other resources", + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "rel": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "LinkListReadOnly": { + "description": "List of links to other resources", + "type": "array", + "readOnly": true, + "items": { + "description": "Link to other resources", + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "rel": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "NodeList": { + "type": "array", + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", + "minItems": 1, + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } + }, + "NodeGroupList": { + "type": "array", + "description": "Node group list. Allows actions against associated nodes by logical groupings.", + "minItems": 1, + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "NodeRoleList": { + "type": "array", + "description": "Node role list. Allows actions against nodes with associated roles.", + "minItems": 1, + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } + }, "ProblemDetails": { "description": "An error response for RFC 7807 problem details.", "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -82,490 +247,551 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, "additionalProperties": false }, - "Link": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false + "SessionLimit": { + "type": "string", + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" + }, + "SessionTemplateDescription": { + "type": "string", + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 + }, + "SessionTemplateName": { + "type": "string", + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, - "V1CfsParameters": { + "TenantName": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 + }, + "Version": { + "description": "Version data", "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { + "major": { "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" + "pattern": "^(0|[1-9][0-9]*)$" }, - "commit": { + "minor": { "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" + "pattern": "^(0|[1-9][0-9]*)$" }, - "playbook": { + "patch": { "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" + "pattern": "^(0|[1-9][0-9]*)$" }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" + "links": { + "description": "List of links to other resources", + "type": "array", + "items": { + "description": "Link to other resources", + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "rel": { + "type": "string" + } + }, + "additionalProperties": false + } } }, "additionalProperties": false }, - "V1GenericMetadata": { + "V2TenantName": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 + }, + "V2CfsParameters": { "type": "object", - "description": "The status metadata\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { + "configuration": { "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, - "V1NodeList": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - }, - "V1PhaseCategoryStatus": { + "V2SessionTemplate": { "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - }, - "V1PhaseStatus": { - "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { + "tenant": { "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - }, - "V1BootSetStatus": { - "type": "object", - "description": "The status for a Boot Set. It as a list of the phase statuses for the Boot Set.\n\n## Link Relationships\n\n* self : The session object\n* phase : A phase of the boot set\n", - "properties": { - "name": { + "description": { "type": "string", + "description": "An optional description for the Session Template.", "minLength": 1, - "description": "Name of the Boot Set", - "example": "Boot-Set" + "maxLength": 1023 }, - "session": { - "type": "string", - "description": "Session ID", - "example": "Session-ID" + "enable_cfs": { + "type": "boolean", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", + "default": true }, - "metadata": { + "cfs": { "type": "object", - "description": "The status metadata\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { + "configuration": { "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, - "phases": { - "type": "array", - "items": { + "boot_sets": { + "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, + "additionalProperties": { + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", "properties": { "name": { "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true + }, + "path": { + "type": "string", + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, - "metadata": { + "cfs": { "type": "object", - "description": "The status metadata\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { + "configuration": { "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } + "type": { + "type": "string", + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 + }, + "etag": { + "type": "string", + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "node_list": { + "type": "array", + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", + "minItems": 1, + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 } }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } + "node_roles_groups": { + "type": "array", + "description": "Node role list. Allows actions against nodes with associated roles.", + "minItems": 1, + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } + }, + "node_groups": { + "type": "array", + "description": "Node group list. Allows actions against associated nodes by logical groupings.", + "minItems": 1, + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] + }, + "rootfs_provider": { + "type": "string", + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 + }, + "rootfs_provider_passthrough": { + "type": "string", + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } - } + }, + "additionalProperties": false, + "required": [ + "path", + "type" + ] } }, "links": { + "description": "List of links to other resources", "type": "array", + "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, "additionalProperties": false } } - } + }, + "additionalProperties": false, + "required": [ + "boot_sets" + ] + }, + "V2SessionTemplateValidation": { + "description": "Message describing errors or incompleteness in a Session Template.\n", + "type": "string" + }, + "V2SessionName": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, - "V1SessionStatus": { + "V2SessionOperation": { + "type": "string", + "enum": [ + "boot", + "reboot", + "shutdown" + ], + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" + }, + "V2SessionCreate": { + "description": "A Session Creation object. A UUID name is generated if a name is not provided. The limit parameter is\nrequired if the session_limit_required option is true.\n", "type": "object", - "description": "The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.\n## Link Relationships\n\n* self : The session object\n* boot sets: URL to access the Boot Set status\n", "properties": { - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false + "name": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, - "boot_sets": { - "description": "The boot sets in the Session\n", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 + "operation": { + "type": "string", + "enum": [ + "boot", + "reboot", + "shutdown" + ], + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, - "id": { + "template_name": { "type": "string", - "description": "Session ID" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } + "limit": { + "type": "string", + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" + }, + "stage": { + "type": "boolean", + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n", + "default": false + }, + "include_disabled": { + "type": "boolean", + "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n", + "default": false } - } + }, + "required": [ + "operation", + "template_name" + ], + "additionalProperties": false + }, + "V2SessionStatusLabel": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." + }, + "V2SessionStartTime": { + "type": "string", + "description": "When the Session was created.", + "maxLength": 127 }, - "V1BootSet": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", + "V2SessionEndTime": { + "type": "string", + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 + }, + "V2SessionStatus": { "type": "object", + "description": "Information on the status of a Session.\n", "properties": { - "name": { + "start_time": { "type": "string", - "description": "The Boot Set name.\n" + "description": "When the Session was created.", + "maxLength": 127 }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" + "end_time": { + "type": "string", + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" + "status": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." + }, + "error": { + "type": "string", + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 + } + }, + "additionalProperties": false + }, + "V2BootSet": { + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 + }, + "cfs": { + "type": "object", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", + "properties": { + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + } + }, + "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -574,1312 +800,865 @@ "type" ] }, - "V1SessionTemplate": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } + "V2SessionTemplateArray": { + "description": "An array of Session Templates.", + "type": "array", + "items": { + "type": "object", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 + }, + "description": { + "type": "string", + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 + }, + "enable_cfs": { + "type": "boolean", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", + "default": true + }, + "cfs": { "type": "object", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { + "configuration": { "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + } + }, + "additionalProperties": false + }, + "boot_sets": { + "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, + "additionalProperties": { + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" + "path": { + "type": "string", + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "cfs": { + "type": "object", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", + "properties": { + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + } + }, + "additionalProperties": false + }, + "type": { + "type": "string", + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 + }, + "etag": { + "type": "string", + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "node_list": { + "type": "array", + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", + "minItems": 1, + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } + }, + "node_roles_groups": { + "type": "array", + "description": "Node role list. Allows actions against nodes with associated roles.", + "minItems": 1, + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } + }, + "node_groups": { + "type": "array", + "description": "Node group list. Allows actions against associated nodes by logical groupings.", + "minItems": 1, + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] + }, + "rootfs_provider": { + "type": "string", + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 + }, + "rootfs_provider_passthrough": { + "type": "string", + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 + } }, - "node_groups": { - "type": "array", - "items": { + "additionalProperties": false, + "required": [ + "path", + "type" + ] + } + }, + "links": { + "description": "List of links to other resources", + "type": "array", + "readOnly": true, + "items": { + "description": "Link to other resources", + "type": "object", + "properties": { + "href": { "type": "string" }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" + "rel": { + "type": "string" + } }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] + "additionalProperties": false + } } }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "name" - ], - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] + } }, - "V1Session": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "V2Session": { + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { - "operation": { + "name": { "type": "string", - "description": "A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation.\nOperation -- An operation to perform on nodes in this session.\n\n Boot Boot nodes that are off.\n\n Configure Reconfigure the nodes using the Configuration Framework\n Service (CFS).\n\n Reboot Gracefully power down nodes that are on and then power\n them back up.\n\n Shutdown Gracefully power down nodes that are on.\n", - "pattern": "^(?i)boot|configure|reboot|shutdown$" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, - "templateUuid": { + "tenant": { "type": "string", - "description": "DEPRECATED - use templateName", - "example": "my-session-template", - "format": "string" + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, - "templateName": { + "operation": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "enum": [ + "boot", + "reboot", + "shutdown" + ], + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, - "job": { + "template_name": { "type": "string", - "maxLength": 64, - "readOnly": true, - "description": "The identity of the Kubernetes job that is created to handle the session.\n", - "example": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "operation" - ], - "additionalProperties": false - }, - "V1NodeChangeList": { - "type": "object", - "description": "The information used to update the status of a node list. It moves nodes from\none category to another within a phase.\n", - "properties": { - "phase": { - "type": "string", - "example": "Boot" + "stage": { + "type": "boolean", + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" }, - "source": { + "components": { "type": "string", - "example": "in_progress" + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, - "destination": { - "type": "string", - "example": "Succeeded" + "include_disabled": { + "type": "boolean", + "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } + "status": { + "type": "object", + "description": "Information on the status of a Session.\n", + "properties": { + "start_time": { + "type": "string", + "description": "When the Session was created.", + "maxLength": 127 + }, + "end_time": { + "type": "string", + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 + }, + "status": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." + }, + "error": { + "type": "string", + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 + } + }, + "additionalProperties": false } }, "additionalProperties": false, "required": [ - "phase", - "source", - "destination", - "node_list" + "name", + "operation", + "template_name" ] }, - "V1NodeErrorsList": { + "V2SessionUpdate": { + "description": "A Session update object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "components": { "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 + }, + "status": { + "type": "object", + "description": "Information on the status of a Session.\n", + "properties": { + "start_time": { + "type": "string", + "description": "When the Session was created.", + "maxLength": 127 + }, + "end_time": { + "type": "string", + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 + }, + "status": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." + }, + "error": { + "type": "string", + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 + } + }, + "additionalProperties": false } - } + }, + "additionalProperties": false }, - "V1UpdateRequestNodeChangeList": { - "description": "This is the payload sent during an update request. It contains\nupdates to which categories nodes are in.\n", + "V2SessionArray": { + "description": "An array of Sessions.", "type": "array", "items": { + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { - "update_type": { - "description": "The type of update data", - "pattern": "NodeChangeList", - "type": "string" + "name": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, - "phase": { - "description": "The phase that this data belongs to. If blank, it belongs to\nthe Boot Set itself, which only applies to the GenericMetadata type.\n", - "pattern": "(?i)shutdown|boot|configure", - "type": "string" + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, - "data": { - "type": "object", - "description": "The information used to update the status of a node list. It moves nodes from\none category to another within a phase.\n", - "properties": { - "phase": { - "type": "string", - "example": "Boot" - }, - "source": { - "type": "string", - "example": "in_progress" - }, - "destination": { - "type": "string", - "example": "Succeeded" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "phase", - "source", - "destination", - "node_list" - ] - } - } - } - }, - "V1UpdateRequestNodeErrorsList": { - "description": "This is the payload sent during an update request. It contains\nupdates to which errors have occurred and which nodes encountered those errors\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "update_type": { - "description": "The type of update data", - "pattern": "NodeErrorsList", - "type": "string" + "operation": { + "type": "string", + "enum": [ + "boot", + "reboot", + "shutdown" + ], + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, - "phase": { - "description": "The phase that this data belongs to. If blank, it belongs to\nthe Boot Set itself, which only applies to the GenericMetadata type.\n", - "pattern": "(?i)shutdown|boot|configure", - "type": "string" + "template_name": { + "type": "string", + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, - "data": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - }, - "V1UpdateRequestGenericMetadata": { - "description": "This is the payload sent during an update request. It contains\nupdates to metadata, specifically start and stop times\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "update_type": { - "description": "The type of update data", - "pattern": "GenericMetadata", - "type": "string" + "limit": { + "type": "string", + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, - "phase": { - "description": "The phase that this data belongs to. If the phase is boot_set, it belongs to\nthe Boot Set itself, which only applies to the GenericMetadata type.\n", - "pattern": "(?i)shutdown|boot|configure|boot_set", - "type": "string" + "stage": { + "type": "boolean", + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, - "data": { + "include_disabled": { + "type": "boolean", + "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" + }, + "status": { "type": "object", - "description": "The status metadata\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" + "description": "When the Session was created.", + "maxLength": 127 }, - "stop_time": { + "end_time": { "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false + "status": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 + "error": { + "type": "string", + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } - } + }, + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } }, - "V2CfsParameters": { + "V2SessionExtendedStatusPhases": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "Detailed information on the phases of a Session.\n", "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" + "percent_complete": { + "type": "number", + "description": "The percent of Components currently in a completed/stable state\n" + }, + "percent_powering_on": { + "type": "number", + "description": "The percent of Components currently in the powering-on phase\n" + }, + "percent_powering_off": { + "type": "number", + "description": "The percent of Components currently in the powering-off phase\n" + }, + "percent_configuring": { + "type": "number", + "description": "The percent of Components currently in the configuring phase\n" } }, "additionalProperties": false }, - "V2SessionTemplate": { + "V2SessionExtendedStatusTiming": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "Detailed information on the timing of a Session.\n", "properties": { - "name": { + "start_time": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "description": "When the Session was created.", + "maxLength": 127 }, - "description": { + "end_time": { "type": "string", - "description": "An optional description for the session template.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true + "duration": { + "type": "string", + "description": "The current duration of the ongoing Session or final duration of the completed Session.\n" + } + }, + "additionalProperties": false + }, + "V2SessionExtendedStatus": { + "type": "object", + "description": "Detailed information on the status of a Session.\n", + "properties": { + "status": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." }, - "cfs": { + "managed_components_count": { + "type": "integer", + "description": "The count of Components currently managed by this Session\n" + }, + "phases": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "Detailed information on the phases of a Session.\n", "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" + "percent_complete": { + "type": "number", + "description": "The percent of Components currently in a completed/stable state\n" + }, + "percent_powering_on": { + "type": "number", + "description": "The percent of Components currently in the powering-on phase\n" + }, + "percent_powering_off": { + "type": "number", + "description": "The percent of Components currently in the powering-off phase\n" + }, + "percent_configuring": { + "type": "number", + "description": "The percent of Components currently in the configuring phase\n" } }, "additionalProperties": false }, - "boot_sets": { + "percent_successful": { + "type": "number", + "description": "The percent of Components currently in a successful state\n" + }, + "percent_failed": { + "type": "number", + "description": "The percent of Components currently in a failed state\n" + }, + "percent_staged": { + "type": "number", + "description": "The percent of Components currently still staged for this Session\n" + }, + "error_summary": { "type": "object", - "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", - "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } + "description": "A summary of the errors currently listed by all Components\n" }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } + "timing": { + "type": "object", + "description": "Detailed information on the timing of a Session.\n", + "properties": { + "start_time": { + "type": "string", + "description": "When the Session was created.", + "maxLength": 127 }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - }, - "V2SessionTemplateArray": { - "description": "An array of session templates.", - "type": "array", - "items": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", - "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } + "end_time": { + "type": "string", + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, - "additionalProperties": false - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", - "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] + "duration": { + "type": "string", + "description": "The current duration of the ongoing Session or final duration of the completed Session.\n" } }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - }, - "V2SessionTemplateValidation": { - "description": "Message describing errors or incompleteness in a Session Template.\n", - "type": "string" - }, - "V2SessionCreate": { - "description": "A Session Creation object. A UUID name is generated if a name is not provided. The limit parameter is required if the session_limit_required option is true. If the reject_nids option is enabled, then Session creation will fail if a Session limit appears to contain a NID value.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the session. The name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.", - "example": "session-20190728032600", - "minLength": 1, - "maxLength": 127, - "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$" - }, - "operation": { - "type": "string", - "enum": [ - "boot", - "reboot", - "shutdown" - ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" - }, - "template_name": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\nAlternatively, the limit can be set to \"*\", which means no limit.\nThe limit parameter is required if the session_limit_required option is true. If the reject_nids option is enabled, then Session creation will fail if a Session limit appears to contain a NID value.\n" - }, - "stage": { - "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n", - "default": false - }, - "include_disabled": { - "type": "boolean", - "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n", - "default": false + "additionalProperties": false } }, - "required": [ - "operation", - "template_name" - ], "additionalProperties": false }, - "V2SessionStatus": { + "V2BootArtifacts": { + "description": "A collection of boot artifacts.\n", "type": "object", - "description": "Information on the status of a session.\n", "properties": { - "start_time": { - "type": "string", - "description": "When the session was created.\n" - }, - "end_time": { + "kernel": { "type": "string", - "description": "When the session completed.\n" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "status": { + "kernel_parameters": { "type": "string", - "enum": [ - "pending", - "running", - "complete" - ], - "description": "The status of a session.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, - "error": { + "initrd": { "type": "string", - "description": "Error which prevented the session from running\n" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, - "V2BootSet": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "V2ComponentBssToken": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "V2ComponentId": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + }, + "V2ComponentIdList": { + "description": "A list of Component IDs (xnames)", + "type": "array", + "maxItems": 32768, + "items": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + } + }, + "V2ComponentLastUpdated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + }, + "V2ComponentActualState": { + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "cfs": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", "properties": { - "configuration": { + "kernel": { "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "additionalProperties": false }, - "rootfs_provider": { + "bss_token": { "type": "string", - "description": "The root file system provider.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, - "rootfs_provider_passthrough": { + "last_updated": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true } }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] + "additionalProperties": false }, - "V2Session": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "V2ComponentDesiredState": { + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { - "name": { - "type": "string", - "description": "Name of the session.\n" - }, - "operation": { - "type": "string", - "enum": [ - "boot", - "reboot", - "shutdown" - ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } + }, + "additionalProperties": false }, - "template_name": { + "configuration": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, - "limit": { + "bss_token": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "stage": { - "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, - "components": { + "last_updated": { "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, - "include_disabled": { - "type": "boolean", - "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" - }, - "status": { + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "V2ComponentStagedState": { + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", "type": "object", - "description": "Information on the status of a session.\n", "properties": { - "start_time": { - "type": "string", - "description": "When the session was created.\n" - }, - "end_time": { + "kernel": { "type": "string", - "description": "When the session completed.\n" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "status": { + "kernel_parameters": { "type": "string", - "enum": [ - "pending", - "running", - "complete" - ], - "description": "The status of a session.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, - "error": { + "initrd": { "type": "string", - "description": "Error which prevented the session from running\n" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false + }, + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + }, + "session": { + "type": "string" + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true } }, "additionalProperties": false }, - "V2SessionArray": { - "description": "An array of sessions.", - "type": "array", - "items": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the session.\n" - }, - "operation": { - "type": "string", - "enum": [ - "boot", - "reboot", - "shutdown" - ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" - }, - "template_name": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "stage": { - "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" - }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, - "include_disabled": { - "type": "boolean", - "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" - }, - "status": { - "type": "object", - "description": "Information on the status of a session.\n", - "properties": { - "start_time": { - "type": "string", - "description": "When the session was created.\n" - }, - "end_time": { - "type": "string", - "description": "When the session completed.\n" - }, - "status": { - "type": "string", - "enum": [ - "pending", - "running", - "complete" - ], - "description": "The status of a session.\n" - }, - "error": { - "type": "string", - "description": "Error which prevented the session from running\n" - } - }, - "additionalProperties": false - } + "V2ComponentLastAction": { + "description": "Information on the most recent action taken against the node.\n", + "type": "object", + "properties": { + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true }, - "additionalProperties": false - } + "action": { + "type": "string", + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 + }, + "failed": { + "type": "boolean", + "description": "Denotes if the last action failed to accomplish its task" + } + }, + "additionalProperties": false }, - "V2SessionExtendedStatusPhases": { + "V2ComponentEventStats": { + "description": "Information on the most recent attempt to return the node to its desired state.\n", "type": "object", - "description": "Detailed information on the phases of a session.\n", "properties": { - "percent_complete": { - "type": "number", - "description": "The percent of components currently in a completed/stable state\n" - }, - "percent_powering_on": { - "type": "number", - "description": "The percent of components currently in the powering-on phase\n" + "power_on_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, - "percent_powering_off": { - "type": "number", - "description": "The percent of components currently in the powering-off phase\n" + "power_off_graceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, - "percent_configuring": { - "type": "number", - "description": "The percent of components currently in the configuring phase\n" + "power_off_forceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, - "V2SessionExtendedStatusTiming": { + "V2ComponentPhase": { + "type": "string", + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 + }, + "V2ComponentStatus": { + "description": "Status information for the Component", "type": "object", - "description": "Detailed information on the timing of a session.\n", "properties": { - "start_time": { + "phase": { "type": "string", - "description": "When the session was created.\n" + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, - "end_time": { + "status": { "type": "string", - "description": "When the session completed.\n" + "description": "The current status of the Component. More detailed than phase.", + "readOnly": true }, - "duration": { + "status_override": { "type": "string", - "description": "The current duration of the on-going session or final duration of the completed session.\n" + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, - "V2SessionExtendedStatus": { + "V2Component": { + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", - "description": "Detailed information on the status of a session.\n", "properties": { - "status": { + "id": { "type": "string", - "enum": [ - "pending", - "running", - "complete" - ], - "description": "The status of a session.\n" - }, - "managed_components_count": { - "type": "integer", - "description": "The count of components currently managed by this session\n" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, - "phases": { - "type": "object", - "description": "Detailed information on the phases of a session.\n", - "properties": { - "percent_complete": { - "type": "number", - "description": "The percent of components currently in a completed/stable state\n" - }, - "percent_powering_on": { - "type": "number", - "description": "The percent of components currently in the powering-on phase\n" - }, - "percent_powering_off": { - "type": "number", - "description": "The percent of components currently in the powering-off phase\n" - }, - "percent_configuring": { - "type": "number", - "description": "The percent of components currently in the configuring phase\n" - } - }, - "additionalProperties": false - }, - "percent_successful": { - "type": "number", - "description": "The percent of components currently in a successful state\n" - }, - "percent_failed": { - "type": "number", - "description": "The percent of components currently in a failed state\n" - }, - "percent_staged": { - "type": "number", - "description": "The percent of components currently still staged for this session\n" - }, - "error_summary": { - "type": "object", - "description": "A summary of the errors currently listed by all components\n" - }, - "timing": { - "type": "object", - "description": "Detailed information on the timing of a session.\n", - "properties": { - "start_time": { - "type": "string", - "description": "When the session was created.\n" - }, - "end_time": { - "type": "string", - "description": "When the session completed.\n" - }, - "duration": { - "type": "string", - "description": "The current duration of the on-going session or final duration of the completed session.\n" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, - "V2BootArtifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "V2ComponentActualState": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "V2ComponentDesiredState": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "V2ComponentStagedState": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "V2ComponentLastAction": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "V2ComponentEventStats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "V2ComponentStatus": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, - "V2Component": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "actual_state": { + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -1888,22 +1667,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -1916,7 +1702,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -1925,26 +1711,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -1957,7 +1752,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -1966,26 +1761,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -2010,7 +1812,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -2025,96 +1828,382 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 }, - "V2ComponentArray": { - "description": "An array of component states.", - "type": "array", - "items": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, + "V2ComponentCliUpdate": { + "description": "Component attributes that can be updated using the CLI\n", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "V2ComponentWithId": { + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + }, + "actual_state": { + "description": "The actual boot artifacts and configuration for a Component\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } + }, + "additionalProperties": false + }, + "bss_token": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "desired_state": { + "description": "The desired boot artifacts and configuration for a Component\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } + }, + "additionalProperties": false + }, + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + }, + "bss_token": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "staged_state": { + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } + }, + "additionalProperties": false + }, + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + }, + "session": { + "type": "string" + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "last_action": { + "description": "Information on the most recent action taken against the node.\n", + "type": "object", + "properties": { + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + }, + "action": { + "type": "string", + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 + }, + "failed": { + "type": "boolean", + "description": "Denotes if the last action failed to accomplish its task" + } + }, + "additionalProperties": false + }, + "event_stats": { + "description": "Information on the most recent attempt to return the node to its desired state.\n", + "type": "object", + "properties": { + "power_on_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_graceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_forceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + } + }, + "additionalProperties": false + }, + "status": { + "description": "Status information for the Component", + "type": "object", + "properties": { + "phase": { + "type": "string", + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 + }, + "status": { + "type": "string", + "description": "The current status of the Component. More detailed than phase.", + "readOnly": true + }, + "status_override": { + "type": "string", + "description": "If set, this will override the status value.", + "maxLength": 65536 + } + }, + "additionalProperties": false + }, + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "error": { + "type": "string", + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 + }, + "session": { + "type": "string" + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 + } + }, + "additionalProperties": false, + "required": [ + "id" + ] + }, + "V2ComponentArray": { + "description": "An array of Component states.", + "type": "array", + "items": { + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + }, + "actual_state": { + "description": "The actual boot artifacts and configuration for a Component\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 + }, + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } + }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -2127,7 +2216,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -2136,26 +2225,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -2168,7 +2266,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -2177,26 +2275,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -2221,7 +2326,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -2236,433 +2342,564 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false - } - }, - "V2ComponentsFilter": { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "ids": { - "type": "string", - "description": "A comma-separated list of component IDs" - }, - "session": { - "type": "string", - "description": "A session name. All components part of this session will be patched." - } + "additionalProperties": false, + "minProperties": 1 } }, - "V2ComponentsUpdate": { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "patch": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } + "V2ComponentArrayWithIds": { + "description": "An array of Component states with associated Ids.", + "type": "array", + "items": { + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + }, + "actual_state": { + "description": "The actual boot artifacts and configuration for a Component\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } + "additionalProperties": false }, - "additionalProperties": false + "bss_token": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } + "additionalProperties": false + }, + "desired_state": { + "description": "The desired boot artifacts and configuration for a Component\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } + "additionalProperties": false }, - "additionalProperties": false + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + }, + "bss_token": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } + "additionalProperties": false + }, + "staged_state": { + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", + "type": "object", + "properties": { + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "kernel_parameters": { + "type": "string", + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 + }, + "initrd": { + "type": "string", + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 + } }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } + "additionalProperties": false }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } + "session": { + "type": "string" }, - "additionalProperties": false + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } + "additionalProperties": false + }, + "last_action": { + "description": "Information on the most recent action taken against the node.\n", + "type": "object", + "properties": { + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true }, - "additionalProperties": false - }, - "enabled": { - "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "action": { + "type": "string", + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 + }, + "failed": { + "type": "boolean", + "description": "Denotes if the last action failed to accomplish its task" + } }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." + "additionalProperties": false + }, + "event_stats": { + "description": "Information on the most recent attempt to return the node to its desired state.\n", + "type": "object", + "properties": { + "power_on_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_graceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_forceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + } }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "additionalProperties": false + }, + "status": { + "description": "Status information for the Component", + "type": "object", + "properties": { + "phase": { + "type": "string", + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 + }, + "status": { + "type": "string", + "description": "The current status of the Component. More detailed than phase.", + "readOnly": true + }, + "status_override": { + "type": "string", + "description": "If set, this will override the status value.", + "maxLength": 65536 + } }, - "retry_policy": { - "type": "integer", - "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 - } + "additionalProperties": false }, - "additionalProperties": false + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "error": { + "type": "string", + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 + }, + "session": { + "type": "string" + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 + } }, - "filters": { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "ids": { - "type": "string", - "description": "A comma-separated list of component IDs" - }, - "session": { - "type": "string", - "description": "A session name. All components part of this session will be patched." + "additionalProperties": false, + "required": [ + "id" + ] + } + }, + "V2ComponentsFilter": { + "description": "Information for patching multiple Components by listing their IDs or\nsession. Only one of the two may be specified.\n", + "type": "object", + "properties": { + "ids": { + "type": "string", + "description": "A comma-separated list of Component IDs.", + "minLength": 1, + "maxLength": 65535 + }, + "session": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + }, + "V2ComponentsUpdate": { + "description": "Information for patching multiple Components.", + "type": "object", + "properties": { + "patch": { + "description": "Component attributes that can be updated using the CLI\n", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 } - } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "filters": { + "description": "Information for patching multiple Components by listing their IDs or\nsession. Only one of the two may be specified.\n", + "type": "object", + "properties": { + "ids": { + "type": "string", + "description": "A comma-separated list of Component IDs.", + "minLength": 1, + "maxLength": 65535 + }, + "session": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false } }, "required": [ "patch", "filters" - ] + ], + "additionalProperties": false }, "V2ApplyStagedComponents": { - "description": "A list of components that should have their staged session applied.\n", + "description": "A list of Components that should have their staged Session applied.\n", "type": "object", "properties": { "xnames": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } } }, "additionalProperties": false }, "V2ApplyStagedStatus": { - "description": "A list of components that should have their staged session applied.\n", + "description": "Mapping from Component staged Session statuses to Components with that status.\n", "type": "object", "properties": { "succeeded": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } }, "failed": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } }, "ignored": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } } }, "additionalProperties": false }, "V2Options": { - "description": "Options for the boot orchestration service.\n", + "description": "Options for the Boot Orchestration Service.\n", "type": "object", "properties": { "cleanup_completed_session_ttl": { "type": "string", - "description": "Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior." + "description": "Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).\n0 disables cleanup behavior.\n", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "clear_stage": { "type": "boolean", - "description": "Allows components staged information to be cleared when the requested staging action has been started. Defaults to false." + "description": "Allows a Component's staged information to be cleared when the requested staging action has been started. Defaults to false." }, "component_actual_state_ttl": { "type": "string", - "description": "The maximum amount of time a component's actual state is considered valid (in hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically." + "description": "The maximum amount of time a Component's actual state is considered valid (in minutes, hours, days, or weeks).\n0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.\n", + "example": "6h", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "disable_components_on_completion": { "type": "boolean", - "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes." + "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.\nIf false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.\n" }, "discovery_frequency": { "type": "integer", - "description": "How frequently the BOS discovery agent syncs new components from HSM. (in seconds)" + "description": "How frequently the BOS discovery agent syncs new Components from HSM (in seconds)", + "minimum": 0, + "maximum": 33554432 }, "logging_level": { "type": "string", - "description": "The logging level for all BOS services" + "description": "The logging level for all BOS services", + "pattern": "^([dD][eE][bB][uU][gG]|[iI][nN][fF][oO]|[wW][aA][rR][nN][iI][nN][gG]|[eE][rR][rR][oO][rR]|[cC][rR][iI][tT][iI][cC][aA][lL])$" }, "max_boot_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)" + "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_on_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)" + "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_off_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)" + "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "polling_frequency": { "type": "integer", - "description": "How frequently the BOS operators check component state for needed actions. (in seconds)" + "description": "How frequently the BOS operators check Component state for needed actions (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "default_retry_policy": { "type": "integer", "description": "The default maximum number attempts per node for failed actions.", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 }, "max_component_batch_size": { "type": "integer", - "description": "The maximum number of components that a BOS operator will process at once. 0 means no limit.", + "description": "The maximum number of Components that a BOS operator will process at once. 0 means no limit.", "example": 1000, "minimum": 0, "maximum": 131071 }, - "session_limit_required": { + "reject_nids": { "type": "boolean", - "description": "If true, Sessions cannot be created without specifying the limit parameter." + "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).\n" }, - "reject_nids": { + "session_limit_required": { "type": "boolean", - "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started)." + "description": "If true, Sessions cannot be created without specifying the limit parameter." } }, - "additionalProperties": true + "additionalProperties": true, + "minProperties": 1, + "maxProperties": 1024 } }, "requestBodies": { "V2sessionCreateRequest": { - "description": "The information to create a session", + "description": "The information to create a Session", "required": true, "content": { "application/json": { "schema": { - "description": "A Session Creation object\n", + "description": "A Session Creation object. A UUID name is generated if a name is not provided. The limit parameter is\nrequired if the session_limit_required option is true.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session. The name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.", - "example": "session-20190728032600", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", "minLength": 1, "maxLength": 127, - "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, "operation": { "type": "string", @@ -2671,21 +2908,26 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\nAlternatively, the limit can be set to \"*\", which means no limit.\nThe limit parameter is required if the session_limit_required option is true. If the reject_nids option is enabled, then Session creation will fail if a Session limit appears to contain a NID value.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n", + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n", "default": false }, "include_disabled": { @@ -2704,239 +2946,52 @@ } }, "V2componentUpdateRequest": { - "description": "The state for a single component", + "description": "The state for a single Component", "required": true, "content": { "application/json": { "schema": { - "description": "The current and desired artifacts state for a component.\n", + "description": "Component attributes that can be updated using the CLI\n", "type": "object", "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "description": "A flag indicating if actions should be taken for this Component." }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } }, "V2componentsPutRequest": { - "description": "The state for an array of components", + "description": "The state for an array of Components", "required": true, "content": { "application/json": { "schema": { - "description": "An array of component states.", + "description": "An array of Component states with associated Ids.", "type": "array", "items": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -2945,22 +3000,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -2973,7 +3035,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -2982,26 +3044,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -3014,7 +3085,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -3023,26 +3094,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -3067,7 +3145,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -3082,515 +3161,392 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "id" + ] } } } } }, - "V2componentsUpdateRequest": { - "description": "The state for an array of components", + "V2componentsUpdateRequestArray": { + "description": "An array of Component states", "required": true, "content": { "application/json": { "schema": { - "oneOf": [ - { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "patch": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, - "enabled": { - "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" - }, - "retry_policy": { - "type": "integer", - "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 - } - }, - "additionalProperties": false - }, - "filters": { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "ids": { - "type": "string", - "description": "A comma-separated list of component IDs" - }, - "session": { - "type": "string", - "description": "A session name. All components part of this session will be patched." - } - } - } + "description": "An array of Component states with associated Ids.", + "type": "array", + "items": { + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, - "required": [ - "patch", - "filters" - ] - }, - { - "description": "An array of component states.", - "type": "array", - "items": { - "description": "The current and desired artifacts state for a component.\n", + "actual_state": { + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", "type": "object", "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false + "kernel": { + "type": "string", + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "bss_token": { + "kernel_parameters": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, - "last_updated": { + "initrd": { "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "bss_token": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "desired_state": { + "description": "The desired boot artifacts and configuration for a Component\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", "type": "object", "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { + "kernel": { "type": "string", - "description": "A CFS configuration ID." + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "bss_token": { + "kernel_parameters": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, - "last_updated": { + "initrd": { "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + }, + "bss_token": { + "type": "string", + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 + }, + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "staged_state": { + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", + "type": "object", + "properties": { + "boot_artifacts": { + "description": "A collection of boot artifacts.\n", "type": "object", "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { + "kernel": { "type": "string", - "description": "A CFS configuration ID." + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, - "session": { + "kernel_parameters": { "type": "string", - "description": "A session which can be triggered at a later time against this component." + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, - "last_updated": { + "initrd": { "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false + "session": { + "type": "string" }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + } + }, + "additionalProperties": false + }, + "last_action": { + "description": "Information on the most recent action taken against the node.\n", + "type": "object", + "properties": { + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true }, - "enabled": { + "action": { + "type": "string", + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 + }, + "failed": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "Denotes if the last action failed to accomplish its task" + } + }, + "additionalProperties": false + }, + "event_stats": { + "description": "Information on the most recent attempt to return the node to its desired state.\n", + "type": "object", + "properties": { + "power_on_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, - "error": { + "power_off_graceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_forceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + } + }, + "additionalProperties": false + }, + "status": { + "description": "Status information for the Component", + "type": "object", + "properties": { + "phase": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, - "session": { + "status": { "type": "string", - "description": "The session responsible for the component's current state" + "description": "The current status of the Component. More detailed than phase.", + "readOnly": true }, - "retry_policy": { - "type": "integer", - "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "status_override": { + "type": "string", + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false + }, + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "error": { + "type": "string", + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 + }, + "session": { + "type": "string" + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 } + }, + "additionalProperties": false, + "required": [ + "id" + ] + } + } + } + } + }, + "V2componentsUpdateRequestFilter": { + "description": "A Component state and filter", + "required": true, + "content": { + "application/json": { + "schema": { + "description": "Information for patching multiple Components.", + "type": "object", + "properties": { + "patch": { + "description": "Component attributes that can be updated using the CLI\n", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "filters": { + "description": "Information for patching multiple Components by listing their IDs or\nsession. Only one of the two may be specified.\n", + "type": "object", + "properties": { + "ids": { + "type": "string", + "description": "A comma-separated list of Component IDs.", + "minLength": 1, + "maxLength": 65535 + }, + "session": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false } - ] + }, + "required": [ + "patch", + "filters" + ], + "additionalProperties": false } } } @@ -3601,130 +3557,126 @@ "content": { "application/json": { "schema": { - "description": "Options for the boot orchestration service.\n", + "description": "Options for the Boot Orchestration Service.\n", "type": "object", "properties": { "cleanup_completed_session_ttl": { "type": "string", - "description": "Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior." + "description": "Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).\n0 disables cleanup behavior.\n", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "clear_stage": { "type": "boolean", - "description": "Allows components staged information to be cleared when the requested staging action has been started. Defaults to false." + "description": "Allows a Component's staged information to be cleared when the requested staging action has been started. Defaults to false." }, "component_actual_state_ttl": { "type": "string", - "description": "The maximum amount of time a component's actual state is considered valid (in hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically." + "description": "The maximum amount of time a Component's actual state is considered valid (in minutes, hours, days, or weeks).\n0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.\n", + "example": "6h", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "disable_components_on_completion": { "type": "boolean", - "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes." + "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.\nIf false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.\n" }, "discovery_frequency": { "type": "integer", - "description": "How frequently the BOS discovery agent syncs new components from HSM. (in seconds)" + "description": "How frequently the BOS discovery agent syncs new Components from HSM (in seconds)", + "minimum": 0, + "maximum": 33554432 }, "logging_level": { "type": "string", - "description": "The logging level for all BOS services" + "description": "The logging level for all BOS services", + "pattern": "^([dD][eE][bB][uU][gG]|[iI][nN][fF][oO]|[wW][aA][rR][nN][iI][nN][gG]|[eE][rR][rR][oO][rR]|[cC][rR][iI][tT][iI][cC][aA][lL])$" }, "max_boot_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)" + "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_on_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)" + "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_off_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)" + "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "polling_frequency": { "type": "integer", - "description": "How frequently the BOS operators check component state for needed actions. (in seconds)" + "description": "How frequently the BOS operators check Component state for needed actions (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "default_retry_policy": { "type": "integer", "description": "The default maximum number attempts per node for failed actions.", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 }, "max_component_batch_size": { "type": "integer", - "description": "The maximum number of components that a BOS operator will process at once. 0 means no limit.", + "description": "The maximum number of Components that a BOS operator will process at once. 0 means no limit.", "example": 1000, "minimum": 0, "maximum": 131071 }, "reject_nids": { "type": "boolean", - "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started)." + "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).\n" }, "session_limit_required": { "type": "boolean", "description": "If true, Sessions cannot be created without specifying the limit parameter." } }, - "additionalProperties": true + "additionalProperties": true, + "minProperties": 1, + "maxProperties": 1024 } } } }, "V2sessionUpdateRequest": { - "description": "The state for a single session", + "description": "The state for a single Session", "required": true, "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session update object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { - "name": { - "type": "string", - "description": "Name of the session.\n" - }, - "operation": { - "type": "string", - "enum": [ - "boot", - "reboot", - "shutdown" - ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" - }, - "template_name": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "stage": { - "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" - }, - "include_disabled": { - "type": "boolean", - "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" - }, "components": { "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -3733,11 +3685,13 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false @@ -3749,19 +3703,23 @@ } }, "V2applyStagedRequest": { - "description": "A list of xnames that should have their staged session applied.", + "description": "A list of xnames that should have their staged Session applied.", "required": true, "content": { "application/json": { "schema": { - "description": "A list of components that should have their staged session applied.\n", + "description": "A list of Components that should have their staged Session applied.\n", "type": "object", "properties": { "xnames": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } } }, @@ -3772,6 +3730,9 @@ } }, "responses": { + "ResourceDeleted": { + "description": "The resource was deleted." + }, "ServiceHealth": { "description": "Service Health information", "content": { @@ -3801,24 +3762,28 @@ "type": "object", "properties": { "major": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "minor": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "patch": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "links": { + "description": "List of links to other resources", "type": "array", "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -3831,278 +3796,180 @@ } } }, - "ResourceDeleted": { - "description": "The resource was deleted." - }, - "V1SessionDetails": { - "description": "Session details", + "V2SessionTemplateDetails": { + "description": "Session Template details", "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", "type": "object", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { - "operation": { + "name": { "type": "string", - "description": "A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation.\nOperation -- An operation to perform on nodes in this session.\n\n Boot Boot nodes that are off.\n\n Configure Reconfigure the nodes using the Configuration Framework\n Service (CFS).\n\n Reboot Gracefully power down nodes that are on and then power\n them back up.\n\n Shutdown Gracefully power down nodes that are on.\n", - "pattern": "^(?i)boot|configure|reboot|shutdown$" + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" }, - "templateUuid": { + "tenant": { "type": "string", - "description": "DEPRECATED - use templateName", - "example": "my-session-template", - "format": "string" + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, - "templateName": { + "description": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, - "job": { - "type": "string", - "maxLength": 64, - "readOnly": true, - "description": "The identity of the Kubernetes job that is created to handle the session.\n", - "example": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0" + "enable_cfs": { + "type": "boolean", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", + "default": true }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "cfs": { + "type": "object", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", + "properties": { + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + } + }, + "additionalProperties": false }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "operation" - ], - "additionalProperties": false - } - } - } - }, - "V1SessionStatus": { - "description": "A list of Boot Set Statuses and metadata", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.\n## Link Relationships\n\n* self : The session object\n* boot sets: URL to access the Boot Set status\n", - "properties": { - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "boot_sets": { - "description": "The boot sets in the Session\n", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "id": { - "type": "string", - "description": "Session ID" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "V1SessionTemplateDetails": { - "description": "Session template details", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", + "boot_sets": { + "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, + "additionalProperties": { + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 + }, + "cfs": { + "type": "object", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", + "properties": { + "configuration": { + "type": "string", + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + } + }, + "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -4113,16 +3980,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -4130,259 +3998,191 @@ } } }, + "additionalProperties": false, "required": [ - "name" - ], - "additionalProperties": false + "boot_sets" + ] } } } }, - "V2SessionTemplateDetails": { - "description": "Session template details", + "V2SessionTemplateDetailsArray": { + "description": "Session Template details array", "content": { "application/json": { "schema": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", - "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } + "description": "An array of Session Templates.", + "type": "array", + "items": { + "type": "object", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" }, - "additionalProperties": false - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 + }, + "description": { + "type": "string", + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 + }, + "enable_cfs": { + "type": "boolean", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", + "default": true + }, + "cfs": { "type": "object", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "path": { + "configuration": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", - "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 + } + }, + "additionalProperties": false + }, + "boot_sets": { + "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, + "additionalProperties": { + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, - "additionalProperties": false - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - } - } - }, - "V2SessionTemplateDetailsArray": { - "description": "Session template details", - "content": { - "application/json": { - "schema": { - "description": "An array of session templates.", - "type": "array", - "items": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", - "properties": { - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "path": { + "type": "string", + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -4393,16 +4193,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -4410,14 +4211,17 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } } }, "V2SessionTemplateValidation": { - "description": "Session template validity details", + "description": "Session Template validity details", "content": { "application/json": { "schema": { @@ -4432,12 +4236,23 @@ "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -4446,41 +4261,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -4489,35 +4313,53 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } }, "V2SessionDetailsArray": { - "description": "Session details", + "description": "Session details array", "content": { "application/json": { "schema": { - "description": "An array of sessions.", + "description": "An array of Sessions.", "type": "array", "items": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -4526,41 +4368,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -4569,17 +4420,24 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } @@ -4591,7 +4449,7 @@ "application/json": { "schema": { "type": "object", - "description": "Detailed information on the status of a session.\n", + "description": "Detailed information on the status of a Session.\n", "properties": { "status": { "type": "string", @@ -4600,66 +4458,69 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "managed_components_count": { "type": "integer", - "description": "The count of components currently managed by this session\n" + "description": "The count of Components currently managed by this Session\n" }, "phases": { "type": "object", - "description": "Detailed information on the phases of a session.\n", + "description": "Detailed information on the phases of a Session.\n", "properties": { "percent_complete": { "type": "number", - "description": "The percent of components currently in a completed/stable state\n" + "description": "The percent of Components currently in a completed/stable state\n" }, "percent_powering_on": { "type": "number", - "description": "The percent of components currently in the powering-on phase\n" + "description": "The percent of Components currently in the powering-on phase\n" }, "percent_powering_off": { "type": "number", - "description": "The percent of components currently in the powering-off phase\n" + "description": "The percent of Components currently in the powering-off phase\n" }, "percent_configuring": { "type": "number", - "description": "The percent of components currently in the configuring phase\n" + "description": "The percent of Components currently in the configuring phase\n" } }, "additionalProperties": false }, "percent_successful": { "type": "number", - "description": "The percent of components currently in a successful state\n" + "description": "The percent of Components currently in a successful state\n" }, "percent_failed": { "type": "number", - "description": "The percent of components currently in a failed state\n" + "description": "The percent of Components currently in a failed state\n" }, "percent_staged": { "type": "number", - "description": "The percent of components currently still staged for this session\n" + "description": "The percent of Components currently still staged for this Session\n" }, "error_summary": { "type": "object", - "description": "A summary of the errors currently listed by all components\n" + "description": "A summary of the errors currently listed by all Components\n" }, "timing": { "type": "object", - "description": "Detailed information on the timing of a session.\n", + "description": "Detailed information on the timing of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "duration": { "type": "string", - "description": "The current duration of the on-going session or final duration of the completed session.\n" + "description": "The current duration of the ongoing Session or final duration of the completed Session.\n" } }, "additionalProperties": false @@ -4671,19 +4532,21 @@ } }, "V2componentDetails": { - "description": "A single component state", + "description": "A single Component state", "content": { "application/json": { "schema": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -4692,22 +4555,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -4720,7 +4590,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -4729,26 +4599,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -4761,7 +4640,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -4770,26 +4649,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -4814,7 +4700,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -4829,79 +4716,92 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } }, "V2componentDetailsArray": { - "description": "A collection of component states", + "description": "A collection of Component states", "content": { "application/json": { "schema": { - "description": "An array of component states.", + "description": "An array of Component states.", "type": "array", "items": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -4910,22 +4810,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -4938,7 +4845,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -4947,26 +4854,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -4979,7 +4895,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -4988,26 +4904,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -5032,7 +4955,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -5047,90 +4971,113 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } } }, "V2applyStagedResponse": { - "description": "A list of xnames that should have their staged session applied.", + "description": "A list of xnames that should have their staged Session applied.", "content": { "application/json": { "schema": { - "description": "A list of components that should have their staged session applied.\n", + "description": "Mapping from Component staged Session statuses to Components with that status.\n", "type": "object", "properties": { "succeeded": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } }, "failed": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } }, "ignored": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } } }, @@ -5144,71 +5091,132 @@ "content": { "application/json": { "schema": { - "description": "Options for the boot orchestration service.\n", + "description": "Options for the Boot Orchestration Service.\n", "type": "object", "properties": { "cleanup_completed_session_ttl": { "type": "string", - "description": "Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior." + "description": "Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).\n0 disables cleanup behavior.\n", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "clear_stage": { "type": "boolean", - "description": "Allows components staged information to be cleared when the requested staging action has been started. Defaults to false." + "description": "Allows a Component's staged information to be cleared when the requested staging action has been started. Defaults to false." }, "component_actual_state_ttl": { "type": "string", - "description": "The maximum amount of time a component's actual state is considered valid (in hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically." + "description": "The maximum amount of time a Component's actual state is considered valid (in minutes, hours, days, or weeks).\n0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.\n", + "example": "6h", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "disable_components_on_completion": { "type": "boolean", - "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes." + "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.\nIf false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.\n" }, "discovery_frequency": { "type": "integer", - "description": "How frequently the BOS discovery agent syncs new components from HSM. (in seconds)" + "description": "How frequently the BOS discovery agent syncs new Components from HSM (in seconds)", + "minimum": 0, + "maximum": 33554432 }, "logging_level": { "type": "string", - "description": "The logging level for all BOS services" + "description": "The logging level for all BOS services", + "pattern": "^([dD][eE][bB][uU][gG]|[iI][nN][fF][oO]|[wW][aA][rR][nN][iI][nN][gG]|[eE][rR][rR][oO][rR]|[cC][rR][iI][tT][iI][cC][aA][lL])$" }, "max_boot_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)" + "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_on_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)" + "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_off_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)" + "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "polling_frequency": { "type": "integer", - "description": "How frequently the BOS operators check component state for needed actions. (in seconds)" + "description": "How frequently the BOS operators check Component state for needed actions (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "default_retry_policy": { "type": "integer", "description": "The default maximum number attempts per node for failed actions.", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 }, "max_component_batch_size": { "type": "integer", - "description": "The maximum number of components that a BOS operator will process at once. 0 means no limit.", + "description": "The maximum number of Components that a BOS operator will process at once. 0 means no limit.", "example": 1000, "minimum": 0, "maximum": 131071 }, "reject_nids": { "type": "boolean", - "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started)." + "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).\n" }, "session_limit_required": { "type": "boolean", "description": "If true, Sessions cannot be created without specifying the limit parameter." } }, - "additionalProperties": true + "additionalProperties": true, + "minProperties": 1, + "maxProperties": 1024 + } + } + } + }, + "AlreadyExists": { + "description": "The resource to be created already exists", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" + }, + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" + } + }, + "additionalProperties": false } } } @@ -5222,13 +5230,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -5237,12 +5245,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -5251,8 +5259,8 @@ } } }, - "ResourceNotFound": { - "description": "The resource was not found.", + "BadRequestOrMultiTenancyNotSupported": { + "description": "Multi-tenancy is not supported for this request.\nIf no tenant was specified, then the request was bad for another reason.\n", "content": { "application/problem+json": { "schema": { @@ -5260,13 +5268,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -5275,12 +5283,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -5289,8 +5297,8 @@ } } }, - "ServiceUnavailable": { - "description": "Service Unavailable", + "MultiTenancyNotSupported": { + "description": "Multi-tenancy is not supported for this BOS request.", "content": { "application/problem+json": { "schema": { @@ -5298,13 +5306,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -5313,12 +5321,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -5327,8 +5335,8 @@ } } }, - "InternalError": { - "description": "An Internal Server Error occurred handling the request.", + "ResourceNotFound": { + "description": "The resource was not found.", "content": { "application/problem+json": { "schema": { @@ -5336,13 +5344,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -5351,12 +5359,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -5364,3575 +5372,276 @@ } } } - } - } - }, - "paths": { - "/": { - "get": { - "summary": "Get API versions", - "description": "Return list of versions currently running.", - "tags": [ - "version" - ], - "x-openapi-router-controller": "bos.server.controllers.base", - "responses": { - "200": { - "description": "Get version details\nThe versioning system uses [semver](https://semver.org/).\n## Link Relationships\n* self : Link to itself\n* versions : Link back to the versions resource\n", - "content": { - "application/json": { - "schema": { - "description": "Version data", - "type": "object", - "properties": { - "major": { - "type": "integer" - }, - "minor": { - "type": "integer" - }, - "patch": { - "type": "integer" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "/v1": { - "get": { - "summary": "Get API version", - "tags": [ - "version" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.base", - "operationId": "v1_get", - "responses": { - "200": { - "description": "Get version details\nThe versioning system uses [semver](https://semver.org/).\n## Link Relationships\n* self : Link to itself\n* versions : Link back to the versions resource\n", - "content": { - "application/json": { - "schema": { - "description": "Version data", - "type": "object", - "properties": { - "major": { - "type": "integer" - }, - "minor": { - "type": "integer" - }, - "patch": { - "type": "integer" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "additionalProperties": false - } - } - } - }, - "500": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "/v1/healthz": { - "get": { - "summary": "Get service health details", - "tags": [ - "healthz" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.healthz", - "operationId": "v1_get_healthz", - "description": "Get bos health details.", - "responses": { - "200": { - "description": "Service Health information", - "content": { - "application/json": { - "schema": { - "description": "Service health status", - "type": "object", - "properties": { - "dbStatus": { - "type": "string" - }, - "apiStatus": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - }, - "500": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - }, - "503": { - "description": "Service Unavailable", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "/v1/sessiontemplate": { - "post": { - "summary": "Create session template", - "tags": [ - "sessiontemplate" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.sessiontemplate", - "operationId": "create_v1_sessiontemplate", - "description": "Create a new session template.", - "requestBody": { - "description": "A JSON object for creating a session template", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - } - }, - "responses": { - "200": { - "description": "Session template details", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "get": { - "summary": "List session templates", - "description": "List all session templates. Session templates are\nuniquely identified by the name.\n", - "tags": [ - "sessiontemplate" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.sessiontemplate", - "operationId": "get_v1_sessiontemplates", - "responses": { - "200": { - "description": "A collection of SessionTemplates", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - } - } - } - } - } - }, - "/v1/sessiontemplate/{session_template_id}": { - "parameters": [ - { - "name": "session_template_id", - "in": "path", - "description": "Session Template ID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "get": { - "summary": "Get session template by id", - "description": "Get session template by session_template_id.\nThe session_template_id corresponds to the *name*\nof the session template.\n", - "tags": [ - "sessiontemplate" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.sessiontemplate", - "operationId": "get_v1_sessiontemplate", - "responses": { - "200": { - "description": "Session template details", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "delete": { - "summary": "Delete a session template", - "description": "Delete a session template.", - "tags": [ - "sessiontemplate" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.sessiontemplate", - "operationId": "delete_v1_sessiontemplate", - "responses": { - "204": { - "description": "The resource was deleted." - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "/v1/sessiontemplatetemplate": { - "get": { - "summary": "Get an example session template.", - "description": "Returns a skeleton of a session template, which can be\nused as a starting point for users creating their own\nsession templates.\n", - "tags": [ - "sessiontemplate" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.sessiontemplate", - "operationId": "get_v1_sessiontemplatetemplate", - "responses": { - "200": { - "description": "Session template details", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which when combined with an\naction (i.e. boot, reconfigure, reboot, shutdown) will create a Kubernetes BOA job\nto complete the required tasks for the operation.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", - "minLength": 1, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*" - }, - "description": { - "type": "string", - "description": "An optional description for the session template.\n" - }, - "cfs_url": { - "type": "string", - "description": "The url for the repository providing the configuration. DEPRECATED\n" - }, - "cfs_branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. DEPRECATED.\n" - }, - "enable_cfs": { - "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", - "default": true - }, - "cfs": { - "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled.\n", - "properties": { - "clone_url": { - "type": "string", - "description": "The clone url for the repository providing the configuration. (DEPRECATED)\n" - }, - "branch": { - "type": "string", - "description": "The name of the branch containing the configuration that you want to\napply to the nodes. Mutually exclusive with commit. (DEPRECATED)\n" - }, - "commit": { - "type": "string", - "description": "The commit id of the configuration that you want to\napply to the nodes. Mutually exclusive with branch. (DEPRECATED)\n" - }, - "playbook": { - "type": "string", - "description": "The name of the playbook to run for configuration. The file path must be specified\nrelative to the base directory of the config repo. (DEPRECATED)\n" - }, - "configuration": { - "type": "string", - "description": "The name of configuration to be applied.\n" - } - }, - "additionalProperties": false - }, - "partition": { - "type": "string", - "description": "The machine partition to operate on.\n" - }, - "boot_sets": { - "type": "object", - "additionalProperties": { - "description": "A boot set defines a collection of nodes and the information about the\nboot artifacts and parameters to be sent to each node over the specified\nnetwork to enable these nodes to boot. When multiple boot sets are used\nin a session template, the boot_ordinal and shutdown_ordinal indicate\nthe order in which boot sets need to be acted upon. Boot sets sharing\nthe same ordinal number will be addressed at the same time.\n", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The Boot Set name.\n" - }, - "boot_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The boot ordinal. This will establish the order for boot set operations.\nBoot sets boot in order from the lowest to highest boot_ordinal.\n" - }, - "shutdown_ordinal": { - "type": "integer", - "minimum": 0, - "description": "The shutdown ordinal. This will establish the order for boot set\nshutdown operations. Sets shutdown from low to high shutdown_ordinal.\n" - }, - "path": { - "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" - }, - "type": { - "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" - }, - "etag": { - "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" - }, - "kernel_parameters": { - "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" - }, - "network": { - "type": "string", - "description": "The network over which the node will boot from.\nChoices: NMN -- Node Management Network\npattern: '^(?i)nmn$'\n" - }, - "node_list": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node list. This is an explicit mapping against hardware xnames.\n" - }, - "node_roles_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" - }, - "node_groups": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" - }, - "rootfs_provider": { - "type": "string", - "description": "The root file system provider.\n" - }, - "rootfs_provider_passthrough": { - "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" - } - }, - "additionalProperties": false, - "required": [ - "path", - "type" - ] - } - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - } - } - } - } - }, - "/v1/session": { - "post": { - "summary": "Create a session", - "description": "The creation of a session performs the operation\nspecified in the SessionCreateRequest\non the boot set(s) defined in the session template.\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.session", - "operationId": "create_v1_session", - "requestBody": { - "description": "A JSON object for creating a Session", - "required": true, - "content": { - "application/json": { - "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", - "type": "object", - "properties": { - "operation": { - "type": "string", - "description": "A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation.\nOperation -- An operation to perform on nodes in this session.\n\n Boot Boot nodes that are off.\n\n Configure Reconfigure the nodes using the Configuration Framework\n Service (CFS).\n\n Reboot Gracefully power down nodes that are on and then power\n them back up.\n\n Shutdown Gracefully power down nodes that are on.\n", - "pattern": "^(?i)boot|configure|reboot|shutdown$" - }, - "templateUuid": { - "type": "string", - "description": "DEPRECATED - use templateName", - "example": "my-session-template", - "format": "string" - }, - "templateName": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "job": { - "type": "string", - "maxLength": 64, - "readOnly": true, - "description": "The identity of the Kubernetes job that is created to handle the session.\n", - "example": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "operation" - ], - "additionalProperties": false - } - } - } - }, - "responses": { - "200": { - "description": "Session details", - "content": { - "application/json": { - "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", - "type": "object", - "properties": { - "operation": { - "type": "string", - "description": "A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation.\nOperation -- An operation to perform on nodes in this session.\n\n Boot Boot nodes that are off.\n\n Configure Reconfigure the nodes using the Configuration Framework\n Service (CFS).\n\n Reboot Gracefully power down nodes that are on and then power\n them back up.\n\n Shutdown Gracefully power down nodes that are on.\n", - "pattern": "^(?i)boot|configure|reboot|shutdown$" - }, - "templateUuid": { - "type": "string", - "description": "DEPRECATED - use templateName", - "example": "my-session-template", - "format": "string" - }, - "templateName": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "job": { - "type": "string", - "maxLength": 64, - "readOnly": true, - "description": "The identity of the Kubernetes job that is created to handle the session.\n", - "example": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "operation" - ], - "additionalProperties": false - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "get": { - "summary": "List sessions", - "description": "List all sessions, including those in progress and those complete.\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.session", - "operationId": "get_v1_sessions", - "responses": { - "200": { - "description": "A collection of Sessions", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", - "type": "object", - "properties": { - "operation": { - "type": "string", - "description": "A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation.\nOperation -- An operation to perform on nodes in this session.\n\n Boot Boot nodes that are off.\n\n Configure Reconfigure the nodes using the Configuration Framework\n Service (CFS).\n\n Reboot Gracefully power down nodes that are on and then power\n them back up.\n\n Shutdown Gracefully power down nodes that are on.\n", - "pattern": "^(?i)boot|configure|reboot|shutdown$" - }, - "templateUuid": { - "type": "string", - "description": "DEPRECATED - use templateName", - "example": "my-session-template", - "format": "string" - }, - "templateName": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "job": { - "type": "string", - "maxLength": 64, - "readOnly": true, - "description": "The identity of the Kubernetes job that is created to handle the session.\n", - "example": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "operation" - ], - "additionalProperties": false - } - } - } - } - } - } - } - }, - "/v1/session/{session_id}": { - "get": { - "summary": "Get session details by id", - "description": "Get session details by session_id.", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.session", - "operationId": "get_v1_session", - "responses": { - "200": { - "description": "Session details", - "content": { - "application/json": { - "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", - "type": "object", - "properties": { - "operation": { - "type": "string", - "description": "A Session represents an operation on a SessionTemplate. The creation of a session effectively results in the creation of a Kubernetes Boot Orchestration Agent (BOA) job to perform the duties required to complete the operation.\nOperation -- An operation to perform on nodes in this session.\n\n Boot Boot nodes that are off.\n\n Configure Reconfigure the nodes using the Configuration Framework\n Service (CFS).\n\n Reboot Gracefully power down nodes that are on and then power\n them back up.\n\n Shutdown Gracefully power down nodes that are on.\n", - "pattern": "^(?i)boot|configure|reboot|shutdown$" - }, - "templateUuid": { - "type": "string", - "description": "DEPRECATED - use templateName", - "example": "my-session-template", - "format": "string" - }, - "templateName": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "job": { - "type": "string", - "maxLength": 64, - "readOnly": true, - "description": "The identity of the Kubernetes job that is created to handle the session.\n", - "example": "boa-07877de1-09bb-4ca8-a4e5-943b1262dbf0" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "links": { - "type": "array", - "readOnly": true, - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - }, - "required": [ - "operation" - ], - "additionalProperties": false - } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "delete": { - "summary": "Delete session by id", - "description": "Delete session by session_id.", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.session", - "operationId": "delete_v1_session", - "responses": { - "204": { - "description": "The resource was deleted." - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "parameters": [ - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "type": "string" - } - } - ] - }, - "/v1/session/{session_id}/status": { - "parameters": [ - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "get": { - "summary": "A list of the statuses for the different boot sets.", - "description": "A list of the statuses for the different boot sets.\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "get_v1_session_status", - "responses": { - "200": { - "description": "A list of Boot Set Statuses and metadata", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.\n## Link Relationships\n\n* self : The session object\n* boot sets: URL to access the Boot Set status\n", - "properties": { - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "boot_sets": { - "description": "The boot sets in the Session\n", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "id": { - "type": "string", - "description": "Session ID" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "post": { - "summary": "Create the initial session status", - "description": "Creates the initial session status.\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "create_v1_session_status", - "requestBody": { - "description": "A JSON object for creating the status for a session", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.\n## Link Relationships\n\n* self : The session object\n* boot sets: URL to access the Boot Set status\n", - "properties": { - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "boot_sets": { - "description": "The boot sets in the Session\n", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "id": { - "type": "string", - "description": "Session ID" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "responses": { - "204": { - "description": "A list of Boot Set Statuses and metadata", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.\n## Link Relationships\n\n* self : The session object\n* boot sets: URL to access the Boot Set status\n", - "properties": { - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "boot_sets": { - "description": "The boot sets in the Session\n", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "id": { - "type": "string", - "description": "Session ID" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "patch": { - "summary": "Update the session status", - "description": "Update the session status. You can update the start or stop times.\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "update_v1_session_status", - "requestBody": { - "description": "A JSON object for updating the status for a session", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - } - } - } - }, - "responses": { - "200": { - "description": "A list of Boot Set Statuses and metadata", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Session. It is a list of all of the Boot Set Statuses in the session.\n## Link Relationships\n\n* self : The session object\n* boot sets: URL to access the Boot Set status\n", - "properties": { - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "boot_sets": { - "description": "The boot sets in the Session\n", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "id": { - "type": "string", - "description": "Session ID" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "404": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "delete": { - "summary": "Delete the session status", - "description": "Deletes an existing Session status\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "delete_v1_session_status", - "responses": { - "204": { - "description": "The resource was deleted." - }, - "400": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "/v1/session/{session_id}/status/{boot_set_name}": { - "parameters": [ - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "boot_set_name", - "in": "path", - "description": "Boot set name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "get": { - "summary": "Get the status for a boot set.", - "description": "Get the status for a boot set.", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "get_v1_session_status_by_bootset", - "responses": { - "200": { - "description": "A list of the Phase Statuses for the Boot Set and metadata", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Set. It as a list of the phase statuses for the Boot Set.\n\n## Link Relationships\n\n* self : The session object\n* phase : A phase of the boot set\n", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "Name of the Boot Set", - "example": "Boot-Set" - }, - "session": { - "type": "string", - "description": "Session ID", - "example": "Session-ID" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "phases": { - "type": "array", - "items": { - "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "post": { - "summary": "Create a Boot Set Status", - "description": "Create a status for a Boot Set\n", - "tags": [ - "session", - "status" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "create_v1_boot_set_status", - "requestBody": { - "description": "A JSON object for creating a status for a Boot Set", - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Set. It as a list of the phase statuses for the Boot Set.\n\n## Link Relationships\n\n* self : The session object\n* phase : A phase of the boot set\n", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "Name of the Boot Set", - "example": "Boot-Set" - }, - "session": { - "type": "string", - "description": "Session ID", - "example": "Session-ID" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "phases": { - "type": "array", - "items": { - "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "responses": { - "201": { - "description": "The created Boot Set status", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Set. It as a list of the phase statuses for the Boot Set.\n\n## Link Relationships\n\n* self : The session object\n* phase : A phase of the boot set\n", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "Name of the Boot Set", - "example": "Boot-Set" - }, - "session": { - "type": "string", - "description": "Session ID", - "example": "Session-ID" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "phases": { - "type": "array", - "items": { - "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - } - } - }, - "patch": { - "summary": "Update the status.", - "description": "This will change the status for one or more nodes within\nthe boot set.\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "update_v1_session_status_by_bootset", - "requestBody": { - "description": "A JSON object for updating the status for a session", - "required": true, - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "description": "This is the payload sent during an update request. It contains\nupdates to which categories nodes are in.\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "update_type": { - "description": "The type of update data", - "pattern": "NodeChangeList", - "type": "string" - }, - "phase": { - "description": "The phase that this data belongs to. If blank, it belongs to\nthe Boot Set itself, which only applies to the GenericMetadata type.\n", - "pattern": "(?i)shutdown|boot|configure", - "type": "string" - }, - "data": { - "type": "object", - "description": "The information used to update the status of a node list. It moves nodes from\none category to another within a phase.\n", - "properties": { - "phase": { - "type": "string", - "example": "Boot" - }, - "source": { - "type": "string", - "example": "in_progress" - }, - "destination": { - "type": "string", - "example": "Succeeded" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "phase", - "source", - "destination", - "node_list" - ] - } - } - } - }, - { - "description": "This is the payload sent during an update request. It contains\nupdates to which errors have occurred and which nodes encountered those errors\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "update_type": { - "description": "The type of update data", - "pattern": "NodeErrorsList", - "type": "string" - }, - "phase": { - "description": "The phase that this data belongs to. If blank, it belongs to\nthe Boot Set itself, which only applies to the GenericMetadata type.\n", - "pattern": "(?i)shutdown|boot|configure", - "type": "string" - }, - "data": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - }, - { - "description": "This is the payload sent during an update request. It contains\nupdates to metadata, specifically start and stop times\n", - "type": "array", - "items": { - "type": "object", - "properties": { - "update_type": { - "description": "The type of update data", - "pattern": "GenericMetadata", - "type": "string" - }, - "phase": { - "description": "The phase that this data belongs to. If the phase is boot_set, it belongs to\nthe Boot Set itself, which only applies to the GenericMetadata type.\n", - "pattern": "(?i)shutdown|boot|configure|boot_set", - "type": "string" - }, - "data": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - } - } - } - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "A list of Boot Set Statuses and metadata", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The status for a Boot Set. It as a list of the phase statuses for the Boot Set.\n\n## Link Relationships\n\n* self : The session object\n* phase : A phase of the boot set\n", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "description": "Name of the Boot Set", - "example": "Boot-Set" - }, - "session": { - "type": "string", - "description": "Session ID", - "example": "Session-ID" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "phases": { - "type": "array", - "items": { - "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" - }, - "href": { - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } }, - "delete": { - "summary": "Delete the Boot Set status", - "description": "Deletes an existing Boot Set status\n", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "delete_v1_boot_set_status", - "responses": { - "204": { - "description": "The resource was deleted." - }, - "400": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false + "UpdateConflict": { + "description": "The update was not allowed due to a conflict.", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" + }, + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" } - } + }, + "additionalProperties": false } } } - } - }, - "/v1/session/{session_id}/status/{boot_set_name}/{phase_name}": { - "parameters": [ - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "boot_set_name", - "in": "path", - "description": "Boot set name", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "phase_name", - "in": "path", - "description": "The phase name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "get": { - "summary": "Get the status for a specific boot set and phase.", - "description": "Get the status for a specific boot set and phase.", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "get_v1_session_status_by_bootset_and_phase", - "responses": { - "200": { - "description": "A list of the nodes in the Phase and Category", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "The phase's status. It is a list of all of the nodes in the phase and\nwhat category those nodes fall into within the phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase\n", - "example": "Boot", - "pattern": "^(?i)boot|configure|shutdown$" - }, - "metadata": { - "type": "object", - "description": "The status metadata\n", - "properties": { - "start_time": { - "type": "string", - "description": "The start time\n", - "example": "2020-04-24T12:00" - }, - "stop_time": { - "type": "string", - "description": "The stop time\n", - "example": "2020-04-24T12:00" - }, - "complete": { - "type": "boolean", - "description": "Is the object's status complete\n", - "example": true - }, - "in_progress": { - "type": "boolean", - "description": "Is the object still doing something\n", - "example": false - }, - "error_count": { - "type": "integer", - "description": "How many errors were encountered\n", - "example": 0 - } - }, - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - }, - "errors": { - "type": "object", - "description": "Categorizing nodes into failures by the type of error they have.\nThis is an additive characterization. Nodes will be added to existing errors.\nThis does not overwrite previously existing errors.\n", - "additionalProperties": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } + }, + "ServiceUnavailable": { + "description": "Service Unavailable", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" + }, + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false + }, + "additionalProperties": false + } + } + } + }, + "InternalError": { + "description": "An Internal Server Error occurred handling the request.", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" + }, + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" } - } + }, + "additionalProperties": false } } } } }, - "/v1/session/{session_id}/status/{boot_set_name}/{phase_name}/{category_name}": { - "parameters": [ - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "type": "string" - } + "parameters": { + "TemplateIdPathParam": { + "name": "session_template_id", + "in": "path", + "description": "Session Template name", + "required": true, + "schema": { + "type": "string", + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" + } + }, + "V2ComponentIdPathParam": { + "name": "component_id", + "in": "path", + "description": "Component ID. e.g. xname for hardware Components", + "required": true, + "schema": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + } + }, + "V2SessionIdPathParam": { + "name": "session_id", + "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + "V2SessionsMaxAgeQueryParam": { + "name": "max_age", + "schema": { + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, - { - "name": "boot_set_name", - "in": "path", - "description": "Boot set name", - "required": true, - "schema": { - "type": "string" - } + "in": "query", + "description": "Only include Sessions younger than the given age. Age is given in the format \"1d\" or \"6h\"" + }, + "V2SessionsMinAgeQueryParam": { + "name": "min_age", + "schema": { + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, - { - "name": "phase_name", - "in": "path", - "description": "The phase name", - "required": true, - "schema": { - "type": "string" - } + "in": "query", + "description": "Only include Sessions older than the given age. Age is given in the format \"1d\" or \"6h\"" + }, + "V2SessionsStatusQueryParam": { + "name": "status", + "schema": { + "type": "string", + "enum": [ + "pending", + "running", + "complete" + ], + "description": "The status of a Session." }, - { - "name": "category_name", - "in": "path", - "description": "The category name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "get": { - "summary": "Get the status for a specific boot set, phase, and category.", - "description": "Get the status for a specific boot set, phase, and category.", - "tags": [ - "session" - ], - "x-openapi-router-controller": "bos.server.controllers.v1.status", - "operationId": "get_v1_session_status_by_bootset_and_phase_and_category", - "responses": { - "200": { - "description": "A list of the nodes in the Phase and Category", - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "A list of the nodes in a given category within a phase.\n\n## Link Relationships\n\n* self : The session object\n", - "properties": { - "name": { - "type": "string", - "description": "Name of the Phase Category\n", - "example": "Succeeded", - "pattern": "^(?i)not_started|in_progress|succeeded|failed|excluded$" - }, - "node_list": { - "type": "array", - "items": { - "type": "string", - "example": [ - "x3000c0s19b1n0", - "x3000c0s19b2n0" - ] - } - } - } - } - } - } - }, - "404": { - "description": "The resource was not found.", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } + "in": "query", + "description": "Only include Sessions with the given status." + }, + "V2TenantHeaderParam": { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 } } - }, - "/v1/version": { + } + }, + "paths": { + "/": { "get": { - "summary": "Get API version", + "summary": "Get API versions", + "description": "Return list of versions currently running.", "tags": [ "version" ], - "x-openapi-router-controller": "bos.server.controllers.v1.base", - "operationId": "v1_get_version", + "x-openapi-router-controller": "bos.server.controllers.base", + "operationId": "root_get", "responses": { "200": { - "description": "Get version details\nThe versioning system uses [semver](https://semver.org/).\n## Link Relationships\n* self : Link to itself\n* versions : Link back to the versions resource\n", + "description": "A collection of Versions", "content": { "application/json": { "schema": { - "description": "Version data", - "type": "object", - "properties": { - "major": { - "type": "integer" - }, - "minor": { - "type": "integer" - }, - "patch": { - "type": "integer" - }, - "links": { - "type": "array", - "items": { - "description": "Link to other resources", - "type": "object", - "properties": { - "rel": { - "type": "string" + "type": "array", + "items": { + "description": "Version data", + "type": "object", + "properties": { + "major": { + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" + }, + "minor": { + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" + }, + "patch": { + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" + }, + "links": { + "description": "List of links to other resources", + "type": "array", + "items": { + "description": "Link to other resources", + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "rel": { + "type": "string" + } }, - "href": { - "type": "string" - } - }, - "additionalProperties": false + "additionalProperties": false + } } - } - }, - "additionalProperties": false + }, + "additionalProperties": false + } } } } }, "500": { - "description": "Bad Request", + "description": "An Internal Server Error occurred handling the request.", "content": { "application/problem+json": { "schema": { @@ -8940,13 +5649,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -8955,12 +5664,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -8975,6 +5684,7 @@ "/v2": { "get": { "summary": "Get API version", + "description": "Return the API version", "tags": [ "v2", "version" @@ -8991,24 +5701,28 @@ "type": "object", "properties": { "major": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "minor": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "patch": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "links": { + "description": "List of links to other resources", "type": "array", "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -9022,7 +5736,7 @@ } }, "500": { - "description": "Bad Request", + "description": "An Internal Server Error occurred handling the request.", "content": { "application/problem+json": { "schema": { @@ -9030,13 +5744,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -9045,12 +5759,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -9065,13 +5779,13 @@ "/v2/healthz": { "get": { "summary": "Get service health details", + "description": "Get BOS health details.", "tags": [ "v2", "healthz" ], "x-openapi-router-controller": "bos.server.controllers.v2.healthz", "operationId": "get_v2_healthz", - "description": "Get bos health details.", "responses": { "200": { "description": "Service Health information", @@ -9102,13 +5816,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -9117,12 +5831,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -9140,13 +5854,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -9155,12 +5869,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -9173,9 +5887,23 @@ } }, "/v2/sessiontemplates": { + "parameters": [ + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 + } + } + ], "get": { - "summary": "List session templates", - "description": "List all session templates. Session templates are\nuniquely identified by the name.\n", + "summary": "List Session Templates", + "description": "List all Session Templates.", "tags": [ "v2", "sessiontemplates" @@ -9184,113 +5912,182 @@ "operationId": "get_v2_sessiontemplates", "responses": { "200": { - "description": "Session template details", + "description": "Session Template details array", "content": { "application/json": { "schema": { - "description": "An array of session templates.", + "description": "An array of Session Templates.", "type": "array", "items": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -9301,16 +6098,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -9318,7 +6116,10 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } @@ -9332,16 +6133,33 @@ { "name": "session_template_id", "in": "path", - "description": "Session Template ID", + "description": "Session Template name", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" + } + }, + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 } } ], "get": { - "summary": "Validate the session template by id", - "description": "Validate session template by session_template_id.\nThe session_template_id corresponds to the *name*\nof the session template.\n", + "summary": "Validate the Session Template by ID", + "description": "Validate Session Template by Session Template ID.\nThe Session Template ID corresponds to the *name*\nof the Session Template.\n", "tags": [ "v2", "sessiontemplatess" @@ -9350,7 +6168,7 @@ "operationId": "validate_v2_sessiontemplate", "responses": { "200": { - "description": "Session template validity details", + "description": "Session Template validity details", "content": { "application/json": { "schema": { @@ -9369,13 +6187,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -9384,12 +6202,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -9406,16 +6224,33 @@ { "name": "session_template_id", "in": "path", - "description": "Session Template ID", + "description": "Session Template name", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" + } + }, + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 } } ], "get": { - "summary": "Get session template by id", - "description": "Get session template by session_template_id.\nThe session_template_id corresponds to the *name*\nof the session template.\n", + "summary": "Get Session Template by ID", + "description": "Get Session Template by Session Template ID.\nThe Session Template ID corresponds to the *name*\nof the Session Template.\n", "tags": [ "v2", "sessiontemplatess" @@ -9424,110 +6259,179 @@ "operationId": "get_v2_sessiontemplate", "responses": { "200": { - "description": "Session template details", + "description": "Session Template details", "content": { "application/json": { "schema": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -9538,16 +6442,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -9555,7 +6460,10 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } @@ -9569,13 +6477,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -9584,12 +6492,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -9601,120 +6509,189 @@ } }, "put": { - "summary": "Create session template", + "summary": "Create Session Template", + "description": "Create a new Session Template.", "tags": [ "v2", "sessiontemplates" ], "x-openapi-router-controller": "bos.server.controllers.v2.sessiontemplates", "operationId": "put_v2_sessiontemplate", - "description": "Create a new session template.", "requestBody": { - "description": "A JSON object for creating a session template", + "description": "A JSON object for creating a Session Template", "required": true, "content": { "application/json": { "schema": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -9725,16 +6702,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -9742,117 +6720,189 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } }, "responses": { "200": { - "description": "Session template details", + "description": "Session Template details", "content": { "application/json": { "schema": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -9863,16 +6913,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -9880,7 +6931,10 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } @@ -9894,13 +6948,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -9909,12 +6963,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -9926,7 +6980,8 @@ } }, "patch": { - "summary": "Update a session template", + "summary": "Update a Session Template", + "description": "Update an existing Session Template.", "tags": [ "v2", "sessiontemplates" @@ -9934,111 +6989,180 @@ "x-openapi-router-controller": "bos.server.controllers.v2.sessiontemplates", "operationId": "patch_v2_sessiontemplate", "requestBody": { - "description": "A JSON object for updating a session template", + "description": "A JSON object for updating a Session Template", "required": true, "content": { "application/json": { "schema": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -10049,16 +7173,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -10066,117 +7191,189 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } }, "responses": { "200": { - "description": "Session template details", + "description": "Session Template details", "content": { "application/json": { "schema": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -10187,16 +7384,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -10204,7 +7402,10 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } @@ -10218,13 +7419,51 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" + }, + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "404": { + "description": "The resource was not found.", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -10233,12 +7472,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -10250,8 +7489,8 @@ } }, "delete": { - "summary": "Delete a session template", - "description": "Delete a session template.", + "summary": "Delete a Session Template", + "description": "Delete a Session Template.", "tags": [ "v2", "sessiontemplates" @@ -10271,13 +7510,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -10286,12 +7525,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -10305,8 +7544,8 @@ }, "/v2/sessiontemplatetemplate": { "get": { - "summary": "Get an example session template.", - "description": "Returns a skeleton of a session template, which can be\nused as a starting point for users creating their own\nsession templates.\n", + "summary": "Get an example Session Template.", + "description": "Returns a skeleton of a Session Template, which can be\nused as a starting point for users creating their own\nSession Templates.\n", "tags": [ "v2", "sessiontemplates" @@ -10315,110 +7554,179 @@ "operationId": "get_v2_sessiontemplatetemplate", "responses": { "200": { - "description": "Session template details", + "description": "Session Template details", "content": { "application/json": { "schema": { "type": "object", - "description": "A Session Template object represents a collection of resources and metadata.\nA session template is used to create a Session which applies the data to\ngroup of components.\n\nA Session Template can be created from a JSON structure. It will return\na SessionTemplate name if successful.\nThis name is required when creating a Session.\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session Template object represents a collection of resources and metadata.\nA Session Template is used to create a Session which applies the data to\ngroup of Components.\n\n## Link Relationships\n\n* self : The Session Template object\n", "properties": { "name": { "type": "string", - "description": "Name of the SessionTemplate. The length of the name is restricted to 45 characters.", - "example": "cle-1.0.0", "minLength": 1, - "maxLength": 45, - "pattern": "[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*", - "readOnly": true + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "readOnly": true, + "description": "Name of the Session Template.\n\nNames must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "example": "cle-1.0.0" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "description": { "type": "string", - "description": "An optional description for the session template.\n" + "description": "An optional description for the Session Template.", + "minLength": 1, + "maxLength": 1023 }, "enable_cfs": { "type": "boolean", - "description": "Whether to enable the Configuration Framework Service (CFS).\nChoices: true/false\n", + "description": "Whether to enable the Configuration Framework Service (CFS).\n", "default": true }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "boot_sets": { "type": "object", + "description": "Mapping from Boot Set names to Boot Sets.\n\n* Boot Set names must be 1-127 characters in length.\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "minProperties": 1, + "maxProperties": 127, "additionalProperties": { - "description": "A boot set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n", + "description": "A Boot Set is a collection of nodes defined by an explicit list, their functional\nrole, and their logical groupings. This collection of nodes is associated with one\nset of boot artifacts and optional additional records for configuration and root\nfilesystem provisioning.\n\nA boot set requires at least one of the following fields to be specified:\nnode_list, node_roles_groups, node_groups\n\nIf specified, the name field must match the key mapping to this boot set in the\nboot_sets field of the containing V2SessionTemplate.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "The Boot Set name.\n" + "description": "The Boot Set name.\n\n* Boot Set names must use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Boot Set names must begin and end with a letter or digit.\n", + "example": "compute", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "writeOnly": true }, "path": { "type": "string", - "description": "A path identifying the metadata describing the components of the boot image. This could be a URI, URL, etc.\nIt will be processed based on the type attribute.\n" + "description": "A path identifying the metadata describing the components of the boot image.\nThis could be a URI, URL, etc, depending on the type of the Boot Set.\n", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/manifest.json", + "minLength": 1, + "maxLength": 4095 }, "cfs": { "type": "object", - "description": "CFS Parameters is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a boot set.\n", + "description": "This is the collection of parameters that are passed to the Configuration\nFramework Service when configuration is enabled. Can be set as the global value for\na Session Template, or individually within a Boot Set.\n", "properties": { "configuration": { "type": "string", - "description": "The name of configuration to be applied.\n" + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 } }, "additionalProperties": false }, "type": { "type": "string", - "description": "The mime type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n" + "description": "The MIME type of the metadata describing the components of the boot image. This type controls how BOS processes the path attribute.\n", + "example": "s3", + "minLength": 1, + "maxLength": 127 }, "etag": { "type": "string", - "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.\n" + "description": "This is the 'entity tag'. It helps verify the version of metadata describing the components of the boot image we are working with.", + "example": "1cc4eef4f407bd8a62d7d66ee4b9e9c8", + "maxLength": 65536 }, "kernel_parameters": { "type": "string", - "description": "The kernel parameters to use to boot the nodes.\n" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "node_list": { "type": "array", - "items": { - "type": "string" - }, + "description": "A node list that is required to have at least one node.\nNodes must be specified by component name (xname). NIDs are not supported.\nIf the reject_nids option is enabled, then Session Template creation or validation will fail if\nany of the boot sets contain a NodeList that appears to contain a NID.\n", "minItems": 1, - "description": "The node list of hardware xnames. If the reject_nids option is enabled, then Session Template creation or validation will fail if it contains a boot set with a node list that appears to contain a NID.\n" + "maxItems": 65535, + "example": [ + "x3000c0s19b1n0", + "x3000c0s19b2n0" + ], + "items": { + "type": "string", + "description": "Hardware component name (xname).", + "example": "x3001c0s39b0n0", + "minLength": 1, + "maxLength": 127 + } }, "node_roles_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node role list. Allows actions against nodes with associated roles.", "minItems": 1, - "description": "The node roles list. Allows actions against nodes with associated roles. Roles are defined in SMD.\n" + "maxItems": 1023, + "example": [ + "Compute", + "Application" + ], + "items": { + "type": "string", + "description": "Name of a role that is defined in the Hardware State Manager (HSM).", + "example": "Compute", + "minLength": 1, + "maxLength": 127 + } }, "node_groups": { "type": "array", - "items": { - "type": "string" - }, + "description": "Node group list. Allows actions against associated nodes by logical groupings.", "minItems": 1, - "description": "The node groups list. Allows actions against associated nodes by logical groupings. Logical groups are user-defined groups in SMD.\n" + "maxItems": 4095, + "items": { + "type": "string", + "description": "Name of a user-defined logical group in the Hardware State Manager (HSM).", + "minLength": 1, + "maxLength": 127 + } + }, + "arch": { + "type": "string", + "description": "The node architecture to target. Filters nodes that are not part of matching architecture from being targeted by boot actions. This value should correspond to HSM component 'Arch' field exactly. For reasons of backwards compatibility, all HSM nodes that are of type Unknown are treated as being of type X86.\n", + "default": "X86", + "enum": [ + "X86", + "ARM", + "Other", + "Unknown" + ] }, "rootfs_provider": { "type": "string", - "description": "The root file system provider.\n" + "description": "The root file system provider.", + "example": "cpss3", + "minLength": 1, + "maxLength": 511 }, "rootfs_provider_passthrough": { "type": "string", - "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n" + "description": "The root file system provider passthrough.\nThese are additional kernel parameters that will be appended to\nthe 'rootfs=' kernel parameter\n", + "example": "dvs:api-gw-service-nmn.local:300:nmn0", + "maxLength": 4096 } }, "additionalProperties": false, @@ -10429,16 +7737,17 @@ } }, "links": { + "description": "List of links to other resources", "type": "array", "readOnly": true, "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -10446,7 +7755,10 @@ } } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "boot_sets" + ] } } } @@ -10455,9 +7767,23 @@ } }, "/v2/sessions": { + "parameters": [ + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 + } + } + ], "post": { - "summary": "Create a session", - "description": "The creation of a session performs the operation\nspecified in the SessionCreateRequest\non the boot set(s) defined in the session template.\n", + "summary": "Create a Session", + "description": "The creation of a Session performs the operation\nspecified in the SessionCreateRequest\non the Boot Sets defined in the Session Template.\n", "tags": [ "v2", "sessions" @@ -10465,21 +7791,21 @@ "x-openapi-router-controller": "bos.server.controllers.v2.sessions", "operationId": "post_v2_session", "requestBody": { - "description": "The information to create a session", + "description": "The information to create a Session", "required": true, "content": { "application/json": { "schema": { - "description": "A Session Creation object\n", + "description": "A Session Creation object. A UUID name is generated if a name is not provided. The limit parameter is\nrequired if the session_limit_required option is true.\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session. The name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.", - "example": "session-20190728032600", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", "minLength": 1, "maxLength": 127, - "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$" + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, "operation": { "type": "string", @@ -10488,21 +7814,26 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n", + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n", "default": false }, "include_disabled": { @@ -10526,12 +7857,23 @@ "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -10540,41 +7882,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -10583,17 +7934,24 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } @@ -10607,13 +7965,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -10622,12 +7980,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -10639,30 +7997,33 @@ } }, "get": { - "summary": "List sessions", - "description": "List all sessions, including those in progress and those complete.\n", - "tags": [ - "v2", - "sessions" - ], - "x-openapi-router-controller": "bos.server.controllers.v2.sessions", - "operationId": "get_v2_sessions", + "summary": "List Sessions", "parameters": [ { "name": "min_age", "schema": { - "type": "string" + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "in": "query", - "description": "Return only sessions older than the given age. Age is given in the format \"1d\" or \"6h\"" + "description": "Only include Sessions older than the given age. Age is given in the format \"1d\" or \"6h\"" }, { "name": "max_age", "schema": { - "type": "string" + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "in": "query", - "description": "Return only sessions younger than the given age. Age is given in the format \"1d\" or \"6h\"" + "description": "Only include Sessions younger than the given age. Age is given in the format \"1d\" or \"6h\"" }, { "name": "status", @@ -10672,27 +8033,46 @@ "pending", "running", "complete" - ] + ], + "description": "The status of a Session." }, "in": "query", - "description": "Return only sessions with the given status." + "description": "Only include Sessions with the given status." } ], + "description": "List all Sessions, including those in progress and those complete.\n", + "tags": [ + "v2", + "sessions" + ], + "x-openapi-router-controller": "bos.server.controllers.v2.sessions", + "operationId": "get_v2_sessions", "responses": { "200": { - "description": "Session details", + "description": "Session details array", "content": { "application/json": { "schema": { - "description": "An array of sessions.", + "description": "An array of Sessions.", "type": "array", "items": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -10701,41 +8081,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -10744,17 +8133,24 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } @@ -10763,45 +8159,56 @@ } }, "delete": { - "summary": "Delete multiple sessions.", - "tags": [ - "v2", - "sessions" - ], - "x-openapi-router-controller": "bos.server.controllers.v2.sessions", - "operationId": "delete_v2_sessions", + "summary": "Delete multiple Sessions.", "parameters": [ { "name": "min_age", "schema": { - "type": "string" + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "in": "query", - "description": "Return only sessions older than the given age. Age is given in the format \"1d\" or \"6h\"" + "description": "Only include Sessions older than the given age. Age is given in the format \"1d\" or \"6h\"" }, { "name": "max_age", "schema": { - "type": "string" + "type": "string", + "description": "Age in minutes (e.g. \"3m\"), hours (e.g. \"5h\"), days (e.g. \"10d\"), or weeks (e.g. \"2w\").", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "in": "query", - "description": "Return only sessions younger than the given age. Age is given in the format \"1d\" or \"6h\"" + "description": "Only include Sessions younger than the given age. Age is given in the format \"1d\" or \"6h\"" }, { "name": "status", "schema": { + "type": "string", "enum": [ "pending", "running", "complete" ], - "type": "string" + "description": "The status of a Session." }, "in": "query", - "description": "Return only sessions with the given status." + "description": "Only include Sessions with the given status." } ], - "description": "Delete multiple sessions. If filters are provided, only sessions matching all filters will be deleted. By default only completed sessions will be deleted.", + "description": "Delete multiple Sessions. If filters are provided, only Sessions matching\nall filters will be deleted. By default only completed Sessions will be deleted.\n", + "tags": [ + "v2", + "sessions" + ], + "x-openapi-router-controller": "bos.server.controllers.v2.sessions", + "operationId": "delete_v2_sessions", "responses": { "204": { "description": "The resource was deleted." @@ -10815,13 +8222,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -10830,12 +8237,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -10848,9 +8255,37 @@ } }, "/v2/sessions/{session_id}": { + "parameters": [ + { + "name": "session_id", + "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 + } + } + ], "get": { - "summary": "Get session details by id", - "description": "Get session details by session_id.", + "summary": "Get Session details by ID", + "description": "Get Session details by Session ID.", "tags": [ "v2", "sessions" @@ -10863,12 +8298,23 @@ "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -10877,41 +8323,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -10920,17 +8375,24 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } @@ -10944,13 +8406,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -10959,12 +8421,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -10976,69 +8438,43 @@ } }, "patch": { - "summary": "Update a single session", + "summary": "Update status of a single Session", + "description": "Update the state for a given Session in the BOS database.\nThis is intended only for internal use by the BOS service.\n", "tags": [ "v2", - "sessions" + "sessions", + "cli_ignore" ], "x-openapi-router-controller": "bos.server.controllers.v2.sessions", - "description": "Update the state for a given session in the BOS database", "operationId": "patch_v2_session", "requestBody": { - "description": "The state for a single session", + "description": "The state for a single Session", "required": true, "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session update object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { - "name": { - "type": "string", - "description": "Name of the session.\n" - }, - "operation": { - "type": "string", - "enum": [ - "boot", - "reboot", - "shutdown" - ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" - }, - "template_name": { - "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" - }, - "limit": { - "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" - }, - "stage": { - "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" - }, - "include_disabled": { - "type": "boolean", - "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" - }, "components": { "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -11047,11 +8483,13 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false @@ -11068,12 +8506,23 @@ "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -11082,41 +8531,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -11125,17 +8583,24 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } @@ -11149,13 +8614,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -11164,12 +8629,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -11187,13 +8652,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -11202,12 +8667,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -11219,8 +8684,8 @@ } }, "delete": { - "summary": "Delete session by id", - "description": "Delete session by session_id.", + "summary": "Delete Session by ID", + "description": "Delete Session by Session ID.", "tags": [ "v2", "sessions" @@ -11240,13 +8705,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -11255,12 +8720,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -11270,7 +8735,9 @@ } } } - }, + } + }, + "/v2/sessions/{session_id}/status": { "parameters": [ { "name": "session_id", @@ -11278,15 +8745,30 @@ "description": "Session ID", "required": true, "schema": { - "type": "string" + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 } } - ] - }, - "/v2/sessions/{session_id}/status": { + ], "get": { - "summary": "Get session extended status information by id", - "description": "Get session extended status information by id", + "summary": "Get Session extended status information by ID", + "description": "Get Session extended status information by ID", "tags": [ "v2", "sessions" @@ -11300,7 +8782,7 @@ "application/json": { "schema": { "type": "object", - "description": "Detailed information on the status of a session.\n", + "description": "Detailed information on the status of a Session.\n", "properties": { "status": { "type": "string", @@ -11309,66 +8791,69 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "managed_components_count": { "type": "integer", - "description": "The count of components currently managed by this session\n" + "description": "The count of Components currently managed by this Session\n" }, "phases": { "type": "object", - "description": "Detailed information on the phases of a session.\n", + "description": "Detailed information on the phases of a Session.\n", "properties": { "percent_complete": { "type": "number", - "description": "The percent of components currently in a completed/stable state\n" + "description": "The percent of Components currently in a completed/stable state\n" }, "percent_powering_on": { "type": "number", - "description": "The percent of components currently in the powering-on phase\n" + "description": "The percent of Components currently in the powering-on phase\n" }, "percent_powering_off": { "type": "number", - "description": "The percent of components currently in the powering-off phase\n" + "description": "The percent of Components currently in the powering-off phase\n" }, "percent_configuring": { "type": "number", - "description": "The percent of components currently in the configuring phase\n" + "description": "The percent of Components currently in the configuring phase\n" } }, "additionalProperties": false }, "percent_successful": { "type": "number", - "description": "The percent of components currently in a successful state\n" + "description": "The percent of Components currently in a successful state\n" }, "percent_failed": { "type": "number", - "description": "The percent of components currently in a failed state\n" + "description": "The percent of Components currently in a failed state\n" }, "percent_staged": { "type": "number", - "description": "The percent of components currently still staged for this session\n" + "description": "The percent of Components currently still staged for this Session\n" }, "error_summary": { "type": "object", - "description": "A summary of the errors currently listed by all components\n" + "description": "A summary of the errors currently listed by all Components\n" }, "timing": { "type": "object", - "description": "Detailed information on the timing of a session.\n", + "description": "Detailed information on the timing of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "duration": { "type": "string", - "description": "The current duration of the on-going session or final duration of the completed session.\n" + "description": "The current duration of the ongoing Session or final duration of the completed Session.\n" } }, "additionalProperties": false @@ -11388,13 +8873,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -11403,12 +8888,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -11420,14 +8905,14 @@ } }, "post": { - "summary": "Saves the current session to database", + "summary": "Saves the current Session to database", "tags": [ "v2", "sessions", "cli_ignore" ], "x-openapi-router-controller": "bos.server.controllers.v2.sessions", - "description": "Saves the current session to database. For use at session completion.", + "description": "Saves the current Session to database. For use at Session completion.", "operationId": "save_v2_session_status", "responses": { "200": { @@ -11435,12 +8920,23 @@ "content": { "application/json": { "schema": { - "description": "A Session object\n\n## Link Relationships\n\n* self : The session object\n", + "description": "A Session object\n\n## Link Relationships\n\n* self : The Session object\n", "type": "object", "properties": { "name": { "type": "string", - "description": "Name of the session.\n" + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + }, + "tenant": { + "type": "string", + "description": "Name of the tenant that owns this resource. Only used in environments\nwith multi-tenancy enabled. An empty string or null value means the resource\nis not owned by a tenant. The absence of this field from a resource indicates\nthe same.\n", + "nullable": true, + "readOnly": true, + "maxLength": 127 }, "operation": { "type": "string", @@ -11449,41 +8945,50 @@ "reboot", "shutdown" ], - "description": "A Session represents a desired state that is being applied to a group of components. Sessions run until all components it manages have either been disabled due to completion, or until all components are managed by other newer sessions.\nOperation -- An operation to perform on nodes in this session.\n Boot Applies the template to the components and boots/reboots if necessary.\n Reboot Applies the template to the components guarantees a reboot.\n Shutdown Power down nodes that are on.\n" + "description": "A Session represents a desired state that is being applied to a group\nof Components. Sessions run until all Components it manages have\neither been disabled due to completion, or until all Components are\nmanaged by other newer Sessions.\n\nOperation -- An operation to perform on Components in this Session.\n Boot Applies the Template to the Components and boots/reboots if necessary.\n Reboot Applies the Template to the Components; guarantees a reboot.\n Shutdown Power down Components that are on.\n" }, "template_name": { "type": "string", - "description": "The name of the Session Template", - "example": "my-session-template", - "format": "string" + "description": "Name of the Session Template.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "cle-1.0.0" }, "limit": { "type": "string", - "description": "A comma-separated of nodes, groups, or roles to which the session will be limited. Components are treated as OR operations unless preceded by \"&\" for AND or \"!\" for NOT.\n" + "description": "A comma-separated list of nodes, groups, or roles to which the Session\nwill be limited. Components are treated as OR operations unless\npreceded by \"&\" for AND or \"!\" for NOT.\n\nAlternatively, the limit can be set to \"*\", which means no limit.\n\nAn empty string or null value is the same as specifying no limit.\n\nIf the reject_nids option is enabled, then Session creation will fail if its\nlimit appears to contain a NID value.\n", + "maxLength": 524288, + "nullable": true, + "default": "" }, "stage": { "type": "boolean", - "description": "Set to stage a session which will not immediately change the state of any components. The \"applystaged\" endpoint can be called at a later time to trigger the start of this session.\n" + "description": "Set to stage a Session which will not immediately change the state of any Components.\nThe \"applystaged\" endpoint can be called at a later time to trigger the start of this Session.\n" + }, + "components": { + "type": "string", + "description": "A comma-separated list of nodes, representing the initial list of nodes\nthe Session should operate against. The list will remain even if\nother Sessions have taken over management of the nodes.\n", + "maxLength": 524288 }, "include_disabled": { "type": "boolean", "description": "Set to include nodes that have been disabled as indicated in the Hardware State Manager (HSM).\n" }, - "components": { - "type": "string", - "description": "A comma-separated list of nodes, representing the initial list of nodes the session should operate against. The list will remain even if other sessions have taken over management of the nodes.\n" - }, "status": { "type": "object", - "description": "Information on the status of a session.\n", + "description": "Information on the status of a Session.\n", "properties": { "start_time": { "type": "string", - "description": "When the session was created.\n" + "description": "When the Session was created.", + "maxLength": 127 }, "end_time": { "type": "string", - "description": "When the session completed.\n" + "nullable": true, + "description": "When the Session was completed. A null value means the Session has not ended.", + "maxLength": 127 }, "status": { "type": "string", @@ -11492,17 +8997,24 @@ "running", "complete" ], - "description": "The status of a session.\n" + "description": "The status of a Session." }, "error": { "type": "string", - "description": "Error which prevented the session from running\n" + "nullable": true, + "description": "Error which prevented the Session from running.\nA null value means the Session has not encountered an error.\n", + "maxLength": 65536 } }, "additionalProperties": false } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "name", + "operation", + "template_name" + ] } } } @@ -11516,13 +9028,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -11531,12 +9043,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -11546,53 +9058,62 @@ } } } - }, + } + }, + "/v2/components": { "parameters": [ { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, "schema": { - "type": "string" + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 } } - ] - }, - "/v2/components": { + ], "get": { - "summary": "Retrieve the state of a collection of components", - "tags": [ - "v2", - "components" - ], - "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Retrieve the full collection of components in the form of a ComponentArray. Full results can also be filtered by query parameters. Only the first filter parameter of each type is used and the parameters are applied in an AND fashion. If the collection is empty or the filters have no match, an empty array is returned.", - "operationId": "get_v2_components", + "summary": "Retrieve the state of a collection of Components", "parameters": [ { "name": "ids", "schema": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "in": "query", - "description": "Retrieve the components with the given id (e.g. xname for hardware components). Can be chained for selecting groups of components." + "description": "Retrieve the Components with the given ID\n(e.g. xname for hardware Components). Can be chained\nfor selecting groups of Components." }, { "name": "session", "schema": { - "type": "string" + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, "in": "query", - "description": "Retrieve the components with the given session id." + "description": "Retrieve the Components with the given Session ID." }, { "name": "staged_session", "schema": { - "type": "string" + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" }, "in": "query", - "description": "Retrieve the components with the given staged session id." + "description": "Retrieve the Components with the given staged Session ID." }, { "name": "enabled", @@ -11600,43 +9121,55 @@ "type": "boolean" }, "in": "query", - "description": "Retrieve the components with the \"enabled\" state." + "description": "Retrieve the Components with the \"enabled\" state." }, { "name": "phase", "schema": { - "type": "string" + "type": "string", + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "in": "query", - "description": "Retrieve the components in the given phase." + "description": "Retrieve the Components in the given phase." }, { "name": "status", "schema": { - "type": "string" + "type": "string", + "maxLength": 512 }, "in": "query", - "description": "Retrieve the components with the given status." + "description": "Retrieve the Components with the given status." } ], + "description": "Retrieve the full collection of Components in the form of a\nComponentArray. Full results can also be filtered by query\nparameters. Only the first filter parameter of each type is\nused and the parameters are applied in an AND fashion.\nIf the collection is empty or the filters have no match, an\nempty array is returned.", + "tags": [ + "v2", + "components" + ], + "x-openapi-router-controller": "bos.server.controllers.v2.components", + "operationId": "get_v2_components", "responses": { "200": { - "description": "A collection of component states", + "description": "A collection of Component states", "content": { "application/json": { "schema": { - "description": "An array of component states.", + "description": "An array of Component states.", "type": "array", "items": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -11645,22 +9178,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -11673,7 +9213,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -11682,26 +9222,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -11714,7 +9263,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -11723,26 +9272,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -11767,7 +9323,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -11782,58 +9339,69 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } @@ -11848,13 +9416,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -11863,12 +9431,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -11880,33 +9448,35 @@ } }, "put": { - "summary": "Add or Replace a collection of components", + "summary": "Add or Replace a collection of Components", + "description": "Update the state for a collection of Components in the BOS database", "tags": [ "v2", "components", "cli_ignore" ], "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Update the state for a collection of components in the BOS database", "operationId": "put_v2_components", "requestBody": { - "description": "The state for an array of components", + "description": "The state for an array of Components", "required": true, "content": { "application/json": { "schema": { - "description": "An array of component states.", + "description": "An array of Component states with associated Ids.", "type": "array", "items": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -11915,22 +9485,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -11943,7 +9520,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -11952,26 +9529,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -11984,7 +9570,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -11993,26 +9579,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -12037,7 +9630,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -12052,58 +9646,71 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "required": [ + "id" + ] } } } @@ -12111,22 +9718,24 @@ }, "responses": { "200": { - "description": "A collection of component states", + "description": "A collection of Component states", "content": { "application/json": { "schema": { - "description": "An array of component states.", + "description": "An array of Component states.", "type": "array", "items": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -12135,22 +9744,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -12163,7 +9779,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -12172,26 +9788,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -12204,7 +9829,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -12213,26 +9838,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -12257,7 +9889,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -12272,58 +9905,69 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } @@ -12338,13 +9982,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -12353,506 +9997,112 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "patch": { - "summary": "Update a collection of components", - "tags": [ - "v2", - "components", - "cli_ignore" - ], - "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Update the state for a collection of components in the BOS database", - "operationId": "patch_v2_components", - "requestBody": { - "description": "The state for an array of components", - "required": true, - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "patch": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, - "enabled": { - "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" - }, - "retry_policy": { - "type": "integer", - "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 - } - }, - "additionalProperties": false - }, - "filters": { - "description": "Information for patching multiple components.", - "type": "object", - "properties": { - "ids": { - "type": "string", - "description": "A comma-separated list of component IDs" - }, - "session": { - "type": "string", - "description": "A session name. All components part of this session will be patched." - } - } - } - }, - "required": [ - "patch", - "filters" - ] - }, - { - "description": "An array of component states.", - "type": "array", - "items": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, - "enabled": { - "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" - }, - "retry_policy": { - "type": "integer", - "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 - } - }, - "additionalProperties": false + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" } + }, + "additionalProperties": false + } + } + } + } + } + }, + "patch": { + "summary": "Update a collection of Components", + "description": "Update the state for a collection of Components in the BOS database", + "tags": [ + "v2", + "components" + ], + "x-openapi-router-controller": "bos.server.controllers.v2.components", + "operationId": "patch_v2_components", + "requestBody": { + "description": "A Component state and filter", + "required": true, + "content": { + "application/json": { + "schema": { + "description": "Information for patching multiple Components.", + "type": "object", + "properties": { + "patch": { + "description": "Component attributes that can be updated using the CLI\n", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 + } + }, + "additionalProperties": false, + "minProperties": 1 + }, + "filters": { + "description": "Information for patching multiple Components by listing their IDs or\nsession. Only one of the two may be specified.\n", + "type": "object", + "properties": { + "ids": { + "type": "string", + "description": "A comma-separated list of Component IDs.", + "minLength": 1, + "maxLength": 65535 + }, + "session": { + "type": "string", + "description": "Name of the Session.\n\nThe name must:\n* Use only letters, digits, periods (.), dashes (-), and underscores (_).\n* Begin and end with a letter or digit.\n", + "minLength": 1, + "maxLength": 127, + "pattern": "^[a-zA-Z0-9](?:[-._a-zA-Z0-9]{0,125}[a-zA-Z0-9])?$", + "example": "session-20190728032600" + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false } - ] + }, + "required": [ + "patch", + "filters" + ], + "additionalProperties": false } } } }, "responses": { "200": { - "description": "A collection of component states", + "description": "A collection of Component states", "content": { "application/json": { "schema": { - "description": "An array of component states.", + "description": "An array of Component states.", "type": "array", "items": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -12861,22 +10111,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -12889,7 +10146,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -12898,26 +10155,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -12930,7 +10196,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -12939,26 +10205,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -12983,7 +10256,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -12998,58 +10272,69 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } @@ -13064,13 +10349,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -13079,12 +10364,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -13102,13 +10387,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -13117,12 +10402,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -13135,30 +10420,58 @@ } }, "/v2/components/{component_id}": { + "parameters": [ + { + "name": "component_id", + "in": "path", + "description": "Component ID. e.g. xname for hardware Components", + "required": true, + "schema": { + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 + } + }, + { + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, + "schema": { + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 + } + } + ], "get": { - "summary": "Retrieve the state of a single component", + "summary": "Retrieve the state of a single Component", + "description": "Retrieve the current and desired state of a single Component", "tags": [ "v2", "components" ], "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Retrieve the current and desired state of a single component", "operationId": "get_v2_component", "responses": { "200": { - "description": "A single component state", + "description": "A single Component state", "content": { "application/json": { "schema": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -13167,22 +10480,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -13195,7 +10515,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -13204,26 +10524,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -13236,7 +10565,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -13245,26 +10574,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -13289,7 +10625,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -13304,58 +10641,69 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } @@ -13369,13 +10717,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -13384,12 +10732,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -13407,13 +10755,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -13422,12 +10770,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -13439,245 +10787,58 @@ } }, "put": { - "summary": "Add or Replace a single component", + "summary": "Add or Replace a single Component", + "description": "Update the state for a given Component in the BOS database", "tags": [ "v2", "components" ], "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Update the state for a given component in the BOS database", "operationId": "put_v2_component", - "requestBody": { - "description": "The state for a single component", - "required": true, - "content": { - "application/json": { - "schema": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, + "requestBody": { + "description": "The state for a single Component", + "required": true, + "content": { + "application/json": { + "schema": { + "description": "Component attributes that can be updated using the CLI\n", + "type": "object", + "properties": { "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "description": "A flag indicating if actions should be taken for this Component." }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } }, "responses": { "200": { - "description": "A single component state", + "description": "A single Component state", "content": { "application/json": { "schema": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -13686,22 +10847,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -13714,7 +10882,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -13723,26 +10891,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -13755,7 +10932,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -13764,26 +10941,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -13798,367 +10982,192 @@ "last_action": { "description": "Information on the most recent action taken against the node.\n", "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." - }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } - }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." - }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." - }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } - }, - "additionalProperties": false - }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } - }, - "additionalProperties": false - }, - "enabled": { - "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" - }, - "retry_policy": { - "type": "integer", - "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 - } - }, - "additionalProperties": false - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/problem+json": { - "schema": { - "description": "An error response for RFC 7807 problem details.", - "type": "object", - "properties": { - "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", - "type": "string", - "format": "uri", - "default": "about:blank" - }, - "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", - "type": "string" - }, - "status": { - "description": "HTTP status code", - "type": "integer", - "example": 400 - }, - "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", - "format": "uri", - "type": "string" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", - "type": "string" - } - }, - "additionalProperties": false - } - } - } - } - } - }, - "patch": { - "summary": "Update a single component", - "tags": [ - "v2", - "components" - ], - "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Update the state for a given component in the BOS database", - "operationId": "patch_v2_component", - "requestBody": { - "description": "The state for a single component", - "required": true, - "content": { - "application/json": { - "schema": { - "description": "The current and desired artifacts state for a component.\n", - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The component's id. e.g. xname for hardware components" - }, - "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "bss_token": { - "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "bss_token": { - "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", - "type": "object", - "properties": { - "boot_artifacts": { - "description": "A collection of boot artifacts.\n", - "type": "object", - "properties": { - "kernel": { - "type": "string", - "description": "An md5sum hash of the kernel ID" - }, - "kernel_parameters": { - "type": "string", - "description": "Kernel parameters" - }, - "initrd": { - "type": "string", - "description": "Initrd ID" - } - }, - "additionalProperties": false - }, - "configuration": { - "type": "string", - "description": "A CFS configuration ID." - }, - "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." - }, - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - } - }, - "additionalProperties": false - }, - "last_action": { - "description": "Information on the most recent action taken against the node.\n", - "type": "object", - "properties": { - "last_updated": { - "type": "string", - "description": "The date/time when the state was last updated in RFC 3339 format.", - "example": "2019-07-28T03:26:00Z", - "format": "date-time", - "readOnly": true - }, - "action": { - "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "properties": { + "last_updated": { + "type": "string", + "description": "The date/time when the state was last updated in RFC 3339 format.", + "example": "2019-07-28T03:26:00Z", + "format": "date-time", + "readOnly": true + }, + "action": { + "type": "string", + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 + }, + "failed": { + "type": "boolean", + "description": "Denotes if the last action failed to accomplish its task" + } }, - "failed": { - "type": "boolean", - "description": "Denotes if the last action failed to accomplish its task" - } + "additionalProperties": false }, - "additionalProperties": false - }, - "event_stats": { - "description": "Information on the most recent attempt to return the node to its desired state.\n", - "type": "object", - "properties": { - "power_on_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "event_stats": { + "description": "Information on the most recent attempt to return the node to its desired state.\n", + "type": "object", + "properties": { + "power_on_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_graceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + }, + "power_off_forceful_attempts": { + "type": "integer", + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 + } }, - "power_off_graceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "additionalProperties": false + }, + "status": { + "description": "Status information for the Component", + "type": "object", + "properties": { + "phase": { + "type": "string", + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 + }, + "status": { + "type": "string", + "description": "The current status of the Component. More detailed than phase.", + "readOnly": true + }, + "status_override": { + "type": "string", + "description": "If set, this will override the status value.", + "maxLength": 65536 + } }, - "power_off_forceful_attempts": { - "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." - } + "additionalProperties": false }, - "additionalProperties": false + "enabled": { + "type": "boolean", + "description": "A flag indicating if actions should be taken for this Component." + }, + "error": { + "type": "string", + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 + }, + "session": { + "type": "string" + }, + "retry_policy": { + "type": "integer", + "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", + "example": 1, + "minimum": 0, + "maximum": 1048576 + } }, - "status": { - "description": "Status information for the component", - "type": "object", - "properties": { - "phase": { - "type": "string", - "description": "The current phase of the component in the boot process." - }, - "status": { - "type": "string", - "description": "The current status of the component. More detailed than phase.", - "readOnly": true - }, - "status_override": { - "type": "string", - "description": "If set, this will override the status value." - } + "additionalProperties": false, + "minProperties": 1 + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" }, - "additionalProperties": false + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" + } }, + "additionalProperties": false + } + } + } + } + } + }, + "patch": { + "summary": "Update a single Component", + "description": "Update the state for a given Component in the BOS database", + "tags": [ + "v2", + "components" + ], + "x-openapi-router-controller": "bos.server.controllers.v2.components", + "operationId": "patch_v2_component", + "requestBody": { + "description": "The state for a single Component", + "required": true, + "content": { + "application/json": { + "schema": { + "description": "Component attributes that can be updated using the CLI\n", + "type": "object", + "properties": { "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." - }, - "error": { - "type": "string", - "description": "A description of the most recent error to impact the component." - }, - "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "description": "A flag indicating if actions should be taken for this Component." }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } }, "responses": { "200": { - "description": "A single component state", + "description": "A single Component state", "content": { "application/json": { "schema": { - "description": "The current and desired artifacts state for a component.\n", + "description": "The current and desired artifacts state for a Component, and\nthe Session responsible for the Component's current state.\n", "type": "object", "properties": { "id": { "type": "string", - "description": "The component's id. e.g. xname for hardware components" + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 }, "actual_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The actual boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -14167,22 +11176,29 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "bss_token": { "type": "string", - "description": "A token received from the node identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -14195,7 +11211,7 @@ "additionalProperties": false }, "desired_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The desired boot artifacts and configuration for a Component\n", "type": "object", "properties": { "boot_artifacts": { @@ -14204,26 +11220,35 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "bss_token": { "type": "string", - "description": "A token received from BSS identifying the boot artifacts. For BOS use-only, users should not set this field. It will be overwritten.\n" + "description": "A token received from the node identifying the boot artifacts.\nFor BOS use-only, users should not set this field. It will be overwritten.\n", + "maxLength": 65535 }, "last_updated": { "type": "string", @@ -14236,7 +11261,7 @@ "additionalProperties": false }, "staged_state": { - "description": "The desired boot artifacts and configuration for a component\n", + "description": "The staged boot artifacts and configuration for a Component. Optionally, a Session\nmay be set which can be triggered at a later time against this Component.\n", "type": "object", "properties": { "boot_artifacts": { @@ -14245,26 +11270,33 @@ "properties": { "kernel": { "type": "string", - "description": "An md5sum hash of the kernel ID" + "description": "A path to the kernel to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/kernel", + "maxLength": 4095 }, "kernel_parameters": { "type": "string", - "description": "Kernel parameters" + "description": "The kernel parameters to use to boot the nodes.", + "example": "console=ttyS0,115200 bad_page=panic crashkernel=340M hugepagelist=2m-2g intel_iommu=off intel_pstate=disable iommu=pt ip=dhcp numa_interleave_omit=headless numa_zonelist_order=node oops=panic pageblock_order=14 pcie_ports=native printk.synchronous=y rd.neednet=1 rd.retry=10 rd.shell turbo_boost_limit=999 spire_join_token=${SPIRE_JOIN_TOKEN}", + "maxLength": 4096 }, "initrd": { "type": "string", - "description": "Initrd ID" + "description": "A path to the initrd to use for booting.", + "example": "s3://boot-images/9e3c75e1-ac42-42c7-873c-e758048897d6/initrd", + "maxLength": 4095 } }, "additionalProperties": false }, "configuration": { "type": "string", - "description": "A CFS configuration ID." + "description": "The name of configuration to be applied.", + "example": "compute-23.4.0", + "maxLength": 127 }, "session": { - "type": "string", - "description": "A session which can be triggered at a later time against this component." + "type": "string" }, "last_updated": { "type": "string", @@ -14289,7 +11321,8 @@ }, "action": { "type": "string", - "description": "A description of the most recent operator/action to impact the component." + "description": "A description of the most recent operator/action to impact the Component.", + "maxLength": 1024 }, "failed": { "type": "boolean", @@ -14304,58 +11337,69 @@ "properties": { "power_on_attempts": { "type": "integer", - "description": "How many attempts have been made to power-on since the last time the node was in the desired state." + "description": "How many attempts have been made to power-on since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_graceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off gracefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 }, "power_off_forceful_attempts": { "type": "integer", - "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state." + "description": "How many attempts have been made to power-off forcefully since the last time the node was in the desired state.", + "minimum": 0, + "maximum": 1048576 } }, "additionalProperties": false }, "status": { - "description": "Status information for the component", + "description": "Status information for the Component", "type": "object", "properties": { "phase": { "type": "string", - "description": "The current phase of the component in the boot process." + "description": "The current phase of the Component in the boot process.", + "maxLength": 128 }, "status": { "type": "string", - "description": "The current status of the component. More detailed than phase.", + "description": "The current status of the Component. More detailed than phase.", "readOnly": true }, "status_override": { "type": "string", - "description": "If set, this will override the status value." + "description": "If set, this will override the status value.", + "maxLength": 65536 } }, "additionalProperties": false }, "enabled": { "type": "boolean", - "description": "A flag indicating if actions should be taken for this component." + "description": "A flag indicating if actions should be taken for this Component." }, "error": { "type": "string", - "description": "A description of the most recent error to impact the component." + "description": "A description of the most recent error to impact the Component.", + "maxLength": 65536 }, "session": { - "type": "string", - "description": "The session responsible for the component's current state" + "type": "string" }, "retry_policy": { "type": "integer", "description": "The maximum number attempts per action when actions fail.\nDefaults to the global default_retry_policy if not set\n", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 } }, - "additionalProperties": false + "additionalProperties": false, + "minProperties": 1 } } } @@ -14369,13 +11413,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -14384,12 +11428,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -14407,13 +11451,51 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", + "type": "string", + "format": "uri", + "default": "about:blank" + }, + "title": { + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", + "type": "string" + }, + "status": { + "description": "HTTP status code", + "type": "integer", + "example": 400 + }, + "instance": { + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", + "format": "uri", + "type": "string" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", + "type": "string" + } + }, + "additionalProperties": false + } + } + } + }, + "409": { + "description": "The update was not allowed due to a conflict.", + "content": { + "application/problem+json": { + "schema": { + "description": "An error response for RFC 7807 problem details.", + "type": "object", + "properties": { + "type": { + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -14422,12 +11504,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -14439,14 +11521,14 @@ } }, "delete": { + "summary": "Delete a single Component", + "description": "Delete the given Component", "tags": [ "v2", "components", "cli_ignore" ], - "summary": "Delete a single component", "x-openapi-router-controller": "bos.server.controllers.v2.components", - "description": "Delete the given component", "operationId": "delete_v2_component", "responses": { "204": { @@ -14461,13 +11543,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -14476,12 +11558,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -14491,23 +11573,26 @@ } } } - }, + } + }, + "/v2/applystaged": { "parameters": [ { - "name": "component_id", - "in": "path", - "description": "Component id. e.g. xname for hardware components", - "required": true, + "name": "Cray-Tenant-Name", + "in": "header", + "description": "Tenant name.\n\nRequests with a non-empty tenant name will restict the context of the operation to Session Templates owned by that tenant.\n\nRequests with an empty tenant name, or that omit this parameter, will have no such context restrictions.\n", + "required": false, "schema": { - "type": "string" + "type": "string", + "description": "Name of a tenant. Used for multi-tenancy. An empty string means no tenant.", + "example": "vcluster-my-tenant1", + "maxLength": 127 } } - ] - }, - "/v2/applystaged": { + ], "post": { - "summary": "Start a staged session for the specified components", - "description": "Given a list of xnames, this will trigger the start of any sessions\nstaged for those components. Components without a staged session\nwill be ignored, and a list all components that are acted on will\nbe returned in the response.\n", + "summary": "Start a staged Session for the specified Components", + "description": "Given a list of xnames, this will trigger the start of any Sessions\nstaged for those Components. Components without a staged Session\nwill be ignored, and a list all Components that are acted on will\nbe returned in the response.\n", "tags": [ "v2", "applystaged" @@ -14515,19 +11600,23 @@ "x-openapi-router-controller": "bos.server.controllers.v2.components", "operationId": "post_v2_apply_staged", "requestBody": { - "description": "A list of xnames that should have their staged session applied.", + "description": "A list of xnames that should have their staged Session applied.", "required": true, "content": { "application/json": { "schema": { - "description": "A list of components that should have their staged session applied.\n", + "description": "A list of Components that should have their staged Session applied.\n", "type": "object", "properties": { "xnames": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } } }, @@ -14538,32 +11627,44 @@ }, "responses": { "200": { - "description": "A list of xnames that should have their staged session applied.", + "description": "A list of xnames that should have their staged Session applied.", "content": { "application/json": { "schema": { - "description": "A list of components that should have their staged session applied.\n", + "description": "Mapping from Component staged Session statuses to Components with that status.\n", "type": "object", "properties": { "succeeded": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } }, "failed": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } }, "ignored": { - "description": "The list of component xnames", + "description": "A list of Component IDs (xnames)", "type": "array", + "maxItems": 32768, "items": { - "type": "string" + "type": "string", + "description": "The Component's ID. (e.g. xname for hardware Components)", + "minLength": 1, + "maxLength": 127 } } }, @@ -14581,13 +11682,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -14596,12 +11697,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -14616,11 +11717,11 @@ "/v2/options": { "get": { "summary": "Retrieve the BOS service options", + "description": "Retrieve the list of BOS service options.", "tags": [ "options" ], "x-openapi-router-controller": "bos.server.controllers.v2.options", - "description": "Retrieve the list of BOS service options.", "operationId": "get_v2_options", "responses": { "200": { @@ -14628,71 +11729,94 @@ "content": { "application/json": { "schema": { - "description": "Options for the boot orchestration service.\n", + "description": "Options for the Boot Orchestration Service.\n", "type": "object", "properties": { "cleanup_completed_session_ttl": { "type": "string", - "description": "Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior." + "description": "Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).\n0 disables cleanup behavior.\n", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "clear_stage": { "type": "boolean", - "description": "Allows components staged information to be cleared when the requested staging action has been started. Defaults to false." + "description": "Allows a Component's staged information to be cleared when the requested staging action has been started. Defaults to false." }, "component_actual_state_ttl": { "type": "string", - "description": "The maximum amount of time a component's actual state is considered valid (in hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically." + "description": "The maximum amount of time a Component's actual state is considered valid (in minutes, hours, days, or weeks).\n0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.\n", + "example": "6h", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "disable_components_on_completion": { "type": "boolean", - "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes." + "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.\nIf false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.\n" }, "discovery_frequency": { "type": "integer", - "description": "How frequently the BOS discovery agent syncs new components from HSM. (in seconds)" + "description": "How frequently the BOS discovery agent syncs new Components from HSM (in seconds)", + "minimum": 0, + "maximum": 33554432 }, "logging_level": { "type": "string", - "description": "The logging level for all BOS services" + "description": "The logging level for all BOS services", + "pattern": "^([dD][eE][bB][uU][gG]|[iI][nN][fF][oO]|[wW][aA][rR][nN][iI][nN][gG]|[eE][rR][rR][oO][rR]|[cC][rR][iI][tT][iI][cC][aA][lL])$" }, "max_boot_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)" + "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_on_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)" + "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_off_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)" + "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "polling_frequency": { "type": "integer", - "description": "How frequently the BOS operators check component state for needed actions. (in seconds)" + "description": "How frequently the BOS operators check Component state for needed actions (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "default_retry_policy": { "type": "integer", "description": "The default maximum number attempts per node for failed actions.", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 }, "max_component_batch_size": { "type": "integer", - "description": "The maximum number of components that a BOS operator will process at once. 0 means no limit.", + "description": "The maximum number of Components that a BOS operator will process at once. 0 means no limit.", "example": 1000, "minimum": 0, "maximum": 131071 }, "reject_nids": { "type": "boolean", - "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started)." + "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).\n" }, "session_limit_required": { "type": "boolean", "description": "If true, Sessions cannot be created without specifying the limit parameter." } }, - "additionalProperties": true + "additionalProperties": true, + "minProperties": 1, + "maxProperties": 1024 } } } @@ -14701,84 +11825,107 @@ }, "patch": { "summary": "Update BOS service options", + "description": "Update one or more of the BOS service options.", "tags": [ "v2", "options" ], "x-openapi-router-controller": "bos.server.controllers.v2.options", "operationId": "patch_v2_options", - "description": "Update one or more of the BOS service options.", "requestBody": { "description": "Service-wide options", "required": true, "content": { "application/json": { "schema": { - "description": "Options for the boot orchestration service.\n", + "description": "Options for the Boot Orchestration Service.\n", "type": "object", "properties": { "cleanup_completed_session_ttl": { "type": "string", - "description": "Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior." + "description": "Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).\n0 disables cleanup behavior.\n", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "clear_stage": { "type": "boolean", - "description": "Allows components staged information to be cleared when the requested staging action has been started. Defaults to false." + "description": "Allows a Component's staged information to be cleared when the requested staging action has been started. Defaults to false." }, "component_actual_state_ttl": { "type": "string", - "description": "The maximum amount of time a component's actual state is considered valid (in hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically." + "description": "The maximum amount of time a Component's actual state is considered valid (in minutes, hours, days, or weeks).\n0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.\n", + "example": "6h", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "disable_components_on_completion": { "type": "boolean", - "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes." + "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.\nIf false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.\n" }, "discovery_frequency": { "type": "integer", - "description": "How frequently the BOS discovery agent syncs new components from HSM. (in seconds)" + "description": "How frequently the BOS discovery agent syncs new Components from HSM (in seconds)", + "minimum": 0, + "maximum": 33554432 }, "logging_level": { "type": "string", - "description": "The logging level for all BOS services" + "description": "The logging level for all BOS services", + "pattern": "^([dD][eE][bB][uU][gG]|[iI][nN][fF][oO]|[wW][aA][rR][nN][iI][nN][gG]|[eE][rR][rR][oO][rR]|[cC][rR][iI][tT][iI][cC][aA][lL])$" }, "max_boot_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)" + "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_on_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)" + "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_off_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)" + "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "polling_frequency": { "type": "integer", - "description": "How frequently the BOS operators check component state for needed actions. (in seconds)" + "description": "How frequently the BOS operators check Component state for needed actions (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "default_retry_policy": { "type": "integer", "description": "The default maximum number attempts per node for failed actions.", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 }, "max_component_batch_size": { "type": "integer", - "description": "The maximum number of components that a BOS operator will process at once. 0 means no limit.", + "description": "The maximum number of Components that a BOS operator will process at once. 0 means no limit.", "example": 1000, "minimum": 0, "maximum": 131071 }, "reject_nids": { "type": "boolean", - "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started)." + "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).\n" }, "session_limit_required": { "type": "boolean", "description": "If true, Sessions cannot be created without specifying the limit parameter." } }, - "additionalProperties": true + "additionalProperties": true, + "minProperties": 1, + "maxProperties": 1024 } } } @@ -14789,71 +11936,94 @@ "content": { "application/json": { "schema": { - "description": "Options for the boot orchestration service.\n", + "description": "Options for the Boot Orchestration Service.\n", "type": "object", "properties": { "cleanup_completed_session_ttl": { "type": "string", - "description": "Delete complete sessions that are older than cleanup_completed_session_ttl (in hours). 0h disables cleanup behavior." + "description": "Delete complete Sessions that are older than cleanup_completed_session_ttl (in minutes, hours, days, or weeks).\n0 disables cleanup behavior.\n", + "example": "3d", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "clear_stage": { "type": "boolean", - "description": "Allows components staged information to be cleared when the requested staging action has been started. Defaults to false." + "description": "Allows a Component's staged information to be cleared when the requested staging action has been started. Defaults to false." }, "component_actual_state_ttl": { "type": "string", - "description": "The maximum amount of time a component's actual state is considered valid (in hours). 0h disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically." + "description": "The maximum amount of time a Component's actual state is considered valid (in minutes, hours, days, or weeks).\n0 disables cleanup behavior for newly booted nodes and instructs bos-state-reporter to report once instead of periodically.\n", + "example": "6h", + "pattern": "^(0|0[mMhHdDwW]|[1-9][0-9]*[mMhHdDwW])$", + "minLength": 1, + "maxLength": 8 }, "disable_components_on_completion": { "type": "boolean", - "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS. If false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes." + "description": "If true, when a Session has brought a Component to its desired state, that Component will be marked as disabled in BOS.\nIf false, BOS will continue to maintain the state of the nodes declaratively, even after a Session finishes.\n" }, "discovery_frequency": { "type": "integer", - "description": "How frequently the BOS discovery agent syncs new components from HSM. (in seconds)" + "description": "How frequently the BOS discovery agent syncs new Components from HSM (in seconds)", + "minimum": 0, + "maximum": 33554432 }, "logging_level": { "type": "string", - "description": "The logging level for all BOS services" + "description": "The logging level for all BOS services", + "pattern": "^([dD][eE][bB][uU][gG]|[iI][nN][fF][oO]|[wW][aA][rR][nN][iI][nN][gG]|[eE][rR][rR][oO][rR]|[cC][rR][iI][tT][iI][cC][aA][lL])$" }, "max_boot_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)" + "description": "How long BOS will wait for a node to boot into a usable state before rebooting it again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_on_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)" + "description": "How long BOS will wait for a node to power on before calling power on again (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "max_power_off_wait_time": { "type": "integer", - "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)" + "description": "How long BOS will wait for a node to power off before forcefully powering off (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "polling_frequency": { "type": "integer", - "description": "How frequently the BOS operators check component state for needed actions. (in seconds)" + "description": "How frequently the BOS operators check Component state for needed actions (in seconds)", + "minimum": 0, + "maximum": 1048576 }, "default_retry_policy": { "type": "integer", "description": "The default maximum number attempts per node for failed actions.", - "example": 1 + "example": 1, + "minimum": 0, + "maximum": 1048576 }, "max_component_batch_size": { "type": "integer", - "description": "The maximum number of components that a BOS operator will process at once. 0 means no limit.", + "description": "The maximum number of Components that a BOS operator will process at once. 0 means no limit.", "example": 1000, "minimum": 0, "maximum": 131071 }, "reject_nids": { "type": "boolean", - "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started)." + "description": "If true, then BOS will attempt to prevent Sessions and Session Templates that reference NIDs (which BOS does not support).\nSpecifically, if this option is true, then:\n- When creating a Session, if the Session limit or a Session Template node list appear to contain NID values, then Session creation will fail.\n- When creating a Session Template, if a node list appears to contain a NID value, then the Session Template creation will fail.\n- When validating an existing Session Template, if a node list appears to contain a NID value, then the validation will report an error.\n\nThis option does NOT have an effect on Sessions that were created prior to it being enabled (even if they have not yet started).\n" }, "session_limit_required": { "type": "boolean", "description": "If true, Sessions cannot be created without specifying the limit parameter." } }, - "additionalProperties": true + "additionalProperties": true, + "minProperties": 1, + "maxProperties": 1024 } } } @@ -14867,13 +12037,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -14882,12 +12052,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } }, @@ -14902,6 +12072,7 @@ "/v2/version": { "get": { "summary": "Get API version", + "description": "Return the API version", "tags": [ "v2", "version" @@ -14918,24 +12089,28 @@ "type": "object", "properties": { "major": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "minor": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "patch": { - "type": "integer" + "type": "string", + "pattern": "^(0|[1-9][0-9]*)$" }, "links": { + "description": "List of links to other resources", "type": "array", "items": { "description": "Link to other resources", "type": "object", "properties": { - "rel": { + "href": { "type": "string" }, - "href": { + "rel": { "type": "string" } }, @@ -14957,13 +12132,13 @@ "type": "object", "properties": { "type": { - "description": "Relative URI reference to the type of problem which includes human readable documentation.", + "description": "Relative URI reference to the type of problem which includes human\nreadable documentation.\n", "type": "string", "format": "uri", "default": "about:blank" }, "title": { - "description": "Short, human-readable summary of the problem, should not change by occurrence.", + "description": "Short, human-readable summary of the problem, should not change by\noccurrence.\n", "type": "string" }, "status": { @@ -14972,12 +12147,12 @@ "example": 400 }, "instance": { - "description": "A relative URI reference that identifies the specific occurrence of the problem", + "description": "A relative URI reference that identifies the specific occurrence of\nthe problem\n", "format": "uri", "type": "string" }, "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem. Focus on helping correct the problem, rather than giving debugging information.", + "description": "A human-readable explanation specific to this occurrence of the\nproblem. Focus on helping correct the problem, rather than giving\ndebugging information.\n", "type": "string" } },