SEBA-147: Consolidate multiple ONi into a single ONOS

Also moved the TOSCA for ONOS apps and configuration to
the att-workflow chart rather than having
deployment-specific TOSCA in the ONOS service chart.

Change-Id: Ic835b4eced96d85b55a841fdd6d8d0baaf7b368a
diff --git a/xos-profiles/att-workflow/templates/_tosca.tpl b/xos-profiles/att-workflow/templates/_tosca.tpl
index 310a4d5..f1cd19d 100644
--- a/xos-profiles/att-workflow/templates/_tosca.tpl
+++ b/xos-profiles/att-workflow/templates/_tosca.tpl
@@ -14,6 +14,224 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 */}}
+{{- define "att-workflow.onosTosca" -}}
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/onosapp.yaml
+   - custom_types/onosservice.yaml
+   - custom_types/serviceinstanceattribute.yaml
+
+description: Configures the VOLTHA ONOS service
+
+topology_template:
+  node_templates:
+
+    service#onos:
+      type: tosca.nodes.ONOSService
+      properties:
+          name: onos
+          kind: data
+          rest_hostname: {{ .onosRestService | quote }}
+          rest_port: 8181
+
+    onos_app#openflow-base:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: openflow-base
+        app_id: org.onosproject.openflow-base
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#hostprovider:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: hostprovider
+        app_id: org.onosproject.hostprovider
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#olt:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: olt
+        app_id: org.opencord.olt
+        url: {{ .oltAppUrl }}
+        version: 2.0.0.SNAPSHOT
+        dependencies: org.opencord.sadis
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#sadis:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: sadis
+        app_id: org.opencord.sadis
+        url: {{ .sadisAppUrl }}
+        version: 2.2.0.SNAPSHOT
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#dhcpl2relay:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: dhcpl2relay
+        app_id: org.opencord.dhcpl2relay
+        url: {{ .dhcpl2relayAppUrl }}
+        version: 1.5.0.SNAPSHOT
+        dependencies: org.opencord.sadis
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#aaa:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: aaa
+        app_id: org.opencord.aaa
+        url: {{ .aaaAppUrl }}
+        version: 1.8.0.SNAPSHOT
+        dependencies: org.opencord.sadis
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#kafka:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: kafka
+        app_id: org.opencord.kafka
+        url: {{ .kafkaAppUrl }}
+        version: 1.0.0.SNAPSHOT
+        dependencies: org.opencord.olt,org.opencord.aaa,org.opencord.dhcpl2relay
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    # CORD-Configuration
+    kafka-config-attr:
+      type: tosca.nodes.ServiceInstanceAttribute
+      properties:
+        name: /onos/v1/network/configuration/apps/org.opencord.kafka
+        value: >
+          {
+            "kafka" : {
+              "bootstrapServers" : {{ .kafkaService | quote }}
+            }
+          }
+      requirements:
+        - service_instance:
+            node: onos_app#olt
+            relationship: tosca.relationships.BelongsToOne
+
+    olt-config-attr:
+      type: tosca.nodes.ServiceInstanceAttribute
+      properties:
+        name: /onos/v1/configuration/org.opencord.olt.impl.Olt?preset=true
+        value: >
+          {
+            "enableDhcpOnProvisioning" : true
+          }
+      requirements:
+        - service_instance:
+            node: onos_app#olt
+            relationship: tosca.relationships.BelongsToOne
+
+    dhcpl2relay-config-attr:
+      type: tosca.nodes.ServiceInstanceAttribute
+      properties:
+        name: /onos/v1/network/configuration/apps/org.opencord.dhcpl2relay
+        value: >
+          {
+            "dhcpl2relay" : {
+              "useOltUplinkForServerPktInOut" : true
+            }
+          }
+      requirements:
+        - service_instance:
+            node: onos_app#dhcpl2relay
+            relationship: tosca.relationships.BelongsToOne
+
+    aaa-config-attr:
+      type: tosca.nodes.ServiceInstanceAttribute
+      properties:
+        name: /onos/v1/network/configuration/apps/org.opencord.aaa
+        value: >
+          {
+            "AAA" : {
+              "radiusConnectionType" : "socket",
+              "radiusHost" : "freeradius.voltha.svc.cluster.local",
+              "radiusServerPort" : "1812",
+              "radiusSecret" : "SECRET"
+            }
+          }
+      requirements:
+        - service_instance:
+            node: onos_app#aaa
+            relationship: tosca.relationships.BelongsToOne
+
+    sadis-config-attr:
+      type: tosca.nodes.ServiceInstanceAttribute
+      properties:
+        name: /onos/v1/network/configuration/apps/org.opencord.sadis
+        value: >
+          {
+            "sadis" : {
+              "integration" : {
+                "cache" : {
+                  "maxsize" : 1000
+                },
+                "url" : "http://sadis-service:8000/subscriber/%s"
+              }
+            }
+          }
+      requirements:
+        - service_instance:
+            node: onos_app#sadis
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#segmentrouting:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: org.onosproject.segmentrouting
+        app_id: org.onosproject.segmentrouting
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#netcfghostprovider:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: org.onosproject.netcfghostprovider
+        app_id: org.onosproject.netcfghostprovider
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+
+    onos_app#openflow:
+      type: tosca.nodes.ONOSApp
+      properties:
+        name: org.onosproject.openflow
+        app_id: org.onosproject.openflow
+      requirements:
+        - owner:
+            node: service#onos
+            relationship: tosca.relationships.BelongsToOne
+{{- end -}}
+
 {{- define "att-workflow.basicFixturesTosca" -}}
 tosca_definitions_version: tosca_simple_yaml_1_0
 description: Some basic fixtures
@@ -122,16 +340,10 @@
 
 # These services must be defined before loading the graph
 
-    service#ONOS_Fabric:
+    service#onos:
       type: tosca.nodes.ONOSService
       properties:
-        name: ONOS_Fabric
-        must-exist: true
-
-    service#ONOS_VOLTHA:
-      type: tosca.nodes.ONOSService
-      properties:
-        name: ONOS_VOLTHA
+        name: onos
         must-exist: true
 
     service#fabric:
@@ -175,7 +387,7 @@
             node: service#fabric
             relationship: tosca.relationships.BelongsToOne
         - provider_service:
-            node: service#ONOS_Fabric
+            node: service#onos
             relationship: tosca.relationships.BelongsToOne
 
     service_dependency#rcord_volt:
@@ -190,7 +402,7 @@
             node: service#volt
             relationship: tosca.relationships.BelongsToOne
 
-    service_dependency#onos_voltha_volt:
+    service_dependency#onos_volt:
       type: tosca.nodes.ServiceDependency
       properties:
         connect_method: none
@@ -199,7 +411,7 @@
             node: service#volt
             relationship: tosca.relationships.BelongsToOne
         - provider_service:
-            node: service#ONOS_VOLTHA
+            node: service#onos
             relationship: tosca.relationships.BelongsToOne
 
     service_dependency#volt_fabric-crossconnect:
@@ -214,7 +426,7 @@
             node: service#fabric-crossconnect
             relationship: tosca.relationships.BelongsToOne
 
-    service_dependency#onos_fabric_fabric-crossconnect:
+    service_dependency#onos_fabric-crossconnect:
       type: tosca.nodes.ServiceDependency
       properties:
         connect_method: none
@@ -223,7 +435,7 @@
             node: service#fabric-crossconnect
             relationship: tosca.relationships.BelongsToOne
         - provider_service:
-            node: service#ONOS_Fabric
+            node: service#onos
             relationship: tosca.relationships.BelongsToOne
 
     service_dependency#workflow_volt:
@@ -241,6 +453,5 @@
     constraints:
       type: tosca.nodes.ServiceGraphConstraint
       properties:
-        constraints: '[[null, "rcord", null], ["ONOS_VOLTHA", "volt", null], ["ONOS_Fabric", "fabric-crossconnect", "att-workflow-driver"], ["fabric", null, null]]'
+        constraints: '[[null, "rcord", null], ["onos", "volt", null], [null, "fabric-crossconnect", "att-workflow-driver"], ["fabric", null, null]]'
 {{- end -}}
-