mirror of https://github.com/kubernetes/kops.git
Move routetable detection to new logic
This commit is contained in:
parent
6e78e3f3b0
commit
4a6b5bb61f
|
|
@ -6,6 +6,7 @@ go_library(
|
|||
"aws.go",
|
||||
"errors.go",
|
||||
"filters.go",
|
||||
"routetable.go",
|
||||
"tags.go",
|
||||
"vpc.go",
|
||||
],
|
||||
|
|
|
|||
|
|
@ -943,62 +943,6 @@ func DescribeRouteTablesIgnoreTags(cloud fi.Cloud) ([]*ec2.RouteTable, error) {
|
|||
return response.RouteTables, nil
|
||||
}
|
||||
|
||||
// DescribeRouteTables lists route-tables tagged for the cloud
|
||||
func DescribeRouteTables(cloud fi.Cloud) ([]*ec2.RouteTable, error) {
|
||||
c := cloud.(awsup.AWSCloud)
|
||||
|
||||
glog.V(2).Infof("Listing EC2 RouteTables")
|
||||
request := &ec2.DescribeRouteTablesInput{
|
||||
Filters: BuildEC2Filters(cloud),
|
||||
}
|
||||
response, err := c.EC2().DescribeRouteTables(request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing RouteTables: %v", err)
|
||||
}
|
||||
|
||||
return response.RouteTables, nil
|
||||
}
|
||||
|
||||
func ListRouteTables(cloud fi.Cloud, clusterName string) ([]*resources.Resource, error) {
|
||||
routeTables, err := DescribeRouteTables(cloud)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resourceTrackers []*resources.Resource
|
||||
|
||||
for _, rt := range routeTables {
|
||||
resourceTracker := buildTrackerForRouteTable(rt, clusterName)
|
||||
resourceTrackers = append(resourceTrackers, resourceTracker)
|
||||
}
|
||||
|
||||
return resourceTrackers, nil
|
||||
}
|
||||
|
||||
func buildTrackerForRouteTable(rt *ec2.RouteTable, clusterName string) *resources.Resource {
|
||||
resourceTracker := &resources.Resource{
|
||||
Name: FindName(rt.Tags),
|
||||
ID: aws.StringValue(rt.RouteTableId),
|
||||
Type: ec2.ResourceTypeRouteTable,
|
||||
Deleter: DeleteRouteTable,
|
||||
Shared: HasSharedTag(ec2.ResourceTypeRouteTable+":"+*rt.RouteTableId, rt.Tags, clusterName),
|
||||
}
|
||||
|
||||
var blocks []string
|
||||
var blocked []string
|
||||
|
||||
blocks = append(blocks, "vpc:"+aws.StringValue(rt.VpcId))
|
||||
|
||||
for _, a := range rt.Associations {
|
||||
blocked = append(blocked, "subnet:"+aws.StringValue(a.SubnetId))
|
||||
}
|
||||
|
||||
resourceTracker.Blocks = blocks
|
||||
resourceTracker.Blocked = blocked
|
||||
|
||||
return resourceTracker
|
||||
}
|
||||
|
||||
func DeleteDhcpOptions(cloud fi.Cloud, r *resources.Resource) error {
|
||||
c := cloud.(awsup.AWSCloud)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
Copyright 2016 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 (
|
||||
"fmt"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/ec2"
|
||||
"github.com/golang/glog"
|
||||
|
||||
"k8s.io/kops/pkg/resources"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
|
||||
)
|
||||
|
||||
// DescribeRouteTables lists route-tables tagged for the cluster (shared and owned)
|
||||
func DescribeRouteTables(cloud fi.Cloud, clusterName string) (map[string]*ec2.RouteTable, error) {
|
||||
c := cloud.(awsup.AWSCloud)
|
||||
|
||||
routeTables := make(map[string]*ec2.RouteTable)
|
||||
glog.V(2).Infof("Listing EC2 RouteTables")
|
||||
for _, filters := range buildEC2FiltersForCluster(clusterName) {
|
||||
request := &ec2.DescribeRouteTablesInput{
|
||||
Filters: filters,
|
||||
}
|
||||
response, err := c.EC2().DescribeRouteTables(request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing RouteTables: %v", err)
|
||||
}
|
||||
|
||||
for _, rt := range response.RouteTables {
|
||||
routeTables[aws.StringValue(rt.RouteTableId)] = rt
|
||||
}
|
||||
}
|
||||
|
||||
return routeTables, nil
|
||||
}
|
||||
|
||||
func ListRouteTables(cloud fi.Cloud, clusterName string) ([]*resources.Resource, error) {
|
||||
routeTables, err := DescribeRouteTables(cloud, clusterName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resourceTrackers []*resources.Resource
|
||||
|
||||
for _, rt := range routeTables {
|
||||
resourceTracker := buildTrackerForRouteTable(rt, clusterName)
|
||||
resourceTrackers = append(resourceTrackers, resourceTracker)
|
||||
}
|
||||
|
||||
return resourceTrackers, nil
|
||||
}
|
||||
|
||||
func buildTrackerForRouteTable(rt *ec2.RouteTable, clusterName string) *resources.Resource {
|
||||
resourceTracker := &resources.Resource{
|
||||
Name: FindName(rt.Tags),
|
||||
ID: aws.StringValue(rt.RouteTableId),
|
||||
Type: ec2.ResourceTypeRouteTable,
|
||||
Deleter: DeleteRouteTable,
|
||||
Shared: !HasOwnedTag(ec2.ResourceTypeRouteTable+":"+*rt.RouteTableId, rt.Tags, clusterName),
|
||||
}
|
||||
|
||||
var blocks []string
|
||||
var blocked []string
|
||||
|
||||
blocks = append(blocks, "vpc:"+aws.StringValue(rt.VpcId))
|
||||
|
||||
for _, a := range rt.Associations {
|
||||
blocked = append(blocked, "subnet:"+aws.StringValue(a.SubnetId))
|
||||
}
|
||||
|
||||
resourceTracker.Blocks = blocks
|
||||
resourceTracker.Blocked = blocked
|
||||
|
||||
return resourceTracker
|
||||
}
|
||||
|
|
@ -138,7 +138,7 @@ func (x *ConvertKubeupCluster) Upgrade() error {
|
|||
return err
|
||||
}
|
||||
|
||||
routeTables, err := awsresources.DescribeRouteTables(x.Cloud)
|
||||
routeTables, err := awsresources.DescribeRouteTables(x.Cloud, oldClusterName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue