WIP: adding metronet as a tosca service
Change-Id: I59e2bdc7c168aa388dc634b94f3c3353351b5ed2
diff --git a/xos/metronet.m4 b/xos/metronet.m4
index 60796f9..7fcc6b4 100644
--- a/xos/metronet.m4
+++ b/xos/metronet.m4
@@ -6,8 +6,18 @@
include(macros.m4)
node_types:
-
- tosca.nodes.MetroNetworkSystem:
+
+ tosca.nodes.VNodGlobalService:
+ description: >
+ CORD: The MetroNet Service.
+ derived_from: tosca.nodes.Root
+ capabilities:
+ xos_base_service_caps
+ properties:
+ xos_base_props
+ xos_base_service_props
+
+ tosca.nodes.MetroNetworkSystem:
derived_from: tosca.nodes.Root
description: >
CORD: The Metro Network Service.
@@ -15,6 +25,7 @@
xos_base_service_caps
properties:
xos_base_props
+ xos_base_service_props
administrativeState:
type: string
required: true
@@ -23,7 +34,7 @@
required: false
- tosca.nodes.MetroNetworkDevice:
+ tosca.nodes.MetroNetworkDevice:
derived_from: tosca.nodes.Root
description: >
CORD: The Metro Network Device.
@@ -47,3 +58,31 @@
id:
type: string
required: true
+
+ tosca.nodes.EcordBandwidthProfile:
+ derived_from: tosca.nodes.Root
+ description: >
+ CORD: The ecord bandwith profile.
+ capabilities:
+ xos_base_service_caps
+ properties:
+ xos_base_props
+ bwpcfgcbs:
+ type: integer
+ required: false
+ bwpcfgebs:
+ type: integer
+ required: false
+ bwpcfgcir:
+ type: integer
+ required: false
+ bwpcfgeir:
+ type: integer
+ required: false
+ name:
+ type: string
+ required: true
+
+ tosca.relationships.UsesBandwidthProfile:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [ tosca.capabilities.xos.EcordBandwidthProfile ]
\ No newline at end of file
diff --git a/xos/metronet.yaml b/xos/metronet.yaml
index b59e971..c0eb018 100644
--- a/xos/metronet.yaml
+++ b/xos/metronet.yaml
@@ -21,8 +21,66 @@
node_types:
-
- tosca.nodes.MetroNetworkSystem:
+
+ tosca.nodes.VNodGlobalService:
+ description: >
+ CORD: The MetroNet Service.
+ derived_from: tosca.nodes.Root
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ service:
+ type: tosca.capabilities.xos.Service
+ properties:
+ no-delete:
+ type: boolean
+ default: false
+ description: Do not allow Tosca to delete this object
+ no-create:
+ type: boolean
+ default: false
+ description: Do not allow Tosca to create this object
+ no-update:
+ type: boolean
+ default: false
+ description: Do not allow Tosca to update this object
+ replaces:
+ type: string
+ required: false
+ descrption: Replaces/renames this object
+ kind:
+ type: string
+ default: generic
+ description: Type of service.
+ view_url:
+ type: string
+ required: false
+ description: URL to follow when icon is clicked in the Service Directory.
+ icon_url:
+ type: string
+ required: false
+ description: ICON to display in the Service Directory.
+ enabled:
+ type: boolean
+ default: true
+ published:
+ type: boolean
+ default: true
+ description: If True then display this Service in the Service Directory.
+ public_key:
+ type: string
+ required: false
+ description: Public key to install into Instances to allows Services to SSH into them.
+ private_key_fn:
+ type: string
+ required: false
+ description: Location of private key file
+ versionNumber:
+ type: string
+ required: false
+ description: Version number of Service.
+
+ tosca.nodes.MetroNetworkSystem:
derived_from: tosca.nodes.Root
description: >
CORD: The Metro Network Service.
@@ -48,6 +106,37 @@
type: string
required: false
descrption: Replaces/renames this object
+ kind:
+ type: string
+ default: generic
+ description: Type of service.
+ view_url:
+ type: string
+ required: false
+ description: URL to follow when icon is clicked in the Service Directory.
+ icon_url:
+ type: string
+ required: false
+ description: ICON to display in the Service Directory.
+ enabled:
+ type: boolean
+ default: true
+ published:
+ type: boolean
+ default: true
+ description: If True then display this Service in the Service Directory.
+ public_key:
+ type: string
+ required: false
+ description: Public key to install into Instances to allows Services to SSH into them.
+ private_key_fn:
+ type: string
+ required: false
+ description: Location of private key file
+ versionNumber:
+ type: string
+ required: false
+ description: Version number of Service.
administrativeState:
type: string
required: true
@@ -56,7 +145,7 @@
required: false
- tosca.nodes.MetroNetworkDevice:
+ tosca.nodes.MetroNetworkDevice:
derived_from: tosca.nodes.Root
description: >
CORD: The Metro Network Device.
@@ -95,3 +184,49 @@
id:
type: string
required: true
+
+ tosca.nodes.EcordBandwidthProfile:
+ derived_from: tosca.nodes.Root
+ description: >
+ CORD: The ecord bandwith profile.
+ capabilities:
+ scalable:
+ type: tosca.capabilities.Scalable
+ service:
+ type: tosca.capabilities.xos.Service
+ properties:
+ no-delete:
+ type: boolean
+ default: false
+ description: Do not allow Tosca to delete this object
+ no-create:
+ type: boolean
+ default: false
+ description: Do not allow Tosca to create this object
+ no-update:
+ type: boolean
+ default: false
+ description: Do not allow Tosca to update this object
+ replaces:
+ type: string
+ required: false
+ descrption: Replaces/renames this object
+ bwpcfgcbs:
+ type: integer
+ required: false
+ bwpcfgebs:
+ type: integer
+ required: false
+ bwpcfgcir:
+ type: integer
+ required: false
+ bwpcfgeir:
+ type: integer
+ required: false
+ name:
+ type: string
+ required: true
+
+ tosca.relationships.UsesBandwidthProfile:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [ tosca.capabilities.xos.EcordBandwidthProfile ]
\ No newline at end of file
diff --git a/xos/tosca/resources/metronetservice.py b/xos/tosca/resources/metronetservice.py
index 5514d28..3ed5e59 100644
--- a/xos/tosca/resources/metronetservice.py
+++ b/xos/tosca/resources/metronetservice.py
@@ -11,3 +11,22 @@
provides = "tosca.nodes.MetroNetworkDevice"
xos_model = NetworkDevice
copyin_props = ["id", "name", "administrativeState", "username", "password", "authType", "restCtrlUrl"]
+
+class VnodGlobalService(XOSService):
+ provides = "tosca.nodes.VNodGlobalService"
+ xos_model = VnodGlobalService
+ copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "versionNumber"]
+
+ def get_xos_args(self):
+ args = super(VnodGlobalService, self).get_xos_args()
+
+ profile = self.get_requirement("tosca.relationships.UsesBandwidthProfile", throw_exception=False)
+ if profile:
+ profile = self.get_xos_object(BandwidthProfile, name=profile)
+ args["bandwidthProfile"] = profile
+ return args
+
+class XOSMetronetBandwithProficle(XOSResource):
+ provides = "tosca.nodes.EcordBandwidthProfile"
+ xos_model = BandwidthProfile
+ copyin_props = ['bwpcfgcbs','bwpcfgebs','bwpcfgcir','bwpcfgeir','name']
\ No newline at end of file