├── s-nest ├── readme.txt ├── 2020-catalyst │ └── mec-slice │ │ ├── example │ │ ├── commercial-profile.json │ │ ├── mobility-profile.json │ │ ├── v-2-x-profile.json │ │ ├── who.json │ │ ├── when.json │ │ ├── mission-critical-profile.json │ │ ├── third-party-network-and-application-functions.json │ │ ├── data-access-profile.json │ │ ├── ue-positioning-profile.json │ │ ├── deterministic-comms-profile.json │ │ ├── device-profile.json │ │ ├── operational-profile.json │ │ ├── where.json │ │ ├── traffic-profile.json │ │ ├── what.json │ │ └── common-properties.json │ │ └── schema │ │ ├── who.json │ │ ├── mobility-profile.json │ │ ├── commercial-profile.json │ │ ├── when.json │ │ ├── v-2-x-profile.json │ │ ├── mission-critical-profile.json │ │ ├── third-party-network-and-application-functions.json │ │ ├── deterministic-comms-profile.json │ │ ├── data-access-profile.json │ │ ├── ue-positioning-profile.json │ │ ├── device-profile.json │ │ ├── operational-profile.json │ │ ├── traffic-profile.json │ │ ├── what.json │ │ ├── where.json │ │ └── common-properties.json └── 2019-catalyst │ └── collect-wearable-sensor-data │ ├── example │ ├── commercial-profile.json │ ├── mobility-profile.json │ ├── v-2-x-profile.json │ ├── who.json │ ├── when.json │ ├── mission-critical-profile.json │ ├── third-party-network-and-application-functions.json │ ├── data-access-profile.json │ ├── ue-positioning-profile.json │ ├── deterministic-comms-profile.json │ ├── device-profile.json │ ├── operational-profile.json │ ├── where.json │ ├── traffic-profile.json │ ├── what.json │ └── common-properties.json │ └── schema │ ├── who.json │ ├── mobility-profile.json │ ├── commercial-profile.json │ ├── when.json │ ├── v-2-x-profile.json │ ├── mission-critical-profile.json │ ├── third-party-network-and-application-functions.json │ ├── deterministic-comms-profile.json │ ├── data-access-profile.json │ ├── ue-positioning-profile.json │ ├── device-profile.json │ ├── operational-profile.json │ ├── traffic-profile.json │ ├── what.json │ ├── where.json │ └── common-properties.json ├── p-nest └── example-p-nest.yaml ├── SliceTemplateBlueprint.xlsm ├── gst ├── generic-slice-template.xlsx └── json-schema │ ├── 1-who.json │ ├── 9-mobility-profile.json │ ├── 14-commercial-profile.json │ ├── 4-when.json │ ├── 10-v-2-x-profile.json │ ├── 13-mission-critical-profile.json │ ├── 16-third-party-network-and-application-functions.json │ ├── 12-deterministic-comms-profile.json │ ├── 8-data-access-profile.json │ ├── 11-ue-positioning-profile.json │ ├── 6-device-profile.json │ ├── 15-operational-profile.json │ ├── 5-traffic-profile.json │ ├── 2-what.json │ ├── 3-where.json │ └── 7-common-properties.json ├── .vscode └── settings.json ├── tosca ├── mec_hosting_set_up_inputs.yml ├── README.md ├── create_enablement_tosca.py ├── 5G.yml ├── mec_hosting_set_up.yml ├── 5G_datatypes.yml ├── templates │ └── mec_hosting_enablement.j2 ├── mec_hosting_enablementwheresmychargepoint.com.yml ├── 5G Service Assure.yml ├── doc.yml └── sid.yml ├── gsma-gst.iml ├── tmforum └── open-apis │ └── TMF641-ServiceOrdering │ └── examples │ ├── TMF641_ MEC Hosting Service Order.json │ └── TMF641_ Assured Connection Service Order.json ├── README.md ├── LICENSE └── out.yml /s-nest/readme.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /p-nest/example-p-nest.yaml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/commercial-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "Charging": "Yes" 3 | } 4 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/mobility-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "MaxUeVelocity(Km/H)": "500" 3 | } 4 | -------------------------------------------------------------------------------- /SliceTemplateBlueprint.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5g-ridersonthestorm/gsma-gst/HEAD/SliceTemplateBlueprint.xlsm -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/commercial-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "Charging": "Yes" 3 | } 4 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/v-2-x-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "V2XMode": "-", 3 | "Synchronicity": "-" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/who.json: -------------------------------------------------------------------------------- 1 | { 2 | "CustomerName/Reference": "EV Charging Point Operators" 3 | } 4 | -------------------------------------------------------------------------------- /gst/generic-slice-template.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/5g-ridersonthestorm/gsma-gst/HEAD/gst/generic-slice-template.xlsx -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/mobility-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "MaxUeVelocity(Km/H)": "500" 3 | } 4 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/v-2-x-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "V2XMode": "-", 3 | "Synchronicity": "-" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/who.json: -------------------------------------------------------------------------------- 1 | { 2 | "CustomerName/Reference": "First Reponse Unit Italy" 3 | } 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "CSMS", 4 | "EVCS", 5 | "sidmodels", 6 | "tmforum" 7 | ] 8 | } -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/when.json: -------------------------------------------------------------------------------- 1 | { 2 | "ServiceActivationDate": "2020-10-07 12:00:00", 3 | "ServiceExpirationDate": "-" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/mission-critical-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "MissionCriticalCapabilities": "-", 3 | "GroupCommunication": "-" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/third-party-network-and-application-functions.json: -------------------------------------------------------------------------------- 1 | { 2 | "3rdPartyNetworkAndApplicationFunctions": "-" 3 | } 4 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/when.json: -------------------------------------------------------------------------------- 1 | { 2 | "ServiceActivationDate": "2019-04-26 12:00:00", 3 | "ServiceExpirationDate": "-" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/data-access-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "UserDataAccess": "Termination in private network", 3 | "TunnelingProtocol": "VPN" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/ue-positioning-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "Method": "E-CID", 3 | "Periodicity(Min)": "1.00", 4 | "Accuracy(M)": "100" 5 | } 6 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/mission-critical-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "MissionCriticalCapabilities": "-", 3 | "GroupCommunication": "-" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/third-party-network-and-application-functions.json: -------------------------------------------------------------------------------- 1 | { 2 | "3rdPartyNetworkAndApplicationFunctions": "-" 3 | } 4 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/deterministic-comms-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "Periodicity": "1900-02-29 00:00:00", 3 | "Dl:UlTrafficRatio": "1900-01-00 04:48:00" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/data-access-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "UserDataAccess": "Termination in private network", 3 | "TunnelingProtocol": "VPN" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/ue-positioning-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "Method": "E-CID", 3 | "Periodicity(Min)": "1.00", 4 | "Accuracy(M)": "100" 5 | } 6 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/deterministic-comms-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "Periodicity": "1900-02-29 00:00:00", 3 | "Dl:UlTrafficRatio": "1900-01-00 04:48:00" 4 | } 5 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/device-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "DeviceTypeWhiteList": "35305519, 35305520", 3 | "FrequencyBandSupport-SupportedAccessTechnologies": "example", 4 | "MobilitySupport": "Yes" 5 | } 6 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/operational-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "PerformanceMonitoring": "n/a", 3 | "PerformancePrediction": "n/a", 4 | "UserManagementOpenness": "Yes", 5 | "RootCauseInvestigation": "Passive" 6 | } 7 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/device-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "DeviceTypeWhiteList": "35305519, 35305520", 3 | "FrequencyBandSupport-SupportedAccessTechnologies": "example", 4 | "MobilitySupport": "Yes" 5 | } 6 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/operational-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "PerformanceMonitoring": "n/a", 3 | "PerformancePrediction": "n/a", 4 | "UserManagementOpenness": "Yes", 5 | "RootCauseInvestigation": "Passive" 6 | } 7 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/where.json: -------------------------------------------------------------------------------- 1 | { 2 | "LocationScope": "National", 3 | "Location": "Denmark", 4 | "Area": "", 5 | "AreaSize(SqKm)": "357386", 6 | "ConnectionDensity(Ue/SqKm)": "0.06", 7 | "AvailableCellularFrequencyBands": "example" 8 | } 9 | -------------------------------------------------------------------------------- /tosca/mec_hosting_set_up_inputs.yml: -------------------------------------------------------------------------------- 1 | app_defn: > 2 | { 3 | app_image_repo: "http://cloudrepo.com:8080" 4 | app_image_file: "/files/wheresmychargepointapp.iso", 5 | app_state_data: "data_url", 6 | app_public_url: "wheresmychargepointapp.com" 7 | } -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/where.json: -------------------------------------------------------------------------------- 1 | { 2 | "LocationScope": "National", 3 | "Location": "Germany", 4 | "Area": "", 5 | "AreaSize(SqKm)": "357386", 6 | "ConnectionDensity(Ue/SqKm)": "0.06", 7 | "AvailableCellularFrequencyBands": "example" 8 | } 9 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/traffic-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "ActivityFactor": "0.1", 3 | "DownlinkUserThroughput(Bps/Ue)": "100000", 4 | "UplinkUserThroughput(Bps/Ue)": "100000", 5 | "E2ELatency(Ms)": "3000", 6 | "DownlinkTrafficDensity(Mbps/Ue/SqKm)": "0.0", 7 | "UplinkTrafficDensity(Mbps/Ue/SqKm)": "0.0" 8 | } 9 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/what.json: -------------------------------------------------------------------------------- 1 | { 2 | "WhatsDrivingTheConnectivityRequirement?": "MEC Charging Point App", 3 | "UseCaseType": "Application Hosting ", 4 | "Service/SliceType(Sst)": "eMBB", 5 | "SliceDifferentiator": "example", 6 | "NumberOfTerminals": "200000", 7 | "NumberOfConnections": "200000" 8 | } 9 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/traffic-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "ActivityFactor": "0.1", 3 | "DownlinkUserThroughput(Bps/Ue)": "100000", 4 | "UplinkUserThroughput(Bps/Ue)": "100000", 5 | "E2ELatency(Ms)": "3000", 6 | "DownlinkTrafficDensity(Mbps/Ue/SqKm)": "0.0", 7 | "UplinkTrafficDensity(Mbps/Ue/SqKm)": "0.0" 8 | } 9 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/what.json: -------------------------------------------------------------------------------- 1 | { 2 | "WhatsDrivingTheConnectivityRequirement?": "Collect wearable sensor data", 3 | "UseCaseType": "Smart wearables ", 4 | "Service/SliceType(Sst)": "mIOT", 5 | "SliceDifferentiator": "example", 6 | "NumberOfTerminals": "200000", 7 | "NumberOfConnections": "200000" 8 | } 9 | -------------------------------------------------------------------------------- /gst/json-schema/1-who.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "1-WHO", 4 | "description": "1-WHO", 5 | "type": "object", 6 | "properties": { 7 | "CustomerName/Reference": { 8 | "description": "Customer name or reference", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/who.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHO", 4 | "description": "WHO", 5 | "type": "object", 6 | "properties": { 7 | "CustomerName/Reference": { 8 | "description": "Customer name or reference", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/who.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHO", 4 | "description": "WHO", 5 | "type": "object", 6 | "properties": { 7 | "CustomerName/Reference": { 8 | "description": "Customer name or reference", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /gst/json-schema/9-mobility-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "9 MOBILITY PROFILE", 4 | "description": "9 MOBILITY PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "MaxUeVelocity(Km/H)": { 8 | "description": "The maximum speed of a UE whilst connected, or connecting", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /gst/json-schema/14-commercial-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "14 COMMERCIAL PROFILE", 4 | "description": "14 COMMERCIAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Charging": { 8 | "description": "Are CDRs generated for traffic originated and terminated within this slice", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/mobility-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "MOBILITY PROFILE", 4 | "description": "MOBILITY PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "MaxUeVelocity(Km/H)": { 8 | "description": "The maximum speed of a UE whilst connected, or connecting", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/commercial-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "COMMERCIAL PROFILE", 4 | "description": "COMMERCIAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Charging": { 8 | "description": "Are CDRs generated for traffic originated and terminated within this slice", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/mobility-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "MOBILITY PROFILE", 4 | "description": "MOBILITY PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "MaxUeVelocity(Km/H)": { 8 | "description": "The maximum speed of a UE whilst connected, or connecting", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /gst/json-schema/4-when.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "4-WHEN", 4 | "description": "4-WHEN", 5 | "type": "object", 6 | "properties": { 7 | "ServiceActivationDate": { 8 | "type": "string", 9 | "format": "date-time" 10 | }, 11 | "ServiceExpirationDate": { 12 | "type": "string", 13 | "format": "date-time" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/commercial-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "COMMERCIAL PROFILE", 4 | "description": "COMMERCIAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Charging": { 8 | "description": "Are CDRs generated for traffic originated and terminated within this slice", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/example/common-properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "DeterministicCommsSupport": "Yes", 3 | "V2XSupport": "No", 4 | "DelayTolerance": "-", 5 | "SimultaneousSliceOperation": "Same SST", 6 | "MissionCriticalSupport": "No", 7 | "Reliability": "-", 8 | "Availability": "example", 9 | "SliceQos": "6", 10 | "MmtelSupport": "No", 11 | "PositioningSupport": "Yes", 12 | "SupportForNon-IpTraffic": "example", 13 | "SessionAndServiceContinuity": "example" 14 | } 15 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/when.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHEN", 4 | "description": "WHEN", 5 | "type": "object", 6 | "properties": { 7 | "ServiceActivationDate": { 8 | "type": "string", 9 | "format": "date-time" 10 | }, 11 | "ServiceExpirationDate": { 12 | "type": "string", 13 | "format": "date-time" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/example/common-properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "DeterministicCommsSupport": "Yes", 3 | "V2XSupport": "No", 4 | "DelayTolerance": "-", 5 | "SimultaneousSliceOperation": "Same SST", 6 | "MissionCriticalSupport": "No", 7 | "Reliability": "-", 8 | "Availability": "example", 9 | "SliceQos": "6", 10 | "MmtelSupport": "No", 11 | "PositioningSupport": "Yes", 12 | "SupportForNon-IpTraffic": "example", 13 | "SessionAndServiceContinuity": "example" 14 | } 15 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/when.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHEN", 4 | "description": "WHEN", 5 | "type": "object", 6 | "properties": { 7 | "ServiceActivationDate": { 8 | "type": "string", 9 | "format": "date-time" 10 | }, 11 | "ServiceExpirationDate": { 12 | "type": "string", 13 | "format": "date-time" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /gst/json-schema/10-v-2-x-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "10 V2X PROFILE", 4 | "description": "10 V2X PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "V2XMode": { 8 | "description": "V2X mode", 9 | "type": "string", 10 | "minItems": "1" 11 | }, 12 | "Synchronicity": { 13 | "description": "Actor synchronicity", 14 | "type": "string" 15 | } 16 | }, 17 | "required": [] 18 | } 19 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/v-2-x-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "V2X PROFILE", 4 | "description": "V2X PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "V2XMode": { 8 | "description": "V2X mode", 9 | "type": "string", 10 | "minItems": "1" 11 | }, 12 | "Synchronicity": { 13 | "description": "Actor synchronicity", 14 | "type": "string" 15 | } 16 | }, 17 | "required": [] 18 | } 19 | -------------------------------------------------------------------------------- /gsma-gst.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/v-2-x-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "V2X PROFILE", 4 | "description": "V2X PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "V2XMode": { 8 | "description": "V2X mode", 9 | "type": "string", 10 | "minItems": "1" 11 | }, 12 | "Synchronicity": { 13 | "description": "Actor synchronicity", 14 | "type": "string" 15 | } 16 | }, 17 | "required": [] 18 | } 19 | -------------------------------------------------------------------------------- /gst/json-schema/13-mission-critical-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "13 MISSION CRITICAL PROFILE", 4 | "description": "13 MISSION CRITICAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "MissionCriticalCapabilities": { 8 | "description": "The MC capabilities that are supported", 9 | "type": "string" 10 | }, 11 | "GroupCommunication": { 12 | "description": "Group communications support", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/mission-critical-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "MISSION CRITICAL PROFILE", 4 | "description": "MISSION CRITICAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "MissionCriticalCapabilities": { 8 | "description": "The MC capabilities that are supported", 9 | "type": "string" 10 | }, 11 | "GroupCommunication": { 12 | "description": "Group communications support", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /gst/json-schema/16-third-party-network-and-application-functions.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "16 Third Party Network and Application Functions", 4 | "description": "16 Third Party Network and Application Functions", 5 | "type": "object", 6 | "properties": { 7 | "3rdPartyNetworkAndApplicationFunctions": { 8 | "description": "Not addressing in the first phase, realistically won't be automated on Day 0. Suggest taking concrete example in later phase, starting with EPS/IMS.", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/mission-critical-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "MISSION CRITICAL PROFILE", 4 | "description": "MISSION CRITICAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "MissionCriticalCapabilities": { 8 | "description": "The MC capabilities that are supported", 9 | "type": "string" 10 | }, 11 | "GroupCommunication": { 12 | "description": "Group communications support", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/third-party-network-and-application-functions.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "Third Party Network and Application Functions", 4 | "description": "Third Party Network and Application Functions", 5 | "type": "object", 6 | "properties": { 7 | "3rdPartyNetworkAndApplicationFunctions": { 8 | "description": "Not addressing in the first phase, realistically won't be automated on Day 0. Suggest taking concrete example in later phase, starting with EPS/IMS.", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/third-party-network-and-application-functions.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "Third Party Network and Application Functions", 4 | "description": "Third Party Network and Application Functions", 5 | "type": "object", 6 | "properties": { 7 | "3rdPartyNetworkAndApplicationFunctions": { 8 | "description": "Not addressing in the first phase, realistically won't be automated on Day 0. Suggest taking concrete example in later phase, starting with EPS/IMS.", 9 | "type": "string" 10 | } 11 | }, 12 | "required": [] 13 | } 14 | -------------------------------------------------------------------------------- /gst/json-schema/12-deterministic-comms-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "12 DETERMINISTIC COMMS PROFILE", 4 | "description": "12 DETERMINISTIC COMMS PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Periodicity": { 8 | "description": "Periodicity of comms, i.e. how often to expect data transfers", 9 | "type": "string", 10 | "format": "date-time" 11 | }, 12 | "Dl:UlTrafficRatio": { 13 | "description": "Value of 1 means DL and UL traffic volumes are similar. Note: not specified in GSMA GST today. ", 14 | "type": "string" 15 | } 16 | }, 17 | "required": [] 18 | } 19 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/deterministic-comms-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "DETERMINISTIC COMMS PROFILE", 4 | "description": "DETERMINISTIC COMMS PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Periodicity": { 8 | "description": "Periodicity of comms, i.e. how often to expect data transfers", 9 | "type": "string", 10 | "format": "date-time" 11 | }, 12 | "Dl:UlTrafficRatio": { 13 | "description": "Value of 1 means DL and UL traffic volumes are similar. Note: not specified in GSMA GST today. ", 14 | "type": "string" 15 | } 16 | }, 17 | "required": [] 18 | } 19 | -------------------------------------------------------------------------------- /gst/json-schema/8-data-access-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "8 DATA ACCESS PROFILE", 4 | "description": "8 DATA ACCESS PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "UserDataAccess": { 8 | "description": "Indicates how the network slice should handle traffic to and from UE. Drives tunneling and encapsulation protocols used.", 9 | "type": "string" 10 | }, 11 | "TunnelingProtocol": { 12 | "description": "Indicates how the network slice should handle traffic to and from UE. Drives tunneling and encapsulation protocols used.", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/deterministic-comms-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "DETERMINISTIC COMMS PROFILE", 4 | "description": "DETERMINISTIC COMMS PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Periodicity": { 8 | "description": "Periodicity of comms, i.e. how often to expect data transfers", 9 | "type": "string", 10 | "format": "date-time" 11 | }, 12 | "Dl:UlTrafficRatio": { 13 | "description": "Value of 1 means DL and UL traffic volumes are similar. Note: not specified in GSMA GST today. ", 14 | "type": "string" 15 | } 16 | }, 17 | "required": [] 18 | } 19 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/data-access-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "DATA ACCESS PROFILE", 4 | "description": "DATA ACCESS PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "UserDataAccess": { 8 | "description": "Indicates how the network slice should handle traffic to and from UE. Drives tunneling and encapsulation protocols used.", 9 | "type": "string" 10 | }, 11 | "TunnelingProtocol": { 12 | "description": "Indicates how the network slice should handle traffic to and from UE. Drives tunneling and encapsulation protocols used.", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /gst/json-schema/11-ue-positioning-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "11 UE POSITIONING PROFILE", 4 | "description": "11 UE POSITIONING PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Method": { 8 | "description": "Positioning method or algorithm", 9 | "type": "string", 10 | "maxLength": "22" 11 | }, 12 | "Periodicity(Min)": { 13 | "description": "Periodicity of the positioning measurement", 14 | "type": "string" 15 | }, 16 | "Accuracy(M)": { 17 | "description": "Accuracy of the positioning measurement", 18 | "type": "string" 19 | } 20 | }, 21 | "required": [] 22 | } 23 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/data-access-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "DATA ACCESS PROFILE", 4 | "description": "DATA ACCESS PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "UserDataAccess": { 8 | "description": "Indicates how the network slice should handle traffic to and from UE. Drives tunneling and encapsulation protocols used.", 9 | "type": "string" 10 | }, 11 | "TunnelingProtocol": { 12 | "description": "Indicates how the network slice should handle traffic to and from UE. Drives tunneling and encapsulation protocols used.", 13 | "type": "string" 14 | } 15 | }, 16 | "required": [] 17 | } 18 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/ue-positioning-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "UE POSITIONING PROFILE", 4 | "description": "UE POSITIONING PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Method": { 8 | "description": "Positioning method or algorithm", 9 | "type": "string", 10 | "maxLength": "22" 11 | }, 12 | "Periodicity(Min)": { 13 | "description": "Periodicity of the positioning measurement", 14 | "type": "string" 15 | }, 16 | "Accuracy(M)": { 17 | "description": "Accuracy of the positioning measurement", 18 | "type": "string" 19 | } 20 | }, 21 | "required": [] 22 | } 23 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/ue-positioning-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "UE POSITIONING PROFILE", 4 | "description": "UE POSITIONING PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "Method": { 8 | "description": "Positioning method or algorithm", 9 | "type": "string", 10 | "maxLength": "22" 11 | }, 12 | "Periodicity(Min)": { 13 | "description": "Periodicity of the positioning measurement", 14 | "type": "string" 15 | }, 16 | "Accuracy(M)": { 17 | "description": "Accuracy of the positioning measurement", 18 | "type": "string" 19 | } 20 | }, 21 | "required": [] 22 | } 23 | -------------------------------------------------------------------------------- /gst/json-schema/6-device-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "6 DEVICE PROFILE", 4 | "description": "6 DEVICE PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "DeviceTypeWhiteList": { 8 | "description": "This is informational. The relevance of asking about devices is: if a customer selects a device (or devices) these implicitly support a given set of frequency bands, and an assessment can be made on whether the underlying network can support the device. ", 9 | "type": "string", 10 | "minItems": "1" 11 | }, 12 | "FrequencyBandSupport-SupportedAccessTechnologies": { 13 | "type": "string" 14 | }, 15 | "MobilitySupport": { 16 | "description": "Does this service/slice require mobility, or not", 17 | "type": "string", 18 | "maxLength": "22" 19 | } 20 | }, 21 | "required": [] 22 | } 23 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/device-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "DEVICE PROFILE", 4 | "description": "DEVICE PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "DeviceTypeWhiteList": { 8 | "description": "This is informational. The relevance of asking about devices is: if a customer selects a device (or devices) these implicitly support a given set of frequency bands, and an assessment can be made on whether the underlying network can support the device. ", 9 | "type": "string", 10 | "minItems": "1" 11 | }, 12 | "FrequencyBandSupport-SupportedAccessTechnologies": { 13 | "type": "string" 14 | }, 15 | "MobilitySupport": { 16 | "description": "Does this service/slice require mobility, or not", 17 | "type": "string", 18 | "maxLength": "22" 19 | } 20 | }, 21 | "required": [] 22 | } 23 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/device-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "DEVICE PROFILE", 4 | "description": "DEVICE PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "DeviceTypeWhiteList": { 8 | "description": "This is informational. The relevance of asking about devices is: if a customer selects a device (or devices) these implicitly support a given set of frequency bands, and an assessment can be made on whether the underlying network can support the device. ", 9 | "type": "string", 10 | "minItems": "1" 11 | }, 12 | "FrequencyBandSupport-SupportedAccessTechnologies": { 13 | "type": "string" 14 | }, 15 | "MobilitySupport": { 16 | "description": "Does this service/slice require mobility, or not", 17 | "type": "string", 18 | "maxLength": "22" 19 | } 20 | }, 21 | "required": [] 22 | } 23 | -------------------------------------------------------------------------------- /gst/json-schema/15-operational-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "15 OPERATIONAL PROFILE", 4 | "description": "15 OPERATIONAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "PerformanceMonitoring": { 8 | "description": "Unnecessary, current status of KPI and SLA metrics exposed in network slice API", 9 | "type": "boolean" 10 | }, 11 | "PerformancePrediction": { 12 | "description": "Unnecessary, predicted values of KPI and SLA metrics exposed in network slice API", 13 | "type": "string" 14 | }, 15 | "UserManagementOpenness": { 16 | "description": "Provides network slice customer with the ability to manage users, and their service requirements. ", 17 | "type": "string" 18 | }, 19 | "RootCauseInvestigation": { 20 | "description": "This would entail opening up additional APIs and functions to nominated slice customer", 21 | "type": "string" 22 | } 23 | }, 24 | "required": [] 25 | } 26 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/operational-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "OPERATIONAL PROFILE", 4 | "description": "OPERATIONAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "PerformanceMonitoring": { 8 | "description": "Unnecessary, current status of KPI and SLA metrics exposed in network slice API", 9 | "type": "boolean" 10 | }, 11 | "PerformancePrediction": { 12 | "description": "Unnecessary, predicted values of KPI and SLA metrics exposed in network slice API", 13 | "type": "string" 14 | }, 15 | "UserManagementOpenness": { 16 | "description": "Provides network slice customer with the ability to manage users, and their service requirements. ", 17 | "type": "string" 18 | }, 19 | "RootCauseInvestigation": { 20 | "description": "This would entail opening up additional APIs and functions to nominated slice customer", 21 | "type": "string" 22 | } 23 | }, 24 | "required": [] 25 | } 26 | -------------------------------------------------------------------------------- /tosca/README.md: -------------------------------------------------------------------------------- 1 | # TOSCA 2 | 3 | The contents of this directory contain TOSCA templates which can be used as a data driven method of specifying the translation from service instance request to resource instance requests. 4 | 5 | There are two sets of files: 6 | 7 | ## Assured connection 8 | 5G_datatypes.yml will hold the GST in TOSCA format 9 | 5G.yml will hold a template for the overall 5G service and will include the file above 10 | 5G Service Assure.yml assigns specific values to the variables defined in the file above in order to define the required 5G service instance. Thus it is TOSCA version of NEST. 11 | 12 | ## MEC Hosting 13 | mec_hosting_set_up.yml is run when the service is first ordered. One of its functions is to dynamically create a TOSCA template ready for use when the MEC hosting is to be enabled. It does this by requiring a run of the program create_enablement_tosca.py. That python program takes the values originally submitted in mec_hosting_set_up_inputs.yml and uses them to render the jinja2 template mec_hosting_enablement.j2 14 | An example of such a dyanmically created template is mec_hosting_enablementwheresmychargepoint.com.yml -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/operational-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "OPERATIONAL PROFILE", 4 | "description": "OPERATIONAL PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "PerformanceMonitoring": { 8 | "description": "Unnecessary, current status of KPI and SLA metrics exposed in network slice API", 9 | "type": "boolean" 10 | }, 11 | "PerformancePrediction": { 12 | "description": "Unnecessary, predicted values of KPI and SLA metrics exposed in network slice API", 13 | "type": "string" 14 | }, 15 | "UserManagementOpenness": { 16 | "description": "Provides network slice customer with the ability to manage users, and their service requirements. ", 17 | "type": "string" 18 | }, 19 | "RootCauseInvestigation": { 20 | "description": "This would entail opening up additional APIs and functions to nominated slice customer", 21 | "type": "string" 22 | } 23 | }, 24 | "required": [] 25 | } 26 | -------------------------------------------------------------------------------- /gst/json-schema/5-traffic-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "5 TRAFFIC PROFILE", 4 | "description": "5 TRAFFIC PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "ActivityFactor": { 8 | "description": "The % of time that devices are active, i.e. transferring data to/from the network", 9 | "type": "string" 10 | }, 11 | "DownlinkUserThroughput(Bps/Ue)": { 12 | "description": "Downlink throughput per UE", 13 | "type": "string" 14 | }, 15 | "UplinkUserThroughput(Bps/Ue)": { 16 | "description": "Uplink throughput per UE", 17 | "type": "string" 18 | }, 19 | "E2ELatency(Ms)": { 20 | "description": "Latency", 21 | "type": "string" 22 | }, 23 | "DownlinkTrafficDensity(Mbps/Ue/SqKm)": { 24 | "description": "Downlink traffic density", 25 | "type": "string" 26 | }, 27 | "UplinkTrafficDensity(Mbps/Ue/SqKm)": { 28 | "description": "Uplink traffic density", 29 | "type": "string" 30 | } 31 | }, 32 | "required": [] 33 | } 34 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/traffic-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "TRAFFIC PROFILE", 4 | "description": "TRAFFIC PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "ActivityFactor": { 8 | "description": "The % of time that devices are active, i.e. transferring data to/from the network", 9 | "type": "string" 10 | }, 11 | "DownlinkUserThroughput(Bps/Ue)": { 12 | "description": "Downlink throughput per UE", 13 | "type": "string" 14 | }, 15 | "UplinkUserThroughput(Bps/Ue)": { 16 | "description": "Uplink throughput per UE", 17 | "type": "string" 18 | }, 19 | "E2ELatency(Ms)": { 20 | "description": "Latency", 21 | "type": "string" 22 | }, 23 | "DownlinkTrafficDensity(Mbps/Ue/SqKm)": { 24 | "description": "Downlink traffic density", 25 | "type": "string" 26 | }, 27 | "UplinkTrafficDensity(Mbps/Ue/SqKm)": { 28 | "description": "Uplink traffic density", 29 | "type": "string" 30 | } 31 | }, 32 | "required": [] 33 | } 34 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/traffic-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "TRAFFIC PROFILE", 4 | "description": "TRAFFIC PROFILE", 5 | "type": "object", 6 | "properties": { 7 | "ActivityFactor": { 8 | "description": "The % of time that devices are active, i.e. transferring data to/from the network", 9 | "type": "string" 10 | }, 11 | "DownlinkUserThroughput(Bps/Ue)": { 12 | "description": "Downlink throughput per UE", 13 | "type": "string" 14 | }, 15 | "UplinkUserThroughput(Bps/Ue)": { 16 | "description": "Uplink throughput per UE", 17 | "type": "string" 18 | }, 19 | "E2ELatency(Ms)": { 20 | "description": "Latency", 21 | "type": "string" 22 | }, 23 | "DownlinkTrafficDensity(Mbps/Ue/SqKm)": { 24 | "description": "Downlink traffic density", 25 | "type": "string" 26 | }, 27 | "UplinkTrafficDensity(Mbps/Ue/SqKm)": { 28 | "description": "Uplink traffic density", 29 | "type": "string" 30 | } 31 | }, 32 | "required": [] 33 | } 34 | -------------------------------------------------------------------------------- /tosca/create_enablement_tosca.py: -------------------------------------------------------------------------------- 1 | import jinja2 2 | import sys 3 | import os 4 | import json 5 | 6 | # command line for use: python create_enablement_tosca.py '{"app_image_repo": "http://cloudrepo.com:8080","app_image_file": "/files/wheresmychargepoint.iso","app_state_data": "data_url.com","app_public_url": "wheresmychargepoint.com"}' 7 | # command line for use: python create_enablement_tosca.py '{"app_image_repo": "http://cloudrepo.com:8080","app_image_file": "/files/test.iso","app_state_data": "data_url.com","app_public_url": "test.com"}' 8 | 9 | # get arguments and set to render 10 | render_vars = json.loads(sys.argv[1]) 11 | 12 | template_filename = "mec_hosting_enablement.j2" 13 | rendered_filename = "mec_hosting_enablement"+render_vars.get("app_public_url")+".yml" 14 | 15 | script_path = os.path.dirname(os.path.abspath(__file__)) 16 | template_file_path = os.path.join(os.curdir, template_filename) 17 | rendered_file_path = os.path.join(script_path, rendered_filename) 18 | 19 | 20 | # set render env 21 | render_environment = jinja2.Environment(loader=jinja2.FileSystemLoader('templates')) 22 | # render arguments into the jinja2 template 23 | output_text = render_environment.get_template(template_filename).render(render_vars) 24 | # write the result 25 | with open(rendered_file_path, "w") as result_file: 26 | result_file.write(output_text) -------------------------------------------------------------------------------- /tmforum/open-apis/TMF641-ServiceOrdering/examples/TMF641_ MEC Hosting Service Order.json: -------------------------------------------------------------------------------- 1 | { 2 | "externalId": "BSS121", 3 | "priority": "1", 4 | "category": "service activation", 5 | "@type": "activation", 6 | "requestedStartDate": "2019-01-15T09:37:40.508Z", 7 | "requestedCompletionDate": "2019-01-15T09:37:40.508Z", 8 | "relatedParty": [ 9 | { 10 | "id": "1294904", 11 | "href": "http://host:port/customer/1294904", 12 | "role": "owner", 13 | "@referredType": "account" 14 | } 15 | ], 16 | "orderItem": [ 17 | { 18 | "id": "2", 19 | "action": "add", 20 | "service": { 21 | "serviceState": "Active", 22 | "serviceCharacteristic": [ 23 | { 24 | "name": "Charging Station App", 25 | "valueType": "object", 26 | "value": { 27 | "@type": "URI", 28 | "URI": "https://apps.bt.com/cs/wheresmycharginstation.tar.gz", 29 | "appURL":"https://www.wheresmychargingstation.com" 30 | } 31 | } 32 | ], 33 | "serviceSpecification": { 34 | "id": "14", 35 | "href": "http://...:serviceSpecification/14", 36 | "name": "MEC Hosting", 37 | "version": "1", 38 | "@type": "Internet" 39 | } 40 | } 41 | } 42 | ] 43 | } -------------------------------------------------------------------------------- /gst/json-schema/2-what.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "2-WHAT", 4 | "description": "2-WHAT", 5 | "type": "object", 6 | "properties": { 7 | "WhatsDrivingTheConnectivityRequirement?": { 8 | "description": "Connectivity requirement in plain text", 9 | "type": "string" 10 | }, 11 | "UseCaseType": { 12 | "description": "Use case, per NGMN", 13 | "type": "string" 14 | }, 15 | "Service/SliceType(Sst)": { 16 | "description": "Service/Slice Type", 17 | "type": "string", 18 | "enum": [ 19 | "eMBB", 20 | "uRLLC", 21 | "mMTC" 22 | ], 23 | "minItems": "1" 24 | }, 25 | "SliceDifferentiator": { 26 | "description": "Slice differentiator ", 27 | "type": "string" 28 | }, 29 | "NumberOfTerminals": { 30 | "description": "Number of terminals or UEs", 31 | "type": "string", 32 | "maxLength": "22" 33 | }, 34 | "NumberOfConnections": { 35 | "description": "Number of connections. If not populated, assumed to be same as number of Ues", 36 | "type": "string" 37 | } 38 | }, 39 | "required": [ 40 | "NumberOfTerminals" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/what.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHAT", 4 | "description": "WHAT", 5 | "type": "object", 6 | "properties": { 7 | "WhatsDrivingTheConnectivityRequirement?": { 8 | "description": "Connectivity requirement in plain text", 9 | "type": "string" 10 | }, 11 | "UseCaseType": { 12 | "description": "Use case, per NGMN", 13 | "type": "string" 14 | }, 15 | "Service/SliceType(Sst)": { 16 | "description": "Service/Slice Type", 17 | "type": "string", 18 | "enum": [ 19 | "eMBB", 20 | "uRLLC", 21 | "mMTC" 22 | ], 23 | "minItems": "1" 24 | }, 25 | "SliceDifferentiator": { 26 | "description": "Slice differentiator ", 27 | "type": "string" 28 | }, 29 | "NumberOfTerminals": { 30 | "description": "Number of terminals or UEs", 31 | "type": "string", 32 | "maxLength": "22" 33 | }, 34 | "NumberOfConnections": { 35 | "description": "Number of connections. If not populated, assumed to be same as number of Ues", 36 | "type": "string" 37 | } 38 | }, 39 | "required": [ 40 | "NumberOfTerminals" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/what.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHAT", 4 | "description": "WHAT", 5 | "type": "object", 6 | "properties": { 7 | "WhatsDrivingTheConnectivityRequirement?": { 8 | "description": "Connectivity requirement in plain text", 9 | "type": "string" 10 | }, 11 | "UseCaseType": { 12 | "description": "Use case, per NGMN", 13 | "type": "string" 14 | }, 15 | "Service/SliceType(Sst)": { 16 | "description": "Service/Slice Type", 17 | "type": "string", 18 | "enum": [ 19 | "eMBB", 20 | "uRLLC", 21 | "mMTC" 22 | ], 23 | "minItems": "1" 24 | }, 25 | "SliceDifferentiator": { 26 | "description": "Slice differentiator ", 27 | "type": "string" 28 | }, 29 | "NumberOfTerminals": { 30 | "description": "Number of terminals or UEs", 31 | "type": "string", 32 | "maxLength": "22" 33 | }, 34 | "NumberOfConnections": { 35 | "description": "Number of connections. If not populated, assumed to be same as number of Ues", 36 | "type": "string" 37 | } 38 | }, 39 | "required": [ 40 | "NumberOfTerminals" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /gst/json-schema/3-where.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "3-WHERE", 4 | "description": "3-WHERE", 5 | "type": "object", 6 | "properties": { 7 | "LocationScope": { 8 | "description": "Scope of location", 9 | "type": "string" 10 | }, 11 | "Location": { 12 | "description": "Location name", 13 | "type": "string" 14 | }, 15 | "Area": { 16 | "description": "Polygon of coordinates representing the area", 17 | "type": "string", 18 | "enum": [ 19 | "NJ", 20 | "NY", 21 | "CT" 22 | ] 23 | }, 24 | "AreaSize(SqKm)": { 25 | "description": "Needs to be calculated by some means, e.g. user creates a polygon on the UI to derive result, enter a set of region/city/suburb names/postcodes and leverage GIS to derive result, etc.", 26 | "type": "string" 27 | }, 28 | "ConnectionDensity(Ue/SqKm)": { 29 | "description": "Should be validated against max, and disallowed if too high.", 30 | "type": "string" 31 | }, 32 | "AvailableCellularFrequencyBands": { 33 | "description": "This is informational. If customer selects a given area, this would scope the frequency bands that are relevant in that area. This can be used as a feed-forward filter for device selection, i.e. only show devices that support frequency bands supported in a given area.", 34 | "type": "string" 35 | } 36 | }, 37 | "required": [] 38 | } 39 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/where.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHERE", 4 | "description": "WHERE", 5 | "type": "object", 6 | "properties": { 7 | "LocationScope": { 8 | "description": "Scope of location", 9 | "type": "string" 10 | }, 11 | "Location": { 12 | "description": "Location name", 13 | "type": "string" 14 | }, 15 | "Area": { 16 | "description": "Polygon of coordinates representing the area", 17 | "type": "string", 18 | "enum": [ 19 | "NJ", 20 | "NY", 21 | "CT" 22 | ] 23 | }, 24 | "AreaSize(SqKm)": { 25 | "description": "Needs to be calculated by some means, e.g. user creates a polygon on the UI to derive result, enter a set of region/city/suburb names/postcodes and leverage GIS to derive result, etc.", 26 | "type": "string" 27 | }, 28 | "ConnectionDensity(Ue/SqKm)": { 29 | "description": "Should be validated against max, and disallowed if too high.", 30 | "type": "string" 31 | }, 32 | "AvailableCellularFrequencyBands": { 33 | "description": "This is informational. If customer selects a given area, this would scope the frequency bands that are relevant in that area. This can be used as a feed-forward filter for device selection, i.e. only show devices that support frequency bands supported in a given area.", 34 | "type": "string" 35 | } 36 | }, 37 | "required": [] 38 | } 39 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/where.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "WHERE", 4 | "description": "WHERE", 5 | "type": "object", 6 | "properties": { 7 | "LocationScope": { 8 | "description": "Scope of location", 9 | "type": "string" 10 | }, 11 | "Location": { 12 | "description": "Location name", 13 | "type": "string" 14 | }, 15 | "Area": { 16 | "description": "Polygon of coordinates representing the area", 17 | "type": "string", 18 | "enum": [ 19 | "NJ", 20 | "NY", 21 | "CT" 22 | ] 23 | }, 24 | "AreaSize(SqKm)": { 25 | "description": "Needs to be calculated by some means, e.g. user creates a polygon on the UI to derive result, enter a set of region/city/suburb names/postcodes and leverage GIS to derive result, etc.", 26 | "type": "string" 27 | }, 28 | "ConnectionDensity(Ue/SqKm)": { 29 | "description": "Should be validated against max, and disallowed if too high.", 30 | "type": "string" 31 | }, 32 | "AvailableCellularFrequencyBands": { 33 | "description": "This is informational. If customer selects a given area, this would scope the frequency bands that are relevant in that area. This can be used as a feed-forward filter for device selection, i.e. only show devices that support frequency bands supported in a given area.", 34 | "type": "string" 35 | } 36 | }, 37 | "required": [] 38 | } 39 | -------------------------------------------------------------------------------- /tmforum/open-apis/TMF641-ServiceOrdering/examples/TMF641_ Assured Connection Service Order.json: -------------------------------------------------------------------------------- 1 | { 2 | "externalId": "BSS121", 3 | "priority": "1", 4 | "category": "service activation", 5 | "@type": "activation", 6 | "requestedStartDate": "2019-01-15T09:37:40.508Z", 7 | "requestedCompletionDate": "2019-01-15T09:37:40.508Z", 8 | "relatedParty": [ 9 | { 10 | "id": "1294904", 11 | "href": "http://host:port/customer/1294904", 12 | "role": "owner", 13 | "@referredType": "account" 14 | } 15 | ], 16 | "orderItem": [ 17 | { 18 | "id": "1", 19 | "action": "add", 20 | "service": { 21 | "serviceState": "Active", 22 | "serviceCharacteristic": [ 23 | { 24 | "name": "CS1", 25 | "valueType": "object", 26 | "value": { 27 | "fixed":{ 28 | "locationTag": "Luton-east", /*PE location, i.e. point of presence/pop or "serving exchange" is known at order time.*/ 29 | "geographicLocation":{},// CE location 30 | ... 31 | }, 32 | "Wireless": 33 | { 34 | "IMSI":"353838543921135", 35 | ... 36 | } 37 | } 38 | }, 39 | { 40 | "name": "CS2", 41 | "valueType": "object", 42 | "value": { 43 | "fixed":{ 44 | "locationtag": "Liverpool-north", /*point of presence/pop or "serving exchange" is known at order time.*/ 45 | "geographicLocation":{}, 46 | ... 47 | }, 48 | "Wireless": 49 | { 50 | "IMSI":"353838543921136", 51 | ... 52 | } 53 | } 54 | ], 55 | "serviceSpecification": { 56 | "id": "12", 57 | "href": "http://...:serviceSpecification/12", 58 | "name": "Assured Connection", 59 | "version": "1", 60 | "@type": "Internet" 61 | } 62 | } 63 | } 64 | ] 65 | } -------------------------------------------------------------------------------- /gst/json-schema/7-common-properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "7 COMMON PROPERTIES", 4 | "description": "7 COMMON PROPERTIES", 5 | "type": "object", 6 | "properties": { 7 | "DeterministicCommsSupport": { 8 | "description": "Are data transfers for this service/slice deterministic/predictable, or not", 9 | "type": "string" 10 | }, 11 | "V2XSupport": { 12 | "description": "Does this service/slice require V2X communications, or not", 13 | "type": "string" 14 | }, 15 | "DelayTolerance": { 16 | "description": "Address by 5QI", 17 | "type": "string" 18 | }, 19 | "SimultaneousSliceOperation": { 20 | "description": "Can the service use shared slicing resources, or not, and if so which type", 21 | "type": "string" 22 | }, 23 | "MissionCriticalSupport": { 24 | "description": "Does the service require mission critical support, or not", 25 | "type": "string" 26 | }, 27 | "Reliability": { 28 | "description": "Addressed by 3GPP SA5 for uRLLC, not needed for the others.", 29 | "type": "string" 30 | }, 31 | "Availability": { 32 | "description": "Addressed by 3GPP SA5 for uRLLC, not needed for the others.", 33 | "type": "string" 34 | }, 35 | "SliceQos": { 36 | "description": "Addressed by 5QI", 37 | "type": "boolean" 38 | }, 39 | "MmtelSupport": { 40 | "description": "Indicates whether or not the the service requires MMTel/IMS support", 41 | "type": "string" 42 | }, 43 | "PositioningSupport": { 44 | "description": "Indicates whether or not the the service requires positioning support", 45 | "type": "string" 46 | }, 47 | "SupportForNon-IpTraffic": { 48 | "description": "Indicates whether or not provides non-IP (ethernet session and forwarding support) session support of communication devices", 49 | "type": "string" 50 | }, 51 | "SessionAndServiceContinuity": { 52 | "description": "Indicates which session and service continuity mode is needed", 53 | "type": "string" 54 | } 55 | }, 56 | "required": [] 57 | } 58 | -------------------------------------------------------------------------------- /s-nest/2020-catalyst/mec-slice/schema/common-properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "COMMON PROPERTIES", 4 | "description": "COMMON PROPERTIES", 5 | "type": "object", 6 | "properties": { 7 | "DeterministicCommsSupport": { 8 | "description": "Are data transfers for this service/slice deterministic/predictable, or not", 9 | "type": "string" 10 | }, 11 | "V2XSupport": { 12 | "description": "Does this service/slice require V2X communications, or not", 13 | "type": "string" 14 | }, 15 | "DelayTolerance": { 16 | "description": "Address by 5QI", 17 | "type": "string" 18 | }, 19 | "SimultaneousSliceOperation": { 20 | "description": "Can the service use shared slicing resources, or not, and if so which type", 21 | "type": "string" 22 | }, 23 | "MissionCriticalSupport": { 24 | "description": "Does the service require mission critical support, or not", 25 | "type": "string" 26 | }, 27 | "Reliability": { 28 | "description": "Addressed by 3GPP SA5 for uRLLC, not needed for the others.", 29 | "type": "string" 30 | }, 31 | "Availability": { 32 | "description": "Addressed by 3GPP SA5 for uRLLC, not needed for the others.", 33 | "type": "string" 34 | }, 35 | "SliceQos": { 36 | "description": "Addressed by 5QI", 37 | "type": "boolean" 38 | }, 39 | "MmtelSupport": { 40 | "description": "Indicates whether or not the the service requires MMTel/IMS support", 41 | "type": "string" 42 | }, 43 | "PositioningSupport": { 44 | "description": "Indicates whether or not the the service requires positioning support", 45 | "type": "string" 46 | }, 47 | "SupportForNon-IpTraffic": { 48 | "description": "Indicates whether or not provides non-IP (ethernet session and forwarding support) session support of communication devices", 49 | "type": "string" 50 | }, 51 | "SessionAndServiceContinuity": { 52 | "description": "Indicates which session and service continuity mode is needed", 53 | "type": "string" 54 | } 55 | }, 56 | "required": [] 57 | } 58 | -------------------------------------------------------------------------------- /s-nest/2019-catalyst/collect-wearable-sensor-data/schema/common-properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "title": "COMMON PROPERTIES", 4 | "description": "COMMON PROPERTIES", 5 | "type": "object", 6 | "properties": { 7 | "DeterministicCommsSupport": { 8 | "description": "Are data transfers for this service/slice deterministic/predictable, or not", 9 | "type": "string" 10 | }, 11 | "V2XSupport": { 12 | "description": "Does this service/slice require V2X communications, or not", 13 | "type": "string" 14 | }, 15 | "DelayTolerance": { 16 | "description": "Address by 5QI", 17 | "type": "string" 18 | }, 19 | "SimultaneousSliceOperation": { 20 | "description": "Can the service use shared slicing resources, or not, and if so which type", 21 | "type": "string" 22 | }, 23 | "MissionCriticalSupport": { 24 | "description": "Does the service require mission critical support, or not", 25 | "type": "string" 26 | }, 27 | "Reliability": { 28 | "description": "Addressed by 3GPP SA5 for uRLLC, not needed for the others.", 29 | "type": "string" 30 | }, 31 | "Availability": { 32 | "description": "Addressed by 3GPP SA5 for uRLLC, not needed for the others.", 33 | "type": "string" 34 | }, 35 | "SliceQos": { 36 | "description": "Addressed by 5QI", 37 | "type": "boolean" 38 | }, 39 | "MmtelSupport": { 40 | "description": "Indicates whether or not the the service requires MMTel/IMS support", 41 | "type": "string" 42 | }, 43 | "PositioningSupport": { 44 | "description": "Indicates whether or not the the service requires positioning support", 45 | "type": "string" 46 | }, 47 | "SupportForNon-IpTraffic": { 48 | "description": "Indicates whether or not provides non-IP (ethernet session and forwarding support) session support of communication devices", 49 | "type": "string" 50 | }, 51 | "SessionAndServiceContinuity": { 52 | "description": "Indicates which session and service continuity mode is needed", 53 | "type": "string" 54 | } 55 | }, 56 | "required": [] 57 | } 58 | -------------------------------------------------------------------------------- /tosca/5G.yml: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | 3 | imports: 4 | # would normally refer to external repository but for now make it local 5 | - file: tosca/sid.yml 6 | # The content is a TOSCA encoding of selected SID information model entities as explained in IG1176 7 | namespace_prefix: sid 8 | # The 5G GST datatypes can be imported here but are not yet used 9 | # - file: 5G_datatypes.yml 10 | 11 | data_types: 12 | sliceQoSType: 13 | derived_from: string 14 | constraints: 15 | - equal: [embb,urllc,mmtc] 16 | 17 | capability_types: 18 | # define the different capabilities a slice may have. This has the same function as sliceQoSType but allows use of the caps/reqs feature and including of descriptions. 19 | sliceType: 20 | description: >- 21 | The slice type name given to some mix of speed, latency etc. 22 | derived_from: tosca.capabilities.Root 23 | 24 | sliceType_embb: 25 | description: enhanced Mobile Broadband (eMBB) provides higher speeds for applications such as web browsing, streaming and video conferencing 26 | derived_from: sliceType 27 | 28 | sliceType_urllc: 29 | description: Ultra-reliable and Low-latency communications (URLLC) enables mission-critical applications, industrial automation, new medical applications, and autonomous driving that require very short network traversal time; and 30 | derived_from: sliceType 31 | 32 | sliceType_mmtc: 33 | description: massive Machine Type Communications (mMTC) extends LTE (Long Term Evolution) IoT (Internet of Things) capabilities to support a huge number of devices with enhanced coverage and long battery life. 34 | derived_from: sliceType 35 | 36 | interface_types: 37 | 5G_slice_management: 38 | description: This interface is used to control the resources allocated to a slice 39 | operations: 40 | change_resource_allocation: 41 | description: example placeholder for a function which changes assigned resources of a slice in response to some set of input values 42 | # TOSCA only contains functions for string concatenation and tokenization; it has not arithmetic functions and so it is not possible 43 | # to define an expression on a count of affected connection to set value of resource_size 44 | # The simple way is just to call some named executable like this 45 | implementation: executable_which_changes_resource.sh 46 | inputs: 47 | affected_connections_list: 48 | type: list 49 | description: A list of zero one or more CS_CSMS_connection identified by the value of their wireless_connection_id which we know is defined as an integer 50 | required: true 51 | default: null 52 | entry_schema: 53 | type: integer 54 | 55 | node_types: 56 | 5G_slice: 57 | description: An abstract class for a network capable of supporting multiple point to point connection at a given qos 58 | derived_from: sid:nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource 59 | properties: 60 | sliceQoSType: 61 | type: string 62 | required: false 63 | resource_size: 64 | type: integer 65 | default: 1 66 | interfaces: 67 | 5G_slice_management_interface: 68 | type: 5G_slice_management 69 | 70 | 5G_embb_slice: 71 | description: A concrete class for a slice for enhanced Mobile Broadband 72 | derived_from: 5G_slice 73 | properties: 74 | sliceQoSType: 75 | constraints: 76 | - equal: embb 77 | # Add here any extra properties to reflect the content of GST, here is an example 78 | resource_size: 79 | type: integer 80 | default: 10 81 | capabilities: 82 | SliceType: sliceType_embb -------------------------------------------------------------------------------- /tosca/mec_hosting_set_up.yml: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | description: A TOSCA template to prepare for a later deployment of a specific app on a mec 3 | 4 | metadata: 5 | # The following fields are "normative" and expected in TOSCA 6 | template_name: generic_app 7 | template_author: paul.m.jordan@bt.com 8 | template_version: '1.0' 9 | # look for syntax error with the command below 10 | parse_command: puccini-tosca --quirk data_types.timestamp.permissive parse "tosca/mec_hosting_set_up.yml" -n tosca/mec_hosting_set_up_inputs.yml 11 | 12 | imports: 13 | # would normally refer to external repository but for now make it local 14 | - file: tosca/sid.yml 15 | # The content is a TOSCA encoding of selected SID information model entities as explained in IG1176 plus some small updates 16 | namespace_prefix: sid 17 | 18 | node_types: 19 | hosted_app_type: 20 | derived_from: tosca.nodes.SoftwareComponent 21 | properties: 22 | metricDefinition_for_availability: 23 | type: sid:MetricDefinition 24 | description: The Service Level Objective for instances of this class. Modelled in TOSCA using a datatype derived from SID. 25 | required: false 26 | interfaces: 27 | Standard: 28 | operations: 29 | create: 30 | inputs: 31 | app_defn: 32 | type: json 33 | 34 | topology_template: 35 | inputs: 36 | app_defn: 37 | type: json 38 | constraints: 39 | - schema: { 40 | "$schema": "http://json-schema.org/draft-04/schema#", 41 | "title": "app data", 42 | "description": "An app for possible deployment to a MEC", 43 | "type": "object", 44 | "properties": { 45 | "app_image_repo": { 46 | "description": "URL of the repository which holds the deployment image", 47 | "type": "string" 48 | }, 49 | "app_image_file": { 50 | "description": "path on the repo of the deployment image", 51 | "type": "string" 52 | }, 53 | "app_state_data": { 54 | "description": "URL, where to get any state data", 55 | "type": "string" 56 | }, 57 | "app_public_url": { 58 | "description": "The url the public use to get to the app", 59 | "type": "string" 60 | } 61 | }, 62 | "required": ["app_image_repo","app_image_file", "app_state_data", "app_public_url"] 63 | } 64 | 65 | node_templates: 66 | myApp: 67 | type: hosted_app_type #tosca.nodes.SoftwareComponent 68 | properties: 69 | metricDefinition_for_availability: 70 | name: 71 | "availability" 72 | description: 73 | "The MetricDefinition used to define the availability of this connection" 74 | _metricDefMeasure: 75 | # A map of metricDefMeasures associated with this metricDefinition 76 | measure1: 77 | unitOfMeasure: 78 | # so we measure in 1/100 000 ths 79 | amount: 0.00001 80 | # availability is a ratio and so has no units. User interface may choose to display it as a percentage 81 | units: None 82 | valueType: float 83 | _metricDefinitionThresholdSet: 84 | threshold_set1: 85 | thresholdType: LogicDefinition 86 | _metricDefMeasureThresholdRule: 87 | # the above which comes from the node definition points to a superclass but for this instance we want to use a child of that superclass ie MetricThresholdRuleDefinition the child of MetricDefMeasureThresholdRule 88 | rule1: 89 | conformanceTargetLower: 0.99999 90 | conformanceComparatorLower: LE 91 | interfaces: 92 | Standard: 93 | operations: 94 | create: 95 | implementation: create_enablement_tosca.py # orchestrator will need to pass inputs as arguments 96 | inputs: 97 | app_defn: { get_input: [ SELF, app_defn ] } -------------------------------------------------------------------------------- /tosca/5G_datatypes.yml: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | data_types: 3 | # There are four approaches to import the JSON schemas for GST into TOSCA. Approach 3 is recommended 4 | 5 | # Approach 1 is to convert the JSON schema into YAML (which can be done by a utility filter e.g. https://jsonformatter.org/json-to-yaml) 6 | # and then process the result to be TOSCA 7 | # This exposes the properties within each GST group so that they can be used in the TOSCA template 8 | # but any JSON definition of mandatory parameters is lost unless handled manually 9 | # Here is an example 10 | 11 | # Delete the line "$schema": "http://json-schema.org/draft-07/schema#" 12 | # delete title string and make title value the name of the data type adding a colon 13 | # title: "1-WHO" 14 | 1-WHO: 15 | # retain description from JSON to YAML conversion and indent it 16 | description: "1-WHO" 17 | #delete the object type line 18 | #type: object 19 | properties: 20 | # indent and remove quotes from properties 21 | #"CustomerName/Reference": 22 | CustomerName/Reference: 23 | # retain description 24 | description: "Customer name or reference" 25 | # retain type assuming it is string, boolean which are the only types currently used (others may be possible) 26 | type: string 27 | # convert any format clause to a TOSCA constraint element 28 | # Currently there is only one format used in the schema. Translation would be better if the JSON schema was re-defined to be type dateYAML timestamp 29 | # convert any enum clause to a TOSCA valid_values constraint element 30 | # JSON and the converted YAML has a 'required' field in the data type definition of the group then add required: true to each indicated property 31 | 32 | # Approach 2 is to refer use the TOSCA schema keyword to signal to the orchestrator that the data value can be validated at run time using the referenced schema 33 | # This is OK of the TOSCA template does not need to get the value of any property inside the GST group. 34 | # Here is an example 35 | 36 | 2-WHAT: 37 | description: "2-WHAT" 38 | derived_from: string 39 | constraints: 40 | # The first schema keyword is TOSCA, the string within the braces is JSON and includes a schema keyword so that we can refer to a URI rather than copying the JSON in line 41 | # The orchestrator must be aware that when a schema value is enclosed by braces then it must be interpreted as JSON as there is no way of signalling this in the TOSCA 42 | - schema: { "$schema": "https://raw.githubusercontent.com/5g-ridersonthestorm/gsma-gst/master/gst/json-schema/2-what.json#" } 43 | 44 | # Approach 3 is to use a JSON pointer in the TOSCA constraint schema clause to target the particular part of the JSON schema relevant to the TOSCA datatype 45 | # The orchestrator would need to support JSON pointers to perform validation 46 | # as would any TOSCA based data entry form 47 | # Here is an example (shown for Area, the only constrained parameter in 3-WHERE) 48 | 49 | 3-WHERE: 50 | description: 3-WHERE 51 | properties: 52 | LocationScope: 53 | description: Scope of location 54 | type: string 55 | Location: 56 | description: Location name 57 | type: string 58 | Area: 59 | description: Polygon of coordinates representing the area 60 | type: string 61 | constraints: 62 | - schema: { "$schema": "https://raw.githubusercontent.com/5g-ridersonthestorm/gsma-gst/master/gst/json-schema/3-where.json#/properties/Area" } 63 | AreaSize(SqKm): 64 | description: Needs to be calculated by some means, e.g. user creates a polygon on the UI to derive result, enter a set of region/city/suburb names/postcodes and leverage GIS to derive result, etc. 65 | type: string 66 | ConnectionDensity(Ue/SqKm): 67 | description: Should be validated against max, and disallowed if too high. 68 | type: string 69 | AvailableCellularFrequencyBands: 70 | description: This is informational. If customer selects a given area, this would scope the frequency bands that are relevant in that area. This can be used as a feed-forward filter for device selection, i.e. only show devices that support frequency bands supported in a given area. 71 | type: string 72 | 73 | 74 | # Approach 4 is to modify the content of gst/json-schema so that each row of the GST has its own JSON schema and then use approach 1 or 2 on that. 75 | # The GST JSON schema could still also have schemas for the groups as well 76 | # No example is shown as this is more work, requires changes outside TOSCA and has no advantage over approach 3. 77 | -------------------------------------------------------------------------------- /tosca/templates/mec_hosting_enablement.j2: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | description: A TOSCA template to deploy the app for {{ app_public_url }} on a MEC identified by its IP address supplied as an input and direct requests to it 3 | 4 | metadata: 5 | # The following fields are "normative" and expected in TOSCA 6 | template_name: generic_app 7 | template_author: paul.m.jordan@bt.com 8 | template_version: '1.0' 9 | # look for syntax error with the command below 10 | parse_command: puccini-tosca parse "tosca/mec_hosting_enablementwheresmychargepoint.com.yml" -i targetComputeAdminAddress="10.10.10.10" -i public_app_address="1.1.1.1"> out.yml 11 | 12 | repositories: 13 | 14 | deployment_repo: 15 | url: {{ app_image_repo }} # This will have been populated from a jinja2 field 16 | credential: 17 | user: username 18 | token: token123 19 | keys: 20 | cert: cloudrepo.pem 21 | 22 | capability_types: 23 | MECManager: 24 | derived_from: tosca.capabilities.Node 25 | valid_source_types: [ smf_type ] 26 | 27 | interface_types: 28 | smf_management: 29 | derived_from: tosca.interfaces.Root 30 | operations: 31 | redirect: 32 | inputs: 33 | app_url: 34 | type: string 35 | public_app_address: 36 | type: string 37 | 38 | node_types: 39 | hosted_app_type: 40 | derived_from: tosca.nodes.SoftwareComponent 41 | requirements: 42 | - host: 43 | occurrences: [ 1, UNBOUNDED ] 44 | interfaces: 45 | Standard: 46 | operations: 47 | create: 48 | inputs: 49 | deployment_file: 50 | type: string 51 | configure: 52 | inputs: 53 | sync_data: 54 | type: string 55 | 56 | mec_type: 57 | derived_from: tosca.nodes.Compute 58 | requirements: 59 | - controlling_smf: 60 | capability: MECManager 61 | node: smf_type 62 | relationship: DependsOn 63 | 64 | smf_type: 65 | derived_from: tosca.nodes.Root 66 | capabilities: 67 | manage_mecs: 68 | type: MECManager 69 | occurrences: [ 0, UNBOUNDED ] 70 | interfaces: 71 | smf_management: 72 | type: smf_management 73 | 74 | topology_template: 75 | inputs: 76 | targetComputeAdminAddress: 77 | type: string 78 | public_app_address: 79 | type: string 80 | 81 | node_templates: 82 | myApp: 83 | # as this is a classic VNF we have a choice of how to model it. Could be based on TOSCA node types, SID software entities or ETSI VNFs. Depends on what is easiest for the orchestrator vendor. 84 | # We have therefore chosen TOSCA native but the downside is that the create artefact URL and the URL of the repository on which it is store both need to be passed in as inputs but TOSCA does not allow these to be paramterized. 85 | # The work around is to move these parts to an external file so that only one line in this generic template needs to be edited. 86 | type: hosted_app_type #tosca.nodes.SoftwareComponent 87 | interfaces: 88 | Standard: 89 | operations: 90 | create: 91 | implementation: http://csp.com/hosted_app/scripts/create.sh # create.sh code says get the create artifact and process that 92 | inputs: 93 | deployment_file: { get_artifact: [ SELF, mydeployment_file ] } 94 | configure: 95 | implementation: scripts/configure.sh 96 | inputs: 97 | sync_data: { get_artifact: [ SELF, data ] } 98 | requirements: 99 | # SoftwareComponent requires hosting on Compute by definition but supplement that requirement for an abstract node 100 | - host: 101 | node: myapp_compute 102 | 103 | artifacts: 104 | mydeployment_file: 105 | description: The actual install file for this app 106 | repository: deployment_repo 107 | file: {{ app_image_file }} # This will have been populated from a jinja2 field 108 | 109 | data: {{ app_state_data }} # This will have been populated from a jinja2 field 110 | 111 | # Abstract node template (placeholder) to be selected by provider 112 | myapp_compute: 113 | type : mec_type 114 | directives: [ select ] 115 | # This node_filter ensures that the mecs picked by the orchestrator for hosting the app are ones in the list of required addresses used to ID the MECs 116 | node_filter: 117 | capabilities: 118 | - host: 119 | properties: 120 | private_address: 121 | - in_range: {get_input: [ targetComputeAdminAddress ] } 122 | 123 | mecs_controlling_smf: 124 | type: smf_type 125 | directives: [ select ] 126 | interfaces: 127 | smf_management: 128 | operations: 129 | redirect: 130 | inputs: 131 | app_url: {{ app_public_url }} # This will have been populated from a jinja2 field 132 | # assume new address is public address of the mec but may have to be an input if a load balancer is used thus 133 | # new_address: { get_attribute: [ myapp_compute, public_address ] } 134 | # else just get it as an input 135 | public_app_address: { get_input: public_app_address } 136 | 137 | workflows: 138 | deploy: 139 | inputs: 140 | app_url: 141 | type: string 142 | steps: 143 | install: 144 | target: myApp 145 | activities: 146 | - set_state: creating 147 | - call_operation: Standard.create 148 | - set_state: created 149 | on_success: 150 | - sync 151 | sync: 152 | target: myApp 153 | activities: 154 | - set_state: configuring 155 | - call_operation: Standard.configure 156 | - set_state: configured 157 | on_success: 158 | - redirect 159 | redirect: 160 | target: mecs_controlling_smf 161 | activities: 162 | - set_state: starting 163 | - call_operation: smf_management.redirect 164 | - set_state: started -------------------------------------------------------------------------------- /tosca/mec_hosting_enablementwheresmychargepoint.com.yml: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | description: A TOSCA template to deploy the app for wheresmychargepoint.com on a MEC identified by its IP address supplied as an input and direct requests to it 3 | 4 | metadata: 5 | # The following fields are "normative" and expected in TOSCA 6 | template_name: generic_app 7 | template_author: paul.m.jordan@bt.com 8 | template_version: '1.0' 9 | # look for syntax error with the command below 10 | parse_command: puccini-tosca parse "tosca/mec_hosting_enablementwheresmychargepoint.com.yml" -i targetComputeAdminAddress="10.10.10.10" -i public_app_address="1.1.1.1"> out.yml 11 | 12 | repositories: 13 | 14 | deployment_repo: 15 | url: http://cloudrepo.com:8080 # This will have been populated from a jinja2 field 16 | credential: 17 | user: username 18 | token: token123 19 | keys: 20 | cert: cloudrepo.pem 21 | 22 | capability_types: 23 | MECManager: 24 | derived_from: tosca.capabilities.Node 25 | valid_source_types: [ smf_type ] 26 | 27 | interface_types: 28 | smf_management: 29 | derived_from: tosca.interfaces.Root 30 | operations: 31 | redirect: 32 | inputs: 33 | app_url: 34 | type: string 35 | public_app_address: 36 | type: string 37 | 38 | node_types: 39 | hosted_app_type: 40 | derived_from: tosca.nodes.SoftwareComponent 41 | requirements: 42 | - host: 43 | occurrences: [ 1, UNBOUNDED ] 44 | interfaces: 45 | Standard: 46 | operations: 47 | create: 48 | inputs: 49 | deployment_file: 50 | type: string 51 | configure: 52 | inputs: 53 | sync_data: 54 | type: string 55 | 56 | mec_type: 57 | derived_from: tosca.nodes.Compute 58 | requirements: 59 | - controlling_smf: 60 | capability: MECManager 61 | node: smf_type 62 | relationship: DependsOn 63 | 64 | smf_type: 65 | derived_from: tosca.nodes.Root 66 | capabilities: 67 | manage_mecs: 68 | type: MECManager 69 | occurrences: [ 0, UNBOUNDED ] 70 | interfaces: 71 | smf_management: 72 | type: smf_management 73 | 74 | topology_template: 75 | inputs: 76 | targetComputeAdminAddress: 77 | type: string 78 | public_app_address: 79 | type: string 80 | 81 | node_templates: 82 | myApp: 83 | # as this is a classic VNF we have a choice of how to model it. Could be based on TOSCA node types, SID software entities or ETSI VNFs. Depends on what is easiest for the orchestrator vendor. 84 | # We have therefore chosen TOSCA native but the downside is that the create artefact URL and the URL of the repository on which it is store both need to be passed in as inputs but TOSCA does not allow these to be paramterized. 85 | # The work around is to move these parts to an external file so that only one line in this generic template needs to be edited. 86 | type: hosted_app_type #tosca.nodes.SoftwareComponent 87 | interfaces: 88 | Standard: 89 | operations: 90 | create: 91 | implementation: http://csp.com/hosted_app/scripts/create.sh # create.sh code says get the create artifact and process that 92 | inputs: 93 | deployment_file: { get_artifact: [ SELF, mydeployment_file ] } 94 | configure: 95 | implementation: scripts/configure.sh 96 | inputs: 97 | sync_data: { get_artifact: [ SELF, data ] } 98 | requirements: 99 | # SoftwareComponent requires hosting on Compute by definition but supplement that requirement for an abstract node 100 | - host: 101 | node: myapp_compute 102 | 103 | artifacts: 104 | mydeployment_file: 105 | description: The actual install file for this app 106 | repository: deployment_repo 107 | file: /files/wheresmychargepoint.iso # This will have been populated from a jinja2 field 108 | 109 | data: data_url.com # This will have been populated from a jinja2 field 110 | 111 | # Abstract node template (placeholder) to be selected by provider 112 | myapp_compute: 113 | type : mec_type 114 | directives: [ select ] 115 | # This node_filter ensures that the mecs picked by the orchestrator for hosting the app are ones in the list of required addresses used to ID the MECs 116 | node_filter: 117 | capabilities: 118 | - host: 119 | properties: 120 | private_address: 121 | - in_range: {get_input: [ targetComputeAdminAddress ] } 122 | 123 | mecs_controlling_smf: 124 | type: smf_type 125 | directives: [ select ] 126 | interfaces: 127 | smf_management: 128 | operations: 129 | redirect: 130 | inputs: 131 | app_url: wheresmychargepoint.com # This will have been populated from a jinja2 field 132 | # assume new address is public address of the mec but may have to be an input if a load balancer is used thus 133 | # new_address: { get_attribute: [ myapp_compute, public_address ] } 134 | # else just get it as an input 135 | public_app_address: { get_input: public_app_address } 136 | 137 | workflows: 138 | deploy: 139 | inputs: 140 | app_url: 141 | type: string 142 | steps: 143 | install: 144 | target: myApp 145 | activities: 146 | - set_state: creating 147 | - call_operation: Standard.create 148 | - set_state: created 149 | on_success: 150 | - sync 151 | sync: 152 | target: myApp 153 | activities: 154 | - set_state: configuring 155 | - call_operation: Standard.configure 156 | - set_state: configured 157 | on_success: 158 | - redirect 159 | redirect: 160 | target: mecs_controlling_smf 161 | activities: 162 | - set_state: starting 163 | - call_operation: smf_management.redirect 164 | - set_state: started -------------------------------------------------------------------------------- /tosca/5G Service Assure.yml: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | description: A TOSCA template to implement the a service which includes a 5G backup to a fixed connection. The first use is a connection between an EV Charging Station and a Charging Station Management System as part of 5G Riders on the Storm 2020 Catalyst for TMForum 3 | 4 | metadata: 5 | # The following fields are "normative" and expected in TOSCA 6 | template_name: 5G Service Assure 7 | template_author: paul.m.jordan@bt.com 8 | template_version: '5.0' 9 | parse_command: puccini-tosca --quirk data_types.timestamp.permissive parse "tosca/5G Service Assure.yml" > out.txt 10 | # the quirk in the above command tells puccini to allow timestamps in yaml format as used by sid.yml 11 | 12 | imports: 13 | # would normally refer to external repository but for now make it local 14 | - file: tosca/sid.yml 15 | # The content is a TOSCA encoding of selected SID information model entities as explained in IG1176 plus some small updates 16 | namespace_prefix: sid 17 | - file: tosca/5G.yml 18 | namespace_prefix: 5G 19 | 20 | # This file is built on the following assumptions: 21 | # A wireless connection is created by the 5G network in the admin down state and changed by the network to admin up when a connection request is made by a SIM. 22 | # i.e. standard behavior which does not need to modelled in this TOSCA template 23 | # The change over from fixed connection to a wireless connection is under control of the charging station. 24 | # One slice is used for all wireless connections 25 | # The slice will be allocated additional resources by the CSP in anticipation of a storm or other at-risk event 26 | # The additional resources are provided only for some sub-set of the charging stations 27 | # The sub-set of affected charging stations may change over time 28 | 29 | # Define Node Types 30 | node_types: 31 | 5G_assure_connection: 32 | description: assured connection using combination of fixed and wireless 33 | derived_from: sid:nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ResourceFunction 34 | properties: 35 | metricDefinition_for_availability: 36 | type: sid:MetricDefinition 37 | description: The Service Level Objective for instances of this class. Modelled in TOSCA using a datatype derived from SID. 38 | required: false 39 | 40 | capabilities: 41 | # There are always two external, user plane, interfaces 42 | a_end: Endpoint 43 | z-end: Endpoint 44 | 45 | fixed_connection: 46 | description: connection between two endpoints over a fixed connection 47 | derived_from: sid:nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ResourceFunction 48 | capabilities: 49 | # There are always user plane interfaces 50 | a_end: Endpoint 51 | z-end: Endpoint 52 | 53 | wireless_connection: 54 | description: connection between two endpoints over a wireless connection 55 | derived_from: sid:nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ResourceFunction 56 | attributes: 57 | # We need these connections to have a unique ID, assume that it is auto-generated on creation 58 | wireless_connection_id: 59 | type: integer 60 | requirements: 61 | # state the resources needed to make the connection over a slice. A slice will need to be created if it doesn't exist 62 | - slice: 63 | # we only want to specify node type but syntax demands capability as well 64 | capability: 5G:sliceType 65 | node: 5G:5G_slice 66 | relationship: DependsOn 67 | capabilities: 68 | # There are always two user plane interfaces 69 | a_end: Endpoint 70 | z-end: Endpoint 71 | 72 | policy_types: 73 | tosca.policies.Placement.Colocate: 74 | # This type is used in TOSCA spec examples but not defined. Using string type is imprecise. 75 | derived_from: tosca.policies.Placement 76 | properties: 77 | affinity: 78 | type: string 79 | targets: 80 | - 5G:5G_slice 81 | 82 | topology_template: 83 | node_templates: 84 | my_assured_connection: 85 | type: 5G_assure_connection 86 | # Every CS-CSMS connection requires an instance of a fixed connection and a wireless connection 87 | properties: 88 | metricDefinition_for_availability: 89 | name: 90 | "availability" 91 | description: 92 | "The MetricDefinition used to define the availability of this connection" 93 | _metricDefMeasure: 94 | # A map of metricDefMeasures associated with this metricDefinition 95 | measure1: 96 | unitOfMeasure: 97 | # so we measure in 1/100 000 ths 98 | amount: 0.00001 99 | # availability is a ratio and so has no units. User interface may choose to display it as a percentage 100 | units: None 101 | valueType: float 102 | _metricDefinitionThresholdSet: 103 | threshold_set1: 104 | thresholdType: LogicDefinition 105 | _metricDefMeasureThresholdRule: 106 | # the above which comes from the node definition points to a superclass but for this instance we want to use a child of that superclass ie MetricThresholdRuleDefinition the child of MetricDefMeasureThresholdRule 107 | rule1: 108 | conformanceTargetLower: 0.9999 109 | conformanceComparatorLower: LE 110 | requirements: 111 | - dependency: fixed_connection 112 | # could add additional node_filter to ensure the endpoints or other properties of the fixed connection match those of my_CS_CSMS_connection 113 | - dependency: wireless_connection 114 | # could add additional node_filter to ensure the endpoints or other properties of the wireless connection match those of my_CS_CSMS_connection 115 | 116 | my_fixed_connection: 117 | type: fixed_connection 118 | 119 | my_wireless_connection: 120 | type: wireless_connection 121 | requirements: 122 | - slice: slice_for_5G_assure 123 | # the commented out syntax is uses the target node_filter method; instead we use the abstract node template method in cs_csms_slice, either would be possible 124 | # node_filter: 125 | # properties: 126 | # sliceQoSType: 127 | # - { equal: embb } 128 | 129 | slice_for_5G_assure: 130 | type: 5G:5G_embb_slice 131 | interfaces: 132 | 5G_slice_management_interface: 133 | operations: 134 | change_resource_allocation: 135 | # It should be possible to define implementation in the interface type definition but puccini does not seem to pick it up so repeat it here 136 | implementation: executable_which_changes_resource.sh 137 | inputs: 138 | affected_connections_list: { get_input: [ SELF, affected_connections_list ] } 139 | # this uses the abstract node template method 140 | # Abstract node template (placeholder) to be selected by provider 141 | directives: [ select ] 142 | 143 | policies: 144 | - wireless_connection_affinity: 145 | type: tosca.policies.Placement.Colocate 146 | description: Keep all instances of my_wireless_connection on a single instance of slice_for_5G_assure 147 | properties: 148 | affinity: slice_for_5G_assure 149 | -------------------------------------------------------------------------------- /tosca/doc.yml: -------------------------------------------------------------------------------- 1 | description: A TOSCA template to implement the connectivity service required between 2 | an EV Charging Station and a Charging Station Management System as part of 5G Ride On! 2020 Catalyst for TMForum 3 | nodeTemplates: 4 | cs_csms_slice: 5 | description: "" 6 | types: 7 | 5G_embb_slice: 8 | description: A concrete class for a slice for enhanced Mobile Broadband 9 | parent: 5G_slice 10 | 5G_slice: 11 | description: An abstract class for a network capable of supporting multiple 12 | point to point connection at a given qos 13 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource 14 | nodes.org.tmforum.models.sidmodels: 15 | metadata: 16 | sid_release: "19.0" 17 | nodes.org.tmforum.models.sidmodels.ResourceDomain: 18 | metadata: 19 | sid_release: "19.0" 20 | parent: nodes.org.tmforum.models.sidmodels 21 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE: 22 | metadata: 23 | sid_release: "19.0" 24 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain 25 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE: 26 | metadata: 27 | sid_release: "19.0" 28 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE 29 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource: 30 | metadata: 31 | sid_release: "19.0" 32 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE 33 | properties: 34 | resource_size: 35 | $value: 10 36 | $type: integer 37 | attributes: 38 | status: 39 | $description: |- 40 | This is an enumerated integer whose value indicates the current status of the object. The following values are defined: 0: Unknown 1: OK 2: Initializing 3: Starting 4: Paused 5: Stopping 6: Stopped 7: Degraded 8: Stressed 9: Predicted Failure 10: Error - General 11: Error - Non Recoverable 12: Not Installed or Not Present 13: In Maintenance 14: Unable To Contact 15: Lost Communications 41 | Stopped indicates that the CompoundResource is known to still exist, but it is no longer operational. However, it has not failed. 42 | Stressed indicates that the LogicalResource is functioning, but needs attention (e.g., it may be overheating, or overloaded in some way). This is similar to Predicted Failure, which indicates that this CompoundResource is functioning properly, but is predicting a failure in the near future. 43 | In Maintenance indicates that this LogicalResource is being configured, maintained, or otherwise administered and is NOT available for service 44 | $value: null 45 | $type: integer 46 | capabilities: 47 | SliceType: 48 | description: "" 49 | types: 50 | sliceType: 51 | description: 'The slice type name given to some mix of speed, latency 52 | etc. ' 53 | parent: tosca::Root 54 | sliceType_embb: 55 | description: enhanced Mobile Broadband (eMBB) provides higher speeds for 56 | applications such as web browsing, streaming and video conferencing 57 | parent: sliceType 58 | tosca::Root: 59 | description: This is the default (root) TOSCA Capability Type definition 60 | that all other TOSCA Capability Types derive from. 61 | metadata: 62 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 63 | citation_location: 5.5.1 64 | normative: "true" 65 | properties: {} 66 | attributes: {} 67 | minRelationshipCount: 0 68 | maxRelationshipCount: -1 69 | interfaces: 70 | 5G_slice_management_interface: 71 | description: This interface is used to control the resources allocated to 72 | a slice 73 | types: 74 | 5G_slice_management: 75 | description: This interface is used to control the resources allocated 76 | to a slice 77 | operations: 78 | change_resource_allocation: 79 | description: example placeholder for a function which changes assigned 80 | resources of a slice in response to some set of input values 81 | implementation: executable_which_changes_resource.sh 82 | inputs: 83 | affected_connections_list: 84 | $description: A list of zero one or more CS_CSMS_connection identified 85 | by the value of their wireless_connection_id which we know is defined 86 | as an integer 87 | Standard: 88 | description: This is an enumerated integer whose value indicates the current 89 | status of the object 90 | types: 91 | org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource.status: 92 | description: This is an enumerated integer whose value indicates the current 93 | status of the object 94 | metadata: 95 | sid_release: "19.0" 96 | source: org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource.status 97 | inputs: {} 98 | operations: 99 | create: 100 | description: '13: In Maintenance' 101 | delete: 102 | description: '12: Not Installed or Not Present' 103 | set_Lost_Communications: 104 | description: '15: Lost Communications' 105 | set_degraded: 106 | description: '7: Degraded' 107 | set_error_general: 108 | description: '10: Error - General' 109 | set_error_non_recoverable: 110 | description: '11: Error - Non Recoverable' 111 | set_initializing: 112 | description: '2: Initializing' 113 | set_paused: 114 | description: '4: Paused' 115 | set_predicted_failure: 116 | description: '9: Predicted Failure' 117 | set_starting: 118 | description: '3: Starting' 119 | set_stopping: 120 | description: '5: Stopping' 121 | set_stressed: 122 | description: '8: Stressed' 123 | set_unable_to_contact: 124 | description: '14: Unable To Contact' 125 | set_unknown: 126 | description: '0: Unknown' 127 | start: 128 | description: '1: OK' 129 | stop: 130 | description: '6: Stopped' 131 | my_CS_CSMS_connection: 132 | types: 133 | CS_CSMS_connection: 134 | description: assured connection using combination of fixed and wireless 135 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ResourceFunction 136 | nodes.org.tmforum.models.sidmodels: 137 | metadata: 138 | sid_release: "19.0" 139 | nodes.org.tmforum.models.sidmodels.ResourceDomain: 140 | metadata: 141 | sid_release: "19.0" 142 | parent: nodes.org.tmforum.models.sidmodels 143 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE: 144 | metadata: 145 | sid_release: "19.0" 146 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain 147 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE: 148 | metadata: 149 | sid_release: "19.0" 150 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE 151 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ResourceFunction: 152 | metadata: 153 | sid_release: "19.0" 154 | parent: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE 155 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gsma-gst 2 | Work on GSMA GSTs 3 | 4 | The Generic Network Slice Template (GST) is a set of attributes that can characterise a type of network slice/service. GST is generic and is not tied to any specific network deployment. 5 | The NEtwork Slice Type (NEST) is a GST filled with values. The values are assigned to express a given set of requirements to support a network slice customer use case. The NEST is an input to the network slice preparation performed by the Network Slice Provider (NSP). 6 | 7 | 8 | Generic Network Slice Template 9 | Version 3.0 10 | 22 May 2020 11 | https://www.gsma.com/newsroom/wp-content/uploads//NG.116-v3.0.pdf 12 | 13 | 14 | | Term | Description | 15 | |-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 16 | | Network Slice | A logical network that provides specific network capabilities and network characteristics | 17 | | Network Slice Instance | A set of Network Function instances and the required resources (e.g. compute, storage and networking resources) which form a deployed Network Slice as defined in section 3.1 of | 18 | | Network Slice Subnet | A representation of the management aspects of a set of Managed Functions and the required resources (e.g. compute, storage and networking resources) | 19 | | Network Slice Subnet Instance | An instance of Network Slice Subnet representing the management aspects of a set of Managed Function instances and the used resources (e.g. compute, storage and networking resources) | 20 | | Service Continuity | The uninterrupted user experience of a service, including the cases of IP address and/or anchoring point change | 21 |

