Introduction

DirectedGraphs are not executing over the java generated objects produced by YangTools. Directed graphs execute over a Properties object.

When the data has been converted into the Properties object it can be said it is in the node strings format. To work on directed graphs the node string format must be understood.

Yang Models

Mdsal projects start with a yang model. It is the yang model that determines the structure of the rpc, config tree and operational tree. The model will also in turn determine the node strings format.

Overview

Properties are nothing more then key value pairs all of the type string.

These properties can come from 3 places:

  1. RPC input
  2. Configuration tree in Mdsal
  3. Operational tree in Mdsal

Detailed Example

The client invokes an RPC http://localhost:8181/restconf/operations/L3AVPN-PORT-API:service-configuration-notification using this XML body

<input xmlns="com:att:sdnctl:l3avpnport:v1">
<svc-request-id>TEST7</svc-request-id>
<response-code>0</response-code>
<response-message>Plc Activation Failed: Device gblond2005me6 Sync-from Failed. Please check device IP address and NCS setup.</response-message>
<ack-final-indicator>Y</ack-final-indicator>
<service-information>
<service-type>AVPN</service-type>
<service-instance-id>TEST7</service-instance-id>
</service-information>
</input>

Before the client sends this request there is already data in operational GET http://localhost:8181/restconf/operational/L3AVPN-PORT-API:services/service-list/TEST7/

{
  "service-list": [
    {
      "service-instance-id": "TEST7",
      "service-data": {
        "service-information": {
          "service-type": "AVPN",
          "service-instance-id": "ICORESITE-2751508"
        },
        "oper-status": {
          "order-status": "Completed"
        },
        "sdnc-request-header": {
          "svc-notification-url": "https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification",
          "svc-action": "activateport",
          "svc-request-id": "ICORESITE-2751508"
        },
        "request-information": {
          "request-id": "ICORESITE-2751508",
          "source": "SDNC",
          "notification-url": "https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification",
          "request-action": "ChangeLayer3ServiceActivateRequest",
          "configuration-action": "Layer3ServiceActivateRequest"
        },
        "avpn-ip-port-information": {
          "avpn-access-information": {
            "vlan-tag-control": "1Q",
            "access-speed-units": "Kbps",
            "managed-ce": "N",
            "access-speed": "10000",
            "l1-customer-handoff": "1000BASELX",
            "access-circuit-id": "DHEC.54831.170.ATI",
            "access-interface": "1G"
          },
          "endpoint-information": {
            "interface-string": "ae0",
            "vpe-name": "gblond2005me6",
            "bundle-id": 33
          },
          "port-level-cos": {
            "shaping": {
              "pe-egress-per-class-shaping-codes": {
                "cos3-shaping-code": "W",
                "cos2v-shaping-code": "P",
                "cos2-shaping-code": "W"
              },
              "pe-egress-per-class-shaping-behaviors": {
                "cos3-shaping": "Disable",
                "cos2v-shaping": "Enable",
                "cos2-shaping": "Disable"
              }
            },
            "avpn-bundle-speed": "10000",
            "avpn-bundle-speed-units": "Kbps",
            "cos-model": "6COS",
            "cos-package": "MultimediaHigh",
            "queueing": {
              "pe-egress-class-queueing-policing-codes": {
                "cos2v-queueing-code": "P",
                "cos2-queueing-code": "W",
                "cos3-queueing-code": "W"
              },
              "pe-per-class-queueing-behaviors": {
                "cos3-queueing": "WRED",
                "cos2-queueing": "WRED",
                "cos2v-queueing": "QueueLimit"
              }
            },
            "ingress-profile": {
              "v6-policy-name-in": "classifier6_port_80:2D:10M:5M:3:0_iset33_in",
              "cos-profile-id": 3826,
              "pe-ingress-cos-profile": {
                "cos2v-percent": "10",
                "cos2-percent": "50",
                "cos5-percent": "0",
                "cos4-percent": "15",
                "cos3-percent": "25",
                "cos1-percent": "80"
              },
              "cos-model": "6COS"
            },
            "egress-profile": {
              "v6-policy-name-out": "classifier6_port_80:2P:10W:5W:3:0N_iset33_out",
              "cos-profile-id": 3826,
              "pe-egress-cos-profile": {
                "cos2v-percent": "10",
                "cos2-percent": "50",
                "cos5-percent": "0",
                "cos4-percent": "15",
                "cos3-percent": "25",
                "cos1-percent": "80"
              },
              "cos-model": "6COS"
            },
            "policing": {
              "pe-per-class-policing-behaviors": {
                "cos2-policing": "Remark",
                "cos3-policing": "Remark",
                "cos2v-policing": "Drop"
              },
              "pe-per-class-policing-codes": {
                "cos3-policing-code": "M",
                "cos2-policing-code": "M",
                "cos2v-policing-code": "D"
              }
            }
          },
          "contracted-port-speed": "10000",
          "contracted-port-speed-units": "Kbps",
          "port-level-cos-flag": "Y",
          "clli": "LONDENEH",
          "port-id": "ICORESITE-2751508"
        }
      },
      "service-status": {
        "rpc-name": "service-configuration-notification",
        "request-status": "notifycomplete",
        "final-indicator": "Y",
        "rpc-action": "activateport",
        "response-timestamp": "2017-02-27T15:23:35.234Z",
        "l3sdn-action": "Layer3ServiceActivateRequest"
      }
    }
  ]
}

