1 ##############################################################################
2 # Copyright (c) 2017 ZTE Corporation and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
10 ##############################################################################
12 # MANAGEMENT: used for management
13 # STORAGE: used for storage access
14 # EXTERNAL: tenant public/floating IP associated network
15 # PUBLICAPI: used for horizon access, openstack API access
16 # TENANT: used for tenant access, vlan and VxLan supported, default VxLan
17 # HEARTBEAT: used for heartbeat, requires a dedicated interface
18 ##############################################################################
22 network-config-metadata:
23 title: 'Deployment Adapter for baremetal POD'
25 created: 'Nov 22 2017'
26 comment: 'For Daisy initial'
28 {%- set mapping = {'HEARTBEAT': 'admin',
33 'EXTERNAL': 'public'} -%}
35 {%- if "idf" in conf and ("daisy" in conf["idf"] or "fuel" in conf["idf"]) -%}
36 {%- if "daisy" in conf["idf"] -%}
37 {%- set installer = "daisy" -%}
39 {%- set installer = "fuel" -%}
42 {%- if conf.net_config is defined -%}
43 {%- set conf_net_config = conf.net_config -%}
44 {%- elif conf.idf.net_config is defined -%}
45 {%- set conf_net_config = conf.idf.net_config -%}
50 {%- set nodes_num = conf['nodes'] | length -%}
51 {%- set networks = {} -%}
52 {%- for key in mapping -%}
53 {%- set net_data = conf_net_config[mapping[key]] -%}
54 {%- set interface = net_data['interface'] -%}
55 {%- set interface_name = conf.idf[installer].network.node[0].interfaces[interface] -%}
56 {%- set bus_addr = conf.idf[installer].network.node[0].busaddr[interface] -%}
57 {%- set vlan = net_data['vlan'] -%}
58 {%- if vlan == "native" or vlan == None -%}
59 {%- set vlan = "null" -%}
61 {%- set network = net_data['network'] -%}
62 {%- set ips = network.split(".") -%}
63 {%- set mask = net_data['mask'] -%}
64 {%- if 'ip-range' in net_data -%}
65 {%- set ip_range = net_data['ip-range'] -%}
66 {%- set (start, end) = ip_range.split("-") -%}
68 {%- set start = ".".join([ips[0], ips[1], ips[2], "10"]) -%}
69 {%- set end = ".".join([ips[0], ips[1], ips[2], "200"]) -%}
71 {%- set vip = start.split(".")[3] | int -%}
72 {%- set vip = vip + nodes_num + 10 - (vip + nodes_num) % 10 -%}
73 {%- set vip = ".".join([ips[0], ips[1], ips[2], vip | string]) -%}
75 {%- if 'gateway' in net_data -%}
76 {%- set gateway = net_data.gateway -%}
78 {%- set gateway = ".".join([ips[0], ips[1], ips[2], "1"]) -%}
81 {%- set networks = networks.update({key: {'interface_name': interface_name,
93 - cidr: '{{ network }}/{{ mask }}'
94 gateway: '{{ gateway }}'
96 - 'start': '{{ start }}'
100 {%- if key == 'EXTERNAL' %}
101 network_name: 'admin_external'
107 {%- for key in mapping %}
109 interface: '{{ networks[key].interface_name }}'
112 internal_vip: '{{ networks['MANAGEMENT'].vip }}'
113 public_vip: '{{ networks['PUBLICAPI'].vip }}'