22 | 23 | This repository contains 24 | 25 | # Organization of this repository 26 | 27 | * gst: contains the generic slice template (template only, no slice details) 28 | * s-nest: contains examples of the Standardized NESTs per industry vertical 29 | * p-nest: contains examples of the Private NESTs per operator/vendor. 30 | 31 | This is the tree structure of the repository: 32 | 33 | ``` 34 | Folder PATH listing for volume DATA 35 | Volume serial number is 0003-6809 36 | D:. 37 | | gsma-gst.iml 38 | | LICENSE 39 | | README.md 40 | | SliceTemplateBlueprint.xlsm 41 | | 42 | +---gst 43 | | | generic-slice-template.xlsx 44 | | | 45 | | \---json-schema 46 | | 1-who.json 47 | | 2-what.json 48 | | 3-where.json 49 | | 4-when.json 50 | | 5-traffic-profile.json 51 | | 6-device-profile.json 52 | | 7-common-properties.json 53 | | 8-data-access-profile.json 54 | | 9-mobility-profile.json 55 | | 10-v-2-x-profile.json 56 | | 11-ue-positioning-profile.json 57 | | 12-deterministic-comms-profile.json 58 | | 13-mission-critical-profile.json 59 | | 14-commercial-profile.json 60 | | 15-operational-profile.json 61 | | 16-third-party-network-and-application-functions.json 62 | | 63 | +---p-nest 64 | | example-p-nest.yaml 65 | | 66 | \---s-nest 67 | | readme.txt 68 | | 69 | \---collect-wearable-sensor-data 70 | +---example 71 | | commercial-profile.json 72 | | common-properties.json 73 | | data-access-profile.json 74 | | deterministic-comms-profile.json 75 | | device-profile.json 76 | | mission-critical-profile.json 77 | | mobility-profile.json 78 | | operational-profile.json 79 | | third-party-network-and-application-functions.json 80 | | traffic-profile.json 81 | | ue-positioning-profile.json 82 | | v-2-x-profile.json 83 | | what.json 84 | | when.json 85 | | where.json 86 | | who.json 87 | | 88 | \---schema 89 | commercial-profile.json 90 | common-properties.json 91 | data-access-profile.json 92 | deterministic-comms-profile.json 93 | device-profile.json 94 | mission-critical-profile.json 95 | mobility-profile.json 96 | operational-profile.json 97 | third-party-network-and-application-functions.json 98 | traffic-profile.json 99 | ue-positioning-profile.json 100 | v-2-x-profile.json 101 | what.json 102 | when.json 103 | where.json 104 | who.json 105 | 106 | 107 | ``` 108 | 109 | ## Developing Templates 110 | 111 | templates are captured in excel format and then JSON schema and JSON examples are generated 112 | 113 | 114 | ### JSON Schema 115 | JSON Schema describes JSON data. It’s like a database schema for JSON and can be used to validate a JSON instance before it’s sent to an API. 116 | 117 | Here is an example schema for a part of generic slice template 118 | 119 | ```json 120 | { 121 | "$schema": "http://json-schema.org/draft-07/schema#", 122 | "title": "WHAT", 123 | "description": "WHAT", 124 | "type": "object", 125 | "properties": { 126 | "WhatsDrivingTheConnectivityRequirement?": { 127 | "description": "Connectivity requirement in plain text", 128 | "type": "string" 129 | }, 130 | "UseCaseType": { 131 | "description": "Use case, per NGMN", 132 | "type": "string" 133 | }, 134 | "Service/SliceType(Sst)": { 135 | "description": "Service/Slice Type", 136 | "type": "string", 137 | "enum": [ 138 | "eMBB", 139 | "uRLLC", 140 | "mMTC" 141 | ], 142 | "minItems": "1" 143 | }, 144 | "SliceDifferentiator": { 145 | "description": "Slice differentiator ", 146 | "type": "string" 147 | }, 148 | "NumberOfTerminals": { 149 | "description": "Number of terminals or UEs", 150 | "type": "string", 151 | "maxLength": "22" 152 | }, 153 | "NumberOfConnections": { 154 | "description": "Number of connections. If not populated, assumed to be same as number of Ues", 155 | "type": "string" 156 | } 157 | }, 158 | "required": [ 159 | "NumberOfTerminals" 160 | ] 161 | } 162 | ``` 163 | 164 | And here is JSON data that matches that schema. 165 | ```json 166 | { 167 | "WhatsDrivingTheConnectivityRequirement?": "Collect wearable sensor data", 168 | "UseCaseType": "Smart wearables ", 169 | "Service/SliceType(Sst)": "mIOT", 170 | "SliceDifferentiator": "example", 171 | "NumberOfTerminals": "200000", 172 | "NumberOfConnections": "200000" 173 | } 174 | ``` 175 | 176 | 177 | Let’s go through each property in the schema 178 | 179 | _type_ 180 | 181 | The type attribute describes the data type such as string, object or number. You can find the whole list here. Each type has its own set of validation keywords that make up the rest of the schema. We’ll describe two validation keywords below. 182 | 183 | _properties_ 184 | 185 | The properties attribute is validation keyword for JSON objects. This properties object defines each valid property along with an additional level of validation schema. If one of the properties is an object, you can continue to nest that representation as deep as necessary. 186 | 187 | _required_ 188 | 189 | The required attribute is another validation keyword specific to objects. The value of required should be an array of strings, where each string is a key in the properties object. JSON data is not valid against this schema if any of the properties in the required array are missing. 190 | 191 | So using the example above, the following JSON data is valid because the title and body are optional 192 | ```json 193 | { 194 | "NumberOfTerminals": "200000" 195 | } 196 | ``` 197 | And this JSON data is not valid because NumberOfTerminals is required 198 | ```json 199 | { 200 | "Service/SliceType(Sst)": "eMBB", 201 | "SliceDifferentiator": "D143A5" 202 | } 203 | ``` 204 | Once your API consumers have a JSON schema, they can use one of the many JSON Schema libraries to validate their JSON data. 205 | 206 | ### Prerequisites 207 | 208 | 209 | ## Setting up environment 210 | 211 | Here's a brief intro about what a developer must do in order to generate templates 212 | 213 | ``` 214 | git clone https://github.com/5g-ridersonthestorm/gsma-gst.git 215 | cd gsma-gst/ 216 | ``` 217 | 218 | ## Usage 219 | 220 | 221 | ## Contributing 222 | 223 | To contribute to the development of the project you have to fork the repository, commit new code and create pull requests. 224 | 225 | ## Licensing 226 | 227 | This repository is under Apache 2.0 License 228 | 229 | ## Lead Developer 230 | 231 | * [@kweveen](https://github.com/kweveen) Kevin McDonnell 232 | 233 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /tosca/sid.yml: -------------------------------------------------------------------------------- 1 | tosca_definitions_version: tosca_simple_yaml_1_3 2 | 3 | #################### 4 | data_types: 5 | #################### 6 | 7 | ################## 8 | # data types to implement SID base types 9 | #################### 10 | ReportingPeriod: 11 | # TOSCA 1.3 has a more powerful definition; scalar-unit.time 12 | derived_from: string 13 | metadata: 14 | source: org.tmforum.models.sidmodels.CommonBusinessEntitiesDomain.BaseTypesABE.ReportingPeriod 15 | sid_release: '19.0' 16 | constraints: 17 | - valid_values: 18 | - NA: 19 | - R_15MN: 20 | - R_1H: 21 | - R_1MN: 22 | - R_24H: 23 | - R_30MN: 24 | - R_5MN: 25 | 26 | DateTime: 27 | derived_from: timestamp 28 | metadata: 29 | source: org.tmforum.models.sidmodels.CommonBusinessEntitiesDomain.BaseTypesABE.DateTime 30 | sid_release: '19.0' 31 | description: Attach the TOSCA and YAML definition for timestamp to the SID DataTime definition which has no canonical format definition 32 | 33 | Quantity: 34 | derived_from: tosca.datatypes.Root 35 | metadata: 36 | source: org.tmforum.models.sidmodels.CommonBusinessEntitiesDomain.BaseTypesABE.Quantity 37 | sid_release: '19.0' 38 | description: A base / value business entity used to represent measurements 39 | properties: 40 | amount: 41 | description: A quantity of something, typically the total of a thing or things in number, size, value, extent, or money. 42 | type: float 43 | # Was incorrectly shown as in in IG1176 R19.0 44 | units: 45 | description: The unit of measure for the quantity, such as meters, cubic yards, kilograms [ISO 80000], and the currency referring to [ISO 4217] 46 | type: string 47 | 48 | TimePeriod: 49 | derived_from: tosca.datatypes.Root 50 | metadata: 51 | source: org.tmforum.models.sidmodels.CommonBusinessEntitiesDomain.BaseTypesABE.TimePeriod 52 | sid_release: '19.0' 53 | description: A base / value business entity used to represent a period of time, between two timepoints 54 | properties: 55 | startDateTime: 56 | description: An instant of time, starting at the TimePeriod Notes If null, then represents to the beginning of time 57 | # Use of Null in SID is incompatible with the TOSCA definition of TimeStamp which we have adopted as a base data type and so Null cannot be used 58 | type: DateTime 59 | endDateTime: 60 | description: An instant of time, ending at the TimePeriod Notes If null, If null, then represents to the end of time 61 | # Use of Null in SID is incompatible with the TOSCA definition of TimeStamp which we have adopted as a base data type and so Null cannot be used 62 | type: DateTime 63 | 64 | Duration: 65 | # added since IG1176 R19.0 66 | derived_from: Quantity 67 | properties: 68 | units: 69 | constraints: 70 | - valid_values: 71 | - milliseconds 72 | - seconds 73 | - minutes 74 | - hours 75 | - days 76 | - weeks 77 | - months 78 | - years 79 | 80 | 81 | 82 | ################## 83 | # data types to implement SID MetricABE 84 | #################### 85 | 86 | # MetricABE is represented as a data type schema not a node type because the orchestrator is not required to instantiate Metric ABE entities (as it is for resource entities) 87 | # The disadvantages are that 88 | # a) the MetricABE relationships are reduced to a single complex schema so the associations can only be navigated a a single tree. Flattening the associations to create the tree is a decision made when creating sid.yml 89 | # b) one the schema is used as an attribute everything inside it is a TOSCA attribute (and so read only) - may not be true consider how some SID attributes could eb properties and others attributes 90 | # c) None of the values are available until run time. 91 | # TODO How can this be expanded to include thresholds and consequences which can be read at design time? May need TOSCA spec changes to do this cleanly 92 | 93 | MetricThresholdComparator: 94 | # added since IG1176 R19.0 95 | metadata: 96 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinitionMeasureABE.MetricDefinitionMeasureThresholdABE 97 | sid_release: '19.0' 98 | description: List of comparators that can be used to evaluate a value with an other such as equal, greater than, lower than... 99 | derived_from: string 100 | constraints: 101 | - valid_values: 102 | - EQ 103 | - GE 104 | - GT 105 | - LE 106 | - LT 107 | - NEQ 108 | 109 | MetricDefMeasureThresholdRule: 110 | # added since IG1176 R19.0 111 | metadata: 112 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinitionMeasureABE.MetricDefinitionMeasureThresholdABE 113 | sid_release: '19.0' 114 | description: "A MetricDefMeasureThresholdRule is a rule that defines the condition (raise or clear) to achieve to apply consequences when a threshold (MetricDefMeasureThreshold) is crossed or ceased to be crossed. It also defines the severity of the raise or clear of the threshold." 115 | properties: 116 | name: 117 | type: string 118 | description: Name for the MetricDefMeasureThresholdRule . 119 | required: false 120 | description: 121 | type: string 122 | description: Description for the MetricDefMeasureThresholdRule . 123 | required: false 124 | 125 | 126 | 127 | 128 | MetricThresholdType: 129 | # added since IG1176 R19.0 130 | metadata: 131 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinitionMeasureABE 132 | sid_release: '19.0' 133 | description: The Threshold Type may be either 'LogicDefinition' or 'PreDefined'. 134 | derived_from: string 135 | constraints: 136 | - valid_values: 137 | - LogicDefinition 138 | - PreDefined 139 | 140 | MetricDefinitionThresholdSet: 141 | # added since IG1176 R19.0 142 | metadata: 143 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinitionMeasureABE.MetricDefinitionMeasureThresholdABE 144 | sid_release: '19.0' 145 | description: "A MetricDefMeasureThresholdSet provides a way to group a set of one or more MetricDefMeasureThresholdRules specifying the condition to evaluate for applying consequences. 146 | A MetricDefMeasureThresholdSet is used to evaluate one or more MetricDefMesures. 147 | A MetricDefMeasureThresholdSet contains either MetricThresholdRuleDefinition instances or PreDefinedMetricThresholdRule instances." 148 | properties: 149 | ID: 150 | description: A unique identifier for the MetricDefinition 151 | type: string 152 | required: false 153 | name: 154 | description: A word, term, or phrase by which a MetricDefinition is known and distinguished from other MetricDefinitions. 155 | type: string 156 | required: false 157 | description: 158 | type: string 159 | required: false 160 | thresholdType: 161 | type: MetricThresholdType 162 | # SID has a relation to a parent abstract superclass of MetricDefMeasureThresholdRule as below 163 | # _metricDefMeasureThresholdRule: 164 | # metadata: 165 | # association: MetricDefMeasuredThresholdSetContains 166 | # type: map 167 | # entry_schema: MetricDefMeasureThresholdRule 168 | # But TOSCA demands a direct link to the concrete subclasses of MetricThresholdRuleDefinition and PreDefinedMetricThresholdRule 169 | # It is hard to see how this could be converted form SID to YAML algorithmically. Note how the second map is added and renamed 170 | _metricDefMeasureThresholdRule: 171 | metadata: 172 | association: MetricDefMeasuredThresholdSetContains 173 | type: map 174 | entry_schema: MetricThresholdRuleDefinition 175 | required: false 176 | _metricDefMeasureThresholdRule2: 177 | metadata: 178 | association: MetricDefMeasuredThresholdSetContains 179 | type: map 180 | entry_schema: PreDefinedMetricThresholdRule 181 | required: false 182 | 183 | 184 | 185 | MetricValueType: 186 | # added since IG1176 R19.0 187 | metadata: 188 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinitionMeasureABE 189 | sid_release: '19.0' 190 | description: The MetricValueType specifies the different possible type of values such as Int, String... 191 | derived_from: string 192 | constraints: 193 | # SID has an enumeration which is modeled here in TOSCA as a constraint 194 | # SID data type of double has to be mapped to YAML/TOSCA type of float 195 | - valid_values: 196 | - string 197 | - integer 198 | - float 199 | 200 | MetricDefinition: 201 | metadata: 202 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinition 203 | # corrected since IG1176 R19.0 204 | sid_release: '19.0' 205 | description: A set of basic facts that defines, or specifies, what a metric is, such as its name, description, and so forth. 206 | properties: 207 | validFor: 208 | description: The period of time for which the use of the MetricDefinition is applicable 209 | type: TimePeriod 210 | required: false 211 | ID: 212 | description: A unique identifier for the MetricDefinition 213 | type: string 214 | required: false 215 | name: 216 | description: A word, term, or phrase by which a MetricDefinition is known and distinguished from other MetricDefinitions. 217 | type: string 218 | required: false 219 | description: 220 | type: string 221 | required: false 222 | _metricDefMeasure: 223 | # The SID definition for MetricDefinition contains a association to metricDefMeasure 224 | # We can included the text of the association in meta data for readability is required 225 | metadata: 226 | association: MetricDefinitionMeasuredAccordingTo 227 | # We can include the text of the association in meta data for readability is required 228 | type: map 229 | # was list in IG1176 R19.0 230 | entry_schema: MetricDefMeasure 231 | required: false 232 | 233 | 234 | MetricThresholdRuleDefinition: 235 | metadata: 236 | source: org.tmforum.models.sidmodels.CommonDomain.MetricDefinitionMeasureABE.MetricDefinitionMeasureThresholdABE 237 | sid_release: '19.0' 238 | description: 'Various types of threshold logic can be implemented by this entity. For example: Indicator > Value.' 239 | derived_from: MetricDefMeasureThresholdRule 240 | properties: 241 | conformanceTargetLower: 242 | type: float 243 | description: A value used to determine if the threshold is crossed or ceases to be crossed. It represents the Lower limit. The value should be less than the conformanceTargetUpper. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition. 244 | required: false 245 | conformanceComparatorLower: 246 | type: MetricThresholdComparator 247 | description: "An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. 248 | This operator is used to compare with the conformanceTargetLower." 249 | required: false 250 | conformanceTargetUpper: 251 | type: float 252 | description: A value used to determine if the threshold is crossed or ceases to be crossed. It represents the Upper limit. The value should be greater than the conformanceTargetLower. The conformance comparators should also be logically defined so as to not lead to a logically impossible condition. 253 | required: false 254 | conformanceComparatorUpper: 255 | type: MetricThresholdComparator 256 | description: "An operator that when applied on a value specifies whether a threshold is crossed or ceased to be crossed. 257 | This operator is used to compare with the conformanceTargetUpper." 258 | required: false 259 | tolerancePeriod: 260 | type: Duration 261 | description: An interval of time of allowed crossing occurrences before a consequence being initiated. 262 | required: false 263 | numberOfAllowedCrossing: 264 | type: integer 265 | description: The number of allowed crossing occurrences in reference to the tolerancePeriod without a consequence being initiated. 266 | required: false 267 | 268 | PreDefinedMetricThresholdRule: 269 | metadata: 270 | source: org.tmforum.models.sidmodels.CommonDomain.MetricDefinitionMeasureABE.MetricDefinitionMeasureThresholdABE 271 | sid_release: '19.0' 272 | description: A pre-defined threshold is a "black-box" logic that resides in the PM Producing Application. A PM consuming application can execute it assigning values to its parameters. 273 | derived_from: MetricDefMeasureThresholdRule 274 | properties: 275 | derivationAlgorithm: 276 | type: string 277 | 278 | 279 | MetricDefMeasure: 280 | metadata: 281 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricDefinitionABE.MetricDefMeasure 282 | sid_release: '19.0' 283 | description: A MetricDefMeasure specifies a measure of a specific aspect of an entity, such as lost packets or dealer sales target achievement, defined for a MetricDefinition that may trigger consequence (s) (MetricDefMeasureConsequence) if a threshold (MetricDefMeasureThreshold) is crossed. 284 | properties: 285 | # Add defaults so that a template with no metric values passes validation. Not ideal for metrics as not present is different to zero 286 | unitOfMeasure: 287 | description: The unit of measure for the Metric values associated with a MetricDefMeasure, such as meters, cubic yards, kilograms [ISO 1000] 288 | type: Quantity 289 | default: 290 | amount: 0.0 291 | # was 0 in IG1176 292 | units: unknown 293 | accuracy: 294 | description: The number of digits of accuracy captured for Metrics associated with a MetricDefMeasure. 295 | type: integer 296 | required: false 297 | valueType: 298 | # added since IG1176 R19.0 299 | description: A kind of value that the Metric value associated with a MetricDefMeasure can take on, such as numeric, text, and so forth 300 | type: MetricValueType 301 | capturePeriod: 302 | description: The period during which Metrics associated with a MetricDefMeasure are captured. Note This may be replaced by a set of entities similar to the Performance Monitoring ABEs. 303 | type: TimePeriod 304 | default: 305 | startDateTime: 1970-1-1 306 | endDateTime: 1970-1-1 307 | captureFrequency: 308 | description: The frequency of capture for the MetricDefMeasure. Note This may be replaced by a set of entities similar to the Performance Monitoring ABEs 309 | type: string 310 | required: false 311 | validFor: 312 | description: The period for which the MetricDefMeasure is valid 313 | type: TimePeriod 314 | required: false 315 | _metricDefinitionThresholdSet: 316 | # added since IG1176 R19.0 317 | metadata: 318 | association: MetricDefMeasuredEvaluatedUsing 319 | type: map 320 | entry_schema: MetricDefinitionThresholdSet 321 | required: false 322 | 323 | MetricMeasure: 324 | metadata: 325 | source: org.tmforum.models.sidmodels.CommonDomain.MetricABE.MetricMeasureABE.MetricMeasure 326 | # corrected since IG1176 R19.0 327 | sid_release: '19.0' 328 | description: A numerical value or text determined for a MetricDefMeasure that may be collected for a RootEntity, such as a connection or a dealer. A MetricMeasure might be part of a group of MetricMeasures realized at a specific moment (MetricMeasureGroup). For example, a value of .005 ms that represents average packet delay 329 | properties: 330 | value: 331 | type: string 332 | 333 | #################### 334 | capability_types: 335 | #################### 336 | 337 | ################## 338 | # Capabilities to implement SID 339 | #################### 340 | 341 | tosca.capabilities.PhysicalResourceSpecAttributes: 342 | description: >- 343 | Equates to nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceSpecificationABE.PhysicalResourceSpecificationABE.PhysicalResourceSpecAttributes 344 | # No need to use an inheritance tree for this as it contains no inherited attributes. No harm in doing so if it makes sense for automated mapping but for now derive from root 345 | derived_from: tosca.capabilities.Root 346 | metadata: 347 | sid_release: '19.0' 348 | properties: 349 | modelNumber: 350 | type: string 351 | required: True 352 | vendorName: 353 | type: string 354 | required: True 355 | attributes: 356 | skuNumber: 357 | type: string 358 | partNumber: 359 | type: string 360 | 361 | tosca.capabilities.RootEntity: 362 | description: >- 363 | Equates to nodes.org.tmforum.models.sidmodels.CommonDomain.RootBusinessEntities:RootEntity 364 | derived_from: tosca.capabilities.Root 365 | properties: 366 | description: 367 | type: string 368 | required: False 369 | description: This is a string, and defines a textual identifier of an object 370 | name: 371 | type: string 372 | description: Represents a user-friendly identifier of an object... 373 | required: False 374 | metric: 375 | type: MetricMeasure 376 | # Others to be added 377 | 378 | tosca.capabilities.ResourceSpecificationABE: 379 | description: >- 380 | Equates to nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceSpecificationABE 381 | derived_from: tosca.capabilities.RootEntity 382 | properties: 383 | validFor: 384 | type: TimePeriod 385 | # Others to be added 386 | 387 | tosca.capabilities.LogicalResourceSpec: 388 | description: >- 389 | Equates to nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceSpecificationABE.LogicalResourceSpecificationABE 390 | derived_from: tosca.capabilities.ResourceSpecificationABE 391 | # There is a problem here as LogicalResourceSpec contains attributes of physicalResourceSpec and logicalResourceRole. If this was a node we could model these as capabilities but as this is already a capability we cannot use that trick 392 | # ie. cannot nest capabilities and so we do not have a generic way to model in TOSCA the 1: 0..n relationships found in SID. 393 | 394 | 395 | tosca.capabilities.ConnectionPointSpec: 396 | description: >- 397 | Equates to nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceSpecificationABE.LogicalResourceSpecificationABE.ConnectionPointSpec 398 | # This does inherit attributes and so we do have to define the parent capabilities first 399 | # TODO Inherit from RootEntity, EntitySpecification an ResourceSpecification instead of 400 | # some SID entities are mapped to TOSCA nodes and some to TOSCA capabilities and so there has to be a complete SID inheritance tree in both capability and node definitions 401 | derived_from: tosca.capabilities.LogicalResourceSpec 402 | 403 | 404 | 405 | #################### 406 | interface_types: 407 | 408 | tosca.interfaces.node.lifecycle.lrStatus: 409 | #derived_from: tosca.interfaces.node 410 | description: Provides TOSCA interface to org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.lrStatus 411 | metadata: 412 | sid_release: '19.0' 413 | operations: 414 | create: 415 | description: '13: In Maintenance' 416 | start: 417 | description: '1: OK' 418 | stop: 419 | description: '6: Stopped' 420 | delete: 421 | description: '12: Not Installed or Not Present' 422 | 423 | set_unknown: 424 | description: '0: Unknown' 425 | 426 | set_initializing: 427 | description: '2: Initializing' 428 | set_starting: 429 | description: '3: Starting' 430 | set_paused: 431 | description: '4: Paused' 432 | set_stopping: 433 | description: '5: Stopping' 434 | 435 | set_degraded: 436 | description: '7: Degraded' 437 | set_stressed: 438 | description: '8: Stressed' 439 | set_predicted_failure: 440 | description: '9: Predicted Failure' 441 | set_error_general: 442 | description: '10: Error - General' 443 | set_error_non_recoverable: 444 | description: '11: Error - Non Recoverable' 445 | 446 | set_unable_to_contact: 447 | description: '14: Unable To Contact' 448 | set_Lost_Communications: 449 | description: '15: Lost Communications' 450 | 451 | 452 | org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource.status: 453 | #derived_from: tosca.interfaces.node.lifecycle.Standard 454 | metadata: 455 | source: org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource.status 456 | sid_release: '19.0' 457 | description: This is an enumerated integer whose value indicates the current status of the object 458 | # Although all values from CompoundResource.status are included, only those which indicate a target resting state are likely to be used in a practical interface. 459 | # e.g. use the stop operation not the set_stopping operation 460 | operations: 461 | create: 462 | description: '13: In Maintenance' 463 | start: 464 | description: '1: OK' 465 | stop: 466 | description: '6: Stopped' 467 | delete: 468 | description: '12: Not Installed or Not Present' 469 | 470 | set_unknown: 471 | description: '0: Unknown' 472 | 473 | set_initializing: 474 | description: '2: Initializing' 475 | set_starting: 476 | description: '3: Starting' 477 | set_paused: 478 | description: '4: Paused' 479 | set_stopping: 480 | description: '5: Stopping' 481 | 482 | set_degraded: 483 | description: '7: Degraded' 484 | set_stressed: 485 | description: '8: Stressed' 486 | set_predicted_failure: 487 | description: '9: Predicted Failure' 488 | set_error_general: 489 | description: '10: Error - General' 490 | set_error_non_recoverable: 491 | description: '11: Error - Non Recoverable' 492 | 493 | set_unable_to_contact: 494 | description: '14: Unable To Contact' 495 | set_Lost_Communications: 496 | description: '15: Lost Communications' 497 | #################### 498 | 499 | #################### 500 | node_types: 501 | #################### 502 | 503 | ################### 504 | # node types from SID model 505 | ################### 506 | 507 | #tosca.nodes.tmforum: 508 | #derived_from: tosca.nodes.Root 509 | 510 | #tosca.nodes.org.tmforum.models: 511 | #derived_from: tosca.nodes.tmforum 512 | 513 | nodes.org.tmforum.models.sidmodels: 514 | metadata: 515 | sid_release: '19.0' 516 | properties: 517 | # mapping examples of those attributes of SID RootEntity which are not relationships and are not read only to TOSCA properties 518 | # JSON and therefore YAML and TOSCA does not have a syntax to declare that an attribute must be unique and so that (and 519 | # possibly other) aspect of the SID definition is lost when mapping to TOSCA 520 | description: 521 | type: string 522 | required: False 523 | description: This is a string, and defines a textual identifier of an object 524 | name: 525 | type: string 526 | description: Represents a user-friendly identifier of an object... 527 | required: False 528 | ID: 529 | type: string 530 | description: Unambiguously distinguishes different object instances 531 | required: False 532 | # attributes: 533 | # If there were any SID read only attributes they would be mapped to TOSCA attributes here 534 | # Include the caps and reqs behavior of tosca nodes. (we don't derive from tosca because we don't want to inherit the standard interface) 535 | capabilities: 536 | feature: 537 | type: tosca.capabilities.Node 538 | requirements: 539 | - dependency: 540 | capability: tosca.capabilities.Node 541 | node: tosca.nodes.Root 542 | relationship: tosca.relationships.DependsOn 543 | occurrences: [ 0, UNBOUNDED ] 544 | 545 | 546 | nodes.org.tmforum.models.sidmodels.ResourceDomain: 547 | derived_from: nodes.org.tmforum.models.sidmodels 548 | metadata: 549 | sid_release: '19.0' 550 | 551 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE: 552 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain 553 | metadata: 554 | sid_release: '19.0' 555 | 556 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE: 557 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE 558 | metadata: 559 | sid_release: '19.0' 560 | 561 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource: 562 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE 563 | metadata: 564 | sid_release: '19.0' 565 | attributes: 566 | status: 567 | type: integer 568 | description: "This is an enumerated integer whose value indicates the current status of the object. The following values are defined: 569 | 0: Unknown 570 | 1: OK 571 | 2: Initializing 572 | 3: Starting 573 | 4: Paused 574 | 5: Stopping 575 | 6: Stopped 576 | 7: Degraded 577 | 8: Stressed 578 | 9: Predicted Failure 579 | 10: Error - General 580 | 11: Error - Non Recoverable 581 | 12: Not Installed or Not Present 582 | 13: In Maintenance 583 | 14: Unable To Contact 584 | 15: Lost Communications 585 | 586 | Stopped indicates that the CompoundResource is known to still exist, but it is no longer operational. However, it has not failed. 587 | 588 | Stressed indicates that the LogicalResource is functioning, but needs attention (e.g., it may be overheating, or overloaded in some way). This is similar to Predicted Failure, which indicates that this CompoundResource is functioning properly, but is predicting a failure in the near future. 589 | 590 | In Maintenance indicates that this LogicalResource is being configured, maintained, or otherwise administered and is NOT available for service" 591 | interfaces: 592 | Standard: 593 | type: org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.CompoundResourceABE.CompoundResource.status 594 | 595 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE: 596 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE 597 | metadata: 598 | sid_release: '19.0' 599 | 600 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource: 601 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE 602 | metadata: 603 | sid_release: '19.0' 604 | attributes: 605 | lrStatus: 606 | type: integer 607 | description: "This is an enumerated integer whose value indicates the current status of the object. The following values are defined: 608 | 0: Unknown 609 | 1: OK 610 | 2: Initializing 611 | 3: Starting 612 | 4: Paused 613 | 5: Stopping 614 | 6: Stopped 615 | 7: Degraded 616 | 8: Stressed 617 | 9: Predicted Failure 618 | 10: Error - General 619 | 11: Error - Non Recoverable 620 | 12: Not Installed or Not Present 621 | 13: In Maintenance 622 | 14: Unable To Contact 623 | 15: Lost Communications 624 | 625 | Stopped indicates that the LogicalResource is known to still exist, but it is no longer operational. However, it has not failed. 626 | 627 | Stressed indicates that the LogicalResource is functioning, but needs attention (e.g., it may be overheating, or overloaded in some way). This is similar to Predicted Failure, which indicates that this LogicalResource is functioning properly, but is predicting a failure in the near future. 628 | 629 | In Maintenance indicates that this LogicalResource is being configured, maintained, or otherwise administered and is NOT available for service. 630 | 631 | Unable To Contact indicates that the monitoring system has knowledge of this LogicalResource but has never been able to establish communications with it. In contrast, Lost Communications indicates that the LogicalResource has been contacted successfully in the past and is known to still exist; however, it is currently unreachable." 632 | interfaces: 633 | Standard: 634 | type: tosca.interfaces.node.lifecycle.lrStatus 635 | 636 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ResourceFunction: 637 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE 638 | metadata: 639 | sid_release: '19.0' 640 | # capabilities: 641 | # connectionPointSpec: 642 | # type: tosca.capabilities.ConnectionPointSpec 643 | # connectionPointSpec2: 644 | # type: tosca.capabilities.ConnectionPointSpec 645 | 646 | properties: 647 | keyWords: 648 | type: string 649 | required: false 650 | description: A list of key words that may help in searches to find an RF spec with desired capabilities 651 | 652 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.LogicalResource.ConnectionPoint: 653 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE 654 | metadata: 655 | sid_release: '19.0' 656 | 657 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource: 658 | description: >- 659 | Equates to PhysicalResourceSpec in TM Forum Information Model (SID) 660 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE 661 | metadata: 662 | sid_release: '19.0' 663 | # In SID a PhysicalResourceSpec has a 1 : 0..1 relation to PhysicalResourceAttributes 664 | # To model this in TOSCA we have these choices: 665 | # 1 use capability 666 | # We use this option but as noted elsewhere it can only be used for once - we cannot nest capabilities in node in capabilities in nodes and so cannot map one to many relations as found throughout SID 667 | # 2 use requirements: - dependency: capability 668 | # This places a requirement on node instances derived from this spec that they MUST instantiate a node with the capabilities defined in PhysicalResourceAttributes 669 | # which is not what we want 670 | # 3 use requirements: - dependency: node 671 | # This places a requirement on node instances derived from this spec that they MUST instantiate a node with the type PhysicalResourceAttributes 672 | # which is not what we want 673 | # 4 Flatten the SID and add the attributes in this node 674 | # this validates but 675 | # loses the fact that if partNumber is present then vendorName must also be present 676 | # attributes: 677 | # modelNumber: 678 | # type: string 679 | # required: false 680 | # vendorName: 681 | # type: string 682 | # required: true 683 | # skuNumber: 684 | # type: string 685 | # required: false 686 | # partNumber: 687 | # type: string 688 | # required: true 689 | # 5 Make two node definitions, one with and one without the extension 690 | # but that doubles the number of child entities 691 | # 6 Use capability but to a new intermediate node type 692 | # Does not seem to add anything helpful 693 | capabilities: 694 | PhysicalResourceSpecFurtherExtendedBy: 695 | type: tosca.capabilities.PhysicalResourceSpecAttributes 696 | 697 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware: 698 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource 699 | metadata: 700 | sid_release: '19.0' 701 | 702 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.PhysicalPort: 703 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware 704 | metadata: 705 | sid_release: '19.0' 706 | capabilities: 707 | # SID does not define the linkable capability but all tosca ports are linkable 708 | link: 709 | type: tosca.capabilities.network.Linkable 710 | 711 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware: 712 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware 713 | metadata: 714 | sid_release: '19.0' 715 | 716 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer: 717 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware 718 | metadata: 719 | sid_release: '19.0' 720 | 721 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer.Equipment: 722 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer 723 | metadata: 724 | sid_release: '19.0' 725 | 726 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer.Equipment.Card: 727 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer.Equipment 728 | metadata: 729 | sid_release: '19.0' 730 | 731 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer.EquipmentHolder: 732 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.PhysicalResource.Hardware.ManagedHardware.PhysicalContainer 733 | metadata: 734 | sid_release: '19.0' 735 | 736 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.ComputingandSoftwareABE: 737 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE 738 | metadata: 739 | sid_release: '19.0' 740 | 741 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.ComputingandSoftwareABE.SoftwareResourceandSoftwareABE: 742 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.ComputingandSoftwareABE 743 | metadata: 744 | sid_release: '19.0' 745 | 746 | nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.ComputingandSoftwareABE.SoftwareResourceandSoftwareABE.InstalledSoftware: 747 | derived_from: nodes.org.tmforum.models.sidmodels.ResourceDomain.ResourceABE.LogicalResourceABE.ComputingandSoftwareABE.SoftwareResourceandSoftwareABE 748 | metadata: 749 | sid_release: '19.0' 750 | properties: 751 | pagingFileSizeCurrent: 752 | type: Quantity 753 | 754 | 755 | 756 | -------------------------------------------------------------------------------- /out.yml: -------------------------------------------------------------------------------- 1 | description: A TOSCA template to deploy a specific app on a mec and direct requests 2 | to it 3 | nodeTemplates: 4 | mecs_controlling_smf: 5 | description: "" 6 | types: 7 | smf_type: 8 | parent: tosca::Root 9 | tosca::Root: 10 | description: The TOSCA Root Node Type is the default type that all other TOSCA 11 | base Node Types derive from. This allows for all TOSCA nodes to have a consistent 12 | set of features for modeling and management (e.g., consistent definitions 13 | for requirements, capabilities and lifecycle interfaces). 14 | metadata: 15 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 16 | citation_location: 5.9.1 17 | normative: "true" 18 | directives: 19 | - select 20 | properties: {} 21 | attributes: {} 22 | requirements: [] 23 | capabilities: 24 | manage_mecs: 25 | description: "" 26 | types: 27 | MECManager: 28 | parent: tosca::Node 29 | tosca::Node: 30 | description: The Node capability indicates the base capabilities of a 31 | TOSCA Node Type. 32 | metadata: 33 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 34 | citation_location: 5.5.2 35 | normative: "true" 36 | parent: tosca::Root 37 | tosca::Root: 38 | description: This is the default (root) TOSCA Capability Type definition 39 | that all other TOSCA Capability Types derive from. 40 | metadata: 41 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 42 | citation_location: 5.5.1 43 | normative: "true" 44 | properties: {} 45 | attributes: {} 46 | minRelationshipCount: 0 47 | maxRelationshipCount: -1 48 | interfaces: 49 | smf_management: 50 | description: "" 51 | types: 52 | smf_management: 53 | parent: tosca::Root 54 | tosca::Root: 55 | description: This is the default (root) TOSCA Interface Type definition 56 | that all other TOSCA Interface Types derive from. 57 | metadata: 58 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 59 | citation_location: 5.8.3 60 | normative: "true" 61 | inputs: {} 62 | operations: 63 | redirect: 64 | description: "" 65 | implementation: "" 66 | dependencies: [] 67 | inputs: 68 | app_url: 69 | $value: wheresmychargepoint.com 70 | $type: string 71 | public_app_address: 72 | $functionCall: 73 | name: tosca.function.get_input 74 | arguments: 75 | - $value: public_app_address 76 | url: file:C:\Users\802052047\OneDrive - BT Plc\Documents\MDM\TOSCA\5G 77 | Riders 2020\github_files\gsma-gst\tosca\mec_hosting_enablement.wheresmychargingpoint.com.yml 78 | row: 126 79 | column: 17 80 | path: topology_template.node_templates["mecs_controlling_smf"].interfaces["smf_management"].operations["redirect"].inputs["public_app_address"] 81 | timeout: -1 82 | host: "" 83 | notifications: {} 84 | artifacts: {} 85 | myApp: 86 | description: "" 87 | types: 88 | hosted_app_type: 89 | parent: tosca::SoftwareComponent 90 | tosca::Root: 91 | description: The TOSCA Root Node Type is the default type that all other TOSCA 92 | base Node Types derive from. This allows for all TOSCA nodes to have a consistent 93 | set of features for modeling and management (e.g., consistent definitions 94 | for requirements, capabilities and lifecycle interfaces). 95 | metadata: 96 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 97 | citation_location: 5.9.1 98 | normative: "true" 99 | tosca::SoftwareComponent: 100 | description: The TOSCA SoftwareComponent node represents a generic software 101 | component that can be managed and run by a TOSCA Compute Node Type. 102 | metadata: 103 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 104 | citation_location: 5.9.4 105 | normative: "true" 106 | parent: tosca::Root 107 | directives: [] 108 | properties: {} 109 | attributes: 110 | state: 111 | $description: The state of the node instance. 112 | $value: initial 113 | $type: string 114 | tosca_id: 115 | $description: A unique identifier of the realized instance of a Node Template 116 | that derives from any TOSCA normative type. 117 | $value: null 118 | $type: string 119 | tosca_name: 120 | $description: This attribute reflects the name of the Node Template as defined 121 | in the TOSCA service template. This name is not unique to the realized instance 122 | model of corresponding deployed application as each template in the model 123 | can result in one or more instances (e.g., scaled) when orchestrated to 124 | a provider environment. 125 | $value: null 126 | $type: string 127 | requirements: 128 | - name: host 129 | capabilityTypeName: tosca::Compute 130 | capabilityName: "" 131 | nodeTypeName: tosca::Compute 132 | nodeTemplateName: "" 133 | nodeTemplatePropertyConstraints: {} 134 | capabilityPropertyConstraints: {} 135 | relationship: 136 | description: This type represents a hosting relationship between two nodes. 137 | types: 138 | tosca::HostedOn: 139 | description: This type represents a hosting relationship between two nodes. 140 | metadata: 141 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 142 | citation_location: 5.7.3 143 | normative: "true" 144 | role: host 145 | parent: tosca::Root 146 | tosca::Root: 147 | description: This is the default (root) TOSCA Relationship Type definition 148 | that all other TOSCA Relationship Types derive from. 149 | metadata: 150 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 151 | citation_location: 5.7.1 152 | normative: "true" 153 | properties: {} 154 | attributes: 155 | state: 156 | $description: The state of the relationship instance. 157 | $value: initial 158 | $type: string 159 | tosca_id: 160 | $description: A unique identifier of the realized instance of a Relationship 161 | Template that derives from any TOSCA normative type. 162 | $value: null 163 | $type: string 164 | tosca_name: 165 | $description: This attribute reflects the name of the Relationship Template 166 | as defined in the TOSCA service template. This name is not unique to 167 | the realized instance model of corresponding deployed application as 168 | each template in the model can result in one or more instances (e.g., 169 | scaled) when orchestrated to a provider environment. 170 | $value: null 171 | $type: string 172 | interfaces: 173 | Configure: 174 | description: The lifecycle interfaces define the essential, normative 175 | operations that each TOSCA Relationship Types may support. 176 | types: 177 | tosca::Configure: 178 | description: The lifecycle interfaces define the essential, normative 179 | operations that each TOSCA Relationship Types may support. 180 | metadata: 181 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 182 | citation_location: 5.8.5 183 | normative: "true" 184 | parent: tosca::Root 185 | tosca::Root: 186 | description: This is the default (root) TOSCA Interface Type definition 187 | that all other TOSCA Interface Types derive from. 188 | metadata: 189 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 190 | citation_location: 5.8.3 191 | normative: "true" 192 | inputs: {} 193 | operations: 194 | add_source: 195 | description: Operation to notify the target node of a source node 196 | which is now available via a relationship. 197 | implementation: "" 198 | dependencies: [] 199 | inputs: {} 200 | timeout: -1 201 | host: "" 202 | add_target: 203 | description: Operation to notify the source node of a target node 204 | being added via a relationship. 205 | implementation: "" 206 | dependencies: [] 207 | inputs: {} 208 | timeout: -1 209 | host: "" 210 | post_configure_source: 211 | description: Operation to post-configure the source endpoint. 212 | implementation: "" 213 | dependencies: [] 214 | inputs: {} 215 | timeout: -1 216 | host: "" 217 | post_configure_target: 218 | description: Operation to post-configure the target endpoint. 219 | implementation: "" 220 | dependencies: [] 221 | inputs: {} 222 | timeout: -1 223 | host: "" 224 | pre_configure_source: 225 | description: Operation to pre-configure the source endpoint. 226 | implementation: "" 227 | dependencies: [] 228 | inputs: {} 229 | timeout: -1 230 | host: "" 231 | pre_configure_target: 232 | description: Operation to pre-configure the target endpoint. 233 | implementation: "" 234 | dependencies: [] 235 | inputs: {} 236 | timeout: -1 237 | host: "" 238 | remove_source: 239 | description: Operation to remove the source node. 240 | implementation: "" 241 | dependencies: [] 242 | inputs: {} 243 | timeout: -1 244 | host: "" 245 | remove_target: 246 | description: Operation to remove a target node. 247 | implementation: "" 248 | dependencies: [] 249 | inputs: {} 250 | timeout: -1 251 | host: "" 252 | target_changed: 253 | description: Operation to notify source some property or attribute 254 | of the target changed 255 | implementation: "" 256 | dependencies: [] 257 | inputs: {} 258 | timeout: -1 259 | host: "" 260 | notifications: {} 261 | path: topology_template.node_templates["myApp"].requirements{0} 262 | capabilities: 263 | feature: 264 | description: "" 265 | types: 266 | tosca::Node: 267 | description: The Node capability indicates the base capabilities of a 268 | TOSCA Node Type. 269 | metadata: 270 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 271 | citation_location: 5.5.2 272 | normative: "true" 273 | parent: tosca::Root 274 | tosca::Root: 275 | description: This is the default (root) TOSCA Capability Type definition 276 | that all other TOSCA Capability Types derive from. 277 | metadata: 278 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 279 | citation_location: 5.5.1 280 | normative: "true" 281 | properties: {} 282 | attributes: {} 283 | minRelationshipCount: 0 284 | maxRelationshipCount: -1 285 | interfaces: 286 | Standard: 287 | description: This lifecycle interface defines the essential, normative operations 288 | that TOSCA nodes may support. 289 | types: 290 | tosca::Root: 291 | description: This is the default (root) TOSCA Interface Type definition 292 | that all other TOSCA Interface Types derive from. 293 | metadata: 294 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 295 | citation_location: 5.8.3 296 | normative: "true" 297 | tosca::Standard: 298 | description: This lifecycle interface defines the essential, normative 299 | operations that TOSCA nodes may support. 300 | metadata: 301 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 302 | citation_location: 5.8.4 303 | normative: "true" 304 | parent: tosca::Root 305 | inputs: {} 306 | operations: 307 | configure: 308 | description: Standard lifecycle configure operation. 309 | implementation: scripts/configure.sh 310 | dependencies: [] 311 | inputs: 312 | sync_data: 313 | $functionCall: 314 | name: tosca.function.get_artifact 315 | arguments: 316 | - $value: SELF 317 | - $value: data 318 | url: file:C:\Users\802052047\OneDrive - BT Plc\Documents\MDM\TOSCA\5G 319 | Riders 2020\github_files\gsma-gst\tosca\mec_hosting_enablement.wheresmychargingpoint.com.yml 320 | row: 88 321 | column: 17 322 | path: topology_template.node_templates["myApp"].interfaces["Standard"].operations["configure"].inputs["sync_data"] 323 | timeout: -1 324 | host: "" 325 | create: 326 | description: Standard lifecycle create operation. 327 | implementation: http://csp.com/hosted_app/scripts/create.sh 328 | dependencies: [] 329 | inputs: 330 | deployment_file: 331 | $functionCall: 332 | name: tosca.function.get_artifact 333 | arguments: 334 | - $value: SELF 335 | - $value: mydeployment_file 336 | url: file:C:\Users\802052047\OneDrive - BT Plc\Documents\MDM\TOSCA\5G 337 | Riders 2020\github_files\gsma-gst\tosca\mec_hosting_enablement.wheresmychargingpoint.com.yml 338 | row: 84 339 | column: 17 340 | path: topology_template.node_templates["myApp"].interfaces["Standard"].operations["create"].inputs["deployment_file"] 341 | timeout: -1 342 | host: "" 343 | delete: 344 | description: Standard lifecycle delete operation. 345 | implementation: "" 346 | dependencies: [] 347 | inputs: {} 348 | timeout: -1 349 | host: "" 350 | start: 351 | description: Standard lifecycle start operation. 352 | implementation: "" 353 | dependencies: [] 354 | inputs: {} 355 | timeout: -1 356 | host: "" 357 | stop: 358 | description: Standard lifecycle stop operation. 359 | implementation: "" 360 | dependencies: [] 361 | inputs: {} 362 | timeout: -1 363 | host: "" 364 | notifications: {} 365 | artifacts: 366 | data: 367 | description: "" 368 | types: {} 369 | properties: {} 370 | filename: operationalstate.json 371 | sourcePath: file:C:\Users\802052047\OneDrive - BT Plc\Documents\MDM\TOSCA\5G 372 | Riders 2020\github_files\gsma-gst\tosca\http:\livelocation.com\heresmychargepointapp\operationalstate.json 373 | targetPath: "" 374 | version: "" 375 | checksumAlgorithm: "" 376 | checksum: "" 377 | credential: null 378 | mydeployment_file: 379 | description: The actual install file for this app 380 | types: {} 381 | properties: {} 382 | filename: wheresmychargepointapp.iso 383 | sourcePath: file:C:\Users\802052047\OneDrive - BT Plc\Documents\MDM\TOSCA\5G 384 | Riders 2020\github_files\gsma-gst\tosca\http:\cloudrepo:80\files\wheresmychargepointapp.iso 385 | targetPath: "" 386 | version: "" 387 | checksumAlgorithm: "" 388 | checksum: "" 389 | credential: null 390 | myapp_compute: 391 | description: "" 392 | types: 393 | mec_type: 394 | parent: tosca::Compute 395 | tosca::Abstract.Compute: 396 | description: The TOSCA Abstract.Compute node represents an abstract compute 397 | resource without any requirements on storage or network resources. 398 | metadata: 399 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 400 | citation_location: 5.9.2 401 | normative: "true" 402 | parent: tosca::Root 403 | tosca::Compute: 404 | description: The TOSCA Compute node represents one or more real or virtual 405 | processors of software applications or services along with other essential 406 | local resources. Collectively, the resources the compute node represents 407 | can logically be viewed as a (real or virtual) "server". 408 | metadata: 409 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 410 | citation_location: 5.9.3 411 | normative: "true" 412 | parent: tosca::Abstract.Compute 413 | tosca::Root: 414 | description: The TOSCA Root Node Type is the default type that all other TOSCA 415 | base Node Types derive from. This allows for all TOSCA nodes to have a consistent 416 | set of features for modeling and management (e.g., consistent definitions 417 | for requirements, capabilities and lifecycle interfaces). 418 | metadata: 419 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 420 | citation_location: 5.9.1 421 | normative: "true" 422 | directives: [] 423 | properties: {} 424 | attributes: 425 | networks: 426 | $description: The list of logical networks assigned to the compute host instance 427 | and information about them. 428 | $value: null 429 | $type: map 430 | ports: 431 | $description: The list of logical ports assigned to the compute host instance 432 | and information about them. 433 | $value: null 434 | $type: map 435 | private_address: 436 | $description: The primary private IP address assigned by the cloud provider 437 | that applications may use to access the Compute node. 438 | $value: null 439 | $type: string 440 | public_address: 441 | $description: The primary public IP address assigned by the cloud provider 442 | that applications may use to access the Compute node. 443 | $value: null 444 | $type: string 445 | state: 446 | $description: The state of the node instance. 447 | $value: initial 448 | $type: string 449 | tosca_id: 450 | $description: A unique identifier of the realized instance of a Node Template 451 | that derives from any TOSCA normative type. 452 | $value: null 453 | $type: string 454 | tosca_name: 455 | $description: This attribute reflects the name of the Node Template as defined 456 | in the TOSCA service template. This name is not unique to the realized instance 457 | model of corresponding deployed application as each template in the model 458 | can result in one or more instances (e.g., scaled) when orchestrated to 459 | a provider environment. 460 | $value: null 461 | $type: string 462 | requirements: 463 | - name: controlling_smf 464 | capabilityTypeName: MECManager 465 | capabilityName: "" 466 | nodeTypeName: smf_type 467 | nodeTemplateName: "" 468 | nodeTemplatePropertyConstraints: {} 469 | capabilityPropertyConstraints: {} 470 | relationship: 471 | description: This type represents a general dependency relationship between 472 | two nodes. 473 | types: 474 | tosca::DependsOn: 475 | description: This type represents a general dependency relationship between 476 | two nodes. 477 | metadata: 478 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 479 | citation_location: 5.7.2 480 | normative: "true" 481 | parent: tosca::Root 482 | tosca::Root: 483 | description: This is the default (root) TOSCA Relationship Type definition 484 | that all other TOSCA Relationship Types derive from. 485 | metadata: 486 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 487 | citation_location: 5.7.1 488 | normative: "true" 489 | properties: {} 490 | attributes: 491 | state: 492 | $description: The state of the relationship instance. 493 | $value: initial 494 | $type: string 495 | tosca_id: 496 | $description: A unique identifier of the realized instance of a Relationship 497 | Template that derives from any TOSCA normative type. 498 | $value: null 499 | $type: string 500 | tosca_name: 501 | $description: This attribute reflects the name of the Relationship Template 502 | as defined in the TOSCA service template. This name is not unique to 503 | the realized instance model of corresponding deployed application as 504 | each template in the model can result in one or more instances (e.g., 505 | scaled) when orchestrated to a provider environment. 506 | $value: null 507 | $type: string 508 | interfaces: 509 | Configure: 510 | description: The lifecycle interfaces define the essential, normative 511 | operations that each TOSCA Relationship Types may support. 512 | types: 513 | tosca::Configure: 514 | description: The lifecycle interfaces define the essential, normative 515 | operations that each TOSCA Relationship Types may support. 516 | metadata: 517 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 518 | citation_location: 5.8.5 519 | normative: "true" 520 | parent: tosca::Root 521 | tosca::Root: 522 | description: This is the default (root) TOSCA Interface Type definition 523 | that all other TOSCA Interface Types derive from. 524 | metadata: 525 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 526 | citation_location: 5.8.3 527 | normative: "true" 528 | inputs: {} 529 | operations: 530 | add_source: 531 | description: Operation to notify the target node of a source node 532 | which is now available via a relationship. 533 | implementation: "" 534 | dependencies: [] 535 | inputs: {} 536 | timeout: -1 537 | host: "" 538 | add_target: 539 | description: Operation to notify the source node of a target node 540 | being added via a relationship. 541 | implementation: "" 542 | dependencies: [] 543 | inputs: {} 544 | timeout: -1 545 | host: "" 546 | post_configure_source: 547 | description: Operation to post-configure the source endpoint. 548 | implementation: "" 549 | dependencies: [] 550 | inputs: {} 551 | timeout: -1 552 | host: "" 553 | post_configure_target: 554 | description: Operation to post-configure the target endpoint. 555 | implementation: "" 556 | dependencies: [] 557 | inputs: {} 558 | timeout: -1 559 | host: "" 560 | pre_configure_source: 561 | description: Operation to pre-configure the source endpoint. 562 | implementation: "" 563 | dependencies: [] 564 | inputs: {} 565 | timeout: -1 566 | host: "" 567 | pre_configure_target: 568 | description: Operation to pre-configure the target endpoint. 569 | implementation: "" 570 | dependencies: [] 571 | inputs: {} 572 | timeout: -1 573 | host: "" 574 | remove_source: 575 | description: Operation to remove the source node. 576 | implementation: "" 577 | dependencies: [] 578 | inputs: {} 579 | timeout: -1 580 | host: "" 581 | remove_target: 582 | description: Operation to remove a target node. 583 | implementation: "" 584 | dependencies: [] 585 | inputs: {} 586 | timeout: -1 587 | host: "" 588 | target_changed: 589 | description: Operation to notify source some property or attribute 590 | of the target changed 591 | implementation: "" 592 | dependencies: [] 593 | inputs: {} 594 | timeout: -1 595 | host: "" 596 | notifications: {} 597 | path: topology_template.node_templates["myapp_compute"].requirements{0} 598 | capabilities: 599 | binding: 600 | description: "" 601 | types: 602 | tosca::Bindable: 603 | description: A node type that includes the Bindable capability indicates 604 | that it can be bound to a logical network association via a network 605 | port. 606 | metadata: 607 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 608 | citation_location: 5.5.14 609 | normative: "true" 610 | parent: tosca::Node 611 | tosca::Node: 612 | description: The Node capability indicates the base capabilities of a 613 | TOSCA Node Type. 614 | metadata: 615 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 616 | citation_location: 5.5.2 617 | normative: "true" 618 | parent: tosca::Root 619 | tosca::Root: 620 | description: This is the default (root) TOSCA Capability Type definition 621 | that all other TOSCA Capability Types derive from. 622 | metadata: 623 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 624 | citation_location: 5.5.1 625 | normative: "true" 626 | properties: {} 627 | attributes: {} 628 | minRelationshipCount: 0 629 | maxRelationshipCount: -1 630 | endpoint: 631 | description: "" 632 | types: 633 | tosca::Endpoint: 634 | description: This is the default TOSCA type that should be used or extended 635 | to define a network endpoint capability. This includes the information 636 | to express a basic endpoint with a single port or a complex endpoint 637 | with multiple ports. By default the Endpoint is assumed to represent 638 | an address on a private network unless otherwise specified. 639 | metadata: 640 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 641 | citation_location: 5.5.7 642 | normative: "true" 643 | parent: tosca::Root 644 | tosca::Endpoint.Admin: 645 | description: This is the default TOSCA type that should be used or extended 646 | to define a specialized administrator endpoint capability. 647 | metadata: 648 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 649 | citation_location: 5.5.9 650 | normative: "true" 651 | parent: tosca::Endpoint 652 | tosca::Root: 653 | description: This is the default (root) TOSCA Capability Type definition 654 | that all other TOSCA Capability Types derive from. 655 | metadata: 656 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 657 | citation_location: 5.5.1 658 | normative: "true" 659 | properties: 660 | initiator: 661 | $description: The optional indicator of the direction of the connection. 662 | $value: source 663 | $type: string 664 | network_name: 665 | $description: 'The optional name (or ID) of the network this endpoint 666 | should be bound to. network_name: PRIVATE | PUBLIC | 667 | | .' 668 | $value: PRIVATE 669 | $type: string 670 | protocol: 671 | $description: 'The name of the protocol (i.e., the protocol prefix) that 672 | the endpoint accepts (any OSI Layer 4-7 protocols). Examples: http, 673 | https, ftp, tcp, udp, etc.' 674 | $value: tcp 675 | $type: string 676 | secure: 677 | $description: Requests for the endpoint to be secure and use credentials 678 | supplied on the ConnectsTo relationship. 679 | $value: true 680 | $type: boolean 681 | attributes: 682 | ip_address: 683 | $description: 'Note: This is the IP address as propagated up by the associated 684 | node''s host (Compute) container.' 685 | $value: null 686 | $type: string 687 | minRelationshipCount: 0 688 | maxRelationshipCount: -1 689 | feature: 690 | description: "" 691 | types: 692 | tosca::Node: 693 | description: The Node capability indicates the base capabilities of a 694 | TOSCA Node Type. 695 | metadata: 696 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 697 | citation_location: 5.5.2 698 | normative: "true" 699 | parent: tosca::Root 700 | tosca::Root: 701 | description: This is the default (root) TOSCA Capability Type definition 702 | that all other TOSCA Capability Types derive from. 703 | metadata: 704 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 705 | citation_location: 5.5.1 706 | normative: "true" 707 | properties: {} 708 | attributes: {} 709 | minRelationshipCount: 0 710 | maxRelationshipCount: -1 711 | host: 712 | description: "" 713 | types: 714 | tosca::Compute: 715 | description: The Compute capability, when included on a Node Type or Template 716 | definition, indicates that the node can provide hosting on a named compute 717 | resource. 718 | metadata: 719 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 720 | citation_location: 5.5.3 721 | normative: "true" 722 | role: host 723 | parent: tosca::Container 724 | tosca::Container: 725 | description: The Container capability, when included on a Node Type or 726 | Template definition, indicates that the node can act as a container 727 | for (or a host for) one or more other declared Node Types. 728 | metadata: 729 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 730 | citation_location: 5.5.6 731 | normative: "true" 732 | parent: tosca::Root 733 | tosca::Root: 734 | description: This is the default (root) TOSCA Capability Type definition 735 | that all other TOSCA Capability Types derive from. 736 | metadata: 737 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 738 | citation_location: 5.5.1 739 | normative: "true" 740 | properties: {} 741 | attributes: {} 742 | minRelationshipCount: 0 743 | maxRelationshipCount: -1 744 | os: 745 | description: "" 746 | types: 747 | tosca::OperatingSystem: 748 | description: This is the default TOSCA type that should be used to express 749 | an Operating System capability for a node. 750 | metadata: 751 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 752 | citation_location: 5.5.12 753 | normative: "true" 754 | parent: tosca::Root 755 | tosca::Root: 756 | description: This is the default (root) TOSCA Capability Type definition 757 | that all other TOSCA Capability Types derive from. 758 | metadata: 759 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 760 | citation_location: 5.5.1 761 | normative: "true" 762 | properties: {} 763 | attributes: {} 764 | minRelationshipCount: 0 765 | maxRelationshipCount: -1 766 | scalable: 767 | description: "" 768 | types: 769 | tosca::Root: 770 | description: This is the default (root) TOSCA Capability Type definition 771 | that all other TOSCA Capability Types derive from. 772 | metadata: 773 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 774 | citation_location: 5.5.1 775 | normative: "true" 776 | tosca::Scalable: 777 | description: This is the default TOSCA type that should be used to express 778 | a scalability capability for a node. 779 | metadata: 780 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 781 | citation_location: 5.5.13 782 | normative: "true" 783 | parent: tosca::Root 784 | properties: 785 | max_instances: 786 | $description: This property is used to indicate the maximum number of 787 | instances that should be created for the associated TOSCA Node Template 788 | by a TOSCA orchestrator. 789 | $value: 1 790 | $type: integer 791 | min_instances: 792 | $description: This property is used to indicate the minimum number of 793 | instances that should be created for the associated TOSCA Node Template 794 | by a TOSCA orchestrator. 795 | $value: 1 796 | $type: integer 797 | attributes: {} 798 | minRelationshipCount: 0 799 | maxRelationshipCount: -1 800 | interfaces: 801 | Standard: 802 | description: This lifecycle interface defines the essential, normative operations 803 | that TOSCA nodes may support. 804 | types: 805 | tosca::Root: 806 | description: This is the default (root) TOSCA Interface Type definition 807 | that all other TOSCA Interface Types derive from. 808 | metadata: 809 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 810 | citation_location: 5.8.3 811 | normative: "true" 812 | tosca::Standard: 813 | description: This lifecycle interface defines the essential, normative 814 | operations that TOSCA nodes may support. 815 | metadata: 816 | citation: '[TOSCA-Simple-Profile-YAML-v1.3]' 817 | citation_location: 5.8.4 818 | normative: "true" 819 | parent: tosca::Root 820 | inputs: {} 821 | operations: 822 | configure: 823 | description: Standard lifecycle configure operation. 824 | implementation: "" 825 | dependencies: [] 826 | inputs: {} 827 | timeout: -1 828 | host: "" 829 | create: 830 | description: Standard lifecycle create operation. 831 | implementation: "" 832 | dependencies: [] 833 | inputs: {} 834 | timeout: -1 835 | host: "" 836 | delete: 837 | description: Standard lifecycle delete operation. 838 | implementation: "" 839 | dependencies: [] 840 | inputs: {} 841 | timeout: -1 842 | host: "" 843 | start: 844 | description: Standard lifecycle start operation. 845 | implementation: "" 846 | dependencies: [] 847 | inputs: {} 848 | timeout: -1 849 | host: "" 850 | stop: 851 | description: Standard lifecycle stop operation. 852 | implementation: "" 853 | dependencies: [] 854 | inputs: {} 855 | timeout: -1 856 | host: "" 857 | notifications: {} 858 | artifacts: {} 859 | groups: {} 860 | policies: {} 861 | inputs: 862 | public_app_address: 863 | $value: 1.1.1.1 864 | $type: string 865 | targetComputeAdminAddress: 866 | $value: 10.10.10.10 867 | $type: string 868 | outputs: {} 869 | workflows: 870 | deploy: 871 | description: "" 872 | preconditions: [] 873 | steps: 874 | install: {} 875 | redirect: {} 876 | sync: {} 877 | inputs: {} 878 | substitution: null 879 | metadata: 880 | parse_command: puccini-tosca parse "tosca/mec_hosting_enablement.wheresmychargingpoint.com.yml" 881 | template_author: paul.m.jordan@bt.com 882 | template_name: generic_app 883 | template_version: "1.0" 884 | scriptletNamespace: {} 885 | --------------------------------------------------------------------------------