Skip to content

Commit

Permalink
Adding Device Update for IoT Hub update-manifest v5 schema. (#2439)
Browse files Browse the repository at this point in the history
  • Loading branch information
dpokluda committed Aug 25, 2022
1 parent d6c8a3e commit cdba6d9
Show file tree
Hide file tree
Showing 5 changed files with 306 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/api/json/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -274,9 +274,10 @@
"name": "Azure Device Update for IoT Hub update manifest",
"description": "Azure Device Update for IoT Hub update manifest schema",
"fileMatch": ["*.updatemanifest.json"],
"url": "https://json.schemastore.org/azure-deviceupdate-update-manifest-4.json",
"url": "https://json.schemastore.org/azure-deviceupdate-update-manifest-5.json",
"versions": {
"4": "https://json.schemastore.org/azure-deviceupdate-update-manifest-4.json"
"4": "https://json.schemastore.org/azure-deviceupdate-update-manifest-4.json",
"5": "https://json.schemastore.org/azure-deviceupdate-update-manifest-5.json"
}
},
{
Expand Down
6 changes: 6 additions & 0 deletions src/schema-validation.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"appveyor.json",
"asmdef.json",
"azure-deviceupdate-update-manifest-4.json",
"azure-deviceupdate-update-manifest-5.json",
"azure-deviceupdate-import-manifest-4.0.json",
"azure-deviceupdate-import-manifest-5.0.json",
"azure-iot-edge-deployment-1.0.json",
Expand Down Expand Up @@ -282,6 +283,11 @@
"externalSchema": ["azure-deviceupdate-manifest-definitions-4.0.json"]
}
},
{
"azure-deviceupdate-update-manifest-5.json": {
"externalSchema": ["azure-deviceupdate-manifest-definitions-5.0.json"]
}
},
{
"azure-iot-edge-deployment-template-1.0.json": {
"externalSchema": ["azure-iot-edge-deployment-1.0.json"]
Expand Down
216 changes: 216 additions & 0 deletions src/schemas/json/azure-deviceupdate-update-manifest-5.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
{
"$id": "https://json.schemastore.org/azure-deviceupdate-update-manifest-5.json",
"$schema": "http://json-schema.org/draft-07/schema",
"definitions": {
"miniUpdateManifest": {
"type": "object",
"title": "Mini update manifest",
"description": "Manifest containing metadata of the detached, downloadable, complete update manifest.",
"properties": {
"detachedManifestFileId": {
"$ref": "#/definitions/fileId"
},
"files": {
"type": "object",
"title": "Update manifest file",
"description": "Map of '#/definitions/fileId' to file metadata.",
"additionalProperties": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/file"
},
"minProperties": 1,
"maxProperties": 1
}
},
"required": ["detachedManifestFileId", "files"]
},
"fullUpdateManifest": {
"type": "object",
"title": "Complete update manifest.",
"description": "Full update manifest containing metadata of the update being deployed.",
"properties": {
"compatibility": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/compatibility"
},
"instructions": {
"type": "object",
"title": "Installation instructions",
"properties": {
"steps": {
"type": "array",
"title": "Installation steps",
"items": {
"anyOf": [
{
"$ref": "#/definitions/inlineStep"
},
{
"$ref": "#/definitions/referenceStep"
}
]
},
"minItems": 1,
"maxItems": 10
}
},
"required": ["steps"]
},
"files": {
"type": "object",
"title": "Update files",
"description": "Map of '#/definitions/fileId' to file metadata.",
"additionalProperties": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/file"
},
"minProperties": 1,
"maxProperties": 20
},
"createdDateTime": {
"type": "string",
"title": "Created date & time",
"description": "Date & time update was created in ISO 8601 format.",
"examples": ["2020-10-02T22:18:04.9446744Z"]
}
},
"required": ["compatibility", "instructions", "files", "createdDateTime"]
},
"fileId": {
"type": "string",
"title": "Update file id",
"description": "Server generated file identifier to be used for retrieving file metadata and download URL.",
"minLength": 1
},
"inlineStep": {
"type": "object",
"title": "Inline installation step",
"description": "Installation instruction step that performs code execution.",
"properties": {
"type": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/inlineStepType"
},
"handler": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/inlineStepHandler"
},
"files": {
"type": "array",
"title": "Step update files",
"description": "'fileId' of update files that agent will pass to handler.",
"items": {
"$ref": "#/definitions/fileId"
},
"minItems": 1,
"maxItems": 10
},
"handlerProperties": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/inlineStepHandlerProperties"
}
},
"additionalProperties": false,
"required": ["handler", "files"]
},
"referenceStep": {
"type": "object",
"title": "Reference installation step",
"description": "Installation instruction step that installs another update.",
"properties": {
"type": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/referenceStepType"
},
"detachedManifestFileId": {
"$ref": "#/definitions/fileId"
}
},
"additionalProperties": false,
"required": ["type", "detachedManifestFileId"]
}
},
"description": "JSON schema of update manifest sent by Device Update for IoT Hub to device agent during deployment.",
"examples": [
{
"manifestVersion": "4",
"updateId": {
"provider": "Microsoft",
"name": "Toaster",
"version": "1.0"
},
"compatibility": [
{
"deviceManufacturer": "Microsoft",
"deviceModel": "Toaster"
}
],
"instructions": {
"steps": [
{
"handler": "microsoft/script:1",
"handlerProperties": {
"arguments": "--pre-install"
},
"files": ["fileId0"]
},
{
"type": "reference",
"detachedManifestFileId": "fileId1"
}
]
},
"files": {
"fileId0": {
"filename": "configure.sh",
"sizeInBytes": 718,
"hashes": {
"sha256": "mcB5SexMU4JOOzqmlJqKbue9qMskWY3EI/iVjJxCtAs="
},
"relatedFiles": [
{
"filename": "in1_in2_deltaupdate.dat",
"sizeInBytes": 102910752,
"hashes": {
"sha256": "2MIldV8LkdKenjJasgTHuYi+apgtNQ9FeL2xsV3ikHY="
},
"properties": {
"microsoft.sourceFileHashAlgorithm": "sha256",
"microsoft.sourceFileHash": "YmFYwnEUddq2nZsBAn5v7gCRKdHx+TUntMz5tLwU+24="
}
}
],
"downloadHandler": {
"id": "microsoft/delta:1"
}
},
"fileId1": {
"filename": "microsoft.sensor.1.0.updatemanifest.json",
"sizeInBytes": 2048,
"hashes": {
"sha256": "789s9PDfX4uA9wFUubyC30BWkLFbgmpkpmz1fEdqo2U="
}
}
},
"createdDateTime": "2021-09-28T18:32:01.8404544Z"
}
],
"oneOf": [
{
"$ref": "#/definitions/miniUpdateManifest"
},
{
"$ref": "#/definitions/fullUpdateManifest"
}
],
"properties": {
"$schema": {
"type": "string",
"description": "JSON schema reference"
},
"updateId": {
"$ref": "azure-deviceupdate-manifest-definitions-5.0.json#/definitions/updateId"
},
"manifestVersion": {
"type": "string",
"title": "Update manifest schema version",
"const": "4"
}
},
"required": ["updateId", "manifestVersion"],
"title": "JSON Schema for Azure Device Update for IoT Hub 'Update Manifest' version 4.0",
"type": "object"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"compatibility": [
{
"deviceManufacturer": "Microsoft",
"deviceModel": "Toaster"
}
],
"createdDateTime": "2021-09-28T18:32:01.8404544Z",
"files": {
"fileId0": {
"filename": "configure.sh",
"sizeInBytes": 718,
"hashes": {
"sha256": "mcB5SexMU4JOOzqmlJqKbue9qMskWY3EI/iVjJxCtAs="
},
"relatedFiles": [
{
"filename": "in1_in2_deltaupdate.dat",
"sizeInBytes": 102910752,
"hashes": {
"sha256": "2MIldV8LkdKenjJasgTHuYi+apgtNQ9FeL2xsV3ikHY="
},
"properties": {
"microsoft.sourceFileHashAlgorithm": "sha256",
"microsoft.sourceFileHash": "YmFYwnEUddq2nZsBAn5v7gCRKdHx+TUntMz5tLwU+24="
}
}
],
"downloadHandler": {
"id": "microsoft/delta:1"
}
},
"fileId1": {
"filename": "microsoft.sensor.1.0.updatemanifest.json",
"sizeInBytes": 2048,
"hashes": {
"sha256": "789s9PDfX4uA9wFUubyC30BWkLFbgmpkpmz1fEdqo2U=",
"sha384": "cuyLnmRVmw3TYZKXl4VcOhIcn7C7mzTmEZQCGLXTKxge8ojxdskURelxoO+xMibz"
}
}
},
"instructions": {
"steps": [
{
"handler": "microsoft/script:1",
"handlerProperties": {
"arguments": "--pre-install"
},
"files": ["fileId0"]
},
{
"type": "reference",
"detachedManifestFileId": "fileId1"
}
]
},
"manifestVersion": "4",
"updateId": {
"provider": "Microsoft",
"name": "ADU",
"version": "1.0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"detachedManifestFileId": "fileId1",
"files": {
"fileId1": {
"filename": "microsoft.sensor.1.0.updatemanifest.json",
"sizeInBytes": 2048,
"hashes": {
"sha256": "789s9PDfX4uA9wFUubyC30BWkLFbgmpkpmz1fEdqo2U="
}
}
},
"manifestVersion": "4",
"updateId": {
"provider": "Microsoft",
"name": "ADU",
"version": "1.0"
}
}

0 comments on commit cdba6d9

Please sign in to comment.