gcloud beta app-lifecycle-manager flags update

NAME
gcloud beta app-lifecycle-manager flags update - update Flag
SYNOPSIS
gcloud beta app-lifecycle-manager flags update (FLAG : --location=LOCATION) [--evaluation-spec=[allocations=ALLOCATIONS],[attributes=ATTRIBUTES],[defaultTarget=DEFAULTTARGET],[rules=RULES]] [--state=STATE] [--variants=[booleanValue=BOOLEANVALUE],[description=DESCRIPTION],[doubleValue=DOUBLEVALUE],[id=ID],[integerValue=INTEGERVALUE],[stringValue=STRINGVALUE]] [--annotations=[ANNOTATIONS,…]     | --update-annotations=[UPDATE_ANNOTATIONS,…] --clear-annotations     | --remove-annotations=REMOVE_ANNOTATIONS] [--clear-description     | --description=DESCRIPTION] [--clear-flag-set     | --flag-set=FLAG_SET] [--labels=[LABELS,…]     | --update-labels=[UPDATE_LABELS,…] --clear-labels     | --remove-labels=REMOVE_LABELS] [GCLOUD_WIDE_FLAG]
DESCRIPTION
(BETA) Update the definition of a feature flag. This command modifies the flag's configuration such as variants, evaluation logic, or metadata within its parent UnitKind.

Feature flags follow a lifecycle managed through their state:

The in-development state is the initial state for a feature flag. It indicates that the flag is currently being defined, variants are being added, and evaluation logic is being refined. Flags in this state are typically used for initial setup and testing and are not yet intended for production rollouts.

The active state is the default state for a feature flag. It signifies that the flag is in use, authorized for production rollouts, and actively being evaluated by application services. Active flags are included in configuration manifests and release snapshots for the fleet.

The sunsetting state indicates that a feature flag is being phased out. It serves as a signal to engineering teams that the code associated with the flag should be removed. While still functional, sunsetting flags should not be used for new feature logic and are candidates for future cleanup.

When a flag is no longer needed, its state can be updated to cleanup. Performing a rollout with a flag in this state will remove all its revisions from the Units. This is a mandatory step in the flag deletion flow.

Note that updating a flag definition does not immediately change the flag's value in production units. To apply these changes to your fleet, you must subsequently create a new FlagRelease and initiate a Rollout. This architecture enables the decoupling of feature releases from code deployments, facilitating safe, progressive rollouts and instant rollbacks.

EXAMPLES
To initialize a flag in the in-development state for testing, run:
gcloud beta app-lifecycle-manager flags update my-flag --location=global --state=in-development

To guarantee a flag is active for a new production rollout, run:

gcloud beta app-lifecycle-manager flags update my-flag --location=global --state=active

To update the variants of a boolean flag, run:

gcloud beta app-lifecycle-manager flags update my-flag --location=global --variants='[{"id": "Enabled", "booleanValue": true}, {"id":
"Disabled", "booleanValue": false}]'

To mark a flag as sunsetting to signal code removal, run:

gcloud beta app-lifecycle-manager flags update my-flag --location=global --state=sunsetting --description="Feature fully launched. Starting code removal."

To mark a flag for cleanup (remove from Units in the next rollout), run:

gcloud beta app-lifecycle-manager flags update my-flag --location=global --state=cleanup --description="Ready for permanent deletion."
POSITIONAL ARGUMENTS
Flag resource - ID of the Flag:
"projects/{project}/locations/{location}/flags/{flag_id}"

This follows the standard Google Cloud naming scheme (URI). The arguments in this group can be used to specify the attributes of this resource. (NOTE) Some attributes are not given arguments in this group but can be set in other ways.

To set the project attribute:

  • provide the argument flag on the command line with a fully specified name;
  • provide the argument --project on the command line;
  • set the property core/project.

This must be specified.

FLAG
ID of the flag or fully qualified identifier for the flag.

To set the flag attribute:

  • provide the argument flag on the command line.

This positional argument must be specified if any of the other arguments in this group are specified.

--location=LOCATION
Location ID

To set the location attribute:

  • provide the argument flag on the command line with a fully specified name;
  • provide the argument --location on the command line.
FLAGS
--evaluation-spec=[allocations=ALLOCATIONS],[attributes=ATTRIBUTES],[defaultTarget=DEFAULTTARGET],[rules=RULES]
Specification of how the Flag value should be evaluated.
allocations
A list of allocations.
description
A description of the allocation. Max length: 500 bytes.
id
Id of the allocation. Max length: 128 bytes.
randomizedOn
Key of the context attribute that is used for traffic splitting.
slots
Slots defines the weighted distribution of variants.
variant
Variant of the allocation slot.
weight
Weight defines the proportion of traffic to allocate to the variant, relative to other slots in the same allocation.
attributes
Names of the context attributes that are used in the evaluation rules and allocations.
defaultTarget
Default variant for the flag.
rules
Define the logic for evaluating the flag against a given context. The rules are evaluated sequentially in their specified order.
condition
A Common Expression Language (CEL cel.dev) expression evaluated against the evaluation context. For example: plan == "premium" && country == "DE".
id
A unique identifier for the rule.
target
The ID of the variant to return if the condition evaluates to true.
Shorthand Example:
--evaluation-spec=allocations=[{description=string,id=string,randomizedOn=string,slots=[{variant=string,weight=int}]}],attributes=[string],defaultTarget=string,rules=[{condition=string,id=string,target=string}]

JSON Example:

--evaluation-spec='{"allocations": [{"description": "string", "id": "string", "randomizedOn": "string", "slots": [{"variant": "string", "weight": int}]}], "attributes": ["string"], "defaultTarget": "string", "rules": [{"condition": "string", "id": "string", "target": "string"}]}'

File Example:

--evaluation-spec=path_to_file.(yaml|json)
--state=STATE
Current state of the flag. STATE must be one of:
active
The flag is in the active state.
cleanup
The flag is in the cleanup state and ready to be deleted.
in-development
The flag is currently in the in-development state.
sunsetting
The flag is in the sunsetting state, indicating it is being phased out.
--variants=[booleanValue=BOOLEANVALUE],[description=DESCRIPTION],[doubleValue=DOUBLEVALUE],[id=ID],[integerValue=INTEGERVALUE],[stringValue=STRINGVALUE]
A list of variants. Variant is an identifier for a value (name assigned to a value).
booleanValue
Value is a single boolean flag value for the variant.
description
A description of the variant. Max length: 500 bytes.
doubleValue
Value is a single double flag value for the variant.
id
Id of the variant. Max length: 128 bytes.
integerValue
Value is a single integer flag value for the variant.
stringValue
Value is a single string flag value for the variant. Max length: 500 bytes.
Shorthand Example:
--variants=booleanValue=boolean,description=string,doubleValue=float,id=string,integerValue=int,stringValue=string --variants=booleanValue=boolean,description=string,doubleValue=float,id=string,integerValue=int,stringValue=string

JSON Example:

--variants='[{"booleanValue": boolean, "description": "string", "doubleValue": float, "id": "string", "integerValue": int, "stringValue": "string"}]'

File Example:

--variants=path_to_file.(yaml|json)
Update annotations.

At most one of these can be specified:

--annotations=[ANNOTATIONS,…]
Set annotations to new value. Unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. Annotations are not queryable and should be preserved when modifying objects.
KEY
Sets KEY value.
VALUE
Sets VALUE value.
Shorthand Example:
--annotations=string=string

JSON Example:

--annotations='{"string": "string"}'

File Example:

--annotations=path_to_file.(yaml|json)
Or at least one of these can be specified:
--update-annotations=[UPDATE_ANNOTATIONS,…]
Update annotations value or add key value pair. Unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. Annotations are not queryable and should be preserved when modifying objects.
KEY
Sets KEY value.
VALUE
Sets VALUE value.
Shorthand Example:
--update-annotations=string=string

JSON Example:

--update-annotations='{"string": "string"}'

File Example:

--update-annotations=path_to_file.(yaml|json)
At most one of these can be specified:
--clear-annotations
Clear annotations value and set to empty map.
--remove-annotations=REMOVE_ANNOTATIONS
Remove existing value from map annotations. Sets remove_annotations value. Shorthand Example:
--remove-annotations=string,string

JSON Example:

--remove-annotations=["string"]

File Example:

--remove-annotations=path_to_file.(yaml|json)
Update description.

At most one of these can be specified:

--clear-description
Clear description value and set to null.
--description=DESCRIPTION
Set description to new value.
Update flag_set.

At most one of these can be specified:

--clear-flag-set
Clear flag_set value and set to null.
--flag-set=FLAG_SET
Set flag_set to new value.
Update labels.

At most one of these can be specified:

--labels=[LABELS,…]
Set labels to new value. The labels on the resource, which can be used for categorization.
KEY
Keys must start with a lowercase character and contain only hyphens (-), underscores (_), lowercase characters, and numbers.
VALUE
Values must contain only hyphens (-), underscores (_), lowercase characters, and numbers.
Shorthand Example:
--labels=string=string

JSON Example:

--labels='{"string": "string"}'

File Example:

--labels=path_to_file.(yaml|json)
Or at least one of these can be specified:
--update-labels=[UPDATE_LABELS,…]
Update labels value or add key value pair. The labels on the resource, which can be used for categorization.
KEY
Keys must start with a lowercase character and contain only hyphens (-), underscores (_), lowercase characters, and numbers.
VALUE
Values must contain only hyphens (-), underscores (_), lowercase characters, and numbers.
Shorthand Example:
--update-labels=string=string

JSON Example:

--update-labels='{"string": "string"}'

File Example:

--update-labels=path_to_file.(yaml|json)
At most one of these can be specified:
--clear-labels
Clear labels value and set to empty map.
--remove-labels=REMOVE_LABELS
Remove existing value from map labels. Sets remove_labels value. Shorthand Example:
--remove-labels=string,string

JSON Example:

--remove-labels=["string"]

File Example:

--remove-labels=path_to_file.(yaml|json)
GCLOUD WIDE FLAGS
These flags are available to all commands: --access-token-file, --account, --billing-project, --configuration, --flags-file, --flatten, --format, --help, --impersonate-service-account, --log-http, --project, --quiet, --trace-token, --user-output-enabled, --verbosity.

Run $ gcloud help for details.

API REFERENCE
This command uses the saasservicemgmt/v1beta1 API. The full documentation for this API can be found at: https://cloud.google.com/saas-runtime/docs
NOTES
This command is currently in beta and might change without notice.