diff --git a/controllers/inferenceservice_controller.go b/controllers/inferenceservice_controller.go index 52c37715..1c262a2a 100644 --- a/controllers/inferenceservice_controller.go +++ b/controllers/inferenceservice_controller.go @@ -29,7 +29,6 @@ import ( networkingv1 "k8s.io/api/networking/v1" authv1 "k8s.io/api/rbac/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -40,22 +39,22 @@ import ( // OpenshiftInferenceServiceReconciler holds the controller configuration. type OpenshiftInferenceServiceReconciler struct { - client client.Client - scheme *runtime.Scheme - log logr.Logger - MeshDisabled bool - mmISVCReconciler *reconcilers.ModelMeshInferenceServiceReconciler - kserveISVCReconciler *reconcilers.KserveInferenceServiceReconciler + client client.Client + log logr.Logger + MeshDisabled bool + mmISVCReconciler *reconcilers.ModelMeshInferenceServiceReconciler + kserveServerlessISVCReconciler *reconcilers.KserveServerlessInferenceServiceReconciler + kserveRawISVCReconciler *reconcilers.KserveRawInferenceServiceReconciler } -func NewOpenshiftInferenceServiceReconciler(client client.Client, scheme *runtime.Scheme, log logr.Logger, meshDisabled bool) *OpenshiftInferenceServiceReconciler { +func NewOpenshiftInferenceServiceReconciler(client client.Client, log logr.Logger, meshDisabled bool) *OpenshiftInferenceServiceReconciler { return &OpenshiftInferenceServiceReconciler{ - client: client, - scheme: scheme, - log: log, - MeshDisabled: meshDisabled, - mmISVCReconciler: reconcilers.NewModelMeshInferenceServiceReconciler(client, scheme), - kserveISVCReconciler: reconcilers.NewKServeInferenceServiceReconciler(client, scheme), + client: client, + log: log, + MeshDisabled: meshDisabled, + mmISVCReconciler: reconcilers.NewModelMeshInferenceServiceReconciler(client), + kserveServerlessISVCReconciler: reconcilers.NewKServeServerlessInferenceServiceReconciler(client), + kserveRawISVCReconciler: reconcilers.NewKServeRawInferenceServiceReconciler(client), } } @@ -98,10 +97,10 @@ func (r *OpenshiftInferenceServiceReconciler) Reconcile(ctx context.Context, req err = r.mmISVCReconciler.Reconcile(ctx, log, isvc) case utils.Serverless: log.Info("Reconciling InferenceService for Kserve in mode Serverless") - err = r.kserveISVCReconciler.ReconcileServerless(ctx, log, isvc) + err = r.kserveServerlessISVCReconciler.Reconcile(ctx, log, isvc) case utils.RawDeployment: log.Info("Reconciling InferenceService for Kserve in mode RawDeployment") - err = r.kserveISVCReconciler.ReconcileRawDeployment(ctx, log, isvc) + err = r.kserveRawISVCReconciler.Reconcile(ctx, log, isvc) } return ctrl.Result{}, err @@ -183,13 +182,13 @@ func (r *OpenshiftInferenceServiceReconciler) onDeletion(ctx context.Context, lo } if IsvcDeploymentMode == utils.Serverless { log.V(1).Info("Deleting kserve inference resource (Serverless Mode)") - return r.kserveISVCReconciler.OnDeletionOfKserveInferenceService(ctx, log, inferenceService) + return r.kserveServerlessISVCReconciler.OnDeletionOfKserveInferenceService(ctx, log, inferenceService) } return nil } func (r *OpenshiftInferenceServiceReconciler) DeleteResourcesIfNoIsvcExists(ctx context.Context, log logr.Logger, isvcNamespace string) error { - if err := r.kserveISVCReconciler.DeleteKserveMetricsResourcesIfNoKserveIsvcExists(ctx, log, isvcNamespace); err != nil { + if err := r.kserveServerlessISVCReconciler.DeleteKserveMetricsResourcesIfNoKserveIsvcExists(ctx, log, isvcNamespace); err != nil { return err } if err := r.mmISVCReconciler.DeleteModelMeshResourcesIfNoMMIsvcExists(ctx, log, isvcNamespace); err != nil { diff --git a/controllers/kserve_customcacert_controller.go b/controllers/kserve_customcacert_controller.go index 0e5eb80c..6b8a7338 100644 --- a/controllers/kserve_customcacert_controller.go +++ b/controllers/kserve_customcacert_controller.go @@ -25,7 +25,6 @@ import ( corev1 "k8s.io/api/core/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" @@ -41,8 +40,7 @@ const ( type KServeCustomCACertReconciler struct { client.Client - Scheme *runtime.Scheme - Log logr.Logger + Log logr.Logger } // reconcileConfigMap watch odh global ca cert and it will create/update/delete kserve custom cert configmap diff --git a/controllers/monitoring_controller.go b/controllers/monitoring_controller.go index 59c04c4f..f858de9c 100644 --- a/controllers/monitoring_controller.go +++ b/controllers/monitoring_controller.go @@ -23,7 +23,6 @@ import ( k8srbacv1 "k8s.io/api/rbac/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "reflect" ctrl "sigs.k8s.io/controller-runtime" @@ -43,7 +42,6 @@ const ( type MonitoringReconciler struct { client.Client - Scheme *runtime.Scheme Log logr.Logger MonitoringNS string } diff --git a/controllers/mr_inferenceservice_controller.go b/controllers/mr_inferenceservice_controller.go index 6b08594f..4edf9906 100644 --- a/controllers/mr_inferenceservice_controller.go +++ b/controllers/mr_inferenceservice_controller.go @@ -18,7 +18,6 @@ import ( "google.golang.org/grpc/credentials/insecure" corev1 "k8s.io/api/core/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" @@ -29,15 +28,13 @@ const modelRegistryFinalizer = "modelregistry.opendatahub.io/finalizer" // ModelRegistryInferenceServiceReconciler holds the controller configuration. type ModelRegistryInferenceServiceReconciler struct { client client.Client - scheme *runtime.Scheme log logr.Logger deltaProcessor processors.DeltaProcessor } -func NewModelRegistryInferenceServiceReconciler(client client.Client, scheme *runtime.Scheme, log logr.Logger) *ModelRegistryInferenceServiceReconciler { +func NewModelRegistryInferenceServiceReconciler(client client.Client, log logr.Logger) *ModelRegistryInferenceServiceReconciler { return &ModelRegistryInferenceServiceReconciler{ client: client, - scheme: scheme, log: log, deltaProcessor: processors.NewDeltaProcessor(), } diff --git a/controllers/reconcilers/kserve_authconfig_reconciler.go b/controllers/reconcilers/kserve_authconfig_reconciler.go index 678708ec..7ddd4fd1 100644 --- a/controllers/reconcilers/kserve_authconfig_reconciler.go +++ b/controllers/reconcilers/kserve_authconfig_reconciler.go @@ -27,15 +27,15 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/processors" "github.com/opendatahub-io/odh-model-controller/controllers/resources" k8serror "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" ) +var _ SubResourceReconciler = (*KserveAuthConfigReconciler)(nil) + type KserveAuthConfigReconciler struct { client client.Client - scheme *runtime.Scheme deltaProcessor processors.DeltaProcessor detector resources.AuthTypeDetector store resources.AuthConfigStore @@ -43,10 +43,9 @@ type KserveAuthConfigReconciler struct { hostExtractor resources.InferenceServiceHostExtractor } -func NewKserveAuthConfigReconciler(client client.Client, scheme *runtime.Scheme) *KserveAuthConfigReconciler { +func NewKserveAuthConfigReconciler(client client.Client) *KserveAuthConfigReconciler { return &KserveAuthConfigReconciler{ client: client, - scheme: scheme, deltaProcessor: processors.NewDeltaProcessor(), detector: resources.NewKServeAuthTypeDetector(client), store: resources.NewClientAuthConfigStore(client), @@ -56,6 +55,7 @@ func NewKserveAuthConfigReconciler(client client.Client, scheme *runtime.Scheme) } func (r *KserveAuthConfigReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling Authorino AuthConfig for InferenceService") if isvc.Status.URL == nil { log.V(1).Info("Inference Service not ready yet, waiting for URL") @@ -77,7 +77,20 @@ func (r *KserveAuthConfigReconciler) Reconcile(ctx context.Context, log logr.Log return err } return nil +} +func (r *KserveAuthConfigReconciler) Delete(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Deleting Kserve inference service authorino authconfig entry") + typeName := types.NamespacedName{ + Name: isvc.GetName(), + Namespace: isvc.GetNamespace(), + } + return r.store.Remove(ctx, typeName) +} + +func (r *KserveAuthConfigReconciler) Cleanup(_ context.Context, _ logr.Logger, _ string) error { + // NOOP + return nil } func (r *KserveAuthConfigReconciler) createDesiredResource(ctx context.Context, isvc *kservev1beta1.InferenceService) (*authorinov1beta2.AuthConfig, error) { @@ -103,7 +116,7 @@ func (r *KserveAuthConfigReconciler) createDesiredResource(ctx context.Context, } template.Labels[constants.LabelAuthGroup] = "default" - ctrl.SetControllerReference(isvc, &template, r.scheme) + ctrl.SetControllerReference(isvc, &template, r.client.Scheme()) return &template, nil } @@ -152,11 +165,3 @@ func (r *KserveAuthConfigReconciler) processDelta(ctx context.Context, log logr. } return nil } - -func (r *KserveAuthConfigReconciler) Remove(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { - typeName := types.NamespacedName{ - Name: isvc.GetName(), - Namespace: isvc.GetNamespace(), - } - return r.store.Remove(ctx, typeName) -} diff --git a/controllers/reconcilers/kserve_inferenceservice_reconciler.go b/controllers/reconcilers/kserve_inferenceservice_reconciler.go deleted file mode 100644 index a4ed2b0b..00000000 --- a/controllers/reconcilers/kserve_inferenceservice_reconciler.go +++ /dev/null @@ -1,195 +0,0 @@ -/* - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package reconcilers - -import ( - "context" - - "github.com/go-logr/logr" - kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" - "github.com/opendatahub-io/odh-model-controller/controllers/utils" - "k8s.io/apimachinery/pkg/runtime" - "sigs.k8s.io/controller-runtime/pkg/client" -) - -type KserveInferenceServiceReconciler struct { - client client.Client - routeReconciler *KserveRouteReconciler - metricsServiceReconciler *KserveMetricsServiceReconciler - metricsServiceMonitorReconciler *KserveMetricsServiceMonitorReconciler - prometheusRoleBindingReconciler *KservePrometheusRoleBindingReconciler - istioSMMRReconciler *KserveIstioSMMRReconciler - istioTelemetryReconciler *KserveIstioTelemetryReconciler - istioServiceMonitorReconciler *KserveIstioServiceMonitorReconciler - istioPodMonitorReconciler *KserveIstioPodMonitorReconciler - istioPeerAuthenticationReconciler *KserveIstioPeerAuthenticationReconciler - networkPolicyReconciler *KserveNetworkPolicyReconciler - authConfigReconciler *KserveAuthConfigReconciler -} - -func NewKServeInferenceServiceReconciler(client client.Client, scheme *runtime.Scheme) *KserveInferenceServiceReconciler { - return &KserveInferenceServiceReconciler{ - client: client, - istioSMMRReconciler: NewKServeIstioSMMRReconciler(client, scheme), - routeReconciler: NewKserveRouteReconciler(client, scheme), - metricsServiceReconciler: NewKServeMetricsServiceReconciler(client, scheme), - metricsServiceMonitorReconciler: NewKServeMetricsServiceMonitorReconciler(client, scheme), - prometheusRoleBindingReconciler: NewKServePrometheusRoleBindingReconciler(client, scheme), - istioTelemetryReconciler: NewKServeIstioTelemetryReconciler(client, scheme), - istioServiceMonitorReconciler: NewKServeIstioServiceMonitorReconciler(client, scheme), - istioPodMonitorReconciler: NewKServeIstioPodMonitorReconciler(client, scheme), - istioPeerAuthenticationReconciler: NewKServeIstioPeerAuthenticationReconciler(client, scheme), - networkPolicyReconciler: NewKServeNetworkPolicyReconciler(client, scheme), - authConfigReconciler: NewKserveAuthConfigReconciler(client, scheme), - } -} - -func (r *KserveInferenceServiceReconciler) ReconcileRawDeployment(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { - log.V(1).Info("No Reconciliation to be done for inferenceservice as it is using RawDeployment mode") - return nil -} - -func (r *KserveInferenceServiceReconciler) ReconcileServerless(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { - // Resource created per namespace - log.V(1).Info("Verifying that the default ServiceMeshMemberRoll has the target namespace") - if err := r.istioSMMRReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Verifying that the role binding to enable prometheus access exists") - if err := r.prometheusRoleBindingReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Creating Istio Telemetry object for target namespace") - if err := r.istioTelemetryReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Creating Istio ServiceMonitor for target namespace") - if err := r.istioServiceMonitorReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Creating Istio PodMonitor for target namespace") - if err := r.istioPodMonitorReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Reconciling PeerAuthentication for target namespace") - if err := r.istioPeerAuthenticationReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Reconciling NetworkPolicy for target namespace") - if err := r.networkPolicyReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - // Resource created for each ISVC resource - log.V(1).Info("Reconciling Authorino AuthConfig for InferenceService") - if err := r.authConfigReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Reconciling Generic Route for Kserve InferenceService") - if err := r.routeReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Reconciling Metrics Service for InferenceService") - if err := r.metricsServiceReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Reconciling Metrics ServiceMonitor for InferenceService") - if err := r.metricsServiceMonitorReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - return nil -} - -func (r *KserveInferenceServiceReconciler) OnDeletionOfKserveInferenceService(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { - log.V(1).Info("Deleting Kserve inference service generic route") - if err := r.routeReconciler.DeleteRoute(ctx, isvc); err != nil { - return err - } - - log.V(1).Info("Deleting Kserve inference service authorino authconfig entry") - if err := r.authConfigReconciler.Remove(ctx, log, isvc); err != nil { - return err - } - return nil -} - -func (r *KserveInferenceServiceReconciler) DeleteKserveMetricsResourcesIfNoKserveIsvcExists(ctx context.Context, log logr.Logger, isvcNamespace string) error { - inferenceServiceList := &kservev1beta1.InferenceServiceList{} - if err := r.client.List(ctx, inferenceServiceList, client.InNamespace(isvcNamespace)); err != nil { - return err - } - - for i := len(inferenceServiceList.Items) - 1; i >= 0; i-- { - inferenceService := inferenceServiceList.Items[i] - isvcDeploymentMode, err := utils.GetDeploymentModeForIsvc(ctx, r.client, &inferenceService) - if err != nil { - return err - } - if isvcDeploymentMode != utils.Serverless { - inferenceServiceList.Items = append(inferenceServiceList.Items[:i], inferenceServiceList.Items[i+1:]...) - } - } - - // If there are no Kserve InferenceServices in the namespace, delete namespace-scoped resources needed for Kserve Metrics - if len(inferenceServiceList.Items) == 0 { - - log.V(1).Info("Removing target namespace from ServiceMeshMemberRole") - if err := r.istioSMMRReconciler.RemoveMemberFromSMMR(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting Prometheus RoleBinding object for target namespace") - if err := r.prometheusRoleBindingReconciler.DeleteRoleBinding(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting Istio Telemetry object for target namespace") - if err := r.istioTelemetryReconciler.DeleteTelemetry(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting ServiceMonitor object for target namespace") - if err := r.istioServiceMonitorReconciler.DeleteServiceMonitor(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting PodMonitor object for target namespace") - if err := r.istioPodMonitorReconciler.DeletePodMonitor(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting PeerAuthentication object for target namespace") - if err := r.istioPeerAuthenticationReconciler.DeletePeerAuthentication(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting NetworkPolicy object for target namespace") - if err := r.networkPolicyReconciler.DeleteNetworkPolicy(ctx, isvcNamespace); err != nil { - return err - } - } - return nil -} diff --git a/controllers/reconcilers/kserve_istio_peerauthentication_reconciler.go b/controllers/reconcilers/kserve_istio_peerauthentication_reconciler.go index 69bdcbdd..53c4f9a2 100644 --- a/controllers/reconcilers/kserve_istio_peerauthentication_reconciler.go +++ b/controllers/reconcilers/kserve_istio_peerauthentication_reconciler.go @@ -26,7 +26,6 @@ import ( istiotypes "istio.io/api/type/v1beta1" istiosecv1beta1 "istio.io/client-go/pkg/apis/security/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -35,23 +34,25 @@ const ( peerAuthenticationName = "default" ) +var _ SubResourceReconciler = (*KserveIstioPeerAuthenticationReconciler)(nil) + type KserveIstioPeerAuthenticationReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme peerAuthenticationHandler resources.PeerAuthenticationHandler deltaProcessor processors.DeltaProcessor } -func NewKServeIstioPeerAuthenticationReconciler(client client.Client, scheme *runtime.Scheme) *KserveIstioPeerAuthenticationReconciler { +func NewKServeIstioPeerAuthenticationReconciler(client client.Client) *KserveIstioPeerAuthenticationReconciler { return &KserveIstioPeerAuthenticationReconciler{ client: client, - scheme: scheme, peerAuthenticationHandler: resources.NewPeerAuthenticationHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveIstioPeerAuthenticationReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling PeerAuthentication for target namespace") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -72,6 +73,11 @@ func (r *KserveIstioPeerAuthenticationReconciler) Reconcile(ctx context.Context, return nil } +func (r *KserveIstioPeerAuthenticationReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting PeerAuthentication object for target namespace") + return r.peerAuthenticationHandler.DeletePeerAuthentication(ctx, types.NamespacedName{Name: peerAuthenticationName, Namespace: isvcNs}) +} + func (r *KserveIstioPeerAuthenticationReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*istiosecv1beta1.PeerAuthentication, error) { desiredPeerAuthentication := &istiosecv1beta1.PeerAuthentication{ ObjectMeta: metav1.ObjectMeta{ @@ -132,7 +138,3 @@ func (r *KserveIstioPeerAuthenticationReconciler) processDelta(ctx context.Conte } return nil } - -func (r *KserveIstioPeerAuthenticationReconciler) DeletePeerAuthentication(ctx context.Context, isvcNamespace string) error { - return r.peerAuthenticationHandler.DeletePeerAuthentication(ctx, types.NamespacedName{Name: peerAuthenticationName, Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/kserve_istio_podmonitor_reconciler.go b/controllers/reconcilers/kserve_istio_podmonitor_reconciler.go index 370d1a31..66e3e22d 100644 --- a/controllers/reconcilers/kserve_istio_podmonitor_reconciler.go +++ b/controllers/reconcilers/kserve_istio_podmonitor_reconciler.go @@ -24,7 +24,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -33,23 +32,25 @@ const ( istioPodMonitorName = "istio-proxies-monitor" ) +var _ SubResourceReconciler = (*KserveIstioPodMonitorReconciler)(nil) + type KserveIstioPodMonitorReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme podMonitorHandler resources.PodMonitorHandler deltaProcessor processors.DeltaProcessor } -func NewKServeIstioPodMonitorReconciler(client client.Client, scheme *runtime.Scheme) *KserveIstioPodMonitorReconciler { +func NewKServeIstioPodMonitorReconciler(client client.Client) *KserveIstioPodMonitorReconciler { return &KserveIstioPodMonitorReconciler{ client: client, - scheme: scheme, podMonitorHandler: resources.NewPodMonitorHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveIstioPodMonitorReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Creating Istio PodMonitor for target namespace") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -70,6 +71,11 @@ func (r *KserveIstioPodMonitorReconciler) Reconcile(ctx context.Context, log log return nil } +func (r *KserveIstioPodMonitorReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting PodMonitor object for target namespace") + return r.podMonitorHandler.DeletePodMonitor(ctx, types.NamespacedName{Name: istioPodMonitorName, Namespace: isvcNs}) +} + func (r *KserveIstioPodMonitorReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*v1.PodMonitor, error) { desiredPodMonitor := &v1.PodMonitor{ ObjectMeta: metav1.ObjectMeta{ @@ -132,7 +138,3 @@ func (r *KserveIstioPodMonitorReconciler) processDelta(ctx context.Context, log } return nil } - -func (r *KserveIstioPodMonitorReconciler) DeletePodMonitor(ctx context.Context, isvcNamespace string) error { - return r.podMonitorHandler.DeletePodMonitor(ctx, types.NamespacedName{Name: istioPodMonitorName, Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/kserve_istio_servicemonitor_reconciler.go b/controllers/reconcilers/kserve_istio_servicemonitor_reconciler.go index 93ccda6d..a010a7c8 100644 --- a/controllers/reconcilers/kserve_istio_servicemonitor_reconciler.go +++ b/controllers/reconcilers/kserve_istio_servicemonitor_reconciler.go @@ -24,7 +24,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -33,23 +32,25 @@ const ( istioServiceMonitorName = "istiod-monitor" ) +var _ SubResourceReconciler = (*KserveIstioServiceMonitorReconciler)(nil) + type KserveIstioServiceMonitorReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme serviceMonitorHandler resources.ServiceMonitorHandler deltaProcessor processors.DeltaProcessor } -func NewKServeIstioServiceMonitorReconciler(client client.Client, scheme *runtime.Scheme) *KserveIstioServiceMonitorReconciler { +func NewKServeIstioServiceMonitorReconciler(client client.Client) *KserveIstioServiceMonitorReconciler { return &KserveIstioServiceMonitorReconciler{ client: client, - scheme: scheme, serviceMonitorHandler: resources.NewServiceMonitorHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveIstioServiceMonitorReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Creating Istio ServiceMonitor for target namespace") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -70,6 +71,11 @@ func (r *KserveIstioServiceMonitorReconciler) Reconcile(ctx context.Context, log return nil } +func (r *KserveIstioServiceMonitorReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting ServiceMonitor object for target namespace") + return r.serviceMonitorHandler.DeleteServiceMonitor(ctx, types.NamespacedName{Name: istioServiceMonitorName, Namespace: isvcNs}) +} + func (r *KserveIstioServiceMonitorReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*v1.ServiceMonitor, error) { desiredServiceMonitor := &v1.ServiceMonitor{ ObjectMeta: metav1.ObjectMeta{ @@ -132,7 +138,3 @@ func (r *KserveIstioServiceMonitorReconciler) processDelta(ctx context.Context, } return nil } - -func (r *KserveIstioServiceMonitorReconciler) DeleteServiceMonitor(ctx context.Context, isvcNamespace string) error { - return r.serviceMonitorHandler.DeleteServiceMonitor(ctx, types.NamespacedName{Name: istioServiceMonitorName, Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/kserve_istio_smmr_reconciler.go b/controllers/reconcilers/kserve_istio_smmr_reconciler.go index a7879606..b26222f5 100644 --- a/controllers/reconcilers/kserve_istio_smmr_reconciler.go +++ b/controllers/reconcilers/kserve_istio_smmr_reconciler.go @@ -24,29 +24,30 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/processors" "github.com/opendatahub-io/odh-model-controller/controllers/resources" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" v1 "maistra.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) +var _ SubResourceReconciler = (*KserveIstioSMMRReconciler)(nil) + type KserveIstioSMMRReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme smmrHandler resources.ServiceMeshMemberRollHandler deltaProcessor processors.DeltaProcessor } -func NewKServeIstioSMMRReconciler(client client.Client, scheme *runtime.Scheme) *KserveIstioSMMRReconciler { +func NewKServeIstioSMMRReconciler(client client.Client) *KserveIstioSMMRReconciler { return &KserveIstioSMMRReconciler{ client: client, - scheme: scheme, smmrHandler: resources.NewServiceMeshMemberRole(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveIstioSMMRReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Verifying that the default ServiceMeshMemberRoll has the target namespace") // Create Desired resource desiredResource, err := r.createDesiredResource(ctx, log, isvc) @@ -67,6 +68,11 @@ func (r *KserveIstioSMMRReconciler) Reconcile(ctx context.Context, log logr.Logg return nil } +func (r *KserveIstioSMMRReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Removing target namespace from ServiceMeshMemberRole") + return r.smmrHandler.RemoveMemberFromSMMR(ctx, types.NamespacedName{Name: constants.ServiceMeshMemberRollName, Namespace: constants.IstioNamespace}, isvcNs) +} + func (r *KserveIstioSMMRReconciler) createDesiredResource(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) (*v1.ServiceMeshMemberRoll, error) { desiredSMMR, err := r.smmrHandler.FetchSMMR(ctx, log, types.NamespacedName{Name: constants.ServiceMeshMemberRollName, Namespace: constants.IstioNamespace}) if err != nil { @@ -137,7 +143,3 @@ func (r *KserveIstioSMMRReconciler) processDelta(ctx context.Context, log logr.L } return nil } - -func (r *KserveIstioSMMRReconciler) RemoveMemberFromSMMR(ctx context.Context, isvcNamespace string) error { - return r.smmrHandler.RemoveMemberFromSMMR(ctx, types.NamespacedName{Name: constants.ServiceMeshMemberRollName, Namespace: constants.IstioNamespace}, isvcNamespace) -} diff --git a/controllers/reconcilers/kserve_istio_telemetry_reconciler.go b/controllers/reconcilers/kserve_istio_telemetry_reconciler.go index 6051efc9..9652a11e 100644 --- a/controllers/reconcilers/kserve_istio_telemetry_reconciler.go +++ b/controllers/reconcilers/kserve_istio_telemetry_reconciler.go @@ -26,7 +26,6 @@ import ( istiotypes "istio.io/api/type/v1beta1" telemetryv1alpha1 "istio.io/client-go/pkg/apis/telemetry/v1alpha1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -35,23 +34,25 @@ const ( telemetryName = "enable-prometheus-metrics" ) +var _ SubResourceReconciler = (*KserveIstioTelemetryReconciler)(nil) + type KserveIstioTelemetryReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme telemetryHandler resources.TelemetryHandler deltaProcessor processors.DeltaProcessor } -func NewKServeIstioTelemetryReconciler(client client.Client, scheme *runtime.Scheme) *KserveIstioTelemetryReconciler { +func NewKServeIstioTelemetryReconciler(client client.Client) *KserveIstioTelemetryReconciler { return &KserveIstioTelemetryReconciler{ client: client, - scheme: scheme, telemetryHandler: resources.NewTelemetryHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveIstioTelemetryReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Creating Istio Telemetry object for target namespace") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -72,6 +73,11 @@ func (r *KserveIstioTelemetryReconciler) Reconcile(ctx context.Context, log logr return nil } +func (r *KserveIstioTelemetryReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting Istio Telemetry object for target namespace") + return r.telemetryHandler.DeleteTelemetry(ctx, types.NamespacedName{Name: telemetryName, Namespace: isvcNs}) +} + func (r *KserveIstioTelemetryReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*telemetryv1alpha1.Telemetry, error) { desiredTelemetry := &telemetryv1alpha1.Telemetry{ ObjectMeta: metav1.ObjectMeta{ @@ -135,7 +141,3 @@ func (r *KserveIstioTelemetryReconciler) processDelta(ctx context.Context, log l } return nil } - -func (r *KserveIstioTelemetryReconciler) DeleteTelemetry(ctx context.Context, isvcNamespace string) error { - return r.telemetryHandler.DeleteTelemetry(ctx, types.NamespacedName{Name: telemetryName, Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/kserve_metrics_service_reconciler.go b/controllers/reconcilers/kserve_metrics_service_reconciler.go index 40bb1e3d..8d30c70c 100644 --- a/controllers/reconcilers/kserve_metrics_service_reconciler.go +++ b/controllers/reconcilers/kserve_metrics_service_reconciler.go @@ -24,7 +24,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" ctrl "sigs.k8s.io/controller-runtime" @@ -35,23 +34,25 @@ const ( inferenceServiceLabelName = "serving.kserve.io/inferenceservice" ) +var _ SubResourceReconciler = (*KserveMetricsServiceReconciler)(nil) + type KserveMetricsServiceReconciler struct { + NoResourceRemoval client client.Client - scheme *runtime.Scheme serviceHandler resources.ServiceHandler deltaProcessor processors.DeltaProcessor } -func NewKServeMetricsServiceReconciler(client client.Client, scheme *runtime.Scheme) *KserveMetricsServiceReconciler { +func NewKServeMetricsServiceReconciler(client client.Client) *KserveMetricsServiceReconciler { return &KserveMetricsServiceReconciler{ client: client, - scheme: scheme, serviceHandler: resources.NewServiceHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveMetricsServiceReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling Metrics Service for InferenceService") // Create Desired resource desiredResource, err := r.createDesiredResource(log, isvc) @@ -102,7 +103,7 @@ func (r *KserveMetricsServiceReconciler) createDesiredResource(log logr.Logger, }, }, } - if err := ctrl.SetControllerReference(isvc, metricsService, r.scheme); err != nil { + if err := ctrl.SetControllerReference(isvc, metricsService, r.client.Scheme()); err != nil { log.Error(err, "Unable to add OwnerReference to the Metrics Service") return nil, err } diff --git a/controllers/reconcilers/kserve_metrics_servicemonitor_reconciler.go b/controllers/reconcilers/kserve_metrics_servicemonitor_reconciler.go index 2476a543..5017e21d 100644 --- a/controllers/reconcilers/kserve_metrics_servicemonitor_reconciler.go +++ b/controllers/reconcilers/kserve_metrics_servicemonitor_reconciler.go @@ -24,29 +24,30 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" ) +var _ SubResourceReconciler = (*KserveMetricsServiceMonitorReconciler)(nil) + type KserveMetricsServiceMonitorReconciler struct { + NoResourceRemoval client client.Client - scheme *runtime.Scheme serviceMonitorHandler resources.ServiceMonitorHandler deltaProcessor processors.DeltaProcessor } -func NewKServeMetricsServiceMonitorReconciler(client client.Client, scheme *runtime.Scheme) *KserveMetricsServiceMonitorReconciler { +func NewKServeMetricsServiceMonitorReconciler(client client.Client) *KserveMetricsServiceMonitorReconciler { return &KserveMetricsServiceMonitorReconciler{ client: client, - scheme: scheme, serviceMonitorHandler: resources.NewServiceMonitorHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveMetricsServiceMonitorReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling Metrics ServiceMonitor for InferenceService") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -92,7 +93,7 @@ func (r *KserveMetricsServiceMonitorReconciler) createDesiredResource(isvc *kser }, }, } - if err := ctrl.SetControllerReference(isvc, desiredServiceMonitor, r.scheme); err != nil { + if err := ctrl.SetControllerReference(isvc, desiredServiceMonitor, r.client.Scheme()); err != nil { return nil, err } return desiredServiceMonitor, nil diff --git a/controllers/reconcilers/kserve_networkpolicy_reconciler.go b/controllers/reconcilers/kserve_networkpolicy_reconciler.go index 424b17a3..397a36cb 100644 --- a/controllers/reconcilers/kserve_networkpolicy_reconciler.go +++ b/controllers/reconcilers/kserve_networkpolicy_reconciler.go @@ -25,7 +25,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" "k8s.io/api/networking/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -38,23 +37,26 @@ const ( var definedNetworkPolicies = []string{monitoringNetworkPolicyName, openshiftIngressNetworkPolicyName, opendatahubNamespacesNetworkPolicyName} +var _ SubResourceReconciler = (*KserveNetworkPolicyReconciler)(nil) + type KserveNetworkPolicyReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme networkPolicyHandler resources.NetworkPolicyHandler deltaProcessor processors.DeltaProcessor } -func NewKServeNetworkPolicyReconciler(client client.Client, scheme *runtime.Scheme) *KserveNetworkPolicyReconciler { +func NewKServeNetworkPolicyReconciler(client client.Client) *KserveNetworkPolicyReconciler { return &KserveNetworkPolicyReconciler{ client: client, - scheme: scheme, networkPolicyHandler: resources.NewNetworkPolicyHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveNetworkPolicyReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling NetworkPolicy for target namespace") + desiredNetworkPolicies := []*v1.NetworkPolicy{ r.allowTrafficFromMonitoringNamespace(isvc), r.allowOpenshiftIngressPolicy(isvc), @@ -76,6 +78,17 @@ func (r *KserveNetworkPolicyReconciler) Reconcile(ctx context.Context, log logr. return nil } +func (r *KserveNetworkPolicyReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNamespace string) error { + log.V(1).Info("Deleting NetworkPolicy object for target namespace") + for _, networkPolicy := range definedNetworkPolicies { + if err := r.networkPolicyHandler.DeleteNetworkPolicy(ctx, types.NamespacedName{Name: networkPolicy, Namespace: isvcNamespace}); err != nil { + return err + } + } + + return nil +} + func (r *KserveNetworkPolicyReconciler) allowTrafficFromMonitoringNamespace(isvc *kservev1beta1.InferenceService) *v1.NetworkPolicy { desiredNetworkPolicy := &v1.NetworkPolicy{ ObjectMeta: metav1.ObjectMeta{ @@ -219,13 +232,3 @@ func (r *KserveNetworkPolicyReconciler) processDelta(ctx context.Context, log lo } return nil } - -func (r *KserveNetworkPolicyReconciler) DeleteNetworkPolicy(ctx context.Context, isvcNamespace string) error { - for _, networkPolicy := range definedNetworkPolicies { - if err := r.networkPolicyHandler.DeleteNetworkPolicy(ctx, types.NamespacedName{Name: networkPolicy, Namespace: isvcNamespace}); err != nil { - return err - } - } - - return nil -} diff --git a/controllers/reconcilers/kserve_prometheus_rolebinding_reconciler.go b/controllers/reconcilers/kserve_prometheus_rolebinding_reconciler.go index 8c01889f..b65fc4ad 100644 --- a/controllers/reconcilers/kserve_prometheus_rolebinding_reconciler.go +++ b/controllers/reconcilers/kserve_prometheus_rolebinding_reconciler.go @@ -24,7 +24,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "k8s.io/api/rbac/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -33,23 +32,25 @@ const ( clusterPrometheusAccessRoleBinding = "kserve-prometheus-k8s" ) +var _ SubResourceReconciler = (*KservePrometheusRoleBindingReconciler)(nil) + type KservePrometheusRoleBindingReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme roleBindingHandler resources.RoleBindingHandler deltaProcessor processors.DeltaProcessor } -func NewKServePrometheusRoleBindingReconciler(client client.Client, scheme *runtime.Scheme) *KservePrometheusRoleBindingReconciler { +func NewKServePrometheusRoleBindingReconciler(client client.Client) *KservePrometheusRoleBindingReconciler { return &KservePrometheusRoleBindingReconciler{ client: client, - scheme: scheme, roleBindingHandler: resources.NewRoleBindingHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KservePrometheusRoleBindingReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Verifying that the role binding to enable prometheus access exists") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -70,6 +71,11 @@ func (r *KservePrometheusRoleBindingReconciler) Reconcile(ctx context.Context, l return nil } +func (r *KservePrometheusRoleBindingReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting Prometheus RoleBinding object for target namespace") + return r.roleBindingHandler.DeleteRoleBinding(ctx, types.NamespacedName{Name: clusterPrometheusAccessRoleBinding, Namespace: isvcNs}) +} + func (r *KservePrometheusRoleBindingReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*v1.RoleBinding, error) { desiredRoleBinding := &v1.RoleBinding{ ObjectMeta: metav1.ObjectMeta{ @@ -129,7 +135,3 @@ func (r *KservePrometheusRoleBindingReconciler) processDelta(ctx context.Context } return nil } - -func (r *KservePrometheusRoleBindingReconciler) DeleteRoleBinding(ctx context.Context, isvcNamespace string) error { - return r.roleBindingHandler.DeleteRoleBinding(ctx, types.NamespacedName{Name: clusterPrometheusAccessRoleBinding, Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/reconciler.go b/controllers/reconcilers/kserve_raw_inferenceservice_reconciler.go similarity index 52% rename from controllers/reconcilers/reconciler.go rename to controllers/reconcilers/kserve_raw_inferenceservice_reconciler.go index f98c4628..33857c81 100644 --- a/controllers/reconcilers/reconciler.go +++ b/controllers/reconcilers/kserve_raw_inferenceservice_reconciler.go @@ -17,10 +17,25 @@ package reconcilers import ( "context" + "github.com/go-logr/logr" kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" + "sigs.k8s.io/controller-runtime/pkg/client" ) -type Reconciler interface { - Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error +var _ Reconciler = (*KserveRawInferenceServiceReconciler)(nil) + +type KserveRawInferenceServiceReconciler struct { + client client.Client +} + +func NewKServeRawInferenceServiceReconciler(client client.Client) *KserveRawInferenceServiceReconciler { + return &KserveRawInferenceServiceReconciler{ + client: client, + } +} + +func (r *KserveRawInferenceServiceReconciler) Reconcile(_ context.Context, log logr.Logger, _ *kservev1beta1.InferenceService) error { + log.V(1).Info("No Reconciliation to be done for inferenceservice as it is using RawDeployment mode") + return nil } diff --git a/controllers/reconcilers/kserve_route_reconciler.go b/controllers/reconcilers/kserve_route_reconciler.go index 22c3f947..b4d4a103 100644 --- a/controllers/reconcilers/kserve_route_reconciler.go +++ b/controllers/reconcilers/kserve_route_reconciler.go @@ -28,7 +28,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "github.com/openshift/api/route/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/utils/pointer" @@ -36,23 +35,24 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" ) +var _ SubResourceReconciler = (*KserveRouteReconciler)(nil) + type KserveRouteReconciler struct { client client.Client - scheme *runtime.Scheme routeHandler resources.RouteHandler deltaProcessor processors.DeltaProcessor } -func NewKserveRouteReconciler(client client.Client, scheme *runtime.Scheme) *KserveRouteReconciler { +func NewKserveRouteReconciler(client client.Client) *KserveRouteReconciler { return &KserveRouteReconciler{ client: client, - scheme: scheme, routeHandler: resources.NewRouteHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *KserveRouteReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling Generic Route for Kserve InferenceService") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) @@ -73,6 +73,16 @@ func (r *KserveRouteReconciler) Reconcile(ctx context.Context, log logr.Logger, return nil } +func (r *KserveRouteReconciler) Delete(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Deleting Kserve inference service generic route") + return r.routeHandler.DeleteRoute(ctx, types.NamespacedName{Name: getKServeRouteName(isvc), Namespace: constants2.IstioNamespace}) +} + +func (r *KserveRouteReconciler) Cleanup(_ context.Context, _ logr.Logger, _ string) error { + // NOOP - resources are deleted together with ISVCs + return nil +} + func (r *KserveRouteReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*v1.Route, error) { ingressConfig, err := kservev1beta1.NewIngressConfig(r.client) if err != nil { @@ -198,7 +208,3 @@ func getServiceHost(isvc *kservev1beta1.InferenceService) string { func getKServeRouteName(isvc *kservev1beta1.InferenceService) string { return isvc.Name + "-" + isvc.Namespace } - -func (r *KserveRouteReconciler) DeleteRoute(ctx context.Context, isvc *kservev1beta1.InferenceService) error { - return r.routeHandler.DeleteRoute(ctx, types.NamespacedName{Name: getKServeRouteName(isvc), Namespace: constants2.IstioNamespace}) -} diff --git a/controllers/reconcilers/kserve_serverless_inferenceservice_reconciler.go b/controllers/reconcilers/kserve_serverless_inferenceservice_reconciler.go new file mode 100644 index 00000000..abbf9487 --- /dev/null +++ b/controllers/reconcilers/kserve_serverless_inferenceservice_reconciler.go @@ -0,0 +1,100 @@ +/* + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package reconcilers + +import ( + "context" + "github.com/hashicorp/go-multierror" + + "github.com/go-logr/logr" + kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" + "github.com/opendatahub-io/odh-model-controller/controllers/utils" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +var _ Reconciler = (*KserveServerlessInferenceServiceReconciler)(nil) + +type KserveServerlessInferenceServiceReconciler struct { + client client.Client + subResourceReconcilers []SubResourceReconciler +} + +func NewKServeServerlessInferenceServiceReconciler(client client.Client) *KserveServerlessInferenceServiceReconciler { + subResourceReconciler := []SubResourceReconciler{ + NewKServeIstioSMMRReconciler(client), + NewKserveRouteReconciler(client), + NewKServeMetricsServiceReconciler(client), + NewKServeMetricsServiceMonitorReconciler(client), + NewKServePrometheusRoleBindingReconciler(client), + NewKServeIstioTelemetryReconciler(client), + NewKServeIstioServiceMonitorReconciler(client), + NewKServeIstioPodMonitorReconciler(client), + NewKServeIstioPeerAuthenticationReconciler(client), + NewKServeNetworkPolicyReconciler(client), + NewKserveAuthConfigReconciler(client), + } + + return &KserveServerlessInferenceServiceReconciler{ + client: client, + subResourceReconcilers: subResourceReconciler, + } +} + +func (r *KserveServerlessInferenceServiceReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + var reconcileErrors *multierror.Error + for _, reconciler := range r.subResourceReconcilers { + reconcileErrors = multierror.Append(reconcileErrors, reconciler.Reconcile(ctx, log, isvc)) + } + + return reconcileErrors.ErrorOrNil() +} + +func (r *KserveServerlessInferenceServiceReconciler) OnDeletionOfKserveInferenceService(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + var deleteErrors *multierror.Error + for _, reconciler := range r.subResourceReconcilers { + deleteErrors = multierror.Append(deleteErrors, reconciler.Delete(ctx, log, isvc)) + } + + return deleteErrors.ErrorOrNil() +} + +func (r *KserveServerlessInferenceServiceReconciler) DeleteKserveMetricsResourcesIfNoKserveIsvcExists(ctx context.Context, log logr.Logger, isvcNamespace string) error { + inferenceServiceList := &kservev1beta1.InferenceServiceList{} + if err := r.client.List(ctx, inferenceServiceList, client.InNamespace(isvcNamespace)); err != nil { + return err + } + + for i := len(inferenceServiceList.Items) - 1; i >= 0; i-- { + inferenceService := inferenceServiceList.Items[i] + isvcDeploymentMode, err := utils.GetDeploymentModeForIsvc(ctx, r.client, &inferenceService) + if err != nil { + return err + } + if isvcDeploymentMode != utils.Serverless { + inferenceServiceList.Items = append(inferenceServiceList.Items[:i], inferenceServiceList.Items[i+1:]...) + } + } + + // If there are no Kserve InferenceServices in the namespace, delete namespace-scoped resources needed for Kserve Metrics + var cleanupErrors *multierror.Error + if len(inferenceServiceList.Items) == 0 { + for _, reconciler := range r.subResourceReconcilers { + cleanupErrors = multierror.Append(cleanupErrors, reconciler.Cleanup(ctx, log, isvcNamespace)) + } + } + + return cleanupErrors.ErrorOrNil() +} diff --git a/controllers/reconcilers/mm_clusterrolebinding_reconciler.go b/controllers/reconcilers/mm_clusterrolebinding_reconciler.go index e2e35937..81b25c93 100644 --- a/controllers/reconcilers/mm_clusterrolebinding_reconciler.go +++ b/controllers/reconcilers/mm_clusterrolebinding_reconciler.go @@ -24,28 +24,29 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/resources" v1 "k8s.io/api/rbac/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) +var _ SubResourceReconciler = (*ModelMeshClusterRoleBindingReconciler)(nil) + type ModelMeshClusterRoleBindingReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme clusterRoleBindingHandler resources.ClusterRoleBindingHandler deltaProcessor processors.DeltaProcessor } -func NewModelMeshClusterRoleBindingReconciler(client client.Client, scheme *runtime.Scheme) *ModelMeshClusterRoleBindingReconciler { +func NewModelMeshClusterRoleBindingReconciler(client client.Client) *ModelMeshClusterRoleBindingReconciler { return &ModelMeshClusterRoleBindingReconciler{ client: client, - scheme: scheme, clusterRoleBindingHandler: resources.NewClusterRoleBindingHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *ModelMeshClusterRoleBindingReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling ClusterRoleBinding for InferenceService") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) if err != nil { @@ -65,6 +66,11 @@ func (r *ModelMeshClusterRoleBindingReconciler) Reconcile(ctx context.Context, l return nil } +func (r *ModelMeshClusterRoleBindingReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting ClusterRoleBinding object for target namespace") + return r.clusterRoleBindingHandler.DeleteClusterRoleBinding(ctx, types.NamespacedName{Name: getClusterRoleBindingName(isvcNs), Namespace: isvcNs}) +} + func (r *ModelMeshClusterRoleBindingReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*v1.ClusterRoleBinding, error) { desiredClusterRoleBinding := &v1.ClusterRoleBinding{ ObjectMeta: metav1.ObjectMeta{ @@ -128,7 +134,3 @@ func (r *ModelMeshClusterRoleBindingReconciler) processDelta(ctx context.Context func getClusterRoleBindingName(isvcNamespace string) string { return isvcNamespace + "-" + modelMeshServiceAccountName + "-auth-delegator" } - -func (r *ModelMeshClusterRoleBindingReconciler) DeleteClusterRoleBinding(ctx context.Context, isvcNamespace string) error { - return r.clusterRoleBindingHandler.DeleteClusterRoleBinding(ctx, types.NamespacedName{Name: getClusterRoleBindingName(isvcNamespace), Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/mm_inferenceservice_reconciler.go b/controllers/reconcilers/mm_inferenceservice_reconciler.go index 1570b173..e44bd98f 100644 --- a/controllers/reconcilers/mm_inferenceservice_reconciler.go +++ b/controllers/reconcilers/mm_inferenceservice_reconciler.go @@ -17,52 +17,44 @@ package reconcilers import ( "context" + "github.com/hashicorp/go-multierror" "github.com/go-logr/logr" kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" "github.com/opendatahub-io/odh-model-controller/controllers/utils" - "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/controller-runtime/pkg/client" ) +var _ Reconciler = (*ModelMeshInferenceServiceReconciler)(nil) + type ModelMeshInferenceServiceReconciler struct { - client client.Client - routeReconciler *ModelMeshRouteReconciler - serviceAccountReconciler *ModelMeshServiceAccountReconciler - clusterRoleBindingReconciler *ModelMeshClusterRoleBindingReconciler + client client.Client + subResourceReconcilers []SubResourceReconciler } -func NewModelMeshInferenceServiceReconciler(client client.Client, scheme *runtime.Scheme) *ModelMeshInferenceServiceReconciler { +func NewModelMeshInferenceServiceReconciler(client client.Client) *ModelMeshInferenceServiceReconciler { return &ModelMeshInferenceServiceReconciler{ - client: client, - routeReconciler: NewModelMeshRouteReconciler(client, scheme), - serviceAccountReconciler: NewModelMeshServiceAccountReconciler(client, scheme), - clusterRoleBindingReconciler: NewModelMeshClusterRoleBindingReconciler(client, scheme), + client: client, + subResourceReconcilers: []SubResourceReconciler{ + NewModelMeshRouteReconciler(client), + NewModelMeshServiceAccountReconciler(client), + NewModelMeshClusterRoleBindingReconciler(client), + }, } } func (r *ModelMeshInferenceServiceReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { - - log.V(1).Info("Reconciling Route for InferenceService") - if err := r.routeReconciler.Reconcile(ctx, log, isvc); err != nil { - return err + var reconcileErrors *multierror.Error + for _, reconciler := range r.subResourceReconcilers { + reconcileErrors = multierror.Append(reconcileErrors, reconciler.Reconcile(ctx, log, isvc)) } - log.V(1).Info("Reconciling ServiceAccount for InferenceService") - if err := r.serviceAccountReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - - log.V(1).Info("Reconciling ClusterRoleBinding for InferenceService") - if err := r.clusterRoleBindingReconciler.Reconcile(ctx, log, isvc); err != nil { - return err - } - return nil + return reconcileErrors.ErrorOrNil() } -func (r *ModelMeshInferenceServiceReconciler) DeleteModelMeshResourcesIfNoMMIsvcExists(ctx context.Context, log logr.Logger, isvcNamespace string) error { +func (r *ModelMeshInferenceServiceReconciler) DeleteModelMeshResourcesIfNoMMIsvcExists(ctx context.Context, log logr.Logger, isvcNs string) error { inferenceServiceList := &kservev1beta1.InferenceServiceList{} - if err := r.client.List(ctx, inferenceServiceList, client.InNamespace(isvcNamespace)); err != nil { + if err := r.client.List(ctx, inferenceServiceList, client.InNamespace(isvcNs)); err != nil { return err } @@ -78,17 +70,12 @@ func (r *ModelMeshInferenceServiceReconciler) DeleteModelMeshResourcesIfNoMMIsvc } // If there are no ModelMesh InferenceServices in the namespace, delete namespace-scoped resources needed for ModelMesh + var cleanupErrors *multierror.Error if len(inferenceServiceList.Items) == 0 { - - log.V(1).Info("Deleting ServiceAccount object for target namespace") - if err := r.serviceAccountReconciler.DeleteServiceAccount(ctx, isvcNamespace); err != nil { - return err - } - - log.V(1).Info("Deleting ClusterRoleBinding object for target namespace") - if err := r.clusterRoleBindingReconciler.DeleteClusterRoleBinding(ctx, isvcNamespace); err != nil { - return err + for _, reconciler := range r.subResourceReconcilers { + cleanupErrors = multierror.Append(cleanupErrors, reconciler.Cleanup(ctx, log, isvcNs)) } } - return nil + + return cleanupErrors.ErrorOrNil() } diff --git a/controllers/reconcilers/mm_route_reconciler.go b/controllers/reconcilers/mm_route_reconciler.go index 253caa3e..a5981190 100644 --- a/controllers/reconcilers/mm_route_reconciler.go +++ b/controllers/reconcilers/mm_route_reconciler.go @@ -20,15 +20,13 @@ import ( "sort" "strconv" + "github.com/go-logr/logr" + kservev1alpha1 "github.com/kserve/kserve/pkg/apis/serving/v1alpha1" + kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" "github.com/opendatahub-io/odh-model-controller/controllers/comparators" "github.com/opendatahub-io/odh-model-controller/controllers/constants" "github.com/opendatahub-io/odh-model-controller/controllers/processors" "github.com/opendatahub-io/odh-model-controller/controllers/resources" - "k8s.io/apimachinery/pkg/runtime" - - "github.com/go-logr/logr" - kservev1alpha1 "github.com/kserve/kserve/pkg/apis/serving/v1alpha1" - kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" v1 "github.com/openshift/api/route/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -45,25 +43,26 @@ const ( modelmeshServicePort = 8008 ) +var _ SubResourceReconciler = (*ModelMeshRouteReconciler)(nil) + type ModelMeshRouteReconciler struct { + NoResourceRemoval client client.Client - scheme *runtime.Scheme routeHandler resources.RouteHandler deltaProcessor processors.DeltaProcessor } -func NewModelMeshRouteReconciler(client client.Client, scheme *runtime.Scheme) *ModelMeshRouteReconciler { +func NewModelMeshRouteReconciler(client client.Client) *ModelMeshRouteReconciler { return &ModelMeshRouteReconciler{ client: client, - scheme: scheme, routeHandler: resources.NewRouteHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } -// ReconcileRoute will manage the creation, update and deletion of the -// TLS route when the predictor is reconciled +// Reconcile will manage the creation, update and deletion of the TLS route when the predictor is reconciled. func (r *ModelMeshRouteReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling Route for InferenceService") // Create Desired resource desiredResource, err := r.createDesiredResource(ctx, log, isvc) if err != nil { @@ -143,7 +142,7 @@ func (r *ModelMeshRouteReconciler) createDesiredResource(ctx context.Context, lo InsecureEdgeTerminationPolicy: v1.InsecureEdgeTerminationPolicyRedirect, } } - if err = ctrl.SetControllerReference(isvc, desiredRoute, r.scheme); err != nil { + if err = ctrl.SetControllerReference(isvc, desiredRoute, r.client.Scheme()); err != nil { return nil, err } return desiredRoute, nil diff --git a/controllers/reconcilers/mm_serviceaccount_reconciler.go b/controllers/reconcilers/mm_serviceaccount_reconciler.go index 618584e7..3902753d 100644 --- a/controllers/reconcilers/mm_serviceaccount_reconciler.go +++ b/controllers/reconcilers/mm_serviceaccount_reconciler.go @@ -21,7 +21,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/comparators" "github.com/opendatahub-io/odh-model-controller/controllers/processors" "github.com/opendatahub-io/odh-model-controller/controllers/resources" - "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/controller-runtime/pkg/client" "k8s.io/apimachinery/pkg/types" @@ -35,23 +34,25 @@ const ( modelMeshServiceAccountName = "modelmesh-serving-sa" ) +var _ SubResourceReconciler = (*ModelMeshServiceAccountReconciler)(nil) + type ModelMeshServiceAccountReconciler struct { + SingleResourcePerNamespace client client.Client - scheme *runtime.Scheme serviceAccountHandler resources.ServiceAccountHandler deltaProcessor processors.DeltaProcessor } -func NewModelMeshServiceAccountReconciler(client client.Client, scheme *runtime.Scheme) *ModelMeshServiceAccountReconciler { +func NewModelMeshServiceAccountReconciler(client client.Client) *ModelMeshServiceAccountReconciler { return &ModelMeshServiceAccountReconciler{ client: client, - scheme: scheme, serviceAccountHandler: resources.NewServiceAccountHandler(client), deltaProcessor: processors.NewDeltaProcessor(), } } func (r *ModelMeshServiceAccountReconciler) Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error { + log.V(1).Info("Reconciling ServiceAccount for InferenceService") // Create Desired resource desiredResource, err := r.createDesiredResource(isvc) if err != nil { @@ -71,6 +72,11 @@ func (r *ModelMeshServiceAccountReconciler) Reconcile(ctx context.Context, log l return nil } +func (r *ModelMeshServiceAccountReconciler) Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error { + log.V(1).Info("Deleting ServiceAccount object for target namespace") + return r.serviceAccountHandler.DeleteServiceAccount(ctx, types.NamespacedName{Name: modelMeshServiceAccountName, Namespace: isvcNs}) +} + func (r *ModelMeshServiceAccountReconciler) createDesiredResource(isvc *kservev1beta1.InferenceService) (*corev1.ServiceAccount, error) { desiredSA := &corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ @@ -115,7 +121,3 @@ func (r *ModelMeshServiceAccountReconciler) processDelta(ctx context.Context, lo } return nil } - -func (r *ModelMeshServiceAccountReconciler) DeleteServiceAccount(ctx context.Context, isvcNamespace string) error { - return r.serviceAccountHandler.DeleteServiceAccount(ctx, types.NamespacedName{Name: modelMeshServiceAccountName, Namespace: isvcNamespace}) -} diff --git a/controllers/reconcilers/types.go b/controllers/reconcilers/types.go new file mode 100644 index 00000000..cc0476b5 --- /dev/null +++ b/controllers/reconcilers/types.go @@ -0,0 +1,59 @@ +/* + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package reconcilers + +import ( + "context" + "github.com/go-logr/logr" + kservev1beta1 "github.com/kserve/kserve/pkg/apis/serving/v1beta1" +) + +type Reconciler interface { + // Reconcile ensures the resource related to given InferenceService is in the desired state. + Reconcile(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error +} + +type SubResourceReconciler interface { + Reconciler + // Delete removes subresource owned by InferenceService. + Delete(ctx context.Context, log logr.Logger, isvc *kservev1beta1.InferenceService) error + // Cleanup ensures singleton resource (such as ServiceMonitor) is removed + // when there is no InferenceServices left in the namespace. + Cleanup(ctx context.Context, log logr.Logger, isvcNs string) error +} + +// NoResourceRemoval is a trait to indicate that given reconciler +// is not supposed to delete any resources left. +type NoResourceRemoval struct{} + +func (r *NoResourceRemoval) Delete(_ context.Context, _ logr.Logger, _ *kservev1beta1.InferenceService) error { + // NOOP + return nil +} + +func (r *NoResourceRemoval) Cleanup(_ context.Context, _ logr.Logger, _ string) error { + // NOOP + return nil +} + +// SingleResourcePerNamespace is a trait to indicate that given reconciler is only supposed to +// clean up owned resources when there is no relevant ISVC left. +type SingleResourcePerNamespace struct{} + +func (r *SingleResourcePerNamespace) Delete(_ context.Context, _ logr.Logger, _ *kservev1beta1.InferenceService) error { + // NOOP it needs to be cleaned up when no ISVCs left in the Namespace + return nil +} diff --git a/controllers/storageconfig_controller.go b/controllers/storageconfig_controller.go index 91dab9a5..d9ae80eb 100644 --- a/controllers/storageconfig_controller.go +++ b/controllers/storageconfig_controller.go @@ -24,7 +24,6 @@ import ( "github.com/opendatahub-io/odh-model-controller/controllers/constants" corev1 "k8s.io/api/core/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/util/retry" ctrl "sigs.k8s.io/controller-runtime" @@ -39,8 +38,7 @@ const ( type StorageSecretReconciler struct { client.Client - Scheme *runtime.Scheme - Log logr.Logger + Log logr.Logger } // newStorageSecret takes a list of data connection secrets and generates a single storage config secret diff --git a/controllers/suite_test.go b/controllers/suite_test.go index 7900f311..53c32313 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -145,7 +145,6 @@ var _ = BeforeSuite(func() { err = (NewOpenshiftInferenceServiceReconciler( mgr.GetClient(), - scheme.Scheme, ctrl.Log.WithName("controllers").WithName("InferenceService-controller"), false)). SetupWithManager(mgr) @@ -154,7 +153,6 @@ var _ = BeforeSuite(func() { err = (&MonitoringReconciler{ Client: cli, Log: ctrl.Log.WithName("controllers").WithName("monitoring-controller"), - Scheme: scheme.Scheme, MonitoringNS: MonitoringNS, }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) @@ -162,21 +160,18 @@ var _ = BeforeSuite(func() { err = (&StorageSecretReconciler{ Client: cli, Log: ctrl.Log.WithName("controllers").WithName("Storage-Secret-Controller"), - Scheme: scheme.Scheme, }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) err = (&ModelRegistryInferenceServiceReconciler{ client: cli, log: ctrl.Log.WithName("controllers").WithName("ModelRegistry-InferenceService-Controller"), - scheme: scheme.Scheme, }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) err = (&KServeCustomCACertReconciler{ Client: cli, Log: ctrl.Log.WithName("controllers").WithName("KServe-Custom-CA-Bundle-ConfigMap-Controller"), - Scheme: scheme.Scheme, }).SetupWithManager(mgr) Expect(err).ToNot(HaveOccurred()) diff --git a/go.mod b/go.mod index 0f6675f3..a64794c9 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.19 require ( github.com/go-logr/logr v1.2.4 + github.com/hashicorp/go-multierror v1.1.1 github.com/kserve/kserve v0.11.0 github.com/kuadrant/authorino v0.15.0 github.com/onsi/ginkgo v1.16.4 @@ -24,7 +25,6 @@ require ( knative.dev/serving v0.37.1 maistra.io/api v0.0.0-20230417135504-0536f6c22b1c sigs.k8s.io/controller-runtime v0.14.6 - sigs.k8s.io/yaml v1.3.0 ) require ( @@ -58,6 +58,7 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect github.com/imdario/mergo v0.3.15 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect @@ -106,6 +107,7 @@ require ( knative.dev/networking v0.0.0-20231017124814-2a7676e912b7 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) replace ( diff --git a/go.sum b/go.sum index 7b802b60..dc2d746c 100644 --- a/go.sum +++ b/go.sum @@ -12,115 +12,51 @@ cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzc cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/storage v1.33.0 h1:PVrDOkIC8qQVa1P3SXGpQvfuJhN2LHOoyZvWs8D2X5M= cloud.google.com/go/storage v1.33.0/go.mod h1:Hhh/dogNRGca7IWv1RC2YqEn0c0G77ctA/OxflYkiD8= contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d h1:LblfooH1lKOpp1hIhukktmSAxFkqMPFk9KR6iZ0MJNI= -contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d/go.mod h1:IshRmMJBhDfFj5Y67nVhMYTTIze91RUeT73ipWKs/GY= contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= -contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= -contrib.go.opencensus.io/exporter/zipkin v0.1.2/go.mod h1:mP5xM3rrgOjpn79MM8fZbj3gsxcuytSqtH0dxSWW1RE= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -github.com/Azure/azure-sdk-for-go v67.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= -github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= -github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20210609063737-0067dc6dcea2/go.mod h1:TdjdkYhlOifCQWPs1UdTma97kQQMozf5h26hTuG70u8= -github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.44.264 h1:5klL62ebn6uv3oJ0ixF7K12hKItj8lV3QqWeQPlkFSs= github.com/aws/aws-sdk-go v1.44.264/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v1.16.16/go.mod h1:SwiyXi/1zTUZ6KIAmLK5V5ll8SiURNUYOqTerZPaF9k= -github.com/aws/aws-sdk-go-v2/config v1.17.8/go.mod h1:UkCI3kb0sCdvtjiXYiU4Zx5h07BOpgBTtkPu/49r+kA= -github.com/aws/aws-sdk-go-v2/credentials v1.12.21/go.mod h1:O+4XyAt4e+oBAoIwNUYkRg3CVMscaIJdmZBOcPgJ8D8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.17/go.mod h1:yIkQcCDYNsZfXpd5UX2Cy+sWA1jPgIhGTw9cOBzfVnQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.23/go.mod h1:2DFxAQ9pfIRy0imBCJv+vZ2X6RKxves6fbnEuSry6b4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.17/go.mod h1:pRwaTYCJemADaqCbUAxltMoHKata7hmB5PjEXeu0kfg= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.24/go.mod h1:jULHjqqjDlbyTa7pfM7WICATnOv+iOhjletM3N0Xbu8= -github.com/aws/aws-sdk-go-v2/service/ecr v1.17.18/go.mod h1:DQtDYmexqR+z+B6HBCvY7zK/tuXKv6Zy/IwOXOK3eow= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.17/go.mod h1:r1Vuka0kyzqN0sZm4lYTXf0Vhl+o/mTLq6vKpBBZYaQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4nYOrY41Lrbk2170/BGkcJKBhws9Pfn8MG3aGqjjeFI= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.23/go.mod h1:/w0eg9IhFGjGyyncHIQrXtU8wvNsTJOP0R6PPj0wf80= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.13.6/go.mod h1:csZuQY65DAdFBt1oIjO5hhBR49kQqop4+lcuCjf2arA= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.19/go.mod h1:h4J3oPZQbxLhzGnk+j9dfYHi5qIOVJ5kczZd658/ydM= -github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20221004211355-a250ad2ca1e3/go.mod h1:m06KtrZgOloUaePAQMv+Ha8kRmTnKdozTHZrweepIrw= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= -github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chrismellard/docker-credential-acr-env v0.0.0-20221002210726-e883f69e0206/go.mod h1:1UmFRnmMnVsHwD+ZntmLkoVBB1ZLa6V+XXEbF6hZCxU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudevents/sdk-go v1.2.0/go.mod h1:ss+jWJ88wypiewnPEzChSBzTYXGpdcILoN9YHk8uhTQ= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= -github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.4.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/docker/cli v23.0.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= -github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -130,49 +66,33 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= -github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/getkin/kin-openapi v0.116.0/go.mod h1:l5e9PaFUo9fyLJCPGQeXI2ML8c3P8BHOEV2VaAVf/pc= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= @@ -182,7 +102,6 @@ github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4er github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -194,10 +113,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -210,22 +127,15 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE= github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= -github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20230209165335-3624968304fd/go.mod h1:x5fIlj5elU+/eYF60q4eASMQ9kDc+GMFa7UU9M3mFFw= -github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20230209165335-3624968304fd/go.mod h1:6pjZpt+0dg+Z0kUEn53qLtD57raiZo/bqWzsuX6dDjo= -github.com/google/go-github/v27 v27.0.6/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3/go.mod h1:YzLcVlL+NqWnmUEPuhS1LxDDwGO9WNbVlEXaF4IH35g= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -237,54 +147,37 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2 h1:gDLXvp5S9izjldquuoAhDzccbskOL6tDC5jMSyx3zxE= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2/go.mod h1:7pdNwVWBBHGiCxa9lAszqCJMbfTISJ7oMftp8+UGV08= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb-client-go/v2 v2.9.0/go.mod h1:x7Jo5UHHl+w8wu8UnGiNobDDHygojXwJX4mx7rXGKMk= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/tdigest v0.0.1/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= -github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= -github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -293,36 +186,23 @@ github.com/kserve/kserve v0.11.0 h1:7ZPTjxuRd/qKFTygmYsTZKFCvuzOzjaM83NYAXu8DE4= github.com/kserve/kserve v0.11.0/go.mod h1:oLeSCIZ6jQqoXYG1HyolzHN1PW0ioCNCWZGnin5yTDg= github.com/kuadrant/authorino v0.15.0 h1:Xw/buh/wTINdL+IpLSxhlpet4hpleMxZzfx39c4VQng= github.com/kuadrant/authorino v0.15.0/go.mod h1:vXkHKrntn8DR7kt8a8Ohxq+2lgAD0jWivThoP+7ASew= -github.com/lightstep/tracecontext.go v0.0.0-20181129014701-1757c391b1ac/go.mod h1:Frd2bnT3w5FB5q49ENTfVlztJES+1k/7lyWX2+9gq/M= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -331,7 +211,6 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= @@ -339,15 +218,11 @@ github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+q github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= github.com/opendatahub-io/model-registry v0.1.1 h1:q5KJIRhOAwUarodz/SP1NDx25rUNcV/ek0vi4ziBQZU= github.com/opendatahub-io/model-registry v0.1.1/go.mod h1:LlAAyLOh4Fn3AESXKXpgfERzQlBeTSyYex1vrDIgog0= github.com/openshift/api v3.9.0+incompatible h1:fJ/KsefYuZAjmrr3+5U9yZIZbTOpVkDDLDLFresAeYs= github.com/openshift/api v3.9.0+incompatible/go.mod h1:dh9o4Fs58gpFXGSYfnVxGR9PnV53I8TW84pQaJDdGiY= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= -github.com/perimeterx/marshmallow v1.1.4/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -366,27 +241,14 @@ github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/prometheus/statsd_exporter v0.23.1 h1:TiNAE1XevlZZrpSbmf51l/Ryl2Eek9rYh//KlvcNvKw= -github.com/prometheus/statsd_exporter v0.23.1/go.mod h1:FFmnBRWf+HxX+PR+2fnc0ciBIONVAPJ6k4lqIbdqVxo= -github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/shirou/gopsutil/v3 v3.23.9 h1:ZI5bWVeu2ep4/DIxB4U9okeYJ7zp/QLTO4auRb/ty/E= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -398,9 +260,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/testcontainers/testcontainers-go v0.26.0 h1:uqcYdoOHBy1ca7gKODfBd9uTHVK3a7UL848z09MVZ0c= github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= @@ -411,40 +270,23 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= -github.com/tsenart/go-tsz v0.0.0-20180814235614-0bd30b3df1c3/go.mod h1:SWZznP1z5Ki7hDT2ioqiFKEse8K9tU2OUvaRI0NeGQo= -github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/yashtewari/glob-intersection v0.1.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd/api/v3 v3.5.7/go.mod h1:9qew1gCdDDLu+VwmeG+iFpL+QlpHTo7iubavdVDgCAA= -go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY= -go.etcd.io/etcd/client/v2 v2.305.7/go.mod h1:GQGT5Z3TBuAQGvgPfhR7VPySu/SudxmEkRq9BgzFU6s= -go.etcd.io/etcd/client/v3 v3.5.7/go.mod h1:sOWmj9DZUMyAngS7QQwCyAXXAL6WhgTOPLNS/NabQgw= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0/go.mod h1:SeQhzAEccGVZVEy7aH87Nh0km+utSpo1pTv6eMMop48= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -458,7 +300,6 @@ golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= -golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -473,7 +314,6 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -584,7 +424,6 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -643,9 +482,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -660,8 +496,6 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -670,7 +504,6 @@ istio.io/api v0.0.0-20230712174848-a2b2de508c88 h1:w7lSk+XcYNzGC5xtHBFvaV7QTBMQC istio.io/api v0.0.0-20230712174848-a2b2de508c88/go.mod h1:owGDRg9uqMob8CN1gxaOzk6nJxnbT8wrP7PmggpJHHY= istio.io/client-go v1.17.4 h1:BFVO3q4/qT3vwd30T+a8LdvW+vM7psqebluXiXsSWCI= istio.io/client-go v1.17.4/go.mod h1:994/wFLmyN7Th6Cat2pACSwvp6VaGYlonm3mpuRAOq8= -istio.io/gogo-genproto v0.0.0-20190930162913-45029607206a/go.mod h1:OzpAts7jljZceG4Vqi5/zXy/pOg1b209T3jb7Nv5wIs= k8s.io/api v0.26.4 h1:qSG2PmtcD23BkYiWfoYAcak870eF/hE7NNYBYavTT94= k8s.io/api v0.26.4/go.mod h1:WwKEXU3R1rgCZ77AYa7DFksd9/BAIKyOmRlbVxgvjCk= k8s.io/apiextensions-apiserver v0.27.6 h1:mOwSBJtThZhpJr+8gEkc3wFDIjq87E3JspR5mtZxIg8= @@ -681,8 +514,6 @@ k8s.io/client-go v0.26.4 h1:/7P/IbGBuT73A+G97trf44NTPSNqvuBREpOfdLbHvD4= k8s.io/client-go v0.26.4/go.mod h1:6qOItWm3EwxJdl/8p5t7FWtWUOwyMdA8N9ekbW4idpI= k8s.io/component-base v0.27.6 h1:hF5WxX7Tpi9/dXAbLjPVkIA6CA6Pi6r9JOHyo0uCDYI= k8s.io/component-base v0.27.6/go.mod h1:NvjLtaneUeb0GgMPpCBF+4LNB9GuhDHi16uUTjBhQfU= -k8s.io/gengo v0.0.0-20221011193443-fad74ee6edd9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20230515203736-54b630e78af5 h1:azYPdzztXxPSa8wb+hksEKayiz0o+PPisO/d+QhWnoo= @@ -698,10 +529,8 @@ knative.dev/serving v0.39.3/go.mod h1:bWylSgwnRZeL659qy7m3/TZioYk25TIfusPUEeR695 maistra.io/api v0.0.0-20230417135504-0536f6c22b1c h1:WNBqA7R23P/TDkzP/wa3mfE4Bd9eM8NzWiwhcNyWAgk= maistra.io/api v0.0.0-20230417135504-0536f6c22b1c/go.mod h1:YdrOpeJBddUNHKIuhqlsNje9YUBFHl2pho7mhYwmsYs= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= sigs.k8s.io/controller-runtime v0.14.6 h1:oxstGVvXGNnMvY7TAESYk+lzr6S3V5VFxQ6d92KcwQA= sigs.k8s.io/controller-runtime v0.14.6/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= -sigs.k8s.io/controller-tools v0.7.0/go.mod h1:bpBAo0VcSDDLuWt47evLhMLPxRPxMDInTEH/YbdeMK0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= diff --git a/main.go b/main.go index d23fb1ae..2765412e 100644 --- a/main.go +++ b/main.go @@ -123,7 +123,6 @@ func main() { //Setup InferenceService controller if err = (controllers.NewOpenshiftInferenceServiceReconciler( mgr.GetClient(), - mgr.GetScheme(), ctrl.Log.WithName("controllers").WithName("InferenceService"), getEnvAsBool("MESH_DISABLED", false))). SetupWithManager(mgr); err != nil { @@ -133,7 +132,6 @@ func main() { if err = (&controllers.StorageSecretReconciler{ Client: mgr.GetClient(), Log: ctrl.Log.WithName("controllers").WithName("StorageSecret"), - Scheme: mgr.GetScheme(), }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "StorageSecret") os.Exit(1) @@ -142,7 +140,6 @@ func main() { if err = (&controllers.KServeCustomCACertReconciler{ Client: mgr.GetClient(), Log: ctrl.Log.WithName("controllers").WithName("KServeCustomeCABundleConfigMap"), - Scheme: mgr.GetScheme(), }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "KServeCustomeCABundleConfigMap") os.Exit(1) @@ -153,7 +150,6 @@ func main() { if err = (&controllers.MonitoringReconciler{ Client: mgr.GetClient(), Log: ctrl.Log.WithName("controllers").WithName("MonitoringReconciler"), - Scheme: mgr.GetScheme(), MonitoringNS: monitoringNS, }).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "MonitoringReconciler") @@ -165,7 +161,6 @@ func main() { setupLog.Info("Model registry inference service reconciliation enabled..") if err = (controllers.NewModelRegistryInferenceServiceReconciler( mgr.GetClient(), - mgr.GetScheme(), ctrl.Log.WithName("controllers").WithName("ModelRegistryInferenceService"), )).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "ModelRegistryInferenceServiceReconciler")