blob: bfda6a87c9565ef3ce16c0c3d5f6ad702e43ff48 [file] [log] [blame]
Gopinath Tagete76cad42018-08-27 10:49:50 -07001{{/* vim: set filetype=mustache: */}}
2{{/*
3Copyright 2018-present Open Networking Foundation
4
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16*/}}
17{{- define "vepcservice.serviceTosca" -}}
18tosca_definitions_version: tosca_simple_yaml_1_0
19
20imports:
21 - custom_types/image.yaml
22 - custom_types/site.yaml
23 - custom_types/vepcservice.yaml
24 - custom_types/slice.yaml
25 - custom_types/trustdomain.yaml
26
27description: Configures the virtual EPC service
28
29topology_template:
30 node_templates:
31
32 default_trustdomain:
33 type: tosca.nodes.TrustDomain
34 properties:
35 name: "default"
36 must-exist: true
37
38 service#vepcservice:
39 type: tosca.nodes.VEpcService
40 properties:
41 name: vepcservice
42 mysite:
43 type: tosca.nodes.Site
44 properties:
45 name: "mysite"
46 must-exist: true
47
48 vepcserviceinstance:
49 type: tosca.nodes.VEpcServiceInstance
50 properties:
51 name: "EPC2 for Compute"
52 requirements:
53 - owner:
54 node: service#vepcservice
55 relationship: tosca.relationships.BelongsToOne
56
57 kubernetesresourceinstance_ngic_configmap:
58 type: tosca.nodes.KubernetesResourceInstance
59 properties:
60 name: "NGIC Config Map"
61 resource_definition: |
62 apiVersion: v1
63 data:
64 adc_rules.cfg: |
65 #Format -
66 #[ IP | IP Prefix | domain ] DROP? Sponsor-ID Service-ID Rate-Group? [Tariff-Group Tariff-Time]?
67 # Note: it is possible that ADC rules have conflicts & in that case rules are applied by line number...
68 # Rules defined first have a higher priority, unless DROP is specified (i.e. multiple rules for the same IP
69 # When specifying DROP with an IP address, use a prefix of 32 to prevent DNS results from overwriting rule
70
71 13.1.1.111 Example Internet Zero-Rate
72 13.1.1.112/24 Example Management Zero-Rate
73 13.1.1.113 Example Provisioning Zero-Rate
74 www.example.gov Example Internet Zero-Rate
75 www.drop_example.com DROP Example CIPA
76 cp_config.cfg: |
77 SGW_S11_IP=$(hostname)
78 SGW_S1U_IP=$(netstat -ie | grep -A1 s1u-net | tail -1 | awk '{print $2}' | tr -d addr:)
79 MGMT_INFO="-s ${SGW_S11_IP} -m ${MME_S11_IP} -w ${SGW_S1U_IP}"
80 APN_INFO="-i ${IP_POOL_IP} -p ${IP_POOL_MASK} -a ${APN}"
81 TEID_INFO="-t ${S11_TEID_POOL_START} -e ${S11_TEID_POOL_STOP} -u ${S1U_TEID_POOL_START} -o ${S1U_TEID_POOL_STOP}"
82 APP_ARGS="${MGMT_INFO} ${APN_INFO} ${TEID_INFO}"
83
84 CORES="-c $(taskset -p $$ | awk '{print $NF}')"
85 MEMORY="-n4 --no-huge -m 4096 --file-prefix cp"
86 DEVICES="--no-pci"
87 EAL_ARGS="${CORES} ${MEMORY} ${DEVICES}"
88 dp_config.cfg: |
89 CORES="-c $(taskset -p $$ | awk '{print $NF}')"
90 MEMORY="-n4 --no-huge -m 8192 --file-prefix cp"
91
92 SGW_S1U_IP=$(netstat -ie | grep -A1 s1u-net | tail -1 | awk '{print $2}' | tr -d addr:)
93 SGW_SGI_IP=$(netstat -ie | grep -A1 sgi-net | tail -1 | awk '{print $2}' | tr -d addr:)
94 S1U_MAC=$( netstat -ie | grep -B1 $SGW_S1U_IP | head -n1 | awk '{print $5}' )
95 SGI_MAC=$( netstat -ie | grep -B1 $SGW_SGI_IP | head -n1 | awk '{print $5}' )
96 DEVICES="--no-pci --vdev eth_af_packet0,iface=s1u-net --vdev eth_af_packet1,iface=sgi-net"
97
98 EAL_ARGS="${CORES} ${MEMORY} ${DEVICES}"
99
100 S1U="--s1u_ip ${SGW_S1U_IP} --s1u_mac ${S1U_MAC}"
101 SGI="--sgi_ip ${SGW_SGI_IP} --sgi_mac ${SGI_MAC} --sgi_gw_ip ${RTR_SGI_IP} --sgi_mask ${SGI_MASK}"
102 WORKERS="--num_workers 1"
103 MISC="--log 1"
104
105 APP_ARGS="${S1U} ${SGI} ${WORKERS} ${MISC}"
106 interface.cfg: "; Copyright (c) 2017 Intel Corporation\n;\n; Licensed under the
107 Apache License, Version 2.0 (the \"License\");\n; you may not use this file except
108 in compliance with the License.\n; You may obtain a copy of the License at\n;\n;
109 \ http://www.apache.org/licenses/LICENSE-2.0\n;\n; Unless required by applicable
110 law or agreed to in writing, software\n; distributed under the License is distributed
111 on an \"AS IS\" BASIS,\n; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
112 express or implied.\n; See the License for the specific language governing permissions
113 and\n; limitations under the License.\n\n[0]\ndp_comm_ip = 127.0.0.1\ndp_comm_port
114 = 20\ncp_comm_ip = 127.0.0.1\ncp_comm_port = 21\n"
115 static_pcc.cfg: |+
116 [GLOBAL]
117 NUM_PACKET_FILTERS = 1
118
119 ;default filter - must be first for now (until DP doesn't install any filters)
120 [PACKET_FILTER_0]
121 RATING_GROUP = 9
122 ;Max Bit Rate (MBR) unit= bps
123 MBR = 512000
124
125 [PACKET_FILTER_1]
126 RATING_GROUP = 5
127 MBR = 1000000
128 DIRECTION = bidirectional
129 PRECEDENCE = 255
130 IPV4_REMOTE = 13.1.0.0
131 IPV4_REMOTE_MASK = 255.255.0.0
132 PROTOCOL = 17
133 REMOTE_LOW_LIMIT_PORT = 5060
134 REMOTE_HIGH_LIMIT_PORT = 5060
135
136 [PACKET_FILTER_2]
137 RATING_GROUP = 1
138 MBR = 2000000
139 DIRECTION = bidirectional
140 PRECEDENCE = 255
141 IPV4_REMOTE = 13.1.0.0
142 IPV4_REMOTE_MASK = 255.255.0.0
143 PROTOCOL = 17
144 LOCAL_LOW_LIMIT_PORT = 17000
145 LOCAL_HIGH_LIMIT_PORT = 17010
146
147 [PACKET_FILTER_3]
148 RATING_GROUP = 7
149 MBR = 4000000
150 DIRECTION = bidirectional
151 PRECEDENCE = 255
152 IPV4_REMOTE = 13.1.0.0
153 IPV4_REMOTE_MASK = 255.255.0.0
154 PROTOCOL = 17
155 LOCAL_LOW_LIMIT_PORT = 8000
156 LOCAL_HIGH_LIMIT_PORT = 8080
157
158 kind: ConfigMap
159 metadata:
160 name: ngic-config
161 namespace: epc2
162
163 requirements:
164 - owner:
165 node: service#kubernetes
166 relationship: tosca.relationships.BelongsToOne
167
168 kubernetesresourceinstance_mme_service:
169 type: tosca.nodes.KubernetesResourceInstance
170 properties:
171 name: "MME Service"
172 resource_definition: |
173 apiVersion: v1
174 kind: Service
175 metadata:
176 name: mme
177 namespace: epc2
178 spec:
179 selector:
180 app: mme
181 clusterIP: None
182 ports:
183 - name: s11
184 port: 2123
185 protocol: UDP
186 - name: s1ap
187 port: 36412
188 protocol: TCP
189 - name: s6a
190 port: 3868
191 protocol: TCP
192
193 requirements:
194 - owner:
195 node: service#kubernetes
196 relationship: tosca.relationships.BelongsToOne
197
198 kubernetesresourceinstance_mme_statefulset:
199 type: tosca.nodes.KubernetesResourceInstance
200 properties:
201 name: "MME StatefulSet"
202 resource_definition: |
203 apiVersion: apps/v1
204 kind: StatefulSet
205 metadata:
206 name: mme
207 namespace: epc2
208 labels:
209 app: mme
210 spec:
211 replicas: 1
212 selector:
213 matchLabels:
214 app: mme
215 serviceName: "mme"
216 template:
217 metadata:
218 labels:
219 app: mme
220 spec:
221 terminationGracePeriodSeconds: 1
222 initContainers:
223 - name: init-mme
224 image: "ngick8stesting/c3po-mmeinit"
225 command: [ "sh", "-c"]
226 securityContext:
227 capabilities:
228 add:
229 - NET_ADMIN
230 args:
231 - iptables -A OUTPUT -p sctp --sport 36412 --chunk-types any ABORT -j DROP;
232 until nslookup hss-0.hss.epc2.svc.cluster.local;
233 do echo waiting for hss; sleep 2; done;
234 containers:
235 - name: mme
236 image: "ngick8stesting/c3po-mme:5e2eaf6"
237 imagePullPolicy: Always
238 env:
239 - name: SGW_S11_IP
240 value: ngic-0.ngic.epc2.svc.cluster.local
241 - name: MME_ETH0_IP
242 valueFrom:
243 fieldRef:
244 fieldPath: status.podIP
245 - name: ENB_S1AP_IP
246 value: 10.1.11.3
247 - name: CONNECT_PEER
248 value: hss-0.hss.epc2.svc.cluster.local
249 - name: VAR_HSS_REALM
250 value: hss.epc2.svc.cluster.local
251 - name: HSS_S6A_IP
252 value: hss-0.hss.epc2.svc.cluster.local
253 - name: HSS_PORT
254 value: "3868"
255
256 stdin: true
257 tty: true
258 #command: [ "sleep", "3600"]
259 #volumeMounts:
260 #- name: config-volume
261 # mountPath: /opt/ngic/config
262 #- name: scripts-volume
263 # mountPath: /opt/ngic/scripts
264 #- name: hugepage
265 # mountPath: /dev/hugepages
266 resources:
267 limits:
268 cpu: 3
269 memory: 1Gi
270 #volumes:
271 # - name: config-volume
272 # configMap:
273 # name: ngic-config
274 # - name: scripts-volume
275 # secret:
276 # secretName: ngic-scripts
277 # defaultMode: 511
278 # - name: hugepage
279 # emptyDir:
280 # medium: HugePages
281
282 requirements:
283 - owner:
284 node: service#kubernetes
285 relationship: tosca.relationships.BelongsToOne
286
287 kubernetesresourceinstance_hss_service:
288 type: tosca.nodes.KubernetesResourceInstance
289 properties:
290 name: "HSS Service"
291 resource_definition: |
292 apiVersion: v1
293 kind: Service
294 metadata:
295 name: hss
296 namespace: epc2
297 spec:
298 selector:
299 app: hss
300 clusterIP: None
301 ports:
302 - name: s6a
303 port: 3868
304 protocol: TCP
305
306 requirements:
307 - owner:
308 node: service#kubernetes
309 relationship: tosca.relationships.BelongsToOne
310
311 kubernetesresourceinstance_hss_statefulset:
312 type: tosca.nodes.KubernetesResourceInstance
313 properties:
314 name: "HSS StatefulSet"
315 resource_definition: |
316 apiVersion: apps/v1
317 kind: StatefulSet
318 metadata:
319 name: hss
320 namespace: epc2
321 labels:
322 app: hss
323 spec:
324 replicas: 1
325 selector:
326 matchLabels:
327 app: hss
328 serviceName: "hss"
329 template:
330 metadata:
331 labels:
332 app: hss
333 spec:
334 terminationGracePeriodSeconds: 1
335 initContainers:
336 - name: init-db
337 image: "ngick8stesting/c3po-cassandra:5e2eaf6"
338 command: [ "bash", "-xc"]
339 args:
340 - until nslookup cassandra; do echo waiting for cassandra; sleep 2; done;
341 cqlsh --file /scripts/oai_db.cql cassandra;
342 /scripts/data_provisioning_users.sh 208014567891200 1122334455 apn1 465B5CE8B199B49FAA5F0A2EE238A6BC 100 cassandra mme-0.mme.epc2.svc.cluster.local mme.epc2.svc.cluster.local;
343 /scripts/data_provisioning_mme.sh 1 19136246000 mme-0.mme.epc2.svc.cluster.local mme.epc2.svc.cluster.local 1 cassandra;
344 /scripts/data_provisioning_mme.sh 1 19136246000 smsrouter.test3gpp.net test3gpp.net 0 cassandra;
345 containers:
346 - name: hss
347 image: "ngick8stesting/c3po-hss:5e2eaf6"
348 imagePullPolicy: Always
349 env:
350 - name: CASSANDRA_ADDR
351 value: cassandra
352 - name: MME_ADDR
353 value: mme-0.mme.epc2.svc.cluster.local
354 #command: [ "sleep", "3600"]
355 resources:
356 limits:
357 cpu: 3
358 memory: 1Gi
359
360 requirements:
361 - owner:
362 node: service#kubernetes
363 relationship: tosca.relationships.BelongsToOne
364
365 kubernetesresourceinstance_hssdb_service:
366 type: tosca.nodes.KubernetesResourceInstance
367 properties:
368 name: "HSS Cassandra Service"
369 resource_definition: |
370 apiVersion: v1
371 kind: Service
372 metadata:
373 labels:
374 app: cassandra
375 name: cassandra
376 namespace: epc2
377 spec:
378 clusterIP: None
379 ports:
380 - port: 9042
381 selector:
382 app: cassandra
383
384 requirements:
385 - owner:
386 node: service#kubernetes
387 relationship: tosca.relationships.BelongsToOne
388
389 kubernetesresourceinstance_hssdb_statefulset:
390 type: tosca.nodes.KubernetesResourceInstance
391 properties:
392 name: "HSS Cassandra StatefulSet"
393 resource_definition: |
394 apiVersion: "apps/v1"
395 kind: StatefulSet
396 metadata:
397 name: cassandra
398 namespace: epc2
399 labels:
400 app: cassandra
401 spec:
402 serviceName: cassandra
403 replicas: 1 # 3
404 selector:
405 matchLabels:
406 app: cassandra
407 template:
408 metadata:
409 labels:
410 app: cassandra
411 spec:
412 terminationGracePeriodSeconds: 1
413 containers:
414 - name: cassandra
415 image: ngick8stesting/c3po-cassandra:5e2eaf6
416 imagePullPolicy: Always
417 ports:
418 - containerPort: 7000
419 name: intra-node
420 - containerPort: 7001
421 name: tls-intra-node
422 - containerPort: 7199
423 name: jmx
424 - containerPort: 9042
425 name: cql
426 resources:
427 limits:
428 cpu: "3"
429 memory: 4Gi
430 # Probably Cassandra:3.x?
431 #securityContext:
432 # capabilities:
433 # add:
434 # - IPC_LOCK
435 # Later
436 #lifecycle:
437 # preStop:
438 # exec:
439 # command:
440 # - /bin/sh
441 # - -c
442 # - nodetool drain
443 env:
444 # Performance optimizations
445 - name: MAX_HEAP_SIZE
446 value: 512M
447 - name: HEAP_NEWSIZE
448 value: 100M
449 - name: CASSANDRA_SEEDS
450 value: "cassandra-0.cassandra.epc2.svc.cluster.local"
451 - name: CASSANDRA_CLUSTER_NAME
452 value: "HSS Cluster"
453 - name: CASSANDRA_RPC_ADDRESS
454 valueFrom:
455 fieldRef:
456 fieldPath: status.podIP
457 - name: CASSANDRA_ENDPOINT_SNITCH
458 value: "GossipingPropertyFileSnitch"
459 readinessProbe:
460 exec:
461 command: ["/bin/bash", "-c", "nodetool status -r | awk -v h=$(hostname) '$2==h {exit ($1==\"UN\" ? 0 : -1)}'"]
462 initialDelaySeconds: 15
463 timeoutSeconds: 5
464 # volumeMounts:
465 # - name: cassandra-data
466 # mountPath: /var/lib/cassandra
467 # volumeClaimTemplates:
468 # - metadata:
469 # name: cassandra-data
470 # spec:
471 # accessModes: [ "ReadWriteOnce" ]
472 # resources:
473 # requests:
474 # storage: 1Gi
475
476 requirements:
477 - owner:
478 node: service#kubernetes
479 relationship: tosca.relationships.BelongsToOne
480
481 kubernetesresourceinstance_spgwcu_service:
482 type: tosca.nodes.KubernetesResourceInstance
483 properties:
484 name: "SPGW Control and User Service"
485 resource_definition: |
486 apiVersion: v1
487 kind: Service
488 metadata:
489 name: ngic
490 namespace: epc2
491 spec:
492 selector:
493 app: ngic
494 clusterIP: None
495 ports:
496 - name: s11
497 port: 2123
498 protocol: UDP
499
500 requirements:
501 - owner:
502 node: service#kubernetes
503 relationship: tosca.relationships.BelongsToOne
504
505 kubernetesresourceinstance_spgwcu_statefulset:
506 type: tosca.nodes.KubernetesResourceInstance
507 properties:
508 name: "SPGW Control and User StatefulSet"
509 resource_definition: |
510 apiVersion: apps/v1
511 kind: StatefulSet
512 metadata:
513 name: ngic
514 namespace: epc2
515 labels:
516 app: ngic
517 spec:
518 replicas: 1
519 selector:
520 matchLabels:
521 app: ngic
522 serviceName: "ngic"
523 template:
524 metadata:
525 labels:
526 app: ngic
527 annotations:
528 kubernetes.v1.cni.cncf.io/networks: '[
529 { "name": "s1u-net", "interfaceRequest": "s1u-net" },
530 { "name": "sgi-net", "interfaceRequest": "sgi-net" }
531 ]'
532 spec:
533 initContainers:
534 - name: init-iptables
535 image: "ngick8stesting/c3po-mmeinit"
536 command: [ "sh", "-c"]
537 securityContext:
538 capabilities:
539 add:
540 - NET_ADMIN
541 args:
542 - iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP;
543 terminationGracePeriodSeconds: 1
544 containers:
545 - name: ngic-cp
546 image: "ngick8stesting/ngic-cp:d9b315c"
547 stdin: true
548 command: [ "bash", "-cx", ". /opt/ngic/config/cp_config.cfg; ./ngic_controlplane $EAL_ARGS -- $APP_ARGS"]
549 #command: ["sleep", "3600"]
550 tty: true
551 env:
552 - name: MME_S11_IP
553 value: mme-0.mme.epc2.svc.cluster.local
554 #- name: SGW_S1U_IP # for now,this will be in our own pod
555 # value: "5.5.5.5"
556 - name: APN
557 value: apn1
558 - name: IP_POOL_IP
559 value: "16.0.0.0"
560 - name: IP_POOL_MASK
561 value: "255.240.0.0"
562 - name: S11_TEID_POOL_START
563 value: "00100000"
564 - name: S11_TEID_POOL_STOP
565 value: "001fffff"
566 - name: S1U_TEID_POOL_START
567 value: "00100000"
568 - name: S1U_TEID_POOL_STOP
569 value: "001fffff"
570 volumeMounts:
571 - name: config-volume
572 mountPath: /opt/ngic/config
573 #- name: hugepage
574 # mountPath: /dev/hugepages
575 resources:
576 limits:
577 #hugepages-2Mi: 4Gi
578 cpu: 3
579 memory: 4Gi
580 - name: ngic-dp
581 image: "ngiccorddemo/ngic-dp:k8s-bm"
582 stdin: true
583 tty: true
584 env:
585 - name: RTR_SGI_IP
586 value: "13.1.1.110"
587 - name: SGI_MASK
588 value: "255.255.255.0"
589 command: [ "bash", "-cx", ". /opt/ngic/config/dp_config.cfg ; ./ngic_dataplane $EAL_ARGS -- $APP_ARGS"]
590 #command: ["sleep", "3600"]
591 volumeMounts:
592 - name: config-volume
593 mountPath: /opt/ngic/config
594 #- name: hugepage
595 # mountPath: /dev/hugepages
596 resources:
597 limits:
598 #hugepages-1Gi: 8Gi
599 cpu: 8
600 memory: 8Gi #200Mi
601 intel.com/sriov: '2'
602 securityContext:
603 privileged: true
604 capabilities:
605 add:
606 - NET_ADMIN
607 - IPC_LOCK
608 volumes:
609 - name: config-volume
610 configMap:
611 name: ngic-config
612 #- name: hugepage
613 # emptyDir:
614 # medium: HugePages
615
616 requirements:
617 - owner:
618 node: service#kubernetes
619 relationship: tosca.relationships.BelongsToOne
620
621 vepcresourceinstancelink_ngic_configmap:
622 type: tosca.nodes.VEpcResourceInstanceLink
623 properties:
624 name: "NGIC ConfigMap Resource Link"
625
626 requirements:
627 - resource_instance:
628 node: kubernetesresourceinstance_ngic_configmap
629 relationship: tosca.relationships.BelongsToOne
630 - vepc_service_instance:
631 node: vepcserviceinstance
632 relationship: tosca.relationships.BelongsToOne
633
634 vepcresourceinstancelink_mme_service:
635 type: tosca.nodes.VEpcResourceInstanceLink
636 properties:
637 name: "MME Service Resource Link"
638
639 requirements:
640 - resource_instance:
641 node: kubernetesresourceinstance_mme_service
642 relationship: tosca.relationships.BelongsToOne
643 - vepc_service_instance:
644 node: vepcserviceinstance
645 relationship: tosca.relationships.BelongsToOne
646
647 vepcresourceinstancelink_mme_statefulset:
648 type: tosca.nodes.VEpcResourceInstanceLink
649 properties:
650 name: "MME StatefulSet Resource Link"
651
652 requirements:
653 - resource_instance:
654 node: kubernetesresourceinstance_mme_statefulset
655 relationship: tosca.relationships.BelongsToOne
656 - vepc_service_instance:
657 node: vepcserviceinstance
658 relationship: tosca.relationships.BelongsToOne
659
660 vepcresourceinstancelink_hss_service:
661 type: tosca.nodes.VEpcResourceInstanceLink
662 properties:
663 name: "HSS Service Resource Link"
664
665 requirements:
666 - resource_instance:
667 node: kubernetesresourceinstance_hss_service
668 relationship: tosca.relationships.BelongsToOne
669 - vepc_service_instance:
670 node: vepcserviceinstance
671 relationship: tosca.relationships.BelongsToOne
672
673 vepcresourceinstancelink_hss_statefulset:
674 type: tosca.nodes.VEpcResourceInstanceLink
675 properties:
676 name: "HSS StatefulSet Resource Link"
677
678 requirements:
679 - resource_instance:
680 node: kubernetesresourceinstance_hss_statefulset
681 relationship: tosca.relationships.BelongsToOne
682 - vepc_service_instance:
683 node: vepcserviceinstance
684 relationship: tosca.relationships.BelongsToOne
685
686 vepcresourceinstancelink_hssdb_service:
687 type: tosca.nodes.VEpcResourceInstanceLink
688 properties:
689 name: "HSS Cassandra Service Resource Link"
690
691 requirements:
692 - resource_instance:
693 node: kubernetesresourceinstance_hssdb_service
694 relationship: tosca.relationships.BelongsToOne
695 - vepc_service_instance:
696 node: vepcserviceinstance
697 relationship: tosca.relationships.BelongsToOne
698
699 vepcresourceinstancelink_hssdb_statefulset:
700 type: tosca.nodes.VEpcResourceInstanceLink
701 properties:
702 name: "HSS Cassandra StatefulSet Resource Link"
703
704 requirements:
705 - resource_instance:
706 node: kubernetesresourceinstance_hssdb_statefulset
707 relationship: tosca.relationships.BelongsToOne
708 - vepc_service_instance:
709 node: vepcserviceinstance
710 relationship: tosca.relationships.BelongsToOne
711
712 vepcresourceinstancelink_spgwcu_service:
713 type: tosca.nodes.VEpcResourceInstanceLink
714 properties:
715 name: "SPGW Contol and User Service Resource Link"
716
717 requirements:
718 - resource_instance:
719 node: kubernetesresourceinstance_spgwcu_service
720 relationship: tosca.relationships.BelongsToOne
721 - vepc_service_instance:
722 node: vepcserviceinstance
723 relationship: tosca.relationships.BelongsToOne
724
725 vepcresourceinstancelink_spgwcu_statefulset:
726 type: tosca.nodes.VEpcResourceInstanceLink
727 properties:
728 name: "HS SPGW Control and User StatefulSet Resource Link"
729
730 requirements:
731 - resource_instance:
732 node: kubernetesresourceinstance_spgwcu_statefulset
733 relationship: tosca.relationships.BelongsToOne
734 - vepc_service_instance:
735 node: vepcserviceinstance
736 relationship: tosca.relationships.BelongsToOne
737{{- end -}}