Merge pull request #476 from XiShanYongYe-Chang/cleanup_retainServiceFields

Cleanup cyclomatic complexity with function retainServiceFields
This commit is contained in:
karmada-bot 2021-07-02 09:39:17 +08:00 committed by GitHub
commit a83ecff01a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 25 additions and 7 deletions

View File

@ -59,10 +59,25 @@ func retainPodFields(desiredObj, clusterObj *unstructured.Unstructured) error {
} }
// retainServiceFields updates the desired service object with values retained from the cluster object. // retainServiceFields updates the desired service object with values retained from the cluster object.
//nolint:gocyclo
// Note: ignore the cyclomatic complexity issue to get gocyclo on board. Tracked by: https://github.com/karmada-io/karmada/issues/460
func retainServiceFields(desiredObj, clusterObj *unstructured.Unstructured) error { func retainServiceFields(desiredObj, clusterObj *unstructured.Unstructured) error {
// healthCheckNodePort is allocated by APIServer and unchangeable, so it should be retained while updating // healthCheckNodePort is allocated by APIServer and unchangeable, so it should be retained while updating
if err := retainServiceHealthCheckNodePort(desiredObj, clusterObj); err != nil {
return err
}
// ClusterIP and NodePort are allocated to Service by cluster, so retain the same if any while updating
if err := retainServiceClusterIP(desiredObj, clusterObj); err != nil {
return err
}
if err := retainServiceNodePort(desiredObj, clusterObj); err != nil {
return err
}
return nil
}
func retainServiceHealthCheckNodePort(desiredObj, clusterObj *unstructured.Unstructured) error {
healthCheckNodePort, ok, err := unstructured.NestedInt64(clusterObj.Object, "spec", "healthCheckNodePort") healthCheckNodePort, ok, err := unstructured.NestedInt64(clusterObj.Object, "spec", "healthCheckNodePort")
if err != nil { if err != nil {
return fmt.Errorf("error retrieving healthCheckNodePort from service: %w", err) return fmt.Errorf("error retrieving healthCheckNodePort from service: %w", err)
@ -72,23 +87,25 @@ func retainServiceFields(desiredObj, clusterObj *unstructured.Unstructured) erro
return fmt.Errorf("error setting healthCheckNodePort for service: %w", err) return fmt.Errorf("error setting healthCheckNodePort for service: %w", err)
} }
} }
return nil
}
// ClusterIP and NodePort are allocated to Service by cluster, so retain the same if any while updating func retainServiceClusterIP(desiredObj, clusterObj *unstructured.Unstructured) error {
// Retain clusterip
clusterIP, ok, err := unstructured.NestedString(clusterObj.Object, "spec", "clusterIP") clusterIP, ok, err := unstructured.NestedString(clusterObj.Object, "spec", "clusterIP")
if err != nil { if err != nil {
return fmt.Errorf("error retrieving clusterIP from cluster service: %w", err) return fmt.Errorf("error retrieving clusterIP from cluster service: %w", err)
} }
// !ok could indicate that a cluster ip was not assigned // !ok could indicate that a cluster ip was not assigned
if ok && clusterIP != "" { if ok && clusterIP != "" {
err := unstructured.SetNestedField(desiredObj.Object, clusterIP, "spec", "clusterIP") err = unstructured.SetNestedField(desiredObj.Object, clusterIP, "spec", "clusterIP")
if err != nil { if err != nil {
return fmt.Errorf("error setting clusterIP for service: %w", err) return fmt.Errorf("error setting clusterIP for service: %w", err)
} }
} }
return nil
}
// Retain nodeports func retainServiceNodePort(desiredObj, clusterObj *unstructured.Unstructured) error {
clusterPorts, ok, err := unstructured.NestedSlice(clusterObj.Object, "spec", "ports") clusterPorts, ok, err := unstructured.NestedSlice(clusterObj.Object, "spec", "ports")
if err != nil { if err != nil {
return fmt.Errorf("error retrieving ports from cluster service: %w", err) return fmt.Errorf("error retrieving ports from cluster service: %w", err)
@ -96,6 +113,7 @@ func retainServiceFields(desiredObj, clusterObj *unstructured.Unstructured) erro
if !ok { if !ok {
return nil return nil
} }
var desiredPorts []interface{} var desiredPorts []interface{}
desiredPorts, ok, err = unstructured.NestedSlice(desiredObj.Object, "spec", "ports") desiredPorts, ok, err = unstructured.NestedSlice(desiredObj.Object, "spec", "ports")
if err != nil { if err != nil {