Verified Commit 1e1058bc authored by Côme Chilliet's avatar Côme Chilliet
Browse files

:sparkles: feat(ipam) Update Subnet selection depending on VLAN selection

issue #6039
parent c7a7de3f
No related merge requests found
Showing with 24 additions and 8 deletions
+24 -8
......@@ -62,7 +62,7 @@ class ipamVlan extends simplePlugin
),
new IntAttribute(
_('Inner ID'), _('Inner VLAN ID'),
'fdIpamVlanInnerId', FALSE,
'fdIpamVlanInnerId', TRUE,
1, 4096
),
new IntAttribute(
......
......@@ -54,11 +54,6 @@ class networkInterface extends simplePlugin
_('Mac address'), _('Mac address of this system'),
'macAddress', FALSE
),
new ObjectSelectAttribute(
_('Subnet'), _('Subnet'),
'fdNetworkInterfaceSubnetDN', FALSE,
['ipamSubnet']
),
new SetAttribute(
new IPAttribute(
_('IP address'), _('IP addresses this system uses (v4 or v6)'),
......@@ -67,8 +62,8 @@ class networkInterface extends simplePlugin
),
],
],
'vlan' => [
'name' => _('VLAN information'),
'ipam' => [
'name' => _('IPAM'),
'attrs' => [
new ObjectSelectAttribute(
_('VLAN'), _('VLAN'),
......@@ -79,6 +74,10 @@ class networkInterface extends simplePlugin
_('VLAN tag'), _('VLAN tag'),
'fdNetworkInterfaceVlanTag', FALSE
),
new SelectAttribute(
_('Subnet'), _('Subnet'),
'fdNetworkInterfaceSubnetDN', FALSE
),
]
],
];
......@@ -89,5 +88,22 @@ class networkInterface extends simplePlugin
global $config;
parent::__construct($dn, $object, $parent, $mainTab);
$this->attributesAccess['fdNetworkInterfaceVlanId']->setSubmitForm('vlanChanged');
$this->vlanChanged();
}
function vlanChanged()
{
if ($this->fdNetworkInterfaceVlanId != '') {
/* Get the DN of our current VLAN */
$vlans = objects::ls('ipamVlan', ['fdIpamVlanInnerId' => 1], NULL, '(fdIpamVlanInnerId='.ldap_escape_f($this->fdNetworkInterfaceVlanId).')');
$vlanDN = key($vlans);
$subnets = objects::ls('ipamSubnet', ['dn' => 'raw','cn' => 1], NULL, '(fdIpamVlanDN='.$vlanDN.')');
} else {
/* List all the subnets when no VLAN is selected */
$subnets = objects::ls('ipamSubnet', ['dn' => 'raw','cn' => 1]);
}
$this->attributesAccess['fdNetworkInterfaceSubnetDN']->setChoices(array_column($subnets, 'dn'), array_column($subnets, 'cn'));
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment