/
update_service.go
41 lines (33 loc) · 1.06 KB
/
update_service.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
package local
import (
"fmt"
"log"
"github.com/pivotal-cf/brokerapi/v11/domain"
"github.com/cloudfoundry/cloud-service-broker/internal/testdrive"
)
func UpdateService(name, plan, params, cachePath string) {
pakDir, cleanup := pack(cachePath)
defer cleanup()
serviceInstance := lookupServiceInstanceByGUID(nameToID(name))
deployment, err := store().GetTerraformDeployment(fmt.Sprintf("tf:%s:", serviceInstance.GUID))
if err != nil {
log.Fatal(err)
}
tfVersion, err := deployment.TFWorkspace().StateTFVersion()
if err != nil {
log.Fatal(err)
}
broker := startBroker(pakDir)
defer broker.Stop()
opts := []testdrive.UpdateOption{
testdrive.WithUpdateParams(params),
testdrive.WithUpdatePreviousValues(domain.PreviousValues{MaintenanceInfo: &domain.MaintenanceInfo{Version: tfVersion.String()}}),
}
if plan != "" {
planID := lookupPlanIDByName(broker.Client, serviceInstance.ServiceOfferingGUID, plan)
opts = append(opts, testdrive.WithUpdatePlan(planID))
}
if err := broker.UpdateService(serviceInstance, opts...); err != nil {
log.Fatal(err)
}
}