github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+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 "code.cloudfoundry.org/cli/resources" 8 ) 9 10 type FeatureFlag resources.FeatureFlag 11 12 // GetFeatureFlagByName returns a featureFlag with the provided name. 13 func (actor Actor) GetFeatureFlagByName(featureFlagName string) (FeatureFlag, Warnings, error) { 14 var ( 15 ccv3FeatureFlag resources.FeatureFlag 16 warnings ccv3.Warnings 17 err error 18 ) 19 ccv3FeatureFlag, warnings, err = actor.CloudControllerClient.GetFeatureFlag(featureFlagName) 20 21 if err != nil { 22 if _, ok := err.(ccerror.FeatureFlagNotFoundError); ok { 23 return FeatureFlag{}, Warnings(warnings), actionerror.FeatureFlagNotFoundError{FeatureFlagName: featureFlagName} 24 } 25 return FeatureFlag{}, Warnings(warnings), err 26 } 27 28 return FeatureFlag(ccv3FeatureFlag), Warnings(warnings), err 29 } 30 31 func (actor Actor) GetFeatureFlags() ([]FeatureFlag, Warnings, error) { 32 33 var ( 34 featureFlags []FeatureFlag 35 ) 36 ccv3FeatureFlags, warnings, err := actor.CloudControllerClient.GetFeatureFlags() 37 38 if err != nil { 39 return nil, Warnings(warnings), err 40 } 41 42 for _, flag := range ccv3FeatureFlags { 43 featureFlags = append(featureFlags, FeatureFlag(flag)) 44 } 45 46 return featureFlags, Warnings(warnings), nil 47 } 48 49 func (actor Actor) EnableFeatureFlag(flagName string) (Warnings, error) { 50 return actor.updateFeatureFlag(FeatureFlag{Name: flagName, Enabled: true}) 51 } 52 53 func (actor Actor) DisableFeatureFlag(flagName string) (Warnings, error) { 54 return actor.updateFeatureFlag(FeatureFlag{Name: flagName, Enabled: false}) 55 } 56 57 func (actor Actor) updateFeatureFlag(flag FeatureFlag) (Warnings, error) { 58 _, warnings, err := actor.CloudControllerClient.UpdateFeatureFlag(resources.FeatureFlag(flag)) 59 60 if _, ok := err.(ccerror.FeatureFlagNotFoundError); ok { 61 err = actionerror.FeatureFlagNotFoundError{FeatureFlagName: flag.Name} 62 } 63 return Warnings(warnings), err 64 }