func resourceCloudStackAutoScaleVMProfileUpdate()

in cloudstack/resource_cloudstack_autoscale_vm_profile.go [191:229]


func resourceCloudStackAutoScaleVMProfileUpdate(d *schema.ResourceData, meta interface{}) error {
	cs := meta.(*cloudstack.CloudStackClient)

	// Create a new parameter struct
	p := cs.AutoScale.NewUpdateAutoScaleVmProfileParams(d.Id())

	if d.HasChange("template") {
		zoneid, e := retrieveID(cs, "zone", d.Get("zone").(string))
		if e != nil {
			return e.Error()
		}
		templateid, e := retrieveTemplateID(cs, zoneid, d.Get("template").(string))
		if e != nil {
			return e.Error()
		}
		p.SetTemplateid(templateid)
	}

	if d.HasChange("destroy_vm_grace_period") {
		duration, err := time.ParseDuration(d.Get("destroy_vm_grace_period").(string))
		if err != nil {
			return err
		}
		p.SetDestroyvmgraceperiod(int(duration.Seconds()))
	}

	_, err := cs.AutoScale.UpdateAutoScaleVmProfile(p)
	if err != nil {
		return fmt.Errorf("Error updating AutoScaleVmProfile %s: %s", d.Id(), err)
	}

	if d.HasChange("metadata") {
		if err := updateMetadata(cs, d, "AutoScaleVmProfile"); err != nil {
			return fmt.Errorf("Error updating tags on AutoScaleVmProfile %s: %s", d.Id(), err)
		}
	}

	return resourceCloudStackAutoScaleVMProfileRead(d, meta)
}