Reference documentation and code samples for the Google Cloud Network Services V1 Client class Extension.
A single extension in the chain to execute for the matching request.
Generated from protobuf message google.cloud.networkservices.v1.ExtensionChain.Extension
Namespace
Google \ Cloud \ NetworkServices \ V1 \ ExtensionChain
Methods
__construct
Constructor.
Parameters
Name
Description
data
array
Optional. Data for populating the Message object.
↳ name
string
Required. The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.
↳ authority
string
Optional. The :authority header in the gRPC request sent from Envoy to the extension service. Required for Callout extensions. This field is not supported for plugin extensions. Setting it results in a validation error.
↳ service
string
Required. The reference to the service that runs the extension. To configure a callout extension, service must be a fully-qualified reference to a backend service in the format: https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService} or https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}. To configure a plugin extension, service must be a reference to a WasmPlugin resource in the format: projects/{project}/locations/{location}/wasmPlugins/{plugin} or //networkservices.googleapis.com/projects/{project}/locations/{location}/wasmPlugins/{wasmPlugin}. Plugin extensions are currently supported for the LbTrafficExtension, the LbRouteExtension, and the LbEdgeExtension resources.
↳ supported_events
array
Optional. A set of events during request or response processing for which this extension is called. For the LbTrafficExtension resource, this field is required. For the LbRouteExtension resource, this field is optional. If unspecified, REQUEST_HEADERS event is assumed as supported. For the LbEdgeExtension resource, this field is required and must only contain REQUEST_HEADERS event.
Optional. Specifies the timeout for each individual message on the stream. The timeout must be between 10-10000 milliseconds. Required for callout extensions. This field is not supported for plugin extensions. Setting it results in a validation error.
↳ fail_open
bool
Optional. Determines how the proxy behaves if the call to the extension fails or times out. When set to TRUE, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to FALSE or the default setting of FALSE is used, one of the following happens: * * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer. * * If response headers have been delivered, then the HTTP stream to the downstream client is reset.
↳ forward_headers
array
Optional. List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.
Optional. The metadata provided here is included as part of the metadata_context (of type google.protobuf.Struct) in the ProcessingRequest message sent to the extension server. The metadata is available under the namespace com.google.<extension_type>.<resource_name>.<extension_chain_name>.<extension_name>. For example: com.google.lb_traffic_extension.lbtrafficextension1.chain1.ext1. The following variables are supported in the metadata: {forwarding_rule_id} - substituted with the forwarding rule's fully qualified resource name. This field must not be set for plugin extensions. Setting it results in a validation error. You can set metadata at either the resource level or the extension level. The extension level metadata is recommended because you can pass a different set of metadata through each extension to the backend. This field is subject to following limitations: * * The total size of the metadata must be less than 1KiB. * * The total number of keys in the metadata must be less than 16. * * The length of each key must be less than 64 characters. * * The length of each value must be less than 1024 characters. * * All values must be strings.
getName
Required. The name for this extension.
The name is logged as part of the HTTP request logs.
The name must conform with RFC-1034, is restricted to lower-cased
letters, numbers and hyphens, and can have a maximum length of 63
characters. Additionally, the first character must be a letter and the
last a letter or a number.
Returns
Type
Description
string
setName
Required. The name for this extension.
The name is logged as part of the HTTP request logs.
The name must conform with RFC-1034, is restricted to lower-cased
letters, numbers and hyphens, and can have a maximum length of 63
characters. Additionally, the first character must be a letter and the
last a letter or a number.
Parameter
Name
Description
var
string
Returns
Type
Description
$this
getAuthority
Optional. The :authority header in the gRPC request sent from Envoy
to the extension service.
Required for Callout extensions.
This field is not supported for plugin extensions. Setting it results in
a validation error.
Returns
Type
Description
string
setAuthority
Optional. The :authority header in the gRPC request sent from Envoy
to the extension service.
Required for Callout extensions.
This field is not supported for plugin extensions. Setting it results in
a validation error.
Parameter
Name
Description
var
string
Returns
Type
Description
$this
getService
Required. The reference to the service that runs the extension.
To configure a callout extension, service must be a fully-qualified
reference
to a backend
service
in the format:
https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}
or
https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}.
To configure a plugin extension, service must be a reference
to a WasmPlugin
resource
in the format:
projects/{project}/locations/{location}/wasmPlugins/{plugin}
or
//networkservices.googleapis.com/projects/{project}/locations/{location}/wasmPlugins/{wasmPlugin}.
Plugin extensions are currently supported for the
LbTrafficExtension, the LbRouteExtension, and the LbEdgeExtension
resources.
Returns
Type
Description
string
setService
Required. The reference to the service that runs the extension.
To configure a callout extension, service must be a fully-qualified
reference
to a backend
service
in the format:
https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}
or
https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}.
To configure a plugin extension, service must be a reference
to a WasmPlugin
resource
in the format:
projects/{project}/locations/{location}/wasmPlugins/{plugin}
or
//networkservices.googleapis.com/projects/{project}/locations/{location}/wasmPlugins/{wasmPlugin}.
Plugin extensions are currently supported for the
LbTrafficExtension, the LbRouteExtension, and the LbEdgeExtension
resources.
Parameter
Name
Description
var
string
Returns
Type
Description
$this
getSupportedEvents
Optional. A set of events during request or response processing for which
this extension is called.
For the LbTrafficExtension resource, this field is required.
For the LbRouteExtension resource, this field is optional. If
unspecified, REQUEST_HEADERS event is assumed as supported.
For the LbEdgeExtension resource, this field is required and must only
contain REQUEST_HEADERS event.
Optional. A set of events during request or response processing for which
this extension is called.
For the LbTrafficExtension resource, this field is required.
For the LbRouteExtension resource, this field is optional. If
unspecified, REQUEST_HEADERS event is assumed as supported.
For the LbEdgeExtension resource, this field is required and must only
contain REQUEST_HEADERS event.
Parameter
Name
Description
var
int[]
Returns
Type
Description
$this
getTimeout
Optional. Specifies the timeout for each individual message on the
stream. The timeout must be between 10-10000 milliseconds. Required
for callout extensions.
This field is not supported for plugin extensions. Setting it results in
a validation error.
Optional. Specifies the timeout for each individual message on the
stream. The timeout must be between 10-10000 milliseconds. Required
for callout extensions.
This field is not supported for plugin extensions. Setting it results in
a validation error.
Optional. Determines how the proxy behaves if the call to the extension
fails or times out.
When set to TRUE, request or response processing continues without
error. Any subsequent extensions in the extension chain are also
executed. When set to FALSE or the default setting of FALSE is used,
one of the following happens:
If response headers have not been delivered to the downstream client,
a generic 500 error is returned to the client. The error response can be
tailored by configuring a custom error response in the load balancer.
If response headers have been delivered, then the HTTP stream to the
downstream client is reset.
Returns
Type
Description
bool
setFailOpen
Optional. Determines how the proxy behaves if the call to the extension
fails or times out.
When set to TRUE, request or response processing continues without
error. Any subsequent extensions in the extension chain are also
executed. When set to FALSE or the default setting of FALSE is used,
one of the following happens:
If response headers have not been delivered to the downstream client,
a generic 500 error is returned to the client. The error response can be
tailored by configuring a custom error response in the load balancer.
If response headers have been delivered, then the HTTP stream to the
downstream client is reset.
Parameter
Name
Description
var
bool
Returns
Type
Description
$this
getForwardHeaders
Optional. List of the HTTP headers to forward to the extension
(from the client or backend). If omitted, all headers are sent.
Each element is a string indicating the header name.
Optional. List of the HTTP headers to forward to the extension
(from the client or backend). If omitted, all headers are sent.
Each element is a string indicating the header name.
Parameter
Name
Description
var
string[]
Returns
Type
Description
$this
getMetadata
Optional. The metadata provided here is included as part of the
metadata_context (of type google.protobuf.Struct) in the
ProcessingRequest message sent to the extension server.
The metadata is available under the namespace
com.google.<extension_type>.<resource_name>.<extension_chain_name>.<extension_name>.
For example:
com.google.lb_traffic_extension.lbtrafficextension1.chain1.ext1.
The following variables are supported in the metadata:
{forwarding_rule_id} - substituted with the forwarding rule's fully
qualified resource name.
This field must not be set for plugin extensions. Setting it results in
a validation error.
You can set metadata at either the resource level or the extension level.
The extension level metadata is recommended because you can pass a
different set of metadata through each extension to the backend.
This field is subject to following limitations:
The total size of the metadata must be less than 1KiB.
The total number of keys in the metadata must be less than 16.
The length of each key must be less than 64 characters.
The length of each value must be less than 1024 characters.
Optional. The metadata provided here is included as part of the
metadata_context (of type google.protobuf.Struct) in the
ProcessingRequest message sent to the extension server.
The metadata is available under the namespace
com.google.<extension_type>.<resource_name>.<extension_chain_name>.<extension_name>.
For example:
com.google.lb_traffic_extension.lbtrafficextension1.chain1.ext1.
The following variables are supported in the metadata:
{forwarding_rule_id} - substituted with the forwarding rule's fully
qualified resource name.
This field must not be set for plugin extensions. Setting it results in
a validation error.
You can set metadata at either the resource level or the extension level.
The extension level metadata is recommended because you can pass a
different set of metadata through each extension to the backend.
This field is subject to following limitations:
The total size of the metadata must be less than 1KiB.
The total number of keys in the metadata must be less than 16.
The length of each key must be less than 64 characters.
The length of each value must be less than 1024 characters.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Google Cloud Network Services V1 Client - Class Extension (0.6.1)\n\nVersion latestkeyboard_arrow_down\n\n- [0.6.1 (latest)](/php/docs/reference/cloud-networkservices/latest/V1.ExtensionChain.Extension)\n- [0.6.0](/php/docs/reference/cloud-networkservices/0.6.0/V1.ExtensionChain.Extension)\n- [0.5.0](/php/docs/reference/cloud-networkservices/0.5.0/V1.ExtensionChain.Extension)\n- [0.4.0](/php/docs/reference/cloud-networkservices/0.4.0/V1.ExtensionChain.Extension)\n- [0.3.0](/php/docs/reference/cloud-networkservices/0.3.0/V1.ExtensionChain.Extension)\n- [0.2.3](/php/docs/reference/cloud-networkservices/0.2.3/V1.ExtensionChain.Extension)\n- [0.1.1](/php/docs/reference/cloud-networkservices/0.1.1/V1.ExtensionChain.Extension) \nReference documentation and code samples for the Google Cloud Network Services V1 Client class Extension.\n\nA single extension in the chain to execute for the matching request.\n\nGenerated from protobuf message `google.cloud.networkservices.v1.ExtensionChain.Extension`\n\nNamespace\n---------\n\nGoogle \\\\ Cloud \\\\ NetworkServices \\\\ V1 \\\\ ExtensionChain\n\nMethods\n-------\n\n### __construct\n\nConstructor.\n\n### getName\n\nRequired. The name for this extension.\n\nThe name is logged as part of the HTTP request logs.\nThe name must conform with RFC-1034, is restricted to lower-cased\nletters, numbers and hyphens, and can have a maximum length of 63\ncharacters. Additionally, the first character must be a letter and the\nlast a letter or a number.\n\n### setName\n\nRequired. The name for this extension.\n\nThe name is logged as part of the HTTP request logs.\nThe name must conform with RFC-1034, is restricted to lower-cased\nletters, numbers and hyphens, and can have a maximum length of 63\ncharacters. Additionally, the first character must be a letter and the\nlast a letter or a number.\n\n### getAuthority\n\nOptional. The `:authority` header in the gRPC request sent from Envoy\nto the extension service.\n\nRequired for Callout extensions.\nThis field is not supported for plugin extensions. Setting it results in\na validation error.\n\n### setAuthority\n\nOptional. The `:authority` header in the gRPC request sent from Envoy\nto the extension service.\n\nRequired for Callout extensions.\nThis field is not supported for plugin extensions. Setting it results in\na validation error.\n\n### getService\n\nRequired. The reference to the service that runs the extension.\n\nTo configure a callout extension, `service` must be a fully-qualified\nreference\nto a [backend\nservice](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)\nin the format:\n`https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}`\nor\n`https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}`.\nTo configure a plugin extension, `service` must be a reference\nto a [`WasmPlugin`\nresource](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.wasmPlugins)\nin the format:\n`projects/{project}/locations/{location}/wasmPlugins/{plugin}`\nor\n`//networkservices.googleapis.com/projects/{project}/locations/{location}/wasmPlugins/{wasmPlugin}`.\nPlugin extensions are currently supported for the\n`LbTrafficExtension`, the `LbRouteExtension`, and the `LbEdgeExtension`\nresources.\n\n### setService\n\nRequired. The reference to the service that runs the extension.\n\nTo configure a callout extension, `service` must be a fully-qualified\nreference\nto a [backend\nservice](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)\nin the format:\n`https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}`\nor\n`https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}`.\nTo configure a plugin extension, `service` must be a reference\nto a [`WasmPlugin`\nresource](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.wasmPlugins)\nin the format:\n`projects/{project}/locations/{location}/wasmPlugins/{plugin}`\nor\n`//networkservices.googleapis.com/projects/{project}/locations/{location}/wasmPlugins/{wasmPlugin}`.\nPlugin extensions are currently supported for the\n`LbTrafficExtension`, the `LbRouteExtension`, and the `LbEdgeExtension`\nresources.\n\n### getSupportedEvents\n\nOptional. A set of events during request or response processing for which\nthis extension is called.\n\nFor the `LbTrafficExtension` resource, this field is required.\nFor the `LbRouteExtension` resource, this field is optional. If\nunspecified, `REQUEST_HEADERS` event is assumed as supported.\nFor the `LbEdgeExtension` resource, this field is required and must only\ncontain `REQUEST_HEADERS` event.\n\n### setSupportedEvents\n\nOptional. A set of events during request or response processing for which\nthis extension is called.\n\nFor the `LbTrafficExtension` resource, this field is required.\nFor the `LbRouteExtension` resource, this field is optional. If\nunspecified, `REQUEST_HEADERS` event is assumed as supported.\nFor the `LbEdgeExtension` resource, this field is required and must only\ncontain `REQUEST_HEADERS` event.\n\n### getTimeout\n\nOptional. Specifies the timeout for each individual message on the\nstream. The timeout must be between `10`-`10000` milliseconds. Required\nfor callout extensions.\n\nThis field is not supported for plugin extensions. Setting it results in\na validation error.\n\n### hasTimeout\n\n### clearTimeout\n\n### setTimeout\n\nOptional. Specifies the timeout for each individual message on the\nstream. The timeout must be between `10`-`10000` milliseconds. Required\nfor callout extensions.\n\nThis field is not supported for plugin extensions. Setting it results in\na validation error.\n\n### getFailOpen\n\nOptional. Determines how the proxy behaves if the call to the extension\nfails or times out.\n\nWhen set to `TRUE`, request or response processing continues without\nerror. Any subsequent extensions in the extension chain are also\nexecuted. When set to `FALSE` or the default setting of `FALSE` is used,\none of the following happens:\n\n- If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.\n- If response headers have been delivered, then the HTTP stream to the downstream client is reset.\n\n### setFailOpen\n\nOptional. Determines how the proxy behaves if the call to the extension\nfails or times out.\n\nWhen set to `TRUE`, request or response processing continues without\nerror. Any subsequent extensions in the extension chain are also\nexecuted. When set to `FALSE` or the default setting of `FALSE` is used,\none of the following happens:\n\n- If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer.\n- If response headers have been delivered, then the HTTP stream to the downstream client is reset.\n\n### getForwardHeaders\n\nOptional. List of the HTTP headers to forward to the extension\n(from the client or backend). If omitted, all headers are sent.\n\nEach element is a string indicating the header name.\n\n### setForwardHeaders\n\nOptional. List of the HTTP headers to forward to the extension\n(from the client or backend). If omitted, all headers are sent.\n\nEach element is a string indicating the header name.\n\n### getMetadata\n\nOptional. The metadata provided here is included as part of the\n`metadata_context` (of type `google.protobuf.Struct`) in the\n`ProcessingRequest` message sent to the extension server.\n\nThe metadata is available under the namespace\n`com.google.\u003cextension_type\u003e.\u003cresource_name\u003e.\u003cextension_chain_name\u003e.\u003cextension_name\u003e`.\nFor example:\n`com.google.lb_traffic_extension.lbtrafficextension1.chain1.ext1`.\nThe following variables are supported in the metadata:\n`{forwarding_rule_id}` - substituted with the forwarding rule's fully\nqualified resource name.\nThis field must not be set for plugin extensions. Setting it results in\na validation error.\nYou can set metadata at either the resource level or the extension level.\nThe extension level metadata is recommended because you can pass a\ndifferent set of metadata through each extension to the backend.\nThis field is subject to following limitations:\n\n- The total size of the metadata must be less than 1KiB.\n- The total number of keys in the metadata must be less than 16.\n- The length of each key must be less than 64 characters.\n- The length of each value must be less than 1024 characters.\n- All values must be strings.\n\n### hasMetadata\n\n### clearMetadata\n\n### setMetadata\n\nOptional. The metadata provided here is included as part of the\n`metadata_context` (of type `google.protobuf.Struct`) in the\n`ProcessingRequest` message sent to the extension server.\n\nThe metadata is available under the namespace\n`com.google.\u003cextension_type\u003e.\u003cresource_name\u003e.\u003cextension_chain_name\u003e.\u003cextension_name\u003e`.\nFor example:\n`com.google.lb_traffic_extension.lbtrafficextension1.chain1.ext1`.\nThe following variables are supported in the metadata:\n`{forwarding_rule_id}` - substituted with the forwarding rule's fully\nqualified resource name.\nThis field must not be set for plugin extensions. Setting it results in\na validation error.\nYou can set metadata at either the resource level or the extension level.\nThe extension level metadata is recommended because you can pass a\ndifferent set of metadata through each extension to the backend.\nThis field is subject to following limitations:\n\n- The total size of the metadata must be less than 1KiB.\n- The total number of keys in the metadata must be less than 16.\n- The length of each key must be less than 64 characters.\n- The length of each value must be less than 1024 characters.\n- All values must be strings."]]