There is also data in config GET http://localhost:8181/restconf/config/L3AVPN-PORT-API:services/service-list/TEST7/

{
  "service-list": [
    {
      "service-instance-id": "TEST7",
      "service-data": {
        "service-information": {
          "service-type": "AVPN",
          "service-instance-id": "ICORESITE-2751508"
        },
        "oper-status": {
          "order-status": "Completed"
        },
        "sdnc-request-header": {
          "svc-notification-url": "https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification",
          "svc-action": "activateport",
          "svc-request-id": "ICORESITE-2751508"
        },
        "request-information": {
          "request-id": "ICORESITE-2751508",
          "source": "SDNC",
          "notification-url": "https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification",
          "request-action": "ChangeLayer3ServiceActivateRequest",
          "configuration-action": "Layer3ServiceActivateRequest"
        },
        "avpn-ip-port-information": {
          "avpn-access-information": {
            "vlan-tag-control": "1Q",
            "access-speed-units": "Kbps",
            "managed-ce": "N",
            "access-speed": "10000",
            "l1-customer-handoff": "1000BASELX",
            "access-circuit-id": "DHEC.54831.170.ATI",
            "access-interface": "1G"
          },
          "endpoint-information": {
            "interface-string": "ae0",
            "vpe-name": "gblondxxxxxxx",
            "bundle-id": 33
          },
          "port-level-cos": {
            "shaping": {
              "pe-egress-per-class-shaping-codes": {
                "cos3-shaping-code": "W",
                "cos2v-shaping-code": "P",
                "cos2-shaping-code": "W"
              },
              "pe-egress-per-class-shaping-behaviors": {
                "cos3-shaping": "Disable",
                "cos2v-shaping": "Enable",
                "cos2-shaping": "Disable"
              }
            },
            "avpn-bundle-speed": "10000",
            "avpn-bundle-speed-units": "Kbps",
            "cos-model": "6COS",
            "cos-package": "MultimediaHigh",
            "queueing": {
              "pe-egress-class-queueing-policing-codes": {
                "cos2v-queueing-code": "P",
                "cos2-queueing-code": "W",
                "cos3-queueing-code": "W"
              },
              "pe-per-class-queueing-behaviors": {
                "cos3-queueing": "WRED",
                "cos2-queueing": "WRED",
                "cos2v-queueing": "QueueLimit"
              }
            },
            "ingress-profile": {
              "v6-policy-name-in": "classifier6_port_80:2D:10M:5M:3:0_iset33_in",
              "cos-profile-id": 3826,
              "pe-ingress-cos-profile": {
                "cos2v-percent": "10",
                "cos2-percent": "50",
                "cos5-percent": "0",
                "cos4-percent": "15",
                "cos3-percent": "25",
                "cos1-percent": "80"
              },
              "cos-model": "6COS"
            },
            "egress-profile": {
              "v6-policy-name-out": "classifier6_port_80:2P:10W:5W:3:0N_iset33_out",
              "cos-profile-id": 3826,
              "pe-egress-cos-profile": {
                "cos2v-percent": "10",
                "cos2-percent": "50",
                "cos5-percent": "0",
                "cos4-percent": "15",
                "cos3-percent": "25",
                "cos1-percent": "80"
              },
              "cos-model": "6COS"
            },
            "policing": {
              "pe-per-class-policing-behaviors": {
                "cos2-policing": "Remark",
                "cos3-policing": "Remark",
                "cos2v-policing": "Drop"
              },
              "pe-per-class-policing-codes": {
                "cos3-policing-code": "M",
                "cos2-policing-code": "M",
                "cos2v-policing-code": "D"
              }
            }
          },
          "contracted-port-speed": "10000",
          "contracted-port-speed-units": "Kbps",
          "port-level-cos-flag": "Y",
          "clli": "LONDENEH",
          "port-id": "ICORESITE-2751508"
        }
      },
      "service-status": {
        "rpc-name": "service-configuration-notification",
        "request-status": "notifycomplete",
        "final-indicator": "Y",
        "rpc-action": "activateport",
        "response-timestamp": "2017-03-15T14:51:49.035Z",
        "l3sdn-action": "Layer3ServiceActivateRequest"
      }
    }
  ]
}

