Add new disk.

		This request will error if disk is protected and cannot be removed (e.g. a system disk)

		# Partitioned disk
		>>> clc.v2.Server("WA1BTDIX01").Disks().Add(size=20,path=None,type="raw").WaitUntilComplete()
		0

		# Raw disk
		>>> clc.v2.Server("WA1BTDIX01").Disks().Add(size=20,path=None,type="raw").WaitUntilComplete()
		0

def Add(self,size,path=None,type="partitioned"):
		"""Add new disk.

		This request will error if disk is protected and cannot be removed (e.g. a system disk)

		# Partitioned disk
		>>> clc.v2.Server("WA1BTDIX01").Disks().Add(size=20,path=None,type="raw").WaitUntilComplete()
		0

		# Raw disk
		>>> clc.v2.Server("WA1BTDIX01").Disks().Add(size=20,path=None,type="raw").WaitUntilComplete()
		0

		"""

		if type=="partitioned" and not path:  raise(clc.CLCException("Must specify path to mount new disk"))
		# TODO - Raise exception if too many disks
		# TODO - Raise exception if too much total size (4TB standard, 1TB HS)

		disk_set = [{'diskId': o.id, 'sizeGB': o.size} for o in self.disks]
		disk_set.append({'sizeGB': size, 'type': type, 'path': path})
		self.disks.append(Disk(id=int(time.time()),parent=self,disk_obj={'sizeGB': size,'partitionPaths': [path]},session=self.session))

		self.size = size
		self.server.dirty = True
		return(clc.v2.Requests(clc.v2.API.Call('PATCH','servers/%s/%s' % (self.server.alias,self.server.id),
		                                       json.dumps([{"op": "set", "member": "disks", "value": disk_set}]),
											   session=self.session),
							   alias=self.server.alias,
							   session=self.session))