aboutsummaryrefslogtreecommitdiffstats
path: root/heat/vLB_CDS/base_template.yaml
blob: 1437206fbf4226eaf8607ff239126a97c456a00f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
##########################################################################
#
#==================LICENSE_START==========================================
#
#
# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
#
# 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.
#
#==================LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
#
##########################################################################

heat_template_version: 2013-05-23

description: Heat template that deploys common resources

##############
#            #
# PARAMETERS #
#            #
##############

parameters:

  vlb_private_net_id:
    type: string
    label: vLoadBalancer private network name or ID
    description: Private network that connects vLoadBalancer with vDNSs
  pktgen_private_net_id:
    type: string
    label: vPacketGen private network name or ID
    description: Private network that connects vLoadBalancer with vPacketGen
  vlb_private_net_cidr:
    type: string
    label: vLoadBalancer private network CIDR
    description: The CIDR of the vLoadBalancer private network
  pktgen_private_net_cidr:
    type: string
    label: vPacketGen private network CIDR
    description: The CIDR of the vPacketGen private network
  vnf_id:
    type: string
    label: VNF ID
    description: The VNF ID is provided by ONAP
  vnf_name:
    type: string
    label: VNF NAME
    description: The VNF NAME is provided by ONAP
  vlb_0_int_pktgen_private_port_0_mac:
    type: string
    label: vLB MAC address
    description: MAC address of the vLB used by the vPacketGen VM
  vpg_0_int_pktgen_private_port_0_mac:
    type: string
    label: vPacketGen MAC address
    description: MAC address of the vPacketGen used by the vLB VM
  key_name:
    type: string
    label: Key pair name
    description: Public/Private key pair name
  pub_key:
    type: string
    label: Public key
    description: Public key to be installed on the compute instance


#############
#           #
# RESOURCES #
#           #
#############

resources:

  random-str_0:
    type: OS::Heat::RandomString
    properties:
      length: 4

  my_keypair_0:
    type: OS::Nova::KeyPair
    properties:
      name:
        str_replace:
          template: vnfname_base_rand
          params:
            base: { get_param: key_name }
            rand: { get_resource: random-str_0 }
            vnfname: { get_param: vnf_name }
      public_key: { get_param: pub_key }
      save_private_key: false

  # NETWORK_ROLE: private
  int_private_network:
    type: OS::Neutron::Net
    properties:
      name:
        str_replace:
          template: vnfname_privatenetid
          params:
            privatenetid: { get_param: vlb_private_net_id }
            vnfname: { get_param: vnf_name }

  # NETWORK_ROLE: private
  int_private_subnet_0:
    type: OS::Neutron::Subnet
    properties:
      name:
        str_replace:
          template: vnfname_privatenetid_subnet
          params:
            privatenetid: { get_param: vlb_private_net_id }
            vnfname: { get_param: vnf_name }
      network: { get_resource: int_private_network }
      cidr: { get_param: vlb_private_net_cidr }

  # NETWORK_ROLE: pktgen_private
  int_pktgen_private_network:
    type: OS::Neutron::Net
    properties:
      name:
        str_replace:
          template: vnfname_privatenetid
          params:
            privatenetid: { get_param: pktgen_private_net_id }
            vnfname: { get_param: vnf_name }

  # NETWORK_ROLE: pktgen_private
  int_pktgen_private_subnet_0:
    type: OS::Neutron::Subnet
    properties:
      name:
        str_replace:
          template: vnfname_privatenetid_subnet
          params:
            privatenetid: { get_param: pktgen_private_net_id }
            vnfname: { get_param: vnf_name }
      network: { get_resource: int_pktgen_private_network }
      cidr: { get_param: pktgen_private_net_cidr }


outputs:
  int_private_subnet_id:
    value: { get_resource: int_private_subnet_0 }
  int_private_net_id:
    value: { get_resource: int_private_network }
  int_pktgen_private_subnet_id:
    value: { get_resource: int_pktgen_private_subnet_0 }
  int_pktgen_private_net_id:
    value: { get_resource: int_pktgen_private_network }
  keypair:
    value: { get_resource: my_keypair_0 }
  vnf_id:
    value: { get_param: vnf_id }
  vnf_name:
    value: { get_param: vnf_name }
  vlb_0_mac_address:
    value: { get_param: vlb_0_int_pktgen_private_port_0_mac }
  vpg_0_mac_address:
    value: { get_param: vpg_0_int_pktgen_private_port_0_mac }