in cloudstack/resource_cloudstack_kubernetes_cluster.go [251:321]
func resourceCloudStackKubernetesClusterUpdate(d *schema.ResourceData, meta interface{}) error {
cs := meta.(*cloudstack.CloudStackClient)
d.Partial(true)
if d.HasChange("service_offering") || d.HasChange("size") {
p := cs.Kubernetes.NewScaleKubernetesClusterParams(d.Id())
serviceOfferingID, e := retrieveID(cs, "service_offering", d.Get("service_offering").(string))
if e != nil {
return e.Error()
}
p.SetServiceofferingid(serviceOfferingID)
p.SetSize(int64(d.Get("size").(int)))
_, err := cs.Kubernetes.ScaleKubernetesCluster(p)
if err != nil {
return fmt.Errorf(
"Error Scaling Kubernetes Cluster %s: %s", d.Id(), err)
}
d.SetPartial("service_offering")
d.SetPartial("size")
}
if d.HasChange("autoscaling_enabled") || d.HasChange("min_size") || d.HasChange("max_size") {
err := autoscaleKubernetesCluster(d, meta)
if err != nil {
return err
}
d.SetPartial("autoscaling_enabled")
d.SetPartial("min_size")
d.SetPartial("max_size")
}
if d.HasChange("kubernetes_version") {
kubernetesVersionID, e := retrieveID(cs, "kubernetes_version", d.Get("kubernetes_version").(string))
if e != nil {
return e.Error()
}
p := cs.Kubernetes.NewUpgradeKubernetesClusterParams(d.Id(), kubernetesVersionID)
_, err := cs.Kubernetes.UpgradeKubernetesCluster(p)
if err != nil {
return fmt.Errorf(
"Error Upgrading Kubernetes Cluster %s: %s", d.Id(), err)
}
d.SetPartial("kubernetes_version")
}
if d.HasChange("state") {
state := d.Get("state").(string)
switch state {
case "Running":
p := cs.Kubernetes.NewStartKubernetesClusterParams(d.Id())
_, err := cs.Kubernetes.StartKubernetesCluster(p)
if err != nil {
return fmt.Errorf(
"Error Starting Kubernetes Cluster %s: %s", d.Id(), err)
}
case "Stopped":
p := cs.Kubernetes.NewStopKubernetesClusterParams(d.Id())
_, err := cs.Kubernetes.StopKubernetesCluster(p)
if err != nil {
return fmt.Errorf(
"Error Stopping Kubernetes Cluster %s: %s", d.Id(), err)
}
default:
return fmt.Errorf("State must either be 'Running' or 'Stopped'")
}
d.SetPartial("state")
}
d.Partial(false)
return resourceCloudStackKubernetesClusterRead(d, meta)
}