mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Add test for wrong networktier resource deletion
This commit is contained in:
parent
6235a60906
commit
a39e7e4146
@ -28,6 +28,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
alpha "google.golang.org/api/compute/v0.alpha"
|
||||||
ga "google.golang.org/api/compute/v1"
|
ga "google.golang.org/api/compute/v1"
|
||||||
"google.golang.org/api/googleapi"
|
"google.golang.org/api/googleapi"
|
||||||
cloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud"
|
cloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud"
|
||||||
@ -74,3 +75,21 @@ func RemoveInstanceHook(ctx context.Context, key *meta.Key, req *ga.TargetPoolsR
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetAlphaFwdRuleHook mocks getting an AlphaForwardingRule. ForwardingRules
|
||||||
|
// are expected to default to Premium tier if no NetworkTier is specified.
|
||||||
|
func GetAlphaFwdRuleHook(ctx context.Context, key *meta.Key, m *cloud.MockAlphaForwardingRules) (bool, *alpha.ForwardingRule, error) {
|
||||||
|
if obj, ok := m.Objects[*key]; ok {
|
||||||
|
typedObj := obj.ToAlpha()
|
||||||
|
if typedObj.NetworkTier == "" {
|
||||||
|
typedObj.NetworkTier = "PREMIUM"
|
||||||
|
}
|
||||||
|
return true, typedObj, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
err := &googleapi.Error{
|
||||||
|
Code: http.StatusNotFound,
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, nil, err
|
||||||
|
}
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/mock"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/mock"
|
||||||
@ -296,6 +297,7 @@ func fakeGCECloud() (*GCECloud, error) {
|
|||||||
cloud := cloud.NewMockGCE(&gceProjectRouter{gce})
|
cloud := cloud.NewMockGCE(&gceProjectRouter{gce})
|
||||||
cloud.MockTargetPools.AddInstanceHook = mock.AddInstanceHook
|
cloud.MockTargetPools.AddInstanceHook = mock.AddInstanceHook
|
||||||
cloud.MockTargetPools.RemoveInstanceHook = mock.RemoveInstanceHook
|
cloud.MockTargetPools.RemoveInstanceHook = mock.RemoveInstanceHook
|
||||||
|
cloud.MockAlphaForwardingRules.GetHook = mock.GetAlphaFwdRuleHook
|
||||||
|
|
||||||
gce.c = cloud
|
gce.c = cloud
|
||||||
|
|
||||||
@ -501,3 +503,54 @@ func TestEnsureExternalLoadBalancerDeleted(t *testing.T) {
|
|||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Nil(t, fwdRule)
|
assert.Nil(t, fwdRule)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLoadBalancerWrongTierResourceDeletion(t *testing.T) {
|
||||||
|
gce, err := fakeGCECloud()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Enable the NetworkTiers feature
|
||||||
|
gce.AlphaFeatureGate.features[AlphaFeatureNetworkTiers] = true
|
||||||
|
apiService.Annotations = map[string]string{NetworkTierAnnotationKey: "Premium"}
|
||||||
|
|
||||||
|
// NetworkTier defaults to Premium
|
||||||
|
desiredTier, err := gce.getServiceNetworkTier(apiService)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, NetworkTierPremium, desiredTier)
|
||||||
|
|
||||||
|
lbName := cloudprovider.GetLoadBalancerName(apiService)
|
||||||
|
serviceName := types.NamespacedName{Namespace: apiService.Namespace, Name: apiService.Name}
|
||||||
|
|
||||||
|
// create ForwardingRule and Address with the wrong tier
|
||||||
|
err = createForwardingRule(
|
||||||
|
gce,
|
||||||
|
lbName,
|
||||||
|
serviceName.String(),
|
||||||
|
gceRegion,
|
||||||
|
"",
|
||||||
|
gce.targetPoolURL(lbName),
|
||||||
|
apiService.Spec.Ports,
|
||||||
|
NetworkTierStandard,
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
addressObj := &computealpha.Address{
|
||||||
|
Name: lbName,
|
||||||
|
Description: serviceName.String(),
|
||||||
|
NetworkTier: NetworkTierStandard.ToGCEValue(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err = gce.ReserveAlphaRegionAddress(addressObj, gceRegion)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = createExternalLoadBalancer(gce)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Expect forwarding rule tier to not be Standard
|
||||||
|
tier, err := gce.getNetworkTierFromForwardingRule(lbName, gceRegion)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, NetworkTierDefault.ToGCEValue(), tier)
|
||||||
|
|
||||||
|
// Expect address to be deleted
|
||||||
|
_, err = gce.GetRegionAddress(lbName, gceRegion)
|
||||||
|
assert.True(t, isNotFound(err))
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user