Merge "AAI schema changes to support TN NSSI and transport endpoint. Issue-ID: AAI-2920"
diff --git a/aai-schema/src/main/resources/onap/aai_schema/aai_schema_v20.xsd b/aai-schema/src/main/resources/onap/aai_schema/aai_schema_v20.xsd
index 9831b7f..fbce150 100644
--- a/aai-schema/src/main/resources/onap/aai_schema/aai_schema_v20.xsd
+++ b/aai-schema/src/main/resources/onap/aai_schema/aai_schema_v20.xsd
@@ -3809,6 +3809,8 @@
           </xs:annotation>
         </xs:element>
         <xs:element ref="tns:tunnel-xconnects" minOccurs="0"/>
+        <xs:element ref="tns:logical-links" minOccurs="0"/>
+        <xs:element ref="tns:network-policies" minOccurs="0"/>
         <xs:element ref="tns:relationship-list" minOccurs="0"/>
       </xs:sequence>
     </xs:complexType>
@@ -4189,6 +4191,13 @@
             </xs:appinfo>
           </xs:annotation>
         </xs:element>
+        <xs:element name="max-bandwidth" type="xs:int" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="The maximum bandwidth (mb) of the connection links in a transport slice instance.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
         <xs:element name="exp-data-rate" type="xs:int" minOccurs="0">
           <xs:annotation>
             <xs:appinfo>
@@ -4254,6 +4263,131 @@
       </xs:sequence>
     </xs:complexType>
   </xs:element>
+    <xs:element name="ip-address">
+    <xs:complexType>
+      <xs:annotation>
+        <xs:appinfo>
+          <annox:annotate target="class">@org.onap.aai.annotations.Metadata(description="Ip address object.",uniqueProps="ip-address",indexedProps="ip-address",container="ip-address-list",uriTemplate="/endpoints/endpoint/{endpoint-id}/ip-address-list/ip-address/{ip-address}",searcheable="endpoint-id")</annox:annotate>
+        </xs:appinfo>
+      </xs:annotation>
+      <xs:sequence>
+        <xs:element name="ip-address" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(isKey=true,description="IP address.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="ip-address-end" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="IP address end range.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="ip-version" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="IP version, either 4 or 6.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="type" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="reserved, static, dhcp.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="assignment" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="assignment.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="operator" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Operator to apply to the port (greater than, less than, etc).")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="length" type="xs:int" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="ip-address prefix length, 32 for single address.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ip-address-list">
+    <xs:complexType>
+      <xs:annotation>
+        <xs:appinfo>
+          <annox:annotate target="class">@org.onap.aai.annotations.Metadata(description="List of IP addresses.")</annox:annotate>
+        </xs:appinfo>
+      </xs:annotation>
+      <xs:sequence>
+        <xs:element ref="tns:ip-address" minOccurs="0" maxOccurs="5000"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="endpoint">
+    <xs:complexType>
+      <xs:annotation>
+        <xs:appinfo>
+          <annox:annotate target="class">@org.onap.aai.annotations.Metadata(description="Endpoint object.",uniqueProps="endpoint-id",indexedProps="endpoint-id",container="endpoints",uriTemplate="/endpoints/endpoint/{endpoint-id}",searcheable="endpoint-id")</annox:annotate>
+        </xs:appinfo>
+      </xs:annotation>
+      <xs:sequence>
+        <xs:element name="endpoint-id" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(isKey=true,description="ID of endpoint.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="endpoint-name" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Name of endpoint.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="endpoint-type" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Type of endpoint.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="logical-interface-id" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Identity of a logical interface, e.g., VLAN ID, MPLS label.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+		<xs:element ref="tns:ip-address-list" minOccurs="0"/>
+        <xs:element ref="tns:relationship-list" minOccurs="0"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="endpoints">
+    <xs:complexType>
+      <xs:annotation>
+        <xs:appinfo>
+          <annox:annotate target="class">@org.onap.aai.annotations.Metadata(description="Collection of endpoints.")</annox:annotate>
+        </xs:appinfo>
+      </xs:annotation>
+      <xs:sequence>
+        <xs:element ref="tns:endpoint" minOccurs="0" maxOccurs="5000"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
   <xs:element name="service-instance">
     <xs:complexType>
       <xs:annotation>
@@ -4443,6 +4577,7 @@
         <xs:element ref="tns:communication-service-profiles" minOccurs="0"/>
         <xs:element ref="tns:service-profiles" minOccurs="0"/>
         <xs:element ref="tns:slice-profiles" minOccurs="0"/>
+        <xs:element ref="tns:endpoints" minOccurs="0"/>
         <xs:element name="service-function" type="xs:string" minOccurs="0">
           <xs:annotation>
             <xs:appinfo>
@@ -7246,6 +7381,48 @@
             </xs:appinfo>
           </xs:annotation>
         </xs:element>
+        <xs:element name="name" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Name of the policy.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="type" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="Type of the policy.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="latency" type="xs:int" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="The packet transmission latency (millisecond) through the Transport slice connections and is used to evaluate utilization performance of the end-to-end network slice instance.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="jitter" type="xs:int" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="jitter")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="max-bandwidth" type="xs:int" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="The maximum bandwidth (mb) of the connection links in a transport slice instance.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="reliability" minOccurs="0">
+          <xs:annotation>
+            <xs:appinfo>
+              <annox:annotate target="field">@org.onap.aai.annotations.Metadata(description="The reliability requirement for a transport slice network, expressed as a percentage.")</annox:annotate>
+            </xs:appinfo>
+          </xs:annotation>
+        </xs:element>
         <xs:element ref="tns:relationship-list" minOccurs="0"/>
       </xs:sequence>
     </xs:complexType>
