1

The goal is to use the az iot edge deployment update command to change a module in an azure iot hub/edge deployment. The attempt to do this uses the property-path within the deployment configuration json to replace the image path. The problem is that there is a dot in a json property properties.desired and attempts of escaping it have been futile. The file is a default azure deployment configuration file.

Command format

az iot edge deployment update --deployment-id <name-of-deployment> --hub-name <name-of-iot-hub> --set <json-path>=<new-value>

First part of the deployment configuration (json) The goal is to change the value of image

{
    "content": {
        "modulesContent": {
            "$edgeAgent": {
                "properties.desired": {
                    "modules": {
                        "demoimage1-latest": {
                            "settings": {
                                "image": "demoworkspac2478a907.azurecr.io/demoimage1:6",

The most obvious attempt

az iot edge deployment update --deployment-id demoimage1-6 --hub-name iot-hubski --set content.modulesContent.'$edgeAgent'.'properties.desired'.modules.'demoimage1-latest'.settings.image=demoworkspac2478a907.azurecr.io/demoimage1:5

Gives

Couldn't find 'properties' in 'content.modulesContent.$edgeAgent.properties.desired.modules.demoimage1-latest'. Available options: ['properties.desired']

Status

Many things have been tried using both bash (ubuntu LTS vm) and powershell (win10)

  • [properties.desired]
  • '[properties.desired]'
  • ['properties.desired']
  • properties\.desired
  • properties.desired`
  • properties.desired
  • '..."properties.desired"...'
  • '...\"properties.desired\"...'
  • '$edgeAgent'[properties.desired]
  • '$edgeAgent'['properties.desired']
  • ^[properties.desired^]
  • ^^[properties.desired^^]
  • ``[properties.desired]
  • ```[properties.desired``]`
Laurens Koppenol
  • 2,946
  • 2
  • 20
  • 33
  • I solved this by not using this command, but rather deleting and redeploying the azure iot hub deployment. If anyone has a solution i'm still very interested! Also posted this as comment on the microsoft documentation – Laurens Koppenol Aug 12 '19 at 09:37

1 Answers1

2

you need to manually strinigying the $edgeHub JSON.

az iot edge deployment update --deployment-id testedge --hub-name microwaves --set content.modulesContent.'$edgeHub'="{'properties.desired': {'routes': {'route': 'FROM /messages/* INTO $upstream'},'schemaVersion': '1.0','storeAndForwardConfiguration': {'timeToLiveSecs': 7201}}}"

However it doesn't do anything because of content being immutable. Items that can be updated by az iot edge deployment update command: labels, metrics, priority and targetCondition. labels and metrics do not allow values with ‘.’ in the name.

Greg
  • 3,861
  • 3
  • 23
  • 58
Philip
  • 118
  • 5