diff --git a/cloudmock/aws/mockec2/api.go b/cloudmock/aws/mockec2/api.go index 14a90ebd16..238bfe96e3 100644 --- a/cloudmock/aws/mockec2/api.go +++ b/cloudmock/aws/mockec2/api.go @@ -32,6 +32,9 @@ type MockEC2 struct { subnetNumber int Subnets []*ec2.Subnet + volumeNumber int + Volumes []*ec2.Volume + Tags []*ec2.TagDescription vpcNumber int diff --git a/cloudmock/aws/mockec2/unimplemented.go b/cloudmock/aws/mockec2/unimplemented.go index d62534e47d..05fd968407 100644 --- a/cloudmock/aws/mockec2/unimplemented.go +++ b/cloudmock/aws/mockec2/unimplemented.go @@ -966,38 +966,6 @@ func (m *MockEC2) DescribeStaleSecurityGroups(*ec2.DescribeStaleSecurityGroupsIn panic("Not implemented") return nil, nil } -func (m *MockEC2) DescribeVolumeAttributeRequest(*ec2.DescribeVolumeAttributeInput) (*request.Request, *ec2.DescribeVolumeAttributeOutput) { - panic("Not implemented") - return nil, nil -} -func (m *MockEC2) DescribeVolumeAttribute(*ec2.DescribeVolumeAttributeInput) (*ec2.DescribeVolumeAttributeOutput, error) { - panic("Not implemented") - return nil, nil -} -func (m *MockEC2) DescribeVolumeStatusRequest(*ec2.DescribeVolumeStatusInput) (*request.Request, *ec2.DescribeVolumeStatusOutput) { - panic("Not implemented") - return nil, nil -} -func (m *MockEC2) DescribeVolumeStatus(*ec2.DescribeVolumeStatusInput) (*ec2.DescribeVolumeStatusOutput, error) { - panic("Not implemented") - return nil, nil -} -func (m *MockEC2) DescribeVolumeStatusPages(*ec2.DescribeVolumeStatusInput, func(*ec2.DescribeVolumeStatusOutput, bool) bool) error { - panic("Not implemented") - return nil -} -func (m *MockEC2) DescribeVolumesRequest(*ec2.DescribeVolumesInput) (*request.Request, *ec2.DescribeVolumesOutput) { - panic("Not implemented") - return nil, nil -} -func (m *MockEC2) DescribeVolumes(*ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) { - panic("Not implemented") - return nil, nil -} -func (m *MockEC2) DescribeVolumesPages(*ec2.DescribeVolumesInput, func(*ec2.DescribeVolumesOutput, bool) bool) error { - panic("Not implemented") - return nil -} func (m *MockEC2) DescribeVpcClassicLinkRequest(*ec2.DescribeVpcClassicLinkInput) (*request.Request, *ec2.DescribeVpcClassicLinkOutput) { panic("Not implemented") return nil, nil diff --git a/cloudmock/aws/mockec2/volumes.go b/cloudmock/aws/mockec2/volumes.go new file mode 100644 index 0000000000..af169c2e87 --- /dev/null +++ b/cloudmock/aws/mockec2/volumes.go @@ -0,0 +1,95 @@ +/* +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 mockec2 + +import ( + "fmt" + "github.com/aws/aws-sdk-go/aws/request" + "github.com/aws/aws-sdk-go/service/ec2" + "github.com/golang/glog" + "strings" +) + +func (m *MockEC2) DescribeVolumeAttributeRequest(*ec2.DescribeVolumeAttributeInput) (*request.Request, *ec2.DescribeVolumeAttributeOutput) { + panic("MockEC2 DescribeVolumeAttributeRequest not implemented") + return nil, nil +} +func (m *MockEC2) DescribeVolumeAttribute(*ec2.DescribeVolumeAttributeInput) (*ec2.DescribeVolumeAttributeOutput, error) { + panic("MockEC2 DescribeVolumeAttribute not implemented") + return nil, nil +} +func (m *MockEC2) DescribeVolumeStatusRequest(*ec2.DescribeVolumeStatusInput) (*request.Request, *ec2.DescribeVolumeStatusOutput) { + panic("MockEC2 DescribeVolumeStatusRequest not implemented") + return nil, nil +} +func (m *MockEC2) DescribeVolumeStatus(*ec2.DescribeVolumeStatusInput) (*ec2.DescribeVolumeStatusOutput, error) { + panic("MockEC2 DescribeVolumeStatus not implemented") + return nil, nil +} +func (m *MockEC2) DescribeVolumeStatusPages(*ec2.DescribeVolumeStatusInput, func(*ec2.DescribeVolumeStatusOutput, bool) bool) error { + panic("MockEC2 DescribeVolumeStatusPages not implemented") + return nil +} +func (m *MockEC2) DescribeVolumesRequest(*ec2.DescribeVolumesInput) (*request.Request, *ec2.DescribeVolumesOutput) { + panic("MockEC2 DescribeVolumesRequest not implemented") + return nil, nil +} +func (m *MockEC2) DescribeVolumes(request *ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) { + glog.Infof("DescribeVolumes: %v", request) + + var volumes []*ec2.Volume + + for _, volume := range m.Volumes { + allFiltersMatch := true + for _, filter := range request.Filters { + match := false + switch *filter.Name { + + default: + if strings.HasPrefix(*filter.Name, "tag:") { + match = m.hasTag(ec2.ResourceTypeVolume, *volume.VolumeId, filter) + } else { + return nil, fmt.Errorf("unknown filter name: %q", *filter.Name) + } + } + + if !match { + allFiltersMatch = false + break + } + } + + if !allFiltersMatch { + continue + } + + copy := *volume + copy.Tags = m.getTags(ec2.ResourceTypeVolume, *volume.VolumeId) + volumes = append(volumes, ©) + } + + response := &ec2.DescribeVolumesOutput{ + Volumes: volumes, + } + + return response, nil +} + +func (m *MockEC2) DescribeVolumesPages(*ec2.DescribeVolumesInput, func(*ec2.DescribeVolumesOutput, bool) bool) error { + panic("MockEC2 DescribeVolumesPages not implemented") + return nil +} diff --git a/cloudmock/aws/mockroute53/zones.go b/cloudmock/aws/mockroute53/zones.go index bc7380a8f0..bbc1b1b91d 100644 --- a/cloudmock/aws/mockroute53/zones.go +++ b/cloudmock/aws/mockroute53/zones.go @@ -17,11 +17,11 @@ limitations under the License. package mockroute53 import ( + "fmt" + "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/request" "github.com/aws/aws-sdk-go/service/route53" "github.com/golang/glog" - "github.com/aws/aws-sdk-go/aws" - "fmt" "strings" )