Add multipart request message serializers
[openflowplugin.git] / model / model-flow-base / src / main / yang / opendaylight-flow-types.yang
index b07c4bfe2b1ca129551eaf78e8e0be97c4fc38a4..ce4baf673802d2024116ea96c630f393a34704bf 100644 (file)
@@ -8,20 +8,21 @@ module opendaylight-flow-types {
     import opendaylight-meter-types {prefix meter; revision-date "2013-09-18";}
     import openflow-protocol { prefix ofproto; revision-date "2013-07-31"; }
     import openflow-types { prefix oft; revision-date "2013-07-31"; }
+    import opendaylight-multipart-types { prefix multipart; revision-date "2017-01-12"; }
 
     revision "2013-10-26" {
         description "Initial revision of flow service";
     }
-    
+
     typedef flow-ref {
         type instance-identifier;
     }
-    
+
     typedef flow-cookie {
         description "openflow specific type - flow cookie / flow cookie mask";
         type uint64;
     }
-    
+
     typedef output-port-values {
         type enumeration {
             enum MAX {
@@ -74,47 +75,47 @@ module opendaylight-flow-types {
                  }
              }
             }
-             
+
             case write-metadata-case {
                 container write-metadata {
                  leaf metadata {
                      type uint64;
                  }
-                 
+
                  leaf metadata-mask {
                      type uint64;
                  }
              }
             }
-             
+
             case write-actions-case {
                 container write-actions {
                  uses action:action-list;
              }
             }
-             
+
             case apply-actions-case {
                 container apply-actions {
                  uses action:action-list;
              }
             }
-             
+
             case clear-actions-case {
                 container clear-actions {
                  uses action:action-list;
              }
             }
-             
+
             case meter-case {
                 container meter {
                      leaf meter-id {
                         type meter:meter-id;
-                     } 
+                     }
                  }
              }
          }
     }
-    
+
     typedef flow-mod-flags {
         type bits {
             bit CHECK_OVERLAP;
@@ -124,77 +125,89 @@ module opendaylight-flow-types {
             bit SEND_FLOW_REM;
         }
     }
+     typedef removed-flow-reason {
+            type enumeration {
+                enum OFPRR_IDLE_TIMEOUT{
+                    value 0;
+                    description "Flow idle time exceeded idle_timeout.";
+                }
+                enum OFPRR_HARD_TIMEOUT {
+                    value 1;
+                    description "Time exceeded hard_timeout.";
+                }
+                enum OFPRR_DELETE {
+                    value 2;
+                    description "Evicted by a DELETE flow mod.";
+                }
+                enum OFPRR_GROUP_DELETE {
+                    value 3;
+                    description "Group was removed.";
+                }
+
+            }
+     }
 
-    typedef removed_reason_flags {
-        type bits {
-            bit IDLE_TIMEOUT;
-            bit HARD_TIMEOUT;
-            bit DELETE;
-            bit GROUP_DELETE;
-        }
-    }
-    
     grouping generic_flow_attributes {
         leaf priority {
             type uint16;
         }
-        
+
         leaf idle-timeout {
             type uint16;
         }
-        
+
         leaf hard-timeout {
             type uint16;
         }
-        
+
         leaf cookie {
             type flow-cookie;
         }
-        
+
         leaf table_id {
             type uint8;
         }
     }
-    
+
     grouping flow {
         container match {
             uses match:match;
         }
-        
+
         container instructions {
             uses instruction-list;
-        }          
-         
+        }
+
         uses generic_flow_attributes;
-        
+
         leaf container-name {
-            type string; 
+            type string;
         }
-        
+
         leaf cookie_mask {
             type flow-cookie;
         }
-        
+
         leaf buffer_id {
             type uint32;
         }
-        
+
         leaf out_port {
             type uint64;
         }
-        
+
         leaf out_group {
             type uint32;
         }
-        
+
         leaf flags {
             type flow-mod-flags;
         }
-        
+
         leaf flow-name {
             type string;
         }
-        
+
         leaf installHw {
             type boolean;
         }
@@ -232,28 +245,28 @@ module opendaylight-flow-types {
     grouping flow-table-statistics {
         leaf active {
             type yang:counter64;
-        } 
+        }
 
         leaf lookup {
             type yang:counter64;
         }
 
         leaf matched {
-            type yang:counter64;   
+            type yang:counter64;
         }
     }
-    
+
     grouping flow-mod-removed {
         uses generic_flow_attributes;
-        
+
         leaf removed_reason {
-            type removed_reason_flags;
+            type removed-flow-reason;
         }
 
         leaf duration_nsec {
             type uint32;
         }
-        
+
         leaf duration_sec {
             type uint32;
         }
@@ -265,7 +278,7 @@ module opendaylight-flow-types {
         leaf byte_count {
             type uint64;
         }
-               
+
         container match {
             uses match:match;
         }
@@ -279,4 +292,13 @@ module opendaylight-flow-types {
             type oft:flow-mod-command;
         }
     }
+
+    augment "/multipart:multipart-request/multipart:multipart-request-body" {
+        case multipart-request-flow-stats {
+            uses flow;
+        }
+        case multipart-request-flow-aggregate-stats {
+            uses flow;
+        }
+    }
 }