8/23/2020 Migrating to v1 metadata server endpoint

Migrating to v1 metadata server endpoint

ng: The v0.1 and v1beta1 metadata server endpoints are deprecated and scheduled for shutdown on Septemb

Migration overview

To migrate to v1.0, complete the following steps:

1. Identify the VM instances (#nd-vm) that are using the deprecated metadata server endpoints.

If you have Kubernetes Engine clusters (/kubernetes-engine/docs/concepts/kubernetes-engine-overview), you need to identify the GKE nodes (#nd-gke-node) that are using the deprecated endpoint.

2. On the identied VM instances or nodes, nd the processes (#nd-process), applications (#apps-to-update), or images (#image-update) that are using the deprecated metadata server endpoints.

For processes and applications, review the following information:

If the process belongs to an application that you did not develop, update the application to use a v1 metadata server endpoint. For a list of known applications that require an update, see applications that require an update (#apps-to-update).

If the process belongs to an application that you developed and your code is calling any of the legacy endpoints, complete the following steps:

a. Review the differences between v1 and the deprecated metadata server endpoints.

For v1beta1, see Differences between v1beta1 and v1.0 (#diff-v1beta1).

For v0.1, see Differences between v0.1 and v1.0 (#diff-v0.1).

b. Update queries to use the v1 metadata server endpoint.

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 1/19 8/23/2020 Migrating to v1 metadata server endpoint

If the process belongs to an application that you developed but your code is not making requests to any of the legacy endpoints, then the requests might be made by SDKs or other dependencies. To x this, update all SDKs and dependencies used by the application.To view the versions of the Google libraries that require an update, see supported library versions (#supported-google-libraries).

3. (Optional) Disable the v0.1 and v1beta1 (/compute/docs/storing-retrieving-metadata#disable-legacy-endpoints) metadata server endpoints.

Identifying the VM instances

To identify which VM instances are using v0.1 and v1beta1 endpoints, you can make requests to two new endpoints.

The output from querying these new endpoints tells you how many times a given VM instance accessed the deprecated endpoints. Note: Each time a VM instance is stopped, the counter resets.

To see if a VM instance has accessed the v0.1 and v1beta1 endpoints, run the following commands:

curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetada curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetada

The following python sample shows how to programmatically watch these new endpoints:

compute/metadata/detect_legacy_usage.py (https://github.com/GoogleCloudPlatform/python-docs- samples/blob/master/compute/metadata/detect_legacy_usage.py)

om/GoogleCloudPlatform/python-docs-samples/blob/master/compute/metadata/detect_legacy_usage.py)

def wait_for_legacy_usage(callback): url = '{}/instance/legacy-endpoint-access'.format(METADATA_URL) last_etag = '0'

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 2/19 8/23/2020 Migrating to v1 metadata server endpoint

counts = None while True: r = requests.get( url, params={ 'last_etag': last_etag, 'recursive': True, 'wait_for_change': True }, headers=METADATA_HEADERS) if r.status_code == 503: # Metadata server unavailable print('Metadata server unavailable. Sleeping for 1 second.') time.sleep(1) continue if r.status_code == 404: # Feature not yet supported print('Legacy endpoint access not supported. Sleeping for 1 hour.') time.sleep(3600) continue r.raise_for_status()

last_etag = r.headers['etag'] access_info = json.loads(r.text) if not counts: counts = access_info if access_info != counts: diff = { ver: access_info[ver] - counts[ver] for ver in counts } counts = access_info callback(diff)

Identifying the GKE nodes

To identify the nodes in your Google Kubernetes Engine clusters that are using the v0.1 and v1beta1 endpoints, see Identifying workloads using the legacy metadata server endpoints (/kubernetes-engine/docs/how-to/protecting-cluster-metadata#identify-legacy-apis).

Identifying the processes

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 3/19 8/23/2020 Migrating to v1 metadata server endpoint

After you have identied the VM instances that are making requests to the deprecated metadata server endpoints, you can then nd the processes on these VM instances that are making these requests.

To identify the processes, use logging or monitoring tools such as ngrep or auditd.

ngrepauditd (Linux only) (#auditd-li…

You can use ngrep (network grep) to collect packets and lter the contents of these packets. To collect packet information for processes that make requests to the deprecated endpoints, on your VM instance, run the following command:

sudo ngrep -l -q "v1beta1|0\.1/meta-data" tcp \ and dst host 169.254.169.254 or metadata.google.internal \ and dst port 80

If any requests are made to the deprecated endpoints, the output resembles the following:

T 10.128.0.4:41312 -> 169.254.169.254:80 [AP] GET /computeMetadata/v1beta1/instance/id HTTP/1.1..Host: metadata.goog..User-Ag

The output contains the following information:

The root url: /computeMetadata/v1beta1/instance/id.

The user agent that is used to make the request. In this example, it is curl/7.52.1.

The IP address (source IP) and port for the VM instance that the request originated from. In this example, the IP address is 10.128.0.4 and the port is 41312 .

If the process is still alive, you can review the port information to nd the process ID.

Reviewing port information

The following procedure might identify processes with outstanding hanging HTTP GET (/compute/docs/storing-retrieving-metadata#waitforchange) requests. This procedure nds the processes that are talking to both the current and deprecated metadata endpoints.

To list the sockets with open connections to the metadata server, on your VM instance, run the following command:

sudo lsof -n -P +c 0 -i @169.254.169.254

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 4/19 8/23/2020 Migrating to v1 metadata server endpoint

The output resembles the following:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME google_network_ 798 root 7u IPv4 1674967626 0t0 TCP 10.128.0.4:44876- google_accounts 805 root 5u IPv4 1674980506 0t0 TCP 10.128.0.4:44878- google_clock_sk 809 root 5u IPv4 1674982496 0t0 TCP 10.128.0.4:44880- google_clock_sk 809 root 6u IPv4 1674914460 0t0 TCP 10.128.0.4:44874-

The NAME column shows the source IP, destination IP, and ports. If this isn't enough to identify a process, you can use the ps command to view more information.

ps 798 805 809

The output resembles the following:

PID TTY STAT TIME COMMAND 798 ? Ss 9:07 /usr/bin/python /usr/bin/google_network_daemon 805 ? Ss 14:19 /usr/bin/python /usr/bin/google_accounts_daemon 809 ? Ss 4:33 /usr/bin/python /usr/bin/google_clock_skew_daemon

Dierences between the v1beta1 and v1.0 metadata server endpoints

The v1 metadata server functions slightly differently than the previous v1beta1 server. The new metadata server requires that all requests provide the Metadata-Flavor: Google header, which indicates that the request was made with the intention of retrieving metadata values.

Update your requests to include this new header. For example, a request to the disks/ attribute now looks like the following:

user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instanc

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 5/19 8/23/2020 Migrating to v1 metadata server endpoint

Dierences between the v0.1 and v1.0 metadata server endpoints

In general, the v0.1 metadata server endpoints differ from v1 in the following ways:

The root used for querying metadata server endpoint has changed from http://metadata.google.internal/0.1/meta-data/ to http://metadata.google.internal/computeMetadata/v1/.

v1 metadata server requests must include the Metadata-Flavor: Google header. For example, a request to the disks/ attribute now looks like the following:

curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/"

Custom metadata (/compute/docs/storing-retrieving-metadata#custom) can be queried at both the project and instance level (/compute/docs/storing-retrieving-metadata#project-instance-metadata).

In the v0.1 metadata server, for the attributes/ property, both instance and project metadata values are in the same directory. If an attribute has both instance and project metadata values, the instance metadata value for a given key is returned.

For v1 queries, the URL must specify whether instance or project metadata is requested. For example, to query the sshKeys attribute, run one or both of the following:

For sshKeys that are set on the project, run the following command:

curl "http://metadata.google.internal/computeMetadata/v1/project/attribute

For sshKeys that are set on this instance, run the following command:

curl "http://metadata.google.internal/computeMetadata/v1/instance/attribut

Some metadata entries in v0.1 return JSON objects. In the v1 metadata server, these metadata entries are organized by directories. This organization of entries lets you

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 6/19 8/23/2020 Migrating to v1 metadata server endpoint

query specic index entries and values for these previously nested elds. For more information about querying a directory listing or accessing JSON objects in v1, see Attributes as directory listings (#directory-listing-attributes).

For a more detailed mapping of v0.1 to v1 metadata server endpoints, review the following tables.

Instance aributes

The following metadata entries are moved into the instance/ directory:

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

Metadata VersionURI (relative to the root) Example output entry

Description v0.1 description My instance description

v1 instance/description

Hostname v0.1 hostname my-instance.c.my-project.internal

v1 instance/hostname

Image v0.1 image projects/eip-images/global/images/debian-9- drawfork-v20180109 v1 instance/image

Machine v0.1 machine-type projects/12345/machineTypes/n1-standard-1 type v1 instance/machine- type

Instance v0.1 tags ["cheese", "lettuce"] tags v1 instance/tags

Zone v0.1 zone projects/12345/zones/us-central1-c

v1 instance/zone

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 7/19 8/23/2020 Migrating to v1 metadata server endpoint

Project aributes

The following metadata entries are moved into the project/ directory:

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

Metadata entry Version URI (relative to root) Example output

Project ID v0.1 project-id my-project

v1 project/project-id

Numeric Project ID v0.1 numeric-project-id 12345

v1 project/numeric-project-id

Aributes that are moved

The following metadata entries are moved to a new endpoint:

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

Metadata entry Version URI (relative to root) Example output

Domain v0.1 domain c.my-project.internal

v1 instance/hostname my-instance.c.my-project.internal

Aributes that are renamed

The following metadata entries are renamed:

v0.1 root - http://metadata.google.internal/0.1/meta-data/

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 8/19 8/23/2020 Migrating to v1 metadata server endpoint

v10 .ro1o rto -o ht -t thpt:t/p/:m/e/tmaedtatda.tgao.oggoloeg.lien.tienrtnearln/aclo/m0p.u1t/emMeettaa-data/v1

v1 root - http://metadata.google.internal/computeMetadata/v1

Metadata entry Version URI (relative to root) Example output

Instance ID v0.1 instance-id 123456789

v1 instance/id 123456789

Aributes as directory listings

The following metadata entries returned JSON objects in v0.1 and are organized into directories in v1.

For these metadata entries, you can use either of the following methods to access the endpoints:

Query the directory (/compute/docs/storing-retrieving-metadata#dirlistings) listings.

Recursively query (/compute/docs/storing-retrieving-metadata#aggcontents) the v1 endpoints to get JSON objects similar to those in v0.1.

 Note: Some elds in the JSON object have changed in the v1 metadata server endpoint. To see the changed elds, review the example outputs in the table below.

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

Metadata VersionURI (relative to root) Example output entry

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 9/19 8/23/2020 Migrating to v1 metadata server endpoint

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

Disks v0.1 disks {"disks":[{ "deviceName":"persistent-disk-0", "index":0, "mode":"READ_WRITE", "type":"PERSISTENT"}]}

v1 instance/attached-disks/? [{"deviceName": "persistent-disk-0", recursive=true "index":0, "mode":"READ_WRITE", "type":"PERSISTENT"}]

Network v0.1 network {"networkInterface": interfaces [{"accessConfiguration": [{"externalIp":"35.194.6.47", "type":"ONE_TO_ONE_NAT"}], "ip":"10.128.0.4", "mac":"42:01:0a:80:00:04","mtu":1460, "network":"projects/12345/networks/def

v1 instance/network- [{"accessConfigs": interfaces/?recursive=true[{"externalIp":"35.194.6.47", "type":"ONE_TO_ONE_NAT"}], "dnsServers":["169.254.169.254"], "forwardedIps":[], "gateway":"10.128.0.1", "ip":"10.128.0.4", "ipAliases [], "mac":"42:01:0a:80:00:04","mtu":1460, "network":"projects/12345/networks/def "subnetmask":"255.255.240.0","targetIn

Service v0.1 service-accounts {"serviceAccounts": account [{"scopes":["https://www.googleapis.co information "serviceAccount":"12345-compute@develo (all service accounts)

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 10/19 8/23/2020 Migrating to v1 metadata server endpoint

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

v1 instance/service- {"[email protected] accounts/?recursive=true {"aliases":["default"], "email":"[email protected] "scopes":["https://www.googleapis.com/ "default":{"aliases":["default"], "email":"[email protected] "scopes":["https://www.googleapis.com/

Service v0.1 service- {"scopes":["https://www.googleapis.com account accounts/ "serviceAccount":"123451-compute@devel information (single v1 instance/service- {"aliases":["default"], service accounts//?"email":"[email protected] account) recursive=true "scopes":["https://www.googleapis.com/

Querying OAuth 2.0 access tokens

The following metadata entries return OAuth2 access tokens.

 Note: Some OAuth 2.0 token elds have changed in the v1 metadata server endpoint. To see the changed elds, review the example outputs in the following table.

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

Metadata Version URI (relative to root) Example output entry

OAuth2 v0.1 auth-token?service_account= {"expires":1568854217, Token (Method&scope=scopeA,scopeB"oauth2_access_token":"ya29.c. 1) or

auth_token?service_account= &scope=scopeA,scopeB

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 11/19 8/23/2020 Migrating to v1 metadata server endpoint

v0.1 root - http://metadata.google.internal/0.1/meta-data/

v1 root - http://metadata.google.internal/computeMetadata/v1

v0.1 service- {"accessToken":"ya29.c.KmyIB0i (Methodaccounts//acquire "expiresAt":1568854217,"expire 2)

v1 instance/service- {"access_token":"ya29.c.KmyIB0 accounts//token "expires_in":2022,"token_type"

Applications that require an update

To use the v1 metadata server endpoint, update the following applications to the minimum supported version or a higher version.

 Note: This list is not exhaustive and will be updated as more applications are identied.

Application Minimum supported version

Facter (developed by Puppet 3.14.5 (https://puppet.com/)) (https://puppet.com/docs/puppet/latest/release_n release-notes-x.14.5) (Puppet 6.10.0)

3.11.10 (https://puppet.com/docs/facter/3.11/release_no (Puppet 5.5.17)

Cloud Monitoring agent (/monitoring/agent) 5.5.2-375

RightScale's (https://docs.rightscale.com/) RightLink 10 server agent (RightLink) (https://docs.rightscale.com/rl10/about.html)

Images to update

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 12/19 8/23/2020 Migrating to v1 metadata server endpoint

If you have guest attributes enabled (/compute/docs/storing-retrieving-metadata#guest_attributes), the following images make calls to the v1beta1 metadata server to store SSH host keys (/compute/docs/instances/connecting-to-instance#store-host-key). We recommend that you upgrade to later versions of the images that are listed.

Operating system Image versions

CentOS centos-6-v20190619

centos-7-v20190619

Debian debian-9-stretch-v20190618

Red Hat Enterprise Linux (RHEL) rhel-6-v20190618

rhel-7-v20190618

rhel-8-v20190521

rhel-8-v20190522

rhel-8-v20190618

rhel-7-4-sap-v20190618

rhel-7-6-sap-v20190618

SUSE Linux Enterprise Server (SLES) sles-15-sp1-v20190625

sles-15-sp1-sap-v20190625

Suppoed library versions

Some Google libraries are unaffected by the migration to the v1 metadata server endpoint. However, if you are using any of the libraries listed in the following table, make sure that you upgrade to the minimum supported version or a higher version.

LanguageGoogle library Minimum supported version

Java com.google.api-client 1.18.0-rc

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 13/19 8/23/2020 Migrating to v1 metadata server endpoint

Node.js dialogow 0.6.0 (https://github.com/googleapis/nodejs- dialogow/releases/tag/v0.6.0)

Node.js rebase-admin 8.2.0 (https://github.com/rebase/rebase-admin- node/releases/tag/v8.2.0)

Node.js google-cloud/debug- 3.0.0 agent

Node.js google-cloud/proler 0.2.0

Node.js google-cloud/trace-agent 2.11.0

Node.js gcp-metadata 0.5.0

Node.js gcs-resumable-upload 0.13.0

Node.js googleapis 27.0.0

Node.js google-auth-library 1.3.0

Node.js google-cloud/ 2.0.0

Node.js google-cloud/bigquery- 0.4.0 data-transfer

Node.js google-cloud/bigtable 0.15.0

Node.js google-cloud/cloud- 0.3.0 container

Node.js google-cloud/compute 0.11.0

Node.js google-cloud/datastore 2.0.0

Node.js google-cloud/dlp 0.8.0

Node.js google-cloud/dns 0.8.0

Node.js google-cloud/error- 0.5.0 reporting

Node.js google-cloud/restore 0.16.1

Node.js google-cloud/language 2.0.0

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 14/19 8/23/2020 Migrating to v1 metadata server endpoint

Node.js google-cloud/logging- 0.9.0 bunyan

Node.js google-cloud/logging 2.0.0

Node.js google-cloud/logging- 0.10.0 winston

Node.js google-cloud/monitoring 0.6.0

Node.js google-cloud/os-login 0.3.0

Node.js google-cloud/pubsub 0.20.0

Node.js google-cloud/redis 0.2.0

Node.js google-cloud/resource 0.9.0

Node.js google-cloud/spanner 2.0.0

Node.js google-cloud/speech 2.0.0

Node.js google-cloud/storage 2.0.0

Node.js google-cloud/tasks 0.2.0

Node.js google-cloud/text-to- 0.3.0 speech

Node.js google-cloud/translate 2.0.0

Node.js google-cloud/vision 0.21.0

Node.js google-cloud/proler 0.2.0 (https://github.com/googleapis/cloud-proler- nodejs/releases/tag/v0.2.0)

Node.js google-cloud/trace-agent 2.11.0 (https://github.com/googleapis/cloud-trace- nodejs/releases/tag/v2.11.0)

Node.js google-gax 0.17.0 (https://github.com/googleapis/gax- nodejs/releases/tag/v0.17.0)

Node.js gce-images 1.0.0 (https://github.com/googleapis/gce- images/releases/tag/v1.0.0)

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 15/19 8/23/2020 Migrating to v1 metadata server endpoint

Node.js gcp-metadata 0.5.0 (https://github.com/googleapis/gcp- metadata/releases/tag/v0.5.0)

Node.js gcs-resumable-upload 0.13.0 (https://github.com/googleapis/gcs-resumable- upload/releases/tag/v0.13.0)

Node.js googleapis 27.0.0 (https://github.com/googleapis/google-api-nodejs- client/releases/tag/v27.0.0)

Node.js google-auth-library 1.3.0 (https://github.com/googleapis/google-auth-library- nodejs/releases/tag/v1.3.0)

Node.js google-cloud/bigquery 2.0.0 (https://github.com/googleapis/nodejs- bigquery/releases/tag/v2.0.0)

Node.js google-cloud/bigquery- 0.4.0 data-transfer (https://github.com/googleapis/nodejs-bigquery-data- transfer/releases/tag/v0.4.0)

Node.js google-cloud/bigtable 0.15.0 (https://github.com/googleapis/nodejs- bigtable/releases/tag/v0.15.0)

Node.js google-cloud/cloud- 0.3.0 container (https://github.com/googleapis/nodejs-cloud- container/releases/tag/v0.3.0)

Node.js google-cloud/common 0.18.0 (https://github.com/googleapis/nodejs- common/releases/tag/v0.18.0)

Node.js google-cloud/common- 0.7.0 grpc (https://github.com/googleapis/nodejs-common- grpc/releases/tag/v0.7.0)

Node.js google-cloud/compute 0.11.0 (https://github.com/googleapis/nodejs- compute/releases/tag/v0.11.0)

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 16/19 8/23/2020 Migrating to v1 metadata server endpoint

Node.js google-cloud/datastore 2.0.0 (https://github.com/googleapis/nodejs- datastore/releases/tag/v2.0.0)

Node.js google-cloud/dlp 0.8.0 (https://github.com/googleapis/nodejs-dlp/releases/tag/v0.8.0)

Node.js google-cloud/dns 0.8.0 (https://github.com/googleapis/nodejs- dns/releases/tag/v0.8.0)

Node.js google-cloud/error- 0.5.0 reporting (https://github.com/googleapis/nodejs-error- reporting/releases/tag/v0.5.0)

Node.js google-cloud/restore 0.16.1 (https://github.com/googleapis/nodejs- restore/releases/tag/v0.16.1)

Node.js google-cloud/language 2.0.0 (https://github.com/googleapis/nodejs- language/releases/tag/v2.0.0)

Node.js google-cloud/logging 2.0.0 (https://github.com/googleapis/nodejs- logging/releases/tag/v2.0.0)

Node.js google-cloud/logging- 0.9.0 bunyan (https://github.com/googleapis/nodejs-logging- bunyan/releases/tag/v0.9.0)

Node.js google-cloud/logging- 0.10.0 winston (https://github.com/googleapis/nodejs-logging- winston/releases/tag/v0.10.0)

Node.js google-cloud/monitoring 0.6.0 (https://github.com/googleapis/nodejs- monitoring/releases/tag/v0.6.0)

Node.js google-cloud/os-login 0.3.0 (https://github.com/googleapis/nodejs-os- login/releases/tag/v0.3.0)

Node.js googleapis/nodejs- 0.20.0 pubsub (https://github.com/googleapis/Nodejs- pubsub/releases/tag/v0.20.0)

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 17/19 8/23/2020 Migrating to v1 metadata server endpoint

Node.js google-cloud/redis 0.2.0 (https://github.com/googleapis/nodejs- redis/releases/tag/v0.2.0)

Node.js google-cloud/resource 0.9.0 (https://github.com/googleapis/nodejs- resource/releases/tag/v0.9.0)

Node.js google-cloud/spanner 2.0.0

Node.js google-cloud/speech 2.0.0 (https://github.com/googleapis/nodejs- speech/releases/tag/v2.0.0)

Node.js google-cloud/storage 2.0.0 (https://github.com/googleapis/nodejs- storage/releases/tag/v2.0.0)

Node.js google-cloud/tasks 0.2.0 (https://github.com/googleapis/nodejs- tasks/releases/tag/v0.2.0)

Node.js google-cloud/text-to- 0.3.0 speech (https://github.com/googleapis/nodejs-text-to- speech/releases/tag/v0.3.0)

Node.js google-cloud/translate 2.0.0 (https://github.com/googleapis/nodejs- translate/releases/tag/v2.0.0)

Node.js google-cloud/video- 1.3.0 intelligence (https://github.com/googleapis/nodejs-video- intelligence/releases/tag/v1.3.0)

Node.js google-cloud/vision 0.21.0 (https://github.com/googleapis/nodejs- vision/releases/tag/v0.21.0)

PHP google-cloud/video- 1.3.3 intelligence

Python oauth2client 2.0.0

Python google-api-python-client 1.6.0

Python googleapis/google-cloud- 0.10.0 python

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 18/19 8/23/2020 Migrating to v1 metadata server endpoint

Python google-cloud-happybase 0.20.0

Ruby gcloud 0.11.1

Ruby google-api-client 0.8.6

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License (https://creativecommons.org/licenses/by/4.0/), and code samples are licensed under the Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0). For details, see the Google Developers Site Policies (https://developers.google.com/site-policies). Java is a registered trademark of Oracle and/or its aliates.

Last updated 2020-08-21 UTC.

https://cloud.google.com/compute/docs/migrating-to-v1-metadata-server/ 19/19