The provider code will load all 3 data sources into the properties object and pass this to the directed graph. This hashmap has been dumped so it can easily be read here

operational-data.avpn-ip-port-information.avpn-access-information.access-circuit-id = DHEC.54831.170.ATI
operational-data.avpn-ip-port-information.avpn-access-information.access-interface = _1G
operational-data.avpn-ip-port-information.avpn-access-information.access-speed = 10000
operational-data.avpn-ip-port-information.avpn-access-information.access-speed-units = Kbps
operational-data.avpn-ip-port-information.avpn-access-information.l1-customer-handoff = _1000BASELX
operational-data.avpn-ip-port-information.avpn-access-information.managed-ce = N
operational-data.avpn-ip-port-information.avpn-access-information.vlan-tag-control = _1Q
operational-data.avpn-ip-port-information.clli = LONDENEH
operational-data.avpn-ip-port-information.contracted-port-speed = 10000
operational-data.avpn-ip-port-information.contracted-port-speed-units = Kbps
operational-data.avpn-ip-port-information.endpoint-information.bundle-id = 33
operational-data.avpn-ip-port-information.endpoint-information.interface-string = ae0
operational-data.avpn-ip-port-information.endpoint-information.vpe-name = gblondxxxxxx
operational-data.avpn-ip-port-information.port-id = ICORESITE-2751508
operational-data.avpn-ip-port-information.port-level-cos-flag = Y
operational-data.avpn-ip-port-information.port-level-cos.avpn-bundle-speed = 10000
operational-data.avpn-ip-port-information.port-level-cos.avpn-bundle-speed-units = Kbps
operational-data.avpn-ip-port-information.port-level-cos.cos-model = 6COS
operational-data.avpn-ip-port-information.port-level-cos.cos-package = MultimediaHigh
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.cos-model = 6COS
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.cos-profile-id = 3826
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos1-percent = 80
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos2-percent = 50
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos2v-percent = 10
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos3-percent = 25
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos4-percent = 15
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos5-percent = 0
operational-data.avpn-ip-port-information.port-level-cos.egress-profile.v6-policy-name-out = classifier6_port_80:2P:10W:5W:3:0N_iset33_out
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.cos-model = 6COS
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.cos-profile-id = 3826
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos1-percent = 80
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos2-percent = 50
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos2v-percent = 10
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos3-percent = 25
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos4-percent = 15
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos5-percent = 0
operational-data.avpn-ip-port-information.port-level-cos.ingress-profile.v6-policy-name-in = classifier6_port_80:2D:10M:5M:3:0_iset33_in
operational-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-behaviors.cos2-policing = Remark
operational-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-behaviors.cos2v-policing = Drop
operational-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-behaviors.cos3-policing = Remark
operational-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-codes.cos2-policing-code = M
operational-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-codes.cos2v-policing-code = D
operational-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-codes.cos3-policing-code = M
operational-data.avpn-ip-port-information.port-level-cos.queueing.pe-egress-class-queueing-policing-codes.cos2-queueing-code = W
operational-data.avpn-ip-port-information.port-level-cos.queueing.pe-egress-class-queueing-policing-codes.cos2v-queueing-code = P
operational-data.avpn-ip-port-information.port-level-cos.queueing.pe-egress-class-queueing-policing-codes.cos3-queueing-code = W
operational-data.avpn-ip-port-information.port-level-cos.queueing.pe-per-class-queueing-behaviors.cos2-queueing = WRED
operational-data.avpn-ip-port-information.port-level-cos.queueing.pe-per-class-queueing-behaviors.cos2v-queueing = QueueLimit
operational-data.avpn-ip-port-information.port-level-cos.queueing.pe-per-class-queueing-behaviors.cos3-queueing = WRED
operational-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-behaviors.cos2-shaping = Disable
operational-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-behaviors.cos2v-shaping = Enable
operational-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-behaviors.cos3-shaping = Disable
operational-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-codes.cos2-shaping-code = W
operational-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-codes.cos2v-shaping-code = P
operational-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-codes.cos3-shaping-code = W
operational-data.oper-status.order-status = Completed
operational-data.request-information.configuration-action = Layer3ServiceActivateRequest
operational-data.request-information.notification-url = https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification
operational-data.request-information.request-action = ChangeLayer3ServiceActivateRequest
operational-data.request-information.request-id = ICORESITE-2751508
operational-data.request-information.source = SDNC
operational-data.sdnc-request-header.svc-action = Activateport
operational-data.sdnc-request-header.svc-notification-url = https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification
operational-data.sdnc-request-header.svc-request-id = ICORESITE-2751508
operational-data.service-information.service-instance-id = ICORESITE-2751508
operational-data.service-information.service-type = AVPN
service-configuration-notification-input.ack-final-indicator = Y
service-configuration-notification-input.response-code = 0
service-configuration-notification-input.response-message = Plc Activation Failed: Device gblond2005me6 Sync-from Failed. Please check device IP address and NCS setup.
service-configuration-notification-input.service-information.service-instance-id = TEST7
service-configuration-notification-input.service-information.service-type = AVPN
service-configuration-notification-input.svc-request-id = TEST7
service-data.avpn-ip-port-information.avpn-access-information.access-circuit-id = DHEC.54831.170.ATI
service-data.avpn-ip-port-information.avpn-access-information.access-interface = _1G
service-data.avpn-ip-port-information.avpn-access-information.access-speed = 10000
service-data.avpn-ip-port-information.avpn-access-information.access-speed-units = Kbps
service-data.avpn-ip-port-information.avpn-access-information.l1-customer-handoff = _1000BASELX
service-data.avpn-ip-port-information.avpn-access-information.managed-ce = N
service-data.avpn-ip-port-information.avpn-access-information.vlan-tag-control = _1Q
service-data.avpn-ip-port-information.clli = LONDENEH
service-data.avpn-ip-port-information.contracted-port-speed = 10000
service-data.avpn-ip-port-information.contracted-port-speed-units = Kbps
service-data.avpn-ip-port-information.endpoint-information.bundle-id = 33
service-data.avpn-ip-port-information.endpoint-information.interface-string = ae0
service-data.avpn-ip-port-information.endpoint-information.vpe-name = gblondxxxxxx
service-data.avpn-ip-port-information.port-id = ICORESITE-2751508
service-data.avpn-ip-port-information.port-level-cos-flag = Y
service-data.avpn-ip-port-information.port-level-cos.avpn-bundle-speed = 10000
service-data.avpn-ip-port-information.port-level-cos.avpn-bundle-speed-units = Kbps
service-data.avpn-ip-port-information.port-level-cos.cos-model = 6COS
service-data.avpn-ip-port-information.port-level-cos.cos-package = MultimediaHigh
service-data.avpn-ip-port-information.port-level-cos.egress-profile.cos-model = 6COS
service-data.avpn-ip-port-information.port-level-cos.egress-profile.cos-profile-id = 3826
service-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos1-percent = 80
service-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos2-percent = 50
service-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos2v-percent = 10
service-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos3-percent = 25
service-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos4-percent = 15
service-data.avpn-ip-port-information.port-level-cos.egress-profile.pe-egress-cos-profile.cos5-percent = 0
service-data.avpn-ip-port-information.port-level-cos.egress-profile.v6-policy-name-out = classifier6_port_80:2P:10W:5W:3:0N_iset33_out
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.cos-model = 6COS
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.cos-profile-id = 3826
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos1-percent = 80
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos2-percent = 50
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos2v-percent = 10
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos3-percent = 25
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos4-percent = 15
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.pe-ingress-cos-profile.cos5-percent = 0
service-data.avpn-ip-port-information.port-level-cos.ingress-profile.v6-policy-name-in = classifier6_port_80:2D:10M:5M:3:0_iset33_in
service-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-behaviors.cos2-policing = Remark
service-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-behaviors.cos2v-policing = Drop
service-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-behaviors.cos3-policing = Remark
service-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-codes.cos2-policing-code = M
service-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-codes.cos2v-policing-code = D
service-data.avpn-ip-port-information.port-level-cos.policing.pe-per-class-policing-codes.cos3-policing-code = M
service-data.avpn-ip-port-information.port-level-cos.queueing.pe-egress-class-queueing-policing-codes.cos2-queueing-code = W
service-data.avpn-ip-port-information.port-level-cos.queueing.pe-egress-class-queueing-policing-codes.cos2v-queueing-code = P
service-data.avpn-ip-port-information.port-level-cos.queueing.pe-egress-class-queueing-policing-codes.cos3-queueing-code = W
service-data.avpn-ip-port-information.port-level-cos.queueing.pe-per-class-queueing-behaviors.cos2-queueing = WRED
service-data.avpn-ip-port-information.port-level-cos.queueing.pe-per-class-queueing-behaviors.cos2v-queueing = QueueLimit
service-data.avpn-ip-port-information.port-level-cos.queueing.pe-per-class-queueing-behaviors.cos3-queueing = WRED
service-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-behaviors.cos2-shaping = Disable
service-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-behaviors.cos2v-shaping = Enable
service-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-behaviors.cos3-shaping = Disable
service-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-codes.cos2-shaping-code = W
service-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-codes.cos2v-shaping-code = P
service-data.avpn-ip-port-information.port-level-cos.shaping.pe-egress-per-class-shaping-codes.cos3-shaping-code = W
service-data.oper-status.order-status = Completed
service-data.request-information.configuration-action = Layer3ServiceActivateRequest
service-data.request-information.notification-url = https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification
service-data.request-information.request-action = ChangeLayer3ServiceActivateRequest
service-data.request-information.request-id = ICORESITE-2751508
service-data.request-information.source = SDNC
service-data.sdnc-request-header.svc-action = Activateport
service-data.sdnc-request-header.svc-notification-url = https://tst10-lpp.oss.att.com/lppbck-service/rest/ext/vpe/notification
service-data.sdnc-request-header.svc-request-id = ICORESITE-2751508
service-data.service-information.service-instance-id = ICORESITE-2751508
service-data.service-information.service-type = AVPN

