diff options
author | Michael Polenchuk <mpolenchuk@mirantis.com> | 2018-06-25 21:42:26 +0400 |
---|---|---|
committer | Michael Polenchuk <mpolenchuk@mirantis.com> | 2018-06-26 14:14:34 +0400 |
commit | 75cbbc689bd9428384f4828f970981da52e92a04 (patch) | |
tree | e3b61e961040e829d3f80f2232c3582f13bcae97 | |
parent | 3ed2d8dab3d75628cd1f7edd47051623c643592c (diff) |
[ha] Add fabric to maas admin subnet
Change-Id: Ida4cf736dfe60886384e7e180d3e43faf811bd58
Signed-off-by: Michael Polenchuk <mpolenchuk@mirantis.com>
-rw-r--r-- | mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch | 89 | ||||
-rw-r--r-- | mcp/patches/patches.list | 1 | ||||
-rw-r--r-- | mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 | 13 |
3 files changed, 8 insertions, 95 deletions
diff --git a/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch b/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch deleted file mode 100644 index d2f531168..000000000 --- a/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch +++ /dev/null @@ -1,89 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2018 Mirantis Inc., Enea AB 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 -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -From: Alexandru Avadanii <Alexandru.Avadanii@enea.com> -Date: Sat, 19 Aug 2017 02:03:01 +0200 -Subject: [PATCH] maas: module: Add VLAN DHCP enable support - -MaaS custom py module does not support VLAN configuration. -This should be implemented by adding a dedicated class for VLAN. -However, we are only interested in updating an existign VLAN to -enable DHCP on an existing IP range (set up via subnet configuration), -so extend existing subnet handling to include basic VLAN update. - -NOTE: Design-wise, this is hacky, and its only purpose is to allow -setting 'dhcp_on=True' for an existing VLAN. - -Example reclass model usage: -maas: - region: - subnets: - 192.168.11.0/24: - # ... - vlans: - untagged: - vid: 0 - dhcp_on: true - primary_rack: mas01 - -Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> ---- - -diff --git a/_modules/maas.py b/_modules/maas.py -index d3227ca..8a2243d 100644 ---- a/_modules/maas.py -+++ b/_modules/maas.py -@@ -204,6 +204,7 @@ - 'gateway_ip': subnet['gateway_ip'], - } - self._iprange = subnet['iprange'] -+ self._vlans = subnet['vlans'] - return data - - def update(self, new, old): -@@ -214,6 +215,7 @@ - response = super(Subnet, self).send(data) - res_json = json.loads(response) - self._process_iprange(res_json['id']) -+ self._process_dhcp_vlans_update(data) - return response - - def _get_fabric_from_cidr(self, cidr): -@@ -248,6 +250,32 @@ - else: - self._maas.post(u'api/2.0/ipranges/', None, **data) - -+ def _process_dhcp_vlans_update(self, subnet_data): -+ fabric_vlans = json.loads(self._maas.get(u'api/2.0/fabrics/{0}/vlans/' -+ .format(subnet_data['fabric'])).read()) -+ LOG.warn('all fabric %s vlans %s', subnet_data['fabric'], fabric_vlans) -+ for vlan_name, vlan_data in self._vlans.iteritems(): -+ update = False -+ old_data = None -+ for fabric_vlan in fabric_vlans: -+ if fabric_vlan['vid'] == vlan_data['vid']: -+ update = True -+ old_data = fabric_vlan -+ break -+ data = { -+ 'mtu': str(vlan_data.get('mtu', 1500)), -+ 'dhcp_on': str(vlan_data.get('dhcp_on')), -+ 'primary_rack': str(vlan_data.get('primary_rack')), -+ 'secondary_rack': str(vlan_data.get('secondary_rack', '')) -+ } -+ if update: -+ LOG.warn('UPDATING %s %s', data, old_data) -+ self._maas.put(u'api/2.0/fabrics/{0}/vlans/{1}/' -+ .format(subnet_data['fabric'], old_data['vid']), -+ **data) -+ else: -+ LOG.warn('MISSING vlan %s, not doing anything', data) -+ - - class DHCPSnippet(MaasObject): - def __init__(self): diff --git a/mcp/patches/patches.list b/mcp/patches/patches.list index 4d22c6178..a17fd694c 100644 --- a/mcp/patches/patches.list +++ b/mcp/patches/patches.list @@ -6,7 +6,6 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## /usr/share/salt-formulas/env: 0002-maas-region-skip-credentials-update.patch -/usr/share/salt-formulas/env: 0006-maas-module-Add-VLAN-DHCP-enable-support.patch /usr/share/salt-formulas/env: 0007-network.interface-Fix-ifup-OVS-port-with-route.patch /usr/share/salt-formulas/env: 0008-Handle-extra-environment-variables.patch /usr/share/salt-formulas/env: 0010-maas-region-allow-timeout-override.patch diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 index edec24ee1..6c11994e8 100644 --- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 +++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 @@ -57,15 +57,18 @@ parameters: name: {{ nm.net_admin }} cidr: {{ nm.net_admin }} gateway_ip: ${_param:single_address} + fabric: fabric-2 iprange: start: {{ nm.net_admin_pool_start }} end: {{ nm.net_admin_pool_end }} type: dynamic - vlans: - untagged: - vid: 0 - dhcp_on: true - primary_rack: ${_param:infra_maas_node01_hostname} + fabrics: + fabric-2: + description: "Fabric Admin" + vlan: + 0: + description: "VLAN 0" + dhcp: true sshprefs: - '{{ conf.MAAS_SSH_KEY }}' {%- if 'aarch64' in nm.cluster.arch %} |