diff --git a/aai-schema/src/main/resources/onap/dbedgerules/v20/DbEdgeRules_ccvpn_v20.json b/aai-schema/src/main/resources/onap/dbedgerules/v20/DbEdgeRules_ccvpn_v20.json
index f007e0a..475abbe 100644
--- a/aai-schema/src/main/resources/onap/dbedgerules/v20/DbEdgeRules_ccvpn_v20.json
+++ b/aai-schema/src/main/resources/onap/dbedgerules/v20/DbEdgeRules_ccvpn_v20.json
@@ -445,7 +445,7 @@
 		"default": "true",
 		"description":"For CCVPN Usecase"
 	},
-        {
+	{
 		"from": "p-interface",
 		"to": "interlayer-attachment",
 		"label": "tosca.relationships.network.LinksTo",
@@ -458,7 +458,7 @@
 		"description":"For CCVPN Usecase"
 
 	},
-        {
+	{
 		"from": "tunnel-termination-point",
 		"to": "interlayer-attachment",
 		"label": "tosca.relationships.network.LinksTo",
@@ -483,7 +483,7 @@
 		"default": "true",
 		"description":"For CCVPN Usecase"
 	},
-        {
+	{
 		"from": "logical-link",
 		"to": "te-link-attribute",
 		"label": "tosca.relationships.network.LinksTo",
@@ -496,7 +496,7 @@
 		"description":"For CCVPN Usecase"
 
 	},
-        {
+	{
 		"from": "label-restriction",
 		"to": "te-link-attribute",
 		"label": "tosca.relationships.network.LinksTo",
@@ -544,6 +544,18 @@
                 "prevent-delete": "NONE",
                 "default": "true",
                 "description":"For MDONS usecase"
-        }
+        },
+        {
+                "from": "endpoint",
+                "to": "p-interface",
+                "label": "tosca.relationships.network.LinksTo",
+                "direction": "OUT",
+                "multiplicity": "ONE2ONE",
+                "contains-other-v": "NONE",
+                "delete-other-v": "NONE",
+                "prevent-delete": "NONE",
+                "default": "true",
+                "description":"For CCVPN Transport Slicing usecase"
+       }
   ]
 }
diff --git a/aai-schema/src/main/resources/onap/oxm/v20/aai_oxm_v20.xml b/aai-schema/src/main/resources/onap/oxm/v20/aai_oxm_v20.xml
index 5669464..8424058 100644
--- a/aai-schema/src/main/resources/onap/oxm/v20/aai_oxm_v20.xml
+++ b/aai-schema/src/main/resources/onap/oxm/v20/aai_oxm_v20.xml
@@ -3311,6 +3311,7 @@
                 <xml-element java-attribute="communicationServiceProfiles" name="communication-service-profiles" type="inventory.aai.onap.org.v20.CommunicationServiceProfiles"/>
                 <xml-element java-attribute="serviceProfiles" name="service-profiles" type="inventory.aai.onap.org.v20.ServiceProfiles"/>
                 <xml-element java-attribute="sliceProfiles" name="slice-profiles" type="inventory.aai.onap.org.v20.SliceProfiles"/>
+                <xml-element java-attribute="endpoints" name="endpoints" type="inventory.aai.onap.org.v20.Endpoints"/>
 		<xml-element java-attribute="serviceFunction" name="service-function" type="java.lang.String">
                   <xml-properties>
                     <xml-property name="description" value="String capturing function of the service."/>
@@ -4760,6 +4761,36 @@
                         <xml-property name="description" value="Used for optimistic concurrency.  Must be empty on create, valid on update and delete."/>
                     </xml-properties>
                 </xml-element>
+                <xml-element java-attribute="name" name="name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of the policy"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="type" name="type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of the policy"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="latency" name="latency" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="The packet transmission latency (millisecond) through the Transport slice connections and is used to evaluate utilization performance of the end-to-end network slice instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="jitter" name="jitter" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="jitter"/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="maxBandwidth" name="max-bandwidth" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="The maximum bandwidth (mb) of the connection links in a transport slice instance."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="reliability" name="reliability" type="java.lang.Float">
+                    <xml-properties>
+                        <xml-property name="description" value="The reliability requirement for an network slice subnet instance, expressed as a percentage."/>
+                    </xml-properties>
+                </xml-element>
                 <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v20.RelationshipList"/>
             </java-attributes>
             <xml-properties>
@@ -6953,6 +6984,8 @@
 					</xml-properties>
 				</xml-element>
                 <xml-element java-attribute="tunnelXconnects" name="tunnel-xconnects" type="inventory.aai.onap.org.v20.TunnelXconnects"/>
+                <xml-element java-attribute="logicalLinks" name="logical-links" type="inventory.aai.onap.org.v20.LogicalLinks"/>
+                <xml-element java-attribute="networkPolicies" name="network-policies" type="inventory.aai.onap.org.v20.NetworkPolicies"/>
                 <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v20.RelationshipList"/>
             </java-attributes>
 
@@ -9414,7 +9447,7 @@
             <xml-root-element name="common"/>
             <java-attributes>
             	<xml-element java-attribute="contacts" name="contacts" type="inventory.aai.onap.org.v20.Contacts"/>
-                <xml-element java-attribute="profiles" name="profiles" type="inventory.aai.onap.org.v20.Profiles"/>
+              <xml-element java-attribute="profiles" name="profiles" type="inventory.aai.onap.org.v20.Profiles"/>
             </java-attributes>
 		</java-type>
 
@@ -9467,7 +9500,6 @@
             <xml-property name="requiredProps" value="contact-name"/>
             </xml-properties>
 		</java-type>
-
         <java-type name="Profiles">
             <xml-properties>
                 <xml-property name="description" value="Collection of profiles"/>
@@ -9523,6 +9555,7 @@
                 <xml-property name="requiredProps" value="profile-name"/>
             </xml-properties>
         </java-type>
+
 				<java-type name="AggregateRoutes">
             <xml-properties>
                 <xml-property name="description" value="Collection of aggregate routes."/>
@@ -9847,6 +9880,11 @@
                         <xml-property name="description" value="The availability requirement for an network slice subnet instance, expressed as a percentage."/>
                     </xml-properties>
                 </xml-element>
+                <xml-element java-attribute="maxBandwidth" name="max-bandwidth" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="The maximum bandwidth (mb) of the connection links in a transport slice instance."/>
+                    </xml-properties>
+                </xml-element>
                 <xml-element java-attribute="reliability" name="reliability" type="java.lang.Float">
                     <xml-properties>
                         <xml-property name="description" value="The reliability requirement for an network slice subnet instance, expressed as a percentage."/>
@@ -9899,6 +9937,107 @@
                 <xml-property name="searcheable" value="profile-id"/>
             </xml-properties>
 		</java-type>
+    <java-type name="IpAddress">
+            <xml-root-element name="ip-address"/>
+            <java-attributes>
+                <xml-element java-attribute="ipAddress" name="ip-address" required="true" type="java.lang.String" xml-key="true" >
+                    <xml-properties>
+                        <xml-property name="description" value="IP address."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipAddressEnd" name="ip-address-end" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IP address end range."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipVersion" name="ip-version" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="IP version, either 4 or 6."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="type" name="type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of IP address, eg., Reserved, Static, DHCP."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="assignment" name="assignment" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="assignment."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="operator" name="operator" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Operator to apply to the port (greater than, less than, etc)."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="length" name="length" type="java.lang.Integer">
+                    <xml-properties>
+                        <xml-property name="description" value="ip-address prefix length, 32 for single address."/>
+                    </xml-properties>
+                </xml-element>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="IP address."/>
+                <xml-property name="uniqueProps" value="ip-address"/>
+                <xml-property name="indexedProps" value="ip-address"/>
+                <xml-property name="container" value="ip-address-list"/>
+                <xml-property name="uriTemplate" value="/endpoints/endpoint/{endpoint-id}/ip-address-list/ip-address/{ip-address}"/>
+                <xml-property name="searcheable" value="ip-address"/>
+            </xml-properties>
+    </java-type>
+    <java-type name="IpAddressList">
+            <xml-properties>
+                <xml-property name="description" value="List of IP addresses."/>
+            </xml-properties>
+            <xml-root-element name="ip-address-list"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="ipAddress" name="ip-address" type="inventory.aai.onap.org.v20.IpAddress"/>
+            </java-attributes>
+        </java-type>
+        <java-type name="Endpoint">
+            <xml-root-element name="endpoint"/>
+            <java-attributes>
+                <xml-element java-attribute="endpointId" name="endpoint-id" required="true" type="java.lang.String" xml-key="true" >
+                    <xml-properties>
+                        <xml-property name="description" value="ID of an endpoint."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="endpointName" name="endpoint-name" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Name of an endpoint."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="endpointType" name="endpoint-type" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Type of an endpoint."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="logicalInterfaceId" name="logical-interface-id" type="java.lang.String">
+                    <xml-properties>
+                        <xml-property name="description" value="Identity of a logical interface, e.g., VLAN ID."/>
+                    </xml-properties>
+                </xml-element>
+                <xml-element java-attribute="ipAddressList" name="ip-address-list" type="inventory.aai.onap.org.v20.IpAddressList"/>
+                <xml-element java-attribute="relationshipList" name="relationship-list" type="inventory.aai.onap.org.v20.RelationshipList"/>
+            </java-attributes>
+            <xml-properties>
+                <xml-property name="description" value="Endpoint object."/>
+                <xml-property name="uniqueProps" value="endpoint-id"/>
+                <xml-property name="indexedProps" value="endpoint-id"/>
+                <xml-property name="container" value="endpoints"/>
+                <xml-property name="uriTemplate" value="/endpoints/endpoint/{endpoint-id}"/>
+                <xml-property name="searcheable" value="endpoint-id"/>
+            </xml-properties>
+    </java-type>
+    <java-type name="Endpoints">
+            <xml-properties>
+                <xml-property name="description" value="Collection of Endpoint objects."/>
+            </xml-properties>
+            <xml-root-element name="endpoints"/>
+            <java-attributes>
+                <xml-element container-type="java.util.ArrayList" java-attribute="endpoint" name="endpoint" type="inventory.aai.onap.org.v20.Endpoint"/>
+            </java-attributes>
+        </java-type>
 	</java-types>
 </xml-bindings>