def Clone(self,network_id,name=None,cpu=None,memory=None,group_id=None,alias=None,password=None,ip_address=None,
	          storage_type=None,type=None,primary_dns=None,secondary_dns=None,
			  custom_fields=None,ttl=None,managed_os=False,description=None,
			  source_server_password=None,cpu_autoscale_policy_id=None,anti_affinity_policy_id=None,
			  packages=[],count=1):
		"""Creates one or more clones of existing server.

		https://www.centurylinkcloud.com/api-docs/v2/#servers-create-server

		Set ttl as number of seconds before server is to be terminated.

		* - network_id is currently a required parameter.  This will change to optional once APIs are available to
		    return the network id of self.
		* - if no password is supplied will reuse the password of self.  Is this the expected behavior?  Take note
		    there is no way to for a system generated password with this pattern since we cannot leave as None
		* - any DNS settings from self aren't propogated to clone since they are unknown at system level and
		    the clone process will touch them
		* - no change to the disk layout we will clone all
		* - clone will not replicate managed OS setting from self so this must be explicitly set

		>>> d = clc.v2.Datacenter()
		>>> clc.v2.Server(alias='BTDI',id='WA1BTDIAPI207').Clone(network_id=d.Networks().networks[0].id,count=2)
		0

		"""

		if not name:  name = re.search("%s(.+)\d{2}$" % self.alias,self.name).group(1)
		#if not description and self.description:  description = self.description
		if not cpu:  cpu = self.cpu
		if not memory:  memory = self.memory
		if not group_id:  group_id = self.group_id
		if not alias:  alias = self.alias
		if not source_server_password: source_server_password = self.Credentials()['password']
		if not password: password = source_server_password	# is this the expected behavior?
		if not storage_type:  storage_type = self.storage_type
		if not type:  type = self.type
		if not storage_type:  storage_type = self.storage_type
		if not custom_fields and len(self.custom_fields): custom_fields = self.custom_fields
		if not description:  description = self.description
		# TODO - #if not cpu_autoscale_policy_id:  cpu_autoscale_policy_id =
		# TODO - #if not anti_affinity_policy_id:  anti_affinity_policy_id =
		# TODO - need to get network_id of self, not currently exposed via API :(

		requests_lst = []
		for i in range(0,count):
			requests_lst.append(Server.Create( \
			            name=name,cpu=cpu,memory=memory,group_id=group_id,network_id=network_id,alias=self.alias,
						password=password,ip_address=ip_address,storage_type=storage_type,type=type,
						primary_dns=primary_dns,secondary_dns=secondary_dns,
						custom_fields=custom_fields,ttl=ttl,managed_os=managed_os,description=description,
                        source_server_password=source_server_password,cpu_autoscale_policy_id=cpu_autoscale_policy_id,
						anti_affinity_policy_id=anti_affinity_policy_id,packages=packages,
						template=self.id,session=self.session))

		return(sum(requests_lst))