mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Add test for wrong networktier resource deletion
This commit is contained in:
parent
6235a60906
commit
a39e7e4146
@ -28,6 +28,7 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
alpha "google.golang.org/api/compute/v0.alpha"
|
||||
ga "google.golang.org/api/compute/v1"
|
||||
"google.golang.org/api/googleapi"
|
||||
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
|
||||
}
|
||||
|
||||
// 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"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud"
|
||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/mock"
|
||||
@ -296,6 +297,7 @@ func fakeGCECloud() (*GCECloud, error) {
|
||||
cloud := cloud.NewMockGCE(&gceProjectRouter{gce})
|
||||
cloud.MockTargetPools.AddInstanceHook = mock.AddInstanceHook
|
||||
cloud.MockTargetPools.RemoveInstanceHook = mock.RemoveInstanceHook
|
||||
cloud.MockAlphaForwardingRules.GetHook = mock.GetAlphaFwdRuleHook
|
||||
|
||||
gce.c = cloud
|
||||
|
||||
@ -501,3 +503,54 @@ func TestEnsureExternalLoadBalancerDeleted(t *testing.T) {
|
||||
require.Error(t, err)
|
||||
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