Service creates Service object
(n ClusterPolicyController)
| 4882 | |
| 4883 | // Service creates Service object |
| 4884 | func Service(n ClusterPolicyController) (gpuv1.State, error) { |
| 4885 | ctx := n.ctx |
| 4886 | state := n.idx |
| 4887 | obj := n.resources[state].Service.DeepCopy() |
| 4888 | |
| 4889 | obj.Namespace = n.operatorNamespace |
| 4890 | |
| 4891 | logger := n.logger.WithValues("Service", obj.Name, "Namespace", obj.Namespace) |
| 4892 | |
| 4893 | // Check if state is disabled and cleanup resource if exists |
| 4894 | if !n.isStateEnabled(n.stateNames[n.idx]) { |
| 4895 | err := n.client.Delete(ctx, obj) |
| 4896 | if err != nil && !apierrors.IsNotFound(err) { |
| 4897 | logger.Info("Couldn't delete", "Error", err) |
| 4898 | return gpuv1.NotReady, err |
| 4899 | } |
| 4900 | return gpuv1.Disabled, nil |
| 4901 | } |
| 4902 | |
| 4903 | if err := controllerutil.SetControllerReference(n.singleton, obj, n.scheme); err != nil { |
| 4904 | return gpuv1.NotReady, err |
| 4905 | } |
| 4906 | |
| 4907 | err := preprocessService(obj, n) |
| 4908 | if err != nil { |
| 4909 | logger.Info("Couldn't preprocess Service", "Error", err) |
| 4910 | return gpuv1.NotReady, err |
| 4911 | } |
| 4912 | |
| 4913 | found := &corev1.Service{} |
| 4914 | err = n.client.Get(ctx, types.NamespacedName{Namespace: obj.Namespace, Name: obj.Name}, found) |
| 4915 | if err != nil && apierrors.IsNotFound(err) { |
| 4916 | logger.Info("Not found, creating...") |
| 4917 | err = n.client.Create(ctx, obj) |
| 4918 | if err != nil { |
| 4919 | logger.Info("Couldn't create", "Error", err) |
| 4920 | return gpuv1.NotReady, err |
| 4921 | } |
| 4922 | return gpuv1.Ready, nil |
| 4923 | } else if err != nil { |
| 4924 | return gpuv1.NotReady, err |
| 4925 | } |
| 4926 | |
| 4927 | logger.Info("Found Resource, updating...") |
| 4928 | obj.ResourceVersion = found.ResourceVersion |
| 4929 | obj.Spec.ClusterIP = found.Spec.ClusterIP |
| 4930 | |
| 4931 | err = n.client.Update(ctx, obj) |
| 4932 | if err != nil { |
| 4933 | logger.Info("Couldn't update", "Error", err) |
| 4934 | return gpuv1.NotReady, err |
| 4935 | } |
| 4936 | return gpuv1.Ready, nil |
| 4937 | } |
| 4938 | |
| 4939 | func crdExists(n ClusterPolicyController, name string) (bool, error) { |
| 4940 | crd := &apiextensionsv1.CustomResourceDefinition{} |