sigs.k8s.io/cluster-api-provider-aws@v1.5.5/pkg/cloud/converters/tags.go (about) 1 /* 2 Copyright 2018 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package converters 18 19 import ( 20 "github.com/aws/aws-sdk-go/aws" 21 "github.com/aws/aws-sdk-go/service/autoscaling" 22 "github.com/aws/aws-sdk-go/service/ec2" 23 "github.com/aws/aws-sdk-go/service/elb" 24 "github.com/aws/aws-sdk-go/service/secretsmanager" 25 "github.com/aws/aws-sdk-go/service/ssm" 26 27 infrav1 "sigs.k8s.io/cluster-api-provider-aws/api/v1beta1" 28 ) 29 30 // TagsToMap converts a []*ec2.Tag into a infrav1.Tags. 31 func TagsToMap(src []*ec2.Tag) infrav1.Tags { 32 tags := make(infrav1.Tags, len(src)) 33 34 for _, t := range src { 35 tags[*t.Key] = *t.Value 36 } 37 38 return tags 39 } 40 41 // MapPtrToMap converts a [string]*string into a infrav1.Tags. 42 func MapPtrToMap(src map[string]*string) infrav1.Tags { 43 tags := make(infrav1.Tags, len(src)) 44 45 for k, v := range src { 46 tags[k] = *v 47 } 48 49 return tags 50 } 51 52 // MapToTags converts a infrav1.Tags to a []*ec2.Tag. 53 func MapToTags(src infrav1.Tags) []*ec2.Tag { 54 tags := make([]*ec2.Tag, 0, len(src)) 55 56 for k, v := range src { 57 tag := &ec2.Tag{ 58 Key: aws.String(k), 59 Value: aws.String(v), 60 } 61 62 tags = append(tags, tag) 63 } 64 65 return tags 66 } 67 68 // ELBTagsToMap converts a []*elb.Tag into a infrav1.Tags. 69 func ELBTagsToMap(src []*elb.Tag) infrav1.Tags { 70 tags := make(infrav1.Tags, len(src)) 71 72 for _, t := range src { 73 tags[*t.Key] = *t.Value 74 } 75 76 return tags 77 } 78 79 // MapToELBTags converts a infrav1.Tags to a []*elb.Tag. 80 func MapToELBTags(src infrav1.Tags) []*elb.Tag { 81 tags := make([]*elb.Tag, 0, len(src)) 82 83 for k, v := range src { 84 tag := &elb.Tag{ 85 Key: aws.String(k), 86 Value: aws.String(v), 87 } 88 89 tags = append(tags, tag) 90 } 91 92 return tags 93 } 94 95 // MapToSecretsManagerTags converts a infrav1.Tags to a []*secretsmanager.Tag. 96 func MapToSecretsManagerTags(src infrav1.Tags) []*secretsmanager.Tag { 97 tags := make([]*secretsmanager.Tag, 0, len(src)) 98 99 for k, v := range src { 100 tag := &secretsmanager.Tag{ 101 Key: aws.String(k), 102 Value: aws.String(v), 103 } 104 105 tags = append(tags, tag) 106 } 107 108 return tags 109 } 110 111 // MapToSSMTags converts a infrav1.Tags to a []*ssm.Tag. 112 func MapToSSMTags(src infrav1.Tags) []*ssm.Tag { 113 tags := make([]*ssm.Tag, 0, len(src)) 114 115 for k, v := range src { 116 tag := &ssm.Tag{ 117 Key: aws.String(k), 118 Value: aws.String(v), 119 } 120 121 tags = append(tags, tag) 122 } 123 124 return tags 125 } 126 127 // ASGTagsToMap converts a []*autoscaling.TagDescription into a infrav1.Tags. 128 func ASGTagsToMap(src []*autoscaling.TagDescription) infrav1.Tags { 129 tags := make(infrav1.Tags, len(src)) 130 131 for _, t := range src { 132 tags[*t.Key] = *t.Value 133 } 134 135 return tags 136 }