|
5 | 5 | jsonencoding "encoding/json"
|
6 | 6 | "fmt"
|
7 | 7 | "reflect"
|
8 |
| - "strconv" |
9 | 8 | "strings"
|
10 | 9 | "time"
|
11 | 10 |
|
@@ -768,9 +767,26 @@ func restoreServiceDefinitions(cli *client.VanClient, name string) error {
|
768 | 767 | }
|
769 | 768 | if hasOriginalTargetPort(*service) {
|
770 | 769 | updated = true
|
771 |
| - originalTargetPort, _ := strconv.Atoi(service.ObjectMeta.Annotations[types.OriginalTargetPortQualifier]) |
| 770 | + originalTargetPortMap := kube.GetOriginalTargetPorts(service) |
| 771 | + restoredPorts := make([]corev1.ServicePort, 0, len(originalTargetPortMap)) |
| 772 | + for _, port := range service.Spec.Ports { |
| 773 | + originalTargetPort, exists := originalTargetPortMap[int(port.Port)] |
| 774 | + if exists { |
| 775 | + port.TargetPort = intstr.FromInt(originalTargetPort) |
| 776 | + restoredPorts = append(restoredPorts, port) |
| 777 | + delete(originalTargetPortMap, int(port.Port)) |
| 778 | + } |
| 779 | + } |
| 780 | + for iPort, tPort := range originalTargetPortMap { |
| 781 | + restoredPorts = append(restoredPorts, corev1.ServicePort{ |
| 782 | + Name: fmt.Sprintf("port%d", iPort), |
| 783 | + Protocol: "TCP", |
| 784 | + Port: int32(iPort), |
| 785 | + TargetPort: intstr.FromInt(tPort), |
| 786 | + }) |
| 787 | + } |
772 | 788 | delete(service.ObjectMeta.Annotations, types.OriginalTargetPortQualifier)
|
773 |
| - service.Spec.Ports[0].TargetPort = intstr.FromInt(originalTargetPort) |
| 789 | + service.Spec.Ports = restoredPorts |
774 | 790 | }
|
775 | 791 | if hasOriginalAssigned(*service) {
|
776 | 792 | updated = true
|
|
0 commit comments