mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-08-17 04:36:05 +00:00
Don't delete 'headless' services
Deleting the clusterIP field when the service should be headless will
cause it to be assigned a new IP on restore; instead it should retain
the headless state after restoration.
Fixes #168
Signed-off-by: Nolan Brubaker <nolan@heptio.com>
(cherry picked from commit d87e8ee16e)
This commit is contained in:
committed by
Andy Goldstein
parent
0c13ef06ea
commit
330a0502d1
@@ -45,7 +45,10 @@ func (sr *serviceRestorer) Prepare(obj runtime.Unstructured, restore *api.Restor
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
delete(spec, "clusterIP")
|
||||
// Since clusterIP is an optional key, we can ignore 'not found' errors. Also assuming it was a string already.
|
||||
if val, _ := collections.GetString(spec, "clusterIP"); val != "None" {
|
||||
delete(spec, "clusterIP")
|
||||
}
|
||||
|
||||
ports, err := collections.GetSlice(obj.UnstructuredContent(), "spec.ports")
|
||||
if err != nil {
|
||||
|
||||
@@ -42,6 +42,12 @@ func TestServiceRestorerPrepare(t *testing.T) {
|
||||
expectedErr: false,
|
||||
expectedRes: NewTestUnstructured().WithName("svc-1").WithSpec("foo").WithSpecField("ports", []interface{}{}).Unstructured,
|
||||
},
|
||||
{
|
||||
name: "headless clusterIP should not be deleted from spec",
|
||||
obj: NewTestUnstructured().WithName("svc-1").WithSpecField("clusterIP", "None").WithSpecField("ports", []interface{}{}).Unstructured,
|
||||
expectedErr: false,
|
||||
expectedRes: NewTestUnstructured().WithName("svc-1").WithSpecField("clusterIP", "None").WithSpecField("ports", []interface{}{}).Unstructured,
|
||||
},
|
||||
{
|
||||
name: "nodePort (only) should be deleted from all spec.ports",
|
||||
obj: NewTestUnstructured().WithName("svc-1").
|
||||
|
||||
Reference in New Issue
Block a user