From e6621fd623cd88134a426b0522b2b3cf2850af84 Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Tue, 27 Mar 2018 00:03:20 -0400 Subject: [PATCH] kops toolbox dump: Add Subnets to dump --- pkg/resources/aws/BUILD.bazel | 1 + pkg/resources/aws/aws.go | 1 + pkg/resources/aws/subnet.go | 41 +++++++++++++++++++++++++++++++++++ pkg/resources/dumpmodel.go | 7 ++++++ 4 files changed, 50 insertions(+) create mode 100644 pkg/resources/aws/subnet.go diff --git a/pkg/resources/aws/BUILD.bazel b/pkg/resources/aws/BUILD.bazel index c08e5dcdda..279edd1a68 100644 --- a/pkg/resources/aws/BUILD.bazel +++ b/pkg/resources/aws/BUILD.bazel @@ -10,6 +10,7 @@ go_library( "natgateway.go", "routetable.go", "securitygroup.go", + "subnet.go", "tags.go", "vpc.go", ], diff --git a/pkg/resources/aws/aws.go b/pkg/resources/aws/aws.go index 26195992b9..1b9acdf332 100644 --- a/pkg/resources/aws/aws.go +++ b/pkg/resources/aws/aws.go @@ -656,6 +656,7 @@ func ListSubnets(cloud fi.Cloud, clusterName string) ([]*resources.Resource, err ID: subnetID, Type: "subnet", Deleter: DeleteSubnet, + Dumper: DumpSubnet, Shared: shared, } resourceTracker.Blocks = append(resourceTracker.Blocks, "vpc:"+aws.StringValue(subnet.VpcId)) diff --git a/pkg/resources/aws/subnet.go b/pkg/resources/aws/subnet.go new file mode 100644 index 0000000000..b59151e1b0 --- /dev/null +++ b/pkg/resources/aws/subnet.go @@ -0,0 +1,41 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package aws + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ec2" + + "k8s.io/kops/pkg/resources" +) + +func DumpSubnet(op *resources.DumpOperation, r *resources.Resource) error { + data := make(map[string]interface{}) + data["id"] = r.ID + data["type"] = r.Type + data["raw"] = r.Obj + op.Dump.Resources = append(op.Dump.Resources, data) + + ec2Subnet := r.Obj.(*ec2.Subnet) + s := &resources.Subnet{ + ID: aws.StringValue(ec2Subnet.SubnetId), + Zone: aws.StringValue(ec2Subnet.AvailabilityZone), + } + op.Dump.Subnets = append(op.Dump.Subnets, s) + + return nil +} diff --git a/pkg/resources/dumpmodel.go b/pkg/resources/dumpmodel.go index 7c1e577e0d..4210a510a2 100644 --- a/pkg/resources/dumpmodel.go +++ b/pkg/resources/dumpmodel.go @@ -23,8 +23,15 @@ type Instance struct { Roles []string `json:"roles,omitempty"` } +// Subnet is the type for an subnetwork in a dump +type Subnet struct { + ID string `json:"id,omitempty"` + Zone string `json:"zone,omitempty"` +} + // Dump is the type for a dump result type Dump struct { Resources []interface{} `json:"resources,omitempty"` Instances []*Instance `json:"instances,omitempty"` + Subnets []*Subnet `json:"subnets,omitempty"` }