Skip to content

Commit a8e1c67

Browse files
committed
Added comments and 1 more test
1 parent f7a94ca commit a8e1c67

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

pkg/cloud/tags.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ import (
2222
)
2323

2424
type TagIface interface {
25-
AddClusterTag(resourceType ResourceType, resourceID string, csCluster *infrav1.CloudStackCluster, addCreatedByCAPCTag bool) error
26-
DeleteClusterTag(resourceType ResourceType, resourceID string, csCluster *infrav1.CloudStackCluster) error
27-
DeleteCreatedByCAPCTag(resourceType ResourceType, resourceID string) error
28-
DoClusterTagsAllowDisposal(resourceType ResourceType, resourceID string) (bool, error)
29-
AddTags(resourceType ResourceType, resourceID string, tags map[string]string) error
30-
GetTags(resourceType ResourceType, resourceID string) (map[string]string, error)
31-
DeleteTags(resourceType ResourceType, resourceID string, tagsToDelete map[string]string) error
25+
AddClusterTag(ResourceType, string, *infrav1.CloudStackCluster, bool) error
26+
DeleteClusterTag(ResourceType, string, *infrav1.CloudStackCluster) error
27+
DeleteCreatedByCAPCTag(ResourceType, string) error
28+
DoClusterTagsAllowDisposal(ResourceType, string) (bool, error)
29+
AddTags(ResourceType, string, map[string]string) error
30+
GetTags(ResourceType, string) (map[string]string, error)
31+
DeleteTags(ResourceType, string, map[string]string) error
3232
}
3333

3434
type ResourceType string
@@ -40,6 +40,8 @@ const (
4040
ResourceTypeIPAddress ResourceType = "PublicIpAddress"
4141
)
4242

43+
// AddClusterTag adds cluster-related tags to a resource. One tag indicates that the resource is used by a given
44+
// cluster. The other tag, if applied, indicates that CAPC created the resource and may dispose of it later.
4345
func (c *client) AddClusterTag(resourceType ResourceType, resourceID string, csCluster *infrav1.CloudStackCluster, addCreatedByCAPCTag bool) error {
4446
clusterTagName := generateClusterTagName(csCluster)
4547
newTags := map[string]string{}
@@ -64,6 +66,7 @@ func (c *client) AddClusterTag(resourceType ResourceType, resourceID string, csC
6466
return nil
6567
}
6668

69+
// DeleteClusterTag deletes the tag that associates the resource with a given cluster.
6770
func (c *client) DeleteClusterTag(resourceType ResourceType, resourceID string, csCluster *infrav1.CloudStackCluster) error {
6871
tags, err := c.GetTags(resourceType, resourceID)
6972
if err != nil {
@@ -78,6 +81,8 @@ func (c *client) DeleteClusterTag(resourceType ResourceType, resourceID string,
7881
return nil
7982
}
8083

84+
// DeleteCreatedByCAPCTag deletes the tag that indicates that the resource was created by CAPC. This is useful when a
85+
// resource is disassociated instead of deleted. That way the tag won't cause confusion if the resource is reused later.
8186
func (c *client) DeleteCreatedByCAPCTag(resourceType ResourceType, resourceID string) error {
8287
tags, err := c.GetTags(resourceType, resourceID)
8388
if err != nil {
@@ -91,6 +96,8 @@ func (c *client) DeleteCreatedByCAPCTag(resourceType ResourceType, resourceID st
9196
return nil
9297
}
9398

99+
// DoClusterTagsAllowDisposal checks to see if the resource is in a state that makes it eligible for disposal. CAPC can
100+
// dispose of a resource if the tags show it was created by CAPC and isn't being used by any clusters.
94101
func (c *client) DoClusterTagsAllowDisposal(resourceType ResourceType, resourceID string) (bool, error) {
95102
tags, err := c.GetTags(resourceType, resourceID)
96103
if err != nil {
@@ -107,12 +114,14 @@ func (c *client) DoClusterTagsAllowDisposal(resourceType ResourceType, resourceI
107114
return clusterTagCount == 0 && tags[createdByCAPCTagName] != "", nil
108115
}
109116

117+
// AddTags adds arbitrary tags to a resource.
110118
func (c *client) AddTags(resourceType ResourceType, resourceID string, tags map[string]string) error {
111119
p := c.cs.Resourcetags.NewCreateTagsParams([]string{resourceID}, string(resourceType), tags)
112120
_, err := c.cs.Resourcetags.CreateTags(p)
113121
return err
114122
}
115123

124+
// GetTags gets all of a resource's tags.
116125
func (c *client) GetTags(resourceType ResourceType, resourceID string) (map[string]string, error) {
117126
p := c.cs.Resourcetags.NewListTagsParams()
118127
p.SetResourceid(resourceID)
@@ -128,6 +137,8 @@ func (c *client) GetTags(resourceType ResourceType, resourceID string) (map[stri
128137
return tags, nil
129138
}
130139

140+
// DeleteTags deletes the given tags from a resource. If the tags don't exist, or if the values don't match, it will
141+
// result in an error.
131142
func (c *client) DeleteTags(resourceType ResourceType, resourceID string, tagsToDelete map[string]string) error {
132143
p := c.cs.Resourcetags.NewDeleteTagsParams([]string{resourceID}, string(resourceType))
133144
p.SetTags(tagsToDelete)

pkg/cloud/tags_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ var _ = Describe("Tag Unit Tests", func() {
8282
}
8383
})
8484

85-
It("Adds and gets a resource tag", func() {
85+
It("adds and gets a resource tag", func() {
8686
Ω(client.AddTags(cloud.ResourceTypeNetwork, networkID, testTags)).Should(Succeed())
8787
tags, err := client.GetTags(cloud.ResourceTypeNetwork, networkID)
8888
Ω(err).Should(BeNil())
@@ -97,6 +97,10 @@ var _ = Describe("Tag Unit Tests", func() {
9797
Ω(remainingTags[tagKey]).Should(Equal(""))
9898
})
9999

100+
It("returns an error when you delete a tag that doesn't exist", func() {
101+
Ω(client.DeleteTags(cloud.ResourceTypeNetwork, networkID, testTags)).ShouldNot(Succeed())
102+
})
103+
100104
It("adds the tags for a cluster (resource created by CAPC)", func() {
101105
Ω(client.AddClusterTag(cloud.ResourceTypeNetwork, networkID, csCluster, true)).Should(Succeed())
102106

0 commit comments

Comments
 (0)