github.com/lukasheimann/cloudfoundrycli@v7.1.0+incompatible/actor/v7action/feature_flag.go (about) 1 package v7action 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 7 ) 8 9 type FeatureFlag ccv3.FeatureFlag 10 11 // GetFeatureFlagByName returns a featureFlag with the provided name. 12 func (actor Actor) GetFeatureFlagByName(featureFlagName string) (FeatureFlag, Warnings, error) { 13 var ( 14 ccv3FeatureFlag ccv3.FeatureFlag 15 warnings ccv3.Warnings 16 err error 17 ) 18 ccv3FeatureFlag, warnings, err = actor.CloudControllerClient.GetFeatureFlag(featureFlagName) 19 20 if err != nil { 21 if _, ok := err.(ccerror.FeatureFlagNotFoundError); ok { 22 return FeatureFlag{}, Warnings(warnings), actionerror.FeatureFlagNotFoundError{FeatureFlagName: featureFlagName} 23 } 24 return FeatureFlag{}, Warnings(warnings), err 25 } 26 27 return FeatureFlag(ccv3FeatureFlag), Warnings(warnings), err 28 } 29 30 func (actor Actor) GetFeatureFlags() ([]FeatureFlag, Warnings, error) { 31 32 var ( 33 featureFlags []FeatureFlag 34 ) 35 ccv3FeatureFlags, warnings, err := actor.CloudControllerClient.GetFeatureFlags() 36 37 if err != nil { 38 return nil, Warnings(warnings), err 39 } 40 41 for _, flag := range ccv3FeatureFlags { 42 featureFlags = append(featureFlags, FeatureFlag(flag)) 43 } 44 45 return featureFlags, Warnings(warnings), nil 46 } 47 48 func (actor Actor) EnableFeatureFlag(flagName string) (Warnings, error) { 49 return actor.updateFeatureFlag(FeatureFlag{Name: flagName, Enabled: true}) 50 } 51 52 func (actor Actor) DisableFeatureFlag(flagName string) (Warnings, error) { 53 return actor.updateFeatureFlag(FeatureFlag{Name: flagName, Enabled: false}) 54 } 55 56 func (actor Actor) updateFeatureFlag(flag FeatureFlag) (Warnings, error) { 57 _, warnings, err := actor.CloudControllerClient.UpdateFeatureFlag(ccv3.FeatureFlag(flag)) 58 59 if _, ok := err.(ccerror.FeatureFlagNotFoundError); ok { 60 err = actionerror.FeatureFlagNotFoundError{FeatureFlagName: flag.Name} 61 } 62 return Warnings(warnings), err 63 }