func resourceCLCServerCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*clc.Client) spec := server.Server{ Name: d.Get("name_template").(string), Password: d.Get("password").(string), Description: d.Get("description").(string), GroupID: d.Get("group_id").(string), CPU: d.Get("cpu").(int), MemoryGB: d.Get("memory_mb").(int) / 1024, SourceServerID: d.Get("source_server_id").(string), Type: d.Get("type").(string), IPaddress: d.Get("private_ip_address").(string), NetworkID: d.Get("network_id").(string), Storagetype: d.Get("storage_type").(string), AntiAffinityPolicyID: d.Get("aa_policy_id").(string), } var err error disks, err := parseAdditionalDisks(d) if err != nil { return fmt.Errorf("Failed parsing disks: %v", err) } spec.Additionaldisks = disks fields, err := parseCustomFields(d) if err != nil { return fmt.Errorf("Failed setting customfields: %v", err) } spec.Customfields = fields pkgs, err := parsePackages(d) if err != nil { return fmt.Errorf("Failed setting packages: %v", err) } spec.Packages = pkgs if spec.Type == "bareMetal" { // additional bareMetal fields if conf_id := d.Get("configuration_id").(string); conf_id != "" { spec.ConfigurationID = conf_id } if os_type := d.Get("os_type").(string); os_type != "" { spec.OSType = os_type } } resp, err := client.Server.Create(spec) if err != nil || !resp.IsQueued { return fmt.Errorf("Failed creating server: %v", err) } // server's UUID returned under rel=self link _, uuid := resp.Links.GetID("self") ok, st := resp.GetStatusID() if !ok { return fmt.Errorf("Failed extracting status to poll on %v: %v", resp, err) } err = waitStatus(client, st) if err != nil { return err } s, err := client.Server.Get(uuid) d.SetId(strings.ToUpper(s.Name)) log.Printf("[INFO] Server created. id: %v", s.Name) return resourceCLCServerRead(d, meta) }