forked from cloudfoundry/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
environment_variable.go
74 lines (64 loc) · 2.8 KB
/
environment_variable.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package v3action
import (
"code.cloudfoundry.org/cli/actor/actionerror"
"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
)
// EnvironmentVariableGroups represents all environment variables for application
type EnvironmentVariableGroups ccv3.Environment
// EnvironmentVariablePair represents an environment variable and its value
// on an application
type EnvironmentVariablePair struct {
Key string
Value string
}
// GetEnvironmentVariablesByApplicationNameAndSpace returns the environment
// variables for an application.
func (actor *Actor) GetEnvironmentVariablesByApplicationNameAndSpace(appName string, spaceGUID string) (EnvironmentVariableGroups, Warnings, error) {
app, warnings, appErr := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
if appErr != nil {
return EnvironmentVariableGroups{}, warnings, appErr
}
ccEnvGroups, v3Warnings, apiErr := actor.CloudControllerClient.GetApplicationEnvironment(app.GUID)
warnings = append(warnings, v3Warnings...)
return EnvironmentVariableGroups(ccEnvGroups), warnings, apiErr
}
// SetEnvironmentVariableByApplicationNameAndSpace adds an
// EnvironmentVariablePair to an application. It must be restarted for changes
// to take effect.
func (actor *Actor) SetEnvironmentVariableByApplicationNameAndSpace(appName string, spaceGUID string, envPair EnvironmentVariablePair) (Warnings, error) {
app, warnings, err := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
if err != nil {
return warnings, err
}
_, v3Warnings, apiErr := actor.CloudControllerClient.UpdateApplicationEnvironmentVariables(
app.GUID,
ccv3.EnvironmentVariables{
envPair.Key: {Value: envPair.Value, IsSet: true},
})
warnings = append(warnings, v3Warnings...)
return warnings, apiErr
}
// UnsetEnvironmentVariableByApplicationNameAndSpace removes an enviornment
// variable from an application. It must be restarted for changes to take
// effect.
func (actor *Actor) UnsetEnvironmentVariableByApplicationNameAndSpace(appName string, spaceGUID string, environmentVariableName string) (Warnings, error) {
app, warnings, appErr := actor.GetApplicationByNameAndSpace(appName, spaceGUID)
if appErr != nil {
return warnings, appErr
}
envGroups, getWarnings, getErr := actor.CloudControllerClient.GetApplicationEnvironment(app.GUID)
warnings = append(warnings, getWarnings...)
if getErr != nil {
return warnings, getErr
}
if _, ok := envGroups.EnvironmentVariables[environmentVariableName]; !ok {
return warnings, actionerror.EnvironmentVariableNotSetError{EnvironmentVariableName: environmentVariableName}
}
_, patchWarnings, patchErr := actor.CloudControllerClient.UpdateApplicationEnvironmentVariables(
app.GUID,
ccv3.EnvironmentVariables{
environmentVariableName: {Value: "", IsSet: false},
})
warnings = append(warnings, patchWarnings...)
return warnings, patchErr
}