summaryrefslogtreecommitdiffstats
path: root/config/installers/daisy/network.yaml.j2
blob: f976ab73a9d746d32f0d14125586675693916ee5 (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
##############################################################################
# Copyright (c) 2018 ZTE Corporation and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

##############################################################################
# Description
# MANAGEMENT: used for management
# STORAGE: used for storage access
# EXTERNAL: tenant public/floating IP associated network
# PUBLICAPI: used for horizon access, openstack API access
# TENANT: used for tenant access, vlan and VxLan supported, default VxLan
# HEARTBEAT: used for heartbeat, requires a dedicated interface
##############################################################################

---

network-config-metadata:
  title: 'Deployment Adapter for baremetal POD'
  version: '0.1'
  created: 'Nov 22 2017'
  comment: 'For Daisy initial'

{%- set mapping = {'HEARTBEAT': 'admin',
                   'MANAGEMENT': 'mgmt',
                   'PUBLICAPI': 'mgmt',
                   'STORAGE': 'storage',
                   'TENANT': 'private',
                   'EXTERNAL': 'public'} -%}

{%- if "idf" in conf and ("daisy" in conf["idf"] or "fuel" in conf["idf"]) -%}
  {%- if "daisy" in conf["idf"] -%}
    {%- set installer = "daisy" -%}
  {%- else -%}
    {%- set installer = "fuel" -%}
  {%- endif %}

networks:

  {%- set nodes_num = conf['nodes'] | length -%}
  {%- set networks = {} -%}
  {%- for key in mapping -%}
    {%- set net_data = conf.idf.net_config[mapping[key]] -%}
    {%- set interface = net_data['interface'] -%}
    {%- set interface_name = conf.idf[installer].network.node[0].interfaces[interface] -%}
    {%- set bus_addr = conf.idf[installer].network.node[0].busaddr[interface] -%}
    {%- set vlan = net_data['vlan'] -%}
    {%- if vlan == "native" or vlan == None -%}
      {%- set vlan = "null" -%}
    {%- endif -%}
    {%- set network = net_data['network'] -%}
    {%- set ips = network.split(".") -%}
    {%- set mask = net_data['mask'] -%}
    {%- if 'ip-range' in net_data -%}
      {%- set ip_range = net_data['ip-range'] -%}
      {%- set (start, end) = ip_range.split("-") -%}
    {%- else -%}
      {%- set start = ".".join([ips[0], ips[1], ips[2], "10"]) -%}
      {%- set end = ".".join([ips[0], ips[1], ips[2], "200"]) -%}
    {%- endif -%}
    {%- set vip = start.split(".")[3] | int -%}
    {%- set vip = vip + nodes_num + 10 - (vip + nodes_num) % 10 -%}
    {%- set vip = ".".join([ips[0], ips[1], ips[2], vip | string]) -%}

    {%- if 'gateway' in net_data -%}
      {%- set gateway = net_data.gateway -%}
    {%- else -%}
      {%- set gateway = ".".join([ips[0], ips[1], ips[2], "1"]) -%}
    {%- endif -%}

    {#- set v=v.update(...) is unpredictable and breaks in older j2 -#}
    {%- set _ = networks.update({key: {'interface_name': interface_name,
                                              'bus_addr': bus_addr,
                                              'vlan': vlan,
                                              'network': network,
                                              'mask': mask,
                                              'start': start,
                                              'end': end,
                                              'vip': vip,
                                              'gateway': gateway
                                             }
                                       }) %}

  - cidr: '{{ network }}/{{ mask }}'
    gateway: '{{ gateway }}'
    ip_ranges:
      - 'start': '{{ start }}'
        'end': '{{ end }}'
    vlan_id: {{ vlan }}
    name: '{{ key }}'
    {%- if key == 'EXTERNAL' %}
    network_name: 'admin_external'
    mapping: 'physnet1'
    {%- endif -%}
  {%- endfor %}

interfaces:
  {%- for key in mapping %}
  - name: '{{ key }}'
    interface: '{{ networks[key].interface_name }}'
  {%- endfor %}

internal_vip: '{{ networks['MANAGEMENT'].vip }}'
public_vip: '{{ networks['PUBLICAPI'].vip }}'

{%- endif %}