You should notice 3 things:

  1. The data from the operational tree is prefixed with operational-data
  2. The data from config is prefixed with service-data
  3. The data on the RPC input is prefixed with service-configuration-notification-input (the name of the RPC with input appended to the end)

Handling Lists

XML and JSON provide the support for lists. In the nodestring format these will be more like an array. Below is a snippet from the configuration tree

        "ucpe-information": {
          "vnf-list": {
            "vnf-information": [
              {
                "vnf-id": "518fec6f-fd09-431a-ab76-a14d6c6eafc9",
                "vnf-host-name": "USUCPMEVDIL0133UJTE03",
                "vnf-type": "TE"
              },
              {
                "vnf-id": "0602e1cd-879a-47fd-98cc-975dff95a116",
                "vnf-host-name": "USUCPMEVDIL0133UJDM02",
                "vnf-type": "DM"
              },
              {
                "vnf-id": "a0621689-185c-40af-b614-483b73f9e754",
                "vnf-host-name": "USUCPMEVDIL0133UJSW01",
                "vnf-type": "SW"
              }
            ]
          }

We can see this is a list of vnf-information. In the node string format it will appear as it is below.

service-data.ucpe-information.vnf-list.vnf-information[0].key = VnfInformationKey [_vnfId=ba799fc7-aee8-45bc-b563-30596165f0f1]
service-data.ucpe-information.vnf-list.vnf-information[0].key.vnf-id = ba799fc7-aee8-45bc-b563-30596165f0f1
service-data.ucpe-information.vnf-list.vnf-information[0].vnf-host-name = USSTALCCIIL0127UJSW01
service-data.ucpe-information.vnf-list.vnf-information[0].vnf-id = ba799fc7-aee8-45bc-b563-30596165f0f1
service-data.ucpe-information.vnf-list.vnf-information[0].vnf-type = SW
service-data.ucpe-information.vnf-list.vnf-information[1].key = VnfInformationKey [_vnfId=60c3858d-80cb-4d17-8461-fde90aed8b60]
service-data.ucpe-information.vnf-list.vnf-information[1].key.vnf-id = 60c3858d-80cb-4d17-8461-fde90aed8b60
service-data.ucpe-information.vnf-list.vnf-information[1].vnf-host-name = USSTALCCIIL0127UJTE03
service-data.ucpe-information.vnf-list.vnf-information[1].vnf-id = 60c3858d-80cb-4d17-8461-fde90aed8b60
service-data.ucpe-information.vnf-list.vnf-information[1].vnf-type = TE
service-data.ucpe-information.vnf-list.vnf-information[2].key = VnfInformationKey [_vnfId=6a1fb1ad-4eee-45a2-bead-93c05d45863b]
service-data.ucpe-information.vnf-list.vnf-information[2].key.vnf-id = 6a1fb1ad-4eee-45a2-bead-93c05d45863b
service-data.ucpe-information.vnf-list.vnf-information[2].vnf-host-name = USSTALCCIIL0127UJDM02
service-data.ucpe-information.vnf-list.vnf-information[2].vnf-id = 6a1fb1ad-4eee-45a2-bead-93c05d45863b
service-data.ucpe-information.vnf-list.vnf-information[2].vnf-type = DM
service-data.ucpe-information.vnf-list.vnf-information_length = 3
  • No labels

2 Comments

  1. Sandeep Shah Brian Freeman  :   Is there an example where we modify the config/operation tree of SDNC using directed graphs ?

  2. Sandeep Shah Brian Freeman :  My understanding is that if SDNC already supports an rpc because its YANG model is present . Then if we create a DG with same module name and rpc name. Then it would have access to the config and operation tree of the SDNC  .       Is the understanding correct.   Would really appreciate your help here.