# Copyright 2017 Huawei Technologies Co., Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ############################################################################### ##### overlay_enterprise to dc #### ############################################################################### tosca_definitions_version: tosca_simple_yaml_1_0 description: creates overlay connection from Enterprise to DC imports: - Definitions/enterprise2DC_type_definition.yaml ############################################################################### metadata: id: enterprise2Dc template_name: enterprise2DC version: 0.1 vendor: sdno template_author: Huawei ####################################### TOPOLOGY ############################## topology_template: inputs: vpnName: type: string description: Name of Overlayvpn vpnDescription: type: string description: description of Overlayvpn siteName: type: string description: Name of Site siteCidr: type: string description: enterprise site cidr subnetVlan: type: integer description: Vlan value of Subnet siteVni: type: integer description: VxLAN ID connect site to vCPE vpcName: type: string description: in format of domain/project/router, should keep consistent with NFVO vpcSubnetName: type: string description: name of subnet in VPC, should keep consistent with NFVO vpcSubnetCidr: type: string description: vpc cidr vpcVni: type: integer description: vpc subnet vxlanID, should keep consistent with NFVO vpnType: type: string description: vpn connection type between vCPE and vpc. constraints: - valid_values: ['IpSec','VxLAN','MPLS_VPN'] default: IpSec dcGwIp: type: string description: mgrIp of dcGW dcFwIp: type: string description: mgrIp of dc Firewall dcLbIp: type: string description: mgrIp of dc Load Balancer # ***************************************************************************** # node templates # ***************************************************************************** node_templates: # Nodes thinCpe: type: sdno.node.Node properties: siteName: {get_input: siteName} id: '0' vCpe: type: sdno.node.Node properties: siteName: {get_input: siteName} id: '0' dcFw: type: sdno.node.Node properties: ipAddress: {get_input: dcFwIp} id: '0' dcLb: type: sdno.node.Node properties: ipAddress: {get_input: dcLbIp} id: '0' dcGw: type: sdno.node.Node properties: ipAddress: {get_input: dcGwIp} id: '0' # do we need another node for dc endpoint? original template had vpc as node as well # Connectivity Service enterprise2Dc: type: sdno.node.ConnectivityService.Enterprise2Dc requirements: - endPoint: thinCpeServiceEndpoint - endPoint: dcServiceEndpoint - realizes: siteSubnet - realizes: vpn - realizes: vpcSubnet - realizes: sfc thinCpeServiceEndpoint: type: sdno.node.ServiceEndPoint.ThinCpe requirements: - node: thinCpe dcServiceEndpoint: type: sdno.node.ServiceEndPoint.DcEndpoint requirements: #- node: vpc or something else - node: dcGw # ***************************************************************************** # VPC Node Templates (VpcSubnet and Vpc) # ***************************************************************************** vpcSubnet: type: sdno.node.Connection.VpcSubnet properties: cidr: {get_input: vpcSubnetCidr} name: {get_input: vpcSubnetName} vni: {get_input: vpcVni} requirements: - realizes: vpc vpc: type: sdno.node.Connection.Vpc properties: name: {get_input: vpcName} # ***************************************************************************** # Site Node Templates (Subnet, Vlan, Site with thinCPE and cCPE) # ***************************************************************************** siteSubnet: type: sdno.node.Connection.SiteSubnet properties: vni: {get_input: siteVni} cidrBlock: {get_input: siteCidr} name: {concat: ['siteSubnet_' , {get_input: vpcName}]} requirements: - realizes: vlan vlan: type: sdno.node.Connection.Vlan properties: vlanId: {get_input: subnetVlan} name: {concat: ['vlan_' , {get_input: vpcName}]} requirements: - realizes: site thinCpeConnectionEndPoint: type: sdno.node.ConnectionEndPoint.ThinCpe requirements: - realizes: site - node: thinCpe vCpeConnectionEndPoint: type: sdno.node.ConnectionEndPoint.VCpe requirements: - realizes: site - node: vCpe site: type: sdno.node.Connection.Site properties: name: {get_input: siteName} siteDescriptor: {get_input: vpnType} requirements: - endPoint: vCpeConnectionEndPoint - endPoint: thinCpeConnectionEndPoint # ***************************************************************************** # VPN Node Templates (Vpn, VpnConnection with siteGW and vpcGW) # Order of requests: vpn, siteGW, vpcGW, vpnConnection # ***************************************************************************** vpn: type: sdno.node.Connection.Vpn properties: name: {get_input: vpnName} description: {get_input: vpnDescription} vpnDescriptor: {get_input: vpnType} requirements: - realizes: vpnConnection siteGateway: type: sdno.node.ConnectionEndPoint.SiteGateway properties: name: {concat: ['siteGateway_' , {get_input: vpcName}]} vpcGateway: type: sdno.node.ConnectionEndPoint.VpcGateway properties: name: {concat: ['vpcGateway_' , {get_input: vpcName}]} vpnConnection: type: sdno.node.Connection.VpnConnection properties: name: {concat: ['vpnConnection_' , {get_input: vpcName}]} requirements: - endPoint: siteGateway - endPoint: vpcGateway # ***************************************************************************** # SFC Node Template # ***************************************************************************** sfc: type: sdno.node.Connection.Sfc properties: servicePathHops: - {hopNumber: 1, sfiId: {get_attribute: [dcFw, id] }, sfgId: "", name: 'dcFw'} - {hopNumber: 2, sfiId: {get_attribute: [dcLb, id] }, sfgId: "", name: 'dcLb'} scfNeId: {get_attribute: [dcGw, id]} name: {concat: ['sfc_' , {get_input: vpcName}]} substitution_mappings: node_type: tosca.nodes.sdno.NS.overlayvpn