Incorporate ONOS app service for launching vBNG app
diff --git a/xos/configurations/cord/Dockerfile.cord b/xos/configurations/cord/Dockerfile.cord
index dad9895..a21c7d0 100644
--- a/xos/configurations/cord/Dockerfile.cord
+++ b/xos/configurations/cord/Dockerfile.cord
@@ -5,7 +5,11 @@
ADD xos/configurations/common/id_rsa.pub /root/setup/padmin_public_key
ADD xos/configurations/common/id_rsa.pub /opt/xos/observers/vcpe/vcpe_public_key
ADD xos/configurations/common/id_rsa /opt/xos/observers/vcpe/vcpe_private_key
+ADD xos/configurations/common/id_rsa.pub /opt/xos/observers/onos/onos_key.pub
+ADD xos/configurations/common/id_rsa /opt/xos/observers/onos/onos_key
ADD xos/observers/vcpe/supervisor/vcpe-observer.conf /etc/supervisor/conf.d/
+ADD xos/observers/vbng/supervisor/vbng-observer.conf /etc/supervisor/conf.d/
+ADD xos/observers/onos/supervisor/onos-observer.conf /etc/supervisor/conf.d/
RUN sed -i 's/proxy_ssh=True/proxy_ssh=False/' /opt/xos/observers/vcpe/vcpe_observer_config
CMD /usr/bin/make -C /opt/xos/configurations/cord -f Makefile.inside; /bin/bash
diff --git a/xos/configurations/cord/Makefile.inside b/xos/configurations/cord/Makefile.inside
index a4bb5f1..a4494dc 100644
--- a/xos/configurations/cord/Makefile.inside
+++ b/xos/configurations/cord/Makefile.inside
@@ -6,5 +6,8 @@
python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/common/cloudlab-nodes.yaml
python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/cord/cord.yaml
+setup_subscriber:
+ python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/cord/subscriber.yaml
+
run_develserver:
cd /opt/xos; python manage.py runserver 0.0.0.0:8000 --insecure
diff --git a/xos/configurations/cord/cord.yaml b/xos/configurations/cord/cord.yaml
index 56ab11d..5eff2f3 100644
--- a/xos/configurations/cord/cord.yaml
+++ b/xos/configurations/cord/cord.yaml
@@ -7,6 +7,7 @@
topology_template:
node_templates:
+
# CORD Services
service_volt:
type: tosca.nodes.Service
@@ -18,55 +19,6 @@
view_url: /admin/cord/voltservice/$id$/
kind: vOLT
- Private:
- type: tosca.nodes.NetworkTemplate
-
- # networks required by vCPE
- lan_network:
- type: tosca.nodes.network.Network
- properties:
- ip_version: 4
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_vcpe
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_vcpe
- relationship: tosca.relationships.ConnectsToSlice
-
- wan_network:
- type: tosca.nodes.network.Network
- properties:
- ip_version: 4
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_vcpe
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_vcpe
- relationship: tosca.relationships.ConnectsToSlice
-
- hpc_client_network:
- type: tosca.nodes.network.Network
- properties:
- ip_version: 4
- requirements:
- - network_template:
- node: Private
- relationship: tosca.relationships.UsesNetworkTemplate
- - owner:
- node: mysite_vcpe
- relationship: tosca.relationships.MemberOfSlice
- - connection:
- node: mysite_vcpe
- relationship: tosca.relationships.ConnectsToSlice
-
service_vcpe:
type: tosca.nodes.VCPEService
requirements:
@@ -84,7 +36,92 @@
type: tosca.nodes.VBNGService
properties:
view_url: /admin/cord/vbngservice/$id$/
- vbng_url: http://10.0.3.136:8181/onos/virtualbng/
+ vbng_url: http://10.11.10.24:8181/onos/virtualbng/
+
+ service_ONOS:
+ type: tosca.nodes.ONOSService
+ requirements:
+ properties:
+ kind: onos
+ view_url: /admin/onos/onosservice/$id$/
+ public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
+ artifacts:
+ pubkey: /opt/xos/observers/onos/onos_key.pub
+
+ vBNG_ONOS_app:
+ type: tosca.nodes.ONOSvBNGApp
+ requirements:
+ - onos_tenant:
+ node: service_ONOS
+ relationship: tosca.relationships.TenantOfService
+ properties:
+ dependencies: org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd
+ config_addresses_json: >
+ {
+ "addresses" : [
+ {
+ "dpid" : "00:00:00:00:00:00:00:a1",
+ "port" : "2",
+ "ips" : ["192.0.0.1/24"],
+ "mac" : "00:00:00:00:00:99"
+
+ },
+ {
+ "dpid" : "00:00:00:00:00:00:00:a5",
+ "port" : "4",
+ "ips" : ["200.0.0.5/24"],
+ "mac" : "00:00:00:00:00:98"
+ }
+ ]
+ }
+ config_virtualbng_json: >
+ {
+ "localPublicIpPrefixes" : [
+ "200.0.0.0/32",
+ "201.0.0.0/30",
+ "202.0.0.0/30"
+ ],
+ "nextHopIpAddress" : "200.0.0.5",
+ "publicFacingMac" : "00:00:00:00:00:66",
+ "xosIpAddress" : "10.11.10.1",
+ "xosRestPort" : "9999"
+ }
+
+
+ # Network templates
+ Private:
+ type: tosca.nodes.NetworkTemplate
+
+ # Networks required by the CORD setup
+ lan_network:
+ type: tosca.nodes.network.Network
+ properties:
+ ip_version: 4
+ requirements:
+ - network_template:
+ node: Private
+ relationship: tosca.relationships.UsesNetworkTemplate
+ - owner:
+ node: mysite_vcpe
+ relationship: tosca.relationships.MemberOfSlice
+ - connection:
+ node: mysite_vcpe
+ relationship: tosca.relationships.ConnectsToSlice
+
+ wan_network:
+ type: tosca.nodes.network.Network
+ properties:
+ ip_version: 4
+ requirements:
+ - network_template:
+ node: Private
+ relationship: tosca.relationships.UsesNetworkTemplate
+ - owner:
+ node: mysite_vcpe
+ relationship: tosca.relationships.MemberOfSlice
+ - connection:
+ node: mysite_vcpe
+ relationship: tosca.relationships.ConnectsToSlice
mysite:
type: tosca.nodes.Site
@@ -100,66 +137,36 @@
node: mysite
relationship: tosca.relationships.MemberOfSite
- # Now let's add a subscriber
+ mysite_onos:
+ description: ONOS Controller Slice
+ type: tosca.nodes.Slice
+ requirements:
+ - ONOS:
+ node: service_ONOS
+ relationship: tosca.relationships.MemberOfService
+ - site:
+ node: mysite
+ relationship: tosca.relationships.MemberOfSite
- My House:
- type: tosca.nodes.CORDSubscriber
- properties:
- service_specific_id: 1234
- firewall_enable: false
- cdn_enable: false
- url_filter_enable: false
- url_filter_level: R
+ vbng_server:
+ type: tosca.nodes.Compute
+ capabilities:
+ # Host container properties
+ host:
+ properties:
+ num_cpus: 1
+ disk_size: 10 GB
+ mem_size: 4 MB
+ # Guest Operating System properties
+ os:
+ properties:
+ # host Operating System image properties
+ architecture: x86_64
+ type: linux
+ distribution: Ubuntu
+ version: 14.10
+ requirements:
+ - slice:
+ node: mysite_onos
+ relationship: tosca.relationships.MemberOfSlice
- Mom's PC:
- type: tosca.nodes.CORDUser
- properties:
- mac: 010203040506
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- Dad's PC:
- type: tosca.nodes.CORDUser
- properties:
- mac: 90E2Ba82F975
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- Jack's Laptop:
- type: tosca.nodes.CORDUser
- properties:
- mac: 685B359D91D5
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- Jill's Laptop:
- type: tosca.nodes.CORDUser
- properties:
- mac: 34363BC9B6A6
- level: PG_13
- requirements:
- - household:
- node: My House
- relationship: tosca.relationships.SubscriberDevice
-
- My Volt:
- type: tosca.nodes.VOLTTenant
- properties:
- service_specific_id: 1234
- vlan_id: 4321
- requirements:
- - provider_service:
- node: service_volt
- relationship: tosca.relationships.MemberOfService
- - subscriber:
- node: My House
- relationship: tosca.relationships.BelongsToSubscriber
diff --git a/xos/configurations/cord/subscriber.yaml b/xos/configurations/cord/subscriber.yaml
new file mode 100644
index 0000000..f77f4d5
--- /dev/null
+++ b/xos/configurations/cord/subscriber.yaml
@@ -0,0 +1,82 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Set up a subscriber for CORD
+
+imports:
+ - custom_types/xos.yaml
+
+topology_template:
+ node_templates:
+
+ # These services defined in cord.yaml
+ service_volt:
+ type: tosca.nodes.Service
+
+ service_vcpe:
+ type: tosca.nodes.VCPEService
+
+ service_vbng:
+ type: tosca.nodes.VBNGService
+
+ # A subscriber
+ My House:
+ type: tosca.nodes.CORDSubscriber
+ properties:
+ service_specific_id: 123
+ firewall_enable: false
+ cdn_enable: false
+ url_filter_enable: false
+ url_filter_level: R
+
+ Mom's PC:
+ type: tosca.nodes.CORDUser
+ properties:
+ mac: 010203040506
+ level: PG_13
+ requirements:
+ - household:
+ node: My House
+ relationship: tosca.relationships.SubscriberDevice
+
+ Dad's PC:
+ type: tosca.nodes.CORDUser
+ properties:
+ mac: 90E2Ba82F975
+ level: PG_13
+ requirements:
+ - household:
+ node: My House
+ relationship: tosca.relationships.SubscriberDevice
+
+ Jack's Laptop:
+ type: tosca.nodes.CORDUser
+ properties:
+ mac: 685B359D91D5
+ level: PG_13
+ requirements:
+ - household:
+ node: My House
+ relationship: tosca.relationships.SubscriberDevice
+
+ Jill's Laptop:
+ type: tosca.nodes.CORDUser
+ properties:
+ mac: 34363BC9B6A6
+ level: PG_13
+ requirements:
+ - household:
+ node: My House
+ relationship: tosca.relationships.SubscriberDevice
+
+ My Volt:
+ type: tosca.nodes.VOLTTenant
+ properties:
+ service_specific_id: 123
+ vlan_id: 432
+ requirements:
+ - provider_service:
+ node: service_volt
+ relationship: tosca.relationships.MemberOfService
+ - subscriber:
+ node: My House
+ relationship: tosca.relationships.BelongsToSubscriber
diff --git a/xos/observers/onos/supervisor/onos-observer.conf b/xos/observers/onos/supervisor/onos-observer.conf
new file mode 100644
index 0000000..16afa8c
--- /dev/null
+++ b/xos/observers/onos/supervisor/onos-observer.conf
@@ -0,0 +1,2 @@
+[program:onos-observer]
+command=python /opt/xos/observers/onos/onos-observer.py -C /opt/xos/observers/onos/onos_observer_config