module sal-flow { namespace "urn:opendaylight:flow:service"; prefix flow; import yang-ext {prefix ext; revision-date "2013-07-09";} import opendaylight-inventory {prefix inv;revision-date "2013-08-19";} import opendaylight-flow-types {prefix types;revision-date "2013-10-26";} import opendaylight-group-types {prefix group-type;revision-date 2013-10-18;} import opendaylight-meter-types {prefix meter-type;revision-date "2013-09-18";} import flow-capable-transaction {prefix tr;} import flow-errors {prefix error;} revision "2013-08-19" { description "Initial revision of flow service"; } typedef flow-table-ref { type instance-identifier; } grouping node-flow-removed { leaf node { ext:context-reference "inv:node-context"; type inv:node-ref; } leaf flow-table { type flow-table-ref; } uses types:flow-mod-removed; } grouping node-flow { uses "inv:node-context-ref"; leaf flow-table { type flow-table-ref; } uses types:flow; } grouping base-node-error-notification { leaf node { ext:context-reference "inv:node-context"; type inv:node-ref; } } grouping node-error-reference { choice object-reference { case flow-ref{ leaf flow-ref { type types:flow-ref; } } case group-ref{ leaf group-ref { type group-type:group-ref; } } case meter-ref{ leaf meter-ref { type meter-type:meter-ref; } } } } /** Base configuration structure **/ grouping flow-update { uses "inv:node-context-ref"; container original-flow { uses types:flow; } container updated-flow { uses types:flow; } } rpc add-flow { input { uses tr:transaction-metadata; leaf flow-ref { type types:flow-ref; } uses node-flow; } output { uses tr:transaction-aware; } } rpc remove-flow { input { uses tr:transaction-metadata; leaf flow-ref { type types:flow-ref; } uses node-flow; } output { uses tr:transaction-aware; } } rpc update-flow { input { uses tr:transaction-metadata; leaf flow-ref { type types:flow-ref; } uses flow-update; } output { uses tr:transaction-aware; } } notification flow-added { uses tr:transaction-metadata; leaf flow-ref { type types:flow-ref; } uses node-flow; uses tr:transaction-aware; } notification flow-updated { uses tr:transaction-metadata; leaf flow-ref { type types:flow-ref; } uses node-flow; uses tr:transaction-aware; } notification flow-removed { uses tr:transaction-metadata; leaf flow-ref { type types:flow-ref; } uses node-flow; uses tr:transaction-aware; } notification switch-flow-removed { uses node-flow-removed; } notification node-error-notification { uses error:error-message; uses tr:transaction-aware; uses tr:transaction-metadata; uses node-error-reference; uses base-node-error-notification; } notification node-experimenter-error-notification { uses error:experimenter-error-message; uses tr:transaction-aware; } }