Introducing new API in neutron-mapper
[groupbasedpolicy.git] / neutron-mapper / src / main / yang / neutron-gbp-mapper.yang
index d129fd375259e9aefacb8160a7b723c6d7caca44..207cc25b63a661a8b632b49e12eabac75ff1955a 100644 (file)
@@ -4,11 +4,17 @@ module neutron-gbp-mapper {
     namespace "urn:opendaylight:groupbasedpolicy:neutron-gbp-mapper";
     prefix "neutron-gbp-mapper";
 
-    import gbp-common {prefix gbp-common;}
-    import endpoint {prefix gbp-endpoint;}
-    import ietf-inet-types {prefix inet;}
+    import gbp-common { prefix gbp-common; }
+    import endpoint { prefix gbp-endpoint; }
+    import ietf-yang-types { prefix yang; revision-date 2013-07-15; }
+    import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+    import base-endpoint { prefix base-ep; revision-date 2016-04-27; }
+    import forwarding { prefix fwd; revision-date 2016-04-27; }
+    import l2-l3-forwarding { prefix l2-l3; revision-date 2016-04-27; }
 
-    description 
+
+
+    description
         "This module defines the mapping model between Neutron entities and GBP entities.";
 
     revision "2015-05-13" {
@@ -22,27 +28,6 @@ module neutron-gbp-mapper {
             type gbp-common:unique-id;
         }
     }
-    
-    grouping internal-port-floating-ip-port-association-fields {
-        leaf floating-ip-port-id {
-            description "A unique ID for the neutron port";
-            type gbp-common:unique-id;
-            mandatory true;
-        }
-        leaf floating-ip-port-ip-address {
-            type inet:ip-address;
-            mandatory true;
-        }
-        leaf internal-port-id {
-            description "A unique ID for the neutron port";
-            type gbp-common:unique-id;
-            mandatory true;
-        }
-        leaf internal-port-ip-address {
-            type inet:ip-address;
-            mandatory true;
-        }
-    }
 
     container mappings {
         description "Mapping of neutron entities by groupbasedpolicy entities and vice versa.";
@@ -51,6 +36,7 @@ module neutron-gbp-mapper {
             description "Neutron entities by groupbasedpolicy entities";
             container ports-by-endpoints {
                 description "Neutron ports by groupbasedpolicy endpoint";
+                status deprecated;
                 list port-by-endpoint {
                     description "Neutron port key by groupbasedpolicy endpoint key";
                     key "l2-context mac-address";
@@ -58,31 +44,80 @@ module neutron-gbp-mapper {
                     uses neutron-port-key;
                 }
             }
-            container router-gateway-ports-by-endpoints {
-                description "Neutron router gateway ports by groupbasedpolicy endpoint";
-                list router-gateway-port-by-endpoint {
-                    description "Neutron router gateway port key by groupbasedpolicy endpoint key";
-                    key "l2-context mac-address";
-                    uses gbp-endpoint:l2-key;
+            container ports-by-base-endpoints {
+                description "Neutron ports by groupbasedpolicy base-endpoint";
+                list port-by-base-endpoint {
+                    description "Neutron port key by groupbasedpolicy base-endpoint key";
+                    key "context-type context-id address-type address";
+                    uses base-ep:address-endpoint-key;
                     uses neutron-port-key;
                 }
             }
-            container router-interface-ports-by-endpoints {
-                description "Neutron router interface ports by groupbasedpolicy endpoint";
-                list router-interface-port-by-endpoint {
-                    description "Neutron router interface port key by groupbasedpolicy endpoint key";
-                    key "l2-context mac-address";
-                    uses gbp-endpoint:l2-key;
-                    uses neutron-port-key;
+
+            container external-gateways-as-endpoints {
+                description "Endpoints that represent Neutron External Gateways for External Subnets.
+                    Please note these ARE NOT Neutron router ports, they are outside of Neutron.";
+                list external-gateway-as-endpoint {
+                    description "Endpoints that represent Neutron External Gateways for External Subnets.
+                        Please note these ARE NOT Neutron router ports, they are outside of Neutron.";
+
+                    key "context-id context-type address address-type";
+
+                    uses base-ep:address-endpoint-key;
                 }
             }
-            container floating-ip-ports-by-endpoints {
-                description "Neutron floating IP ports by groupbasedpolicy endpoint";
-                list floating-ip-port-by-endpoint {
-                    description "Neutron floating ip port key by groupbasedpolicy endpoint key";
-                    key "l2-context mac-address";
-                    uses gbp-endpoint:l2-key;
-                    uses neutron-port-key;
+
+            container external-gateways-as-l3-endpoints {
+                status deprecated; // use external-gateways-as-endpoints
+                description "L3Endpoints that represent Neutron External Gateways for External Subnets.
+                    Please note these ARE NOT Neutron router ports, they are outside of Neutron.";
+                list external-gateway-as-l3-endpoint {
+                    description "L3Endpoints that represent Neutron External Gateways for External Subnets.
+                        Please note these ARE NOT Neutron router ports, they are outside of Neutron.";
+                    key "l3-context ip-address";
+                    uses gbp-endpoint:l3-key;
+                }
+            }
+
+            container provider-physical-networks-as-l2-flood-domains {
+                status deprecated;
+                list provider-physical-network-as-l2-flood-domain {
+                    key "tenant-id l2-flood-domain-id";
+                    leaf tenant-id {
+                        description "Tenant of L2 Flood Domain";
+                        type gbp-common:tenant-id;
+                    }
+                    leaf l2-flood-domain-id {
+                        description "The L2 Flood Domain ID";
+                        type gbp-common:l2-flood-domain-id;
+                    }
+                    leaf segmentation-id {
+                        mandatory true;
+                        description "An isolated segment on the physical network. The network-type
+                            attribute defines the segmentation model. For example, if network-type
+                            is vlan, this ID is a vlan identifier.";
+                        type string;
+                    }
+                }
+            }
+
+            container provider-networks-as-l2-flood-domains {
+                list provider-physical-network-as-l2-flood-domain {
+                    key "tenant-id l2-flood-domain-id";
+                    leaf tenant-id {
+                        description "Tenant of L2 Flood Domain";
+                        type gbp-common:tenant-id;
+                    }
+                    leaf l2-flood-domain-id {
+                        type gbp-common:context-id;
+                    }
+                    leaf segmentation-id {
+                        mandatory true;
+                        description "An isolated segment on the physical network. The network-type
+                            attribute defines the segmentation model. For example, if network-type
+                            is vlan, this ID is a vlan identifier.";
+                        type string;
+                    }
                 }
             }
         }
@@ -91,6 +126,7 @@ module neutron-gbp-mapper {
             description "Groupbasedpolicy entities by neutron entities";
             container endpoints-by-ports {
                 description "Groupbasedpolicy endpoints by neutron ports";
+                status deprecated;
                 list endpoint-by-port {
                     description "Groupbasedpolicy endpoint key by neutron port key";
                     key port-id;
@@ -98,50 +134,42 @@ module neutron-gbp-mapper {
                     uses gbp-endpoint:l2-key;
                 }
             }
-            container endpoints-by-router-gateway-ports {
-                description "Groupbasedpolicy endpoints by neutron router gateway ports";
-                list endpoint-by-router-gateway-port {
-                    description "Groupbasedpolicy endpoint key by neutron router gateway port key";
-                    key port-id;
-                    uses neutron-port-key;
-                    uses gbp-endpoint:l2-key;
-                }
-            }
-            container endpoints-by-router-interface-ports {
-                description "Groupbasedpolicy endpoints by neutron router interface ports";
-                list endpoint-by-router-interface-port {
-                    description "Groupbasedpolicy endpoint key by neutron router interface port key";
-                    key port-id;
-                    uses neutron-port-key;
-                    uses gbp-endpoint:l2-key;
-                }
-            }
-            container endpoints-by-floating-ip-ports {
-                description "Groupbasedpolicy endpoints by neutron floating IP ports";
-                list endpoint-by-floating-ip-port {
-                    description "Groupbasedpolicy endpoint key by neutron floating IP port key";
+            container base-endpoints-by-ports {
+                description "Groupbasedpolicy base-endpoints by neutron ports";
+                list base-endpoint-by-port {
+                    description "Groupbasedpolicy base-endpoint key by neutron port key";
                     key port-id;
                     uses neutron-port-key;
-                    uses gbp-endpoint:l2-key;
+                    uses base-ep:address-endpoint-key;
                 }
             }
         }
+    }
 
-        container floating-ip-association-mappings {
-            description "Mapping of association between neutron port representing floating IP and internal neutron port";
-            container internal-ports-by-floating-ip-ports {
-                list internal-port-by-floating-ip-port {
-                    key floating-ip-port-id;
-                    uses internal-port-floating-ip-port-association-fields;
+    rpc change-action-of-security-group-rules {
+        input {
+            list security-group-rule {
+                key uuid;
+                leaf uuid {
+                    type yang:uuid;
+                    description "UUID to index this neutron security group rule.";
                 }
             }
-            container floating-ip-ports-by-internal-ports {
-                list floating-ip-port-by-internal-port {
-                    key internal-port-id;
-                    uses internal-port-floating-ip-port-association-fields;
+            container action {
+                choice action-choice {
+                    case sfc-action-case {
+                        leaf sfc-chain-name {
+                            type string;
+                        }
+                    }
+                    case allow-action-case {
+                        container allow {
+                            presence true;
+                        }
+                    }
                 }
             }
         }
     }
 
-}
\ No newline at end of file
+}