Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List instances in subnetwork

Hi I am trying list compute instances in a specific network, and subnetwork, and can't seem to get the filtering right. For example, I have a network named "prod-net" with a subnetwork named "app-central". When I run the search I just get "Listed 0 items".

~  gcloud compute instances list --filter='network:prod-net'
Listed 0 items.

Any suggestions?

like image 460
ShootThePuck91 Avatar asked Mar 11 '23 22:03

ShootThePuck91


2 Answers

The --filter flag doesn't operate on the table data, but rather the underlying rich resource object. To see this object, run gcloud compute instances list --format=json.

What you're looking for in this case is:

$ gcloud compute instances list --filter='networkInterfaces.network=prod-net'

(I switched the : to = because the former means "contains" and the latter means an exact match. See gcloud topic filters for more).

like image 194
Zachary Newman Avatar answered Mar 19 '23 05:03

Zachary Newman


You can indeed filter GCE instances by subnetwork using gcloud.

You need to filter by networkInterfaces.subnetwork and the literal value to compare with, is the full subnet resource url, not just the subnet-name.

The "resource url" for your subnet can be obtained by:

gcloud compute networks subnets list <YOUR_SUBNET_NAME> --format=flattened

Example:

$ gcloud compute networks subnets list sg-zk-1 --project my-gcp-project --format=flattened
---
creationTimestamp:     2017-04-20T02:22:17.853-07:00
gatewayAddress:        10.9.19.33
id:                    6783412628763296550
ipCidrRange:           10.9.19.32/28
kind:                  compute#subnetwork
name:                  sg-zk-1
network:               valkyrie
privateIpGoogleAccess: True
region:                asia-southeast1
selfLink:              https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1

In the above example, the subnet-name is sg-zk-1.

The corresponding resource URL for the subnet is the value of the selfLink which is https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1.

Now that I have the subnet_url I can filter the instances belonging to it:

$ subnet_url="https://www.googleapis.com/compute/v1/projects/my-gcp-project/regions/asia-southeast1/subnetworks/sg-zk-1"

$ gcloud compute instances list --filter="networkInterfaces.subnetwork=${subnet_url}"
NAME            ZONE               MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP  STATUS
sg-zookeeper-4  asia-southeast1-b  n1-standard-2               10.9.19.37                RUNNING
sg-zookeeper-5  asia-southeast1-b  n1-standard-2               10.9.19.38                RUNNING
sg-zookeeper-1  asia-southeast1-a  n1-standard-2               10.9.19.34                RUNNING
sg-zookeeper-2  asia-southeast1-a  n1-standard-2               10.9.19.35                RUNNING
sg-zookeeper-3  asia-southeast1-a  n1-standard-2               10.9.19.36                RUNNING
like image 42
nonbeing Avatar answered Mar 19 '23 03:03

nonbeing