-
Notifications
You must be signed in to change notification settings - Fork 0
/
driver.go
44 lines (33 loc) · 1.5 KB
/
driver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package clusterprovisioner
import (
"github.com/rancher/rancher/pkg/clusterprovisioninglogger"
"github.com/rancher/types/apis/management.cattle.io/v3"
"k8s.io/apimachinery/pkg/runtime"
)
func (p *Provisioner) driverCreate(cluster *v3.Cluster, spec v3.ClusterSpec) (api string, token string, cert string, err error) {
ctx, logger := clusterprovisioninglogger.NewLogger(p.Clusters, p.EventLogger, cluster, v3.ClusterConditionProvisioned)
defer logger.Close()
if newCluster, err := p.Clusters.Update(cluster); err == nil {
cluster = newCluster
}
return p.Driver.Create(ctx, cluster.Status.ClusterName, spec)
}
func (p *Provisioner) driverUpdate(cluster *v3.Cluster, spec v3.ClusterSpec) (api string, token string, cert string, err error) {
ctx, logger := clusterprovisioninglogger.NewLogger(p.Clusters, p.EventLogger, cluster, v3.ClusterConditionUpdated)
defer logger.Close()
if newCluster, err := p.Clusters.Update(cluster); err == nil {
cluster = newCluster
}
return p.Driver.Update(ctx, cluster.Status.ClusterName, spec)
}
func (p *Provisioner) driverRemove(cluster *v3.Cluster) error {
ctx, logger := clusterprovisioninglogger.NewLogger(p.Clusters, p.EventLogger, cluster, v3.ClusterConditionProvisioned)
defer logger.Close()
_, err := v3.ClusterConditionUpdated.Do(cluster, func() (runtime.Object, error) {
if newCluster, err := p.Clusters.Update(cluster); err == nil {
cluster = newCluster
}
return cluster, p.Driver.Remove(ctx, cluster.Status.ClusterName, cluster.Spec)
})
return err
}