docs: def Add(self,ports,source_restrictions=None,private_ip=None):
  		"""Add new public_ip.
  
  		Specify one or more ports using a list of dicts with the following keys:
  
  			protocol - TCP, UDP, or ICMP
  			port - int 0-65534
  			port_to - (optional) if specifying a range of ports then the rqange end.  int 0-65534
  
  		Optionally specify one or more source restrictions using a list of dicts with the following keys:
  
  			cidr - string with CIDR notation for the subnet (e.g. "132.200.20.0/24")
  
  		private_ip is the existing private IP address to NAT to (optional)
  
  		# New public IP with single port
  		>>> p = clc.v2.Server(alias='BTDI',id='WA1BTDIX03').PublicIPs()
  		>>> p.Add(ports=[{"protocol": "TCP","port":5}]).WaitUntilComplete()
  		0
  
  		# New public IP with port range
  		>>> p.Add([{"protocol": "UDP","port":10,"port_to":50}]).WaitUntilComplete()
  		0
  
  		# Map existing private IP to single port
  		>>> p.Add(ports=[{"protocol": "TCP","port":22}],k
  		          source_restrictions=[{'cidr': "132.200.20.0/24"}],
  				  private_ip="10.80.148.13").WaitUntilComplete()
  		0
  
  		* Note this API is subject to revision to make ports and source restrictions access to parallel
  		  that used for accessors.
  
  		* public_ips.public_ips will not be updated to reflect this addition. Recreate object after request completes
  		  to access new info including getting the IP itself
  
  		"""
  
  		payload = {'ports': []}
  		for port in ports:
  			if 'port_to' in port:  payload['ports'].append({'protocol':port['protocol'], 'port':port['port'], 'portTo':port['port_to']})
  			else:  payload['ports'].append({'protocol':port['protocol'], 'port':port['port']})
  		if source_restrictions:  payload['sourceRestrictions'] = source_restrictions
  		if private_ip:  payload['internalIPAddress'] = private_ip
  
  		return(clc.v2.Requests(clc.v2.API.Call('POST','servers/%s/%s/publicIPAddresses' % (self.server.alias,self.server.id),
  		                                       json.dumps(payload),session=self.session),
  		                       alias=self.server.alias,session=self.session))