code: def Create(name,template,group_id,network_id,cpu=None,memory=None,alias=None,password=None,ip_address=None,
  	           storage_type="standard",type="standard",primary_dns=None,secondary_dns=None,
  			   additional_disks=[],custom_fields=[],ttl=None,managed_os=False,description=None,
  			   source_server_password=None,cpu_autoscale_policy_id=None,anti_affinity_policy_id=None,
  			   packages=[],configuration_id=None,session=None):
  		if not alias:  alias = clc.v2.Account.GetAlias(session=session)
  		if not description:  description = name
  		if type.lower() != "baremetal":
  			if not cpu or not memory:
  				group = clc.v2.Group(id=group_id,alias=alias,session=session)
  			if not cpu and group.Defaults("cpu"):
  				cpu = group.Defaults("cpu")
  			elif not cpu:
  				raise(clc.CLCException("No default CPU defined"))
  			if not memory and group.Defaults("memory"):
  				memory = group.Defaults("memory")
  			elif not memory:
  				raise(clc.CLCException("No default Memory defined"))
  		if type.lower() == "standard" and storage_type.lower() not in ("standard","premium"):
  			raise(clc.CLCException("Invalid type/storage_type combo"))
  		if type.lower() == "hyperscale" and storage_type.lower() != "hyperscale":
  			raise(clc.CLCException("Invalid type/storage_type combo"))
  		if type.lower() == "baremetal":
  			type = "bareMetal"
  		if ttl and ttl<=3600: raise(clc.CLCException("ttl must be greater than 3600 seconds"))
  		if ttl: ttl = clc.v2.time_utils.SecondsToZuluTS(int(time.time())+ttl)
  		payload = {
  			'name': name, 'description': description, 'groupId': group_id, 'primaryDNS': primary_dns, 'secondaryDNS': secondary_dns,
  			'networkId': network_id, 'password': password, 'type': type, 'customFields': custom_fields
  		}
  		if type == 'bareMetal':
  			payload.update({'configurationId': configuration_id, 'osType': template})
  		else:
  			payload.update({'sourceServerId': template, 'isManagedOS': managed_os, 'ipAddress': ip_address,
  				'sourceServerPassword': source_server_password, 'cpu': cpu, 'cpuAutoscalePolicyId': cpu_autoscale_policy_id,
  				'memoryGB': memory, 'storageType': storage_type, 'antiAffinityPolicyId': anti_affinity_policy_id,
  				'additionalDisks': additional_disks, 'ttl': ttl, 'packages': packages})
  		return clc.v2.Requests(clc.v2.API.Call('POST','servers/%s' % (alias), json.dumps(payload), session=session),
  							   alias=alias,
  							   session=session)