Skip to content

Commit 63fdc7a

Browse files
authored
Add ip address metadata types; update metadata helper (#284)
* add ip address metadata types Signed-off-by: Matt Siwiec <[email protected]> * flexible metadata helper Signed-off-by: Matt Siwiec <[email protected]> * add load-balancer-api metadata source Signed-off-by: Matt Siwiec <[email protected]> --------- Signed-off-by: Matt Siwiec <[email protected]>
1 parent 3d091d9 commit 63fdc7a

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

pkg/metadata/metadata.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,23 @@ const (
1919
LoadBalancerStateActive LoadBalancerState = "active"
2020
LoadBalancerStateDeleted LoadBalancerState = "deleted"
2121
LoadBalancerStateUpdating LoadBalancerState = "updating"
22+
23+
LoadBalancerStateIPAssigned LoadBalancerState = "ip-address.assigned"
24+
LoadBalancerStateIPUnassigned LoadBalancerState = "ip-address.unassigned"
25+
26+
LoadBalancerAPISource string = "load-balancer-api"
2227
)
2328

2429
// LoadBalancerStatus is the status of a load balancer
2530
type LoadBalancerStatus struct {
2631
State LoadBalancerState `json:"state"`
2732
}
2833

29-
// GetLoadbalancerStatus returns the status of a load balancer
30-
func GetLoadbalancerStatus(metadataStatuses client.MetadataStatuses, statusNamespaceID gidx.PrefixedID) (*LoadBalancerStatus, error) {
34+
// GetLoadbalancerStatus searches through the list of metadata status for the requested status of a load balancer using namespace and source
35+
func GetLoadbalancerStatus(metadataStatuses client.MetadataStatuses, statusNamespaceID gidx.PrefixedID, source string) (*LoadBalancerStatus, error) {
3136
if metadataStatuses.TotalCount > 0 {
3237
for _, s := range metadataStatuses.Edges {
33-
if s.Node.StatusNamespaceID == statusNamespaceID.String() {
38+
if s.Node.StatusNamespaceID == statusNamespaceID.String() && s.Node.Source == source {
3439
status := &LoadBalancerStatus{}
3540

3641
if err := json.Unmarshal(s.Node.Data, status); err != nil {

pkg/metadata/metadata_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,20 @@ func TestGetLoadbalancerStatus(t *testing.T) {
1919
Node: client.MetadataStatusNode{
2020
StatusNamespaceID: "metasns-loadbalancer-status",
2121
Data: json.RawMessage(`{"state": "active"}`),
22+
Source: "load-balancer-api",
2223
},
2324
},
2425
{
2526
Node: client.MetadataStatusNode{
2627
StatusNamespaceID: "metasns-some-other-namespace",
2728
Data: json.RawMessage(`{"key": "value"}`),
29+
Source: "some-other-source",
2830
},
2931
},
3032
},
3133
}
3234

33-
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status")
35+
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status", "load-balancer-api")
3436
require.Nil(t, err)
3537
assert.Equal(t, LoadBalancerStateActive, status.State)
3638
})
@@ -43,12 +45,13 @@ func TestGetLoadbalancerStatus(t *testing.T) {
4345
Node: client.MetadataStatusNode{
4446
StatusNamespaceID: "metasns-loadbalancer-status",
4547
Data: json.RawMessage(`{"state"}`),
48+
Source: "load-balancer-api",
4649
},
4750
},
4851
},
4952
}
5053

51-
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status")
54+
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status", "load-balancer-api")
5255
require.NotNil(t, err)
5356
require.Nil(t, status)
5457
assert.ErrorIs(t, err, ErrInvalidStatusData)
@@ -60,7 +63,7 @@ func TestGetLoadbalancerStatus(t *testing.T) {
6063
Edges: []client.MetadataStatusEdges{},
6164
}
6265

63-
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status")
66+
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status", "load-balancer-api")
6467
require.NotNil(t, err)
6568
require.Nil(t, status)
6669
assert.ErrorIs(t, err, ErrStatusNotFound)
@@ -74,12 +77,13 @@ func TestGetLoadbalancerStatus(t *testing.T) {
7477
Node: client.MetadataStatusNode{
7578
StatusNamespaceID: "metasns-loadbalancer-status",
7679
Data: json.RawMessage(``),
80+
Source: "load-balancer-api",
7781
},
7882
},
7983
},
8084
}
8185

82-
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status")
86+
status, err := GetLoadbalancerStatus(statuses, "metasns-loadbalancer-status", "load-balancer-api")
8387
assert.NotNil(t, err)
8488
assert.Nil(t, status)
8589
assert.ErrorIs(t, err, ErrInvalidStatusData)

0 commit comments

Comments
 (0)