protected override void ProcessRecord() { switch (this.ParameterSetName) { case _GRID_BY_OBJECT: case _SESSION_BY_OBJECT: case _ENTERED_SESSION_BY_OBJECT: { base.ProcessByNewObject(this.InputObject); break; } case _GRID_BY_ATTRIBUTE: case _SESSION_BY_ATTRIBUTE: case _ENTERED_SESSION_BY_ATTRIBUTE: case _GRID_NEXT_AVAILABLE_IP: case _SESSION_NEXT_AVAILABLE_IP: case _ENTERED_SESSION_NEXT_AVAILABLE_IP: { List <KeyValuePair <string, string> > PropertyList = new List <KeyValuePair <string, string> >(); if (this.ParameterSetName.EndsWith(_NEXT_AVAILABLE_IP)) { if (NetworkAddressTest.IsIPv4Cidr(this._Network)) { PropertyList.Add(new KeyValuePair <string, string>("ipv4addr", $"func:nextavailableip:{this._Network}")); } else if (NetworkAddressTest.IsIPv6Cidr(this._Network)) { PropertyList.Add(new KeyValuePair <string, string>("ipv6addr", $"func:nextavailableip:{this._Network}")); } else { throw new PSArgumentException("The provided network was not a valid IPv4 or IPv6 network."); } } base.ProcessByAttributeForNewObject("RecordType", PropertyList); break; } default: { throw new PSArgumentException("Bad parameter set name."); } } }
public async Task <string> SetDnsHostRecordNextAvailableIP(string reference, string network, bool enableDhcp = false, bool setHostName = false, string mac = "") { if (!String.IsNullOrEmpty(reference)) { string MACAddress = String.Empty; string TempNetwork = String.Empty; if (NetworkAddressTest.IsMAC(mac, out MACAddress, true, true) && NetworkAddressTest.IsIPv4Cidr(network, out TempNetwork, false, true)) { string HostName = String.Empty; if (setHostName) { host Host = await GetIbxObject <host>(reference, new string[] { "ALL" }); HostName = Host.name; } string Data = "{\"ipv4addrs\":[{\"ipv4addr\":\"func:nextavailableip:" + TempNetwork + "\"" + ",\"configure_for_dhcp\":" + ((enableDhcp) ? "true" : "false") + ((!String.IsNullOrEmpty(mac)) ? ",\"mac\":\"" + MACAddress + "\"" : "") + ((setHostName) ? ",\"options\":[{\"name\":\"host-name\",\"num\":12,\"value\":\"" + HostName + "\"}]" : "") + "}]}"; return(await base.UpdateIbxObject <host>(reference, Data)); } else { return(null); } } else { throw new ArgumentNullException("reference", "Reference data cannot be null or empty."); } }