From 310ddec82fef53662d2250d5a5334d42c5281ea4 Mon Sep 17 00:00:00 2001 From: "jiang.pengcheng" Date: Tue, 20 Sep 2022 09:23:45 +0800 Subject: [PATCH 1/6] Use init container to download --- api/v1alpha1/function_types.go | 3 + api/v1alpha1/sink_types.go | 3 + api/v1alpha1/source_types.go | 3 + ...ompute.functionmesh.io-functionmeshes.yaml | 54 +++++ ...crd-compute.functionmesh.io-functions.yaml | 18 ++ .../crd-compute.functionmesh.io-sinks.yaml | 18 ++ .../crd-compute.functionmesh.io-sources.yaml | 18 ++ ...ompute.functionmesh.io_functionmeshes.yaml | 54 +++++ .../compute.functionmesh.io_functions.yaml | 18 ++ .../bases/compute.functionmesh.io_sinks.yaml | 18 ++ .../compute.functionmesh.io_sources.yaml | 18 ++ controllers/spec/common.go | 215 +++++++++++++----- controllers/spec/common_test.go | 194 +++++++++++++--- controllers/spec/function.go | 17 +- controllers/spec/sink.go | 10 +- controllers/spec/source.go | 10 +- manifests/crd.yaml | 108 +++++++++ 17 files changed, 682 insertions(+), 97 deletions(-) diff --git a/api/v1alpha1/function_types.go b/api/v1alpha1/function_types.go index 261c35382..ae000db96 100644 --- a/api/v1alpha1/function_types.go +++ b/api/v1alpha1/function_types.go @@ -39,6 +39,9 @@ type FunctionSpec struct { Replicas *int32 `json:"replicas,omitempty"` // +kubebuilder:validation:Minimum=1 MinReplicas *int32 `json:"minReplicas,omitempty"` + + DownloaderImage string `json:"downloaderImage,omitempty"` + // MaxReplicas indicates the maximum number of replicas and enables the HorizontalPodAutoscaler // If provided, a default HPA with CPU at average of 80% will be used. // For complex HPA strategies, please refer to Pod.HPAutoscaler. diff --git a/api/v1alpha1/sink_types.go b/api/v1alpha1/sink_types.go index 18d9cc846..fb8885702 100644 --- a/api/v1alpha1/sink_types.go +++ b/api/v1alpha1/sink_types.go @@ -40,6 +40,9 @@ type SinkSpec struct { Replicas *int32 `json:"replicas,omitempty"` // +kubebuilder:validation:Minimum=1 MinReplicas *int32 `json:"minReplicas,omitempty"` + + DownloaderImage string `json:"downloaderImage,omitempty"` + // MaxReplicas indicates the maximum number of replicas and enables the HorizontalPodAutoscaler // If provided, a default HPA with CPU at average of 80% will be used. // For complex HPA strategies, please refer to Pod.HPAutoscaler. diff --git a/api/v1alpha1/source_types.go b/api/v1alpha1/source_types.go index 415d4272f..72f4caf80 100644 --- a/api/v1alpha1/source_types.go +++ b/api/v1alpha1/source_types.go @@ -40,6 +40,9 @@ type SourceSpec struct { Replicas *int32 `json:"replicas,omitempty"` // +kubebuilder:validation:Minimum=1 MinReplicas *int32 `json:"minReplicas,omitempty"` + + DownloaderImage string `json:"downloaderImage,omitempty"` + // MaxReplicas indicates the maximum number of replicas and enables the HorizontalPodAutoscaler // If provided, a default HPA with CPU at average of 80% will be used. // For complex HPA strategies, please refer to Pod.HPAutoscaler. diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml index fe897b148..a6611e787 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml @@ -39,6 +39,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean funcConfig: @@ -2685,6 +2687,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -2879,6 +2897,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string golang: properties: go: @@ -5459,6 +5479,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -5602,6 +5638,8 @@ spec: type: string clusterName: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean golang: @@ -8165,6 +8203,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml index ca2bb0c5b..62e8d3c16 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml @@ -58,6 +58,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean funcConfig: @@ -2704,6 +2706,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml index 66add3cf1..998df9a97 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml @@ -58,6 +58,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string golang: properties: go: @@ -2638,6 +2640,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml index 0662c1770..e1538f6d2 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml @@ -52,6 +52,8 @@ spec: type: string clusterName: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean golang: @@ -2615,6 +2617,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml b/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml index bbd9c1465..704d11a08 100644 --- a/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml +++ b/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml @@ -41,6 +41,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean funcConfig: @@ -2687,6 +2689,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -2881,6 +2899,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string golang: properties: go: @@ -5461,6 +5481,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -5604,6 +5640,8 @@ spec: type: string clusterName: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean golang: @@ -8167,6 +8205,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_functions.yaml b/config/crd/bases/compute.functionmesh.io_functions.yaml index f95744a65..a9d8b0f00 100644 --- a/config/crd/bases/compute.functionmesh.io_functions.yaml +++ b/config/crd/bases/compute.functionmesh.io_functions.yaml @@ -38,6 +38,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean funcConfig: @@ -2684,6 +2686,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_sinks.yaml b/config/crd/bases/compute.functionmesh.io_sinks.yaml index 1010f1747..cd302f13a 100644 --- a/config/crd/bases/compute.functionmesh.io_sinks.yaml +++ b/config/crd/bases/compute.functionmesh.io_sinks.yaml @@ -38,6 +38,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string golang: properties: go: @@ -2618,6 +2620,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_sources.yaml b/config/crd/bases/compute.functionmesh.io_sources.yaml index 5a4427827..6549cf856 100644 --- a/config/crd/bases/compute.functionmesh.io_sources.yaml +++ b/config/crd/bases/compute.functionmesh.io_sources.yaml @@ -32,6 +32,8 @@ spec: type: string clusterName: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean golang: @@ -2595,6 +2597,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: diff --git a/controllers/spec/common.go b/controllers/spec/common.go index 2aa5ab9a2..22f4e640f 100644 --- a/controllers/spec/common.go +++ b/controllers/spec/common.go @@ -45,7 +45,14 @@ const ( DefaultJavaRunnerImage = DefaultRunnerPrefix + "pulsar-functions-java-runner:" + DefaultRunnerTag DefaultPythonRunnerImage = DefaultRunnerPrefix + "pulsar-functions-python-runner:" + DefaultRunnerTag DefaultGoRunnerImage = DefaultRunnerPrefix + "pulsar-functions-go-runner:" + DefaultRunnerTag - PulsarAdminExecutableFile = "/pulsar/bin/pulsar-admin" + WorkDir = "/pulsar/" + + // for init container + PulsarctlExecutableFile = "/usr/local/bin/pulsarctl" + DownloaderName = "downloader" + DownloaderVolume = "downloader-volume" + DownloaderImage = DefaultRunnerPrefix + "/pulsarctl:2.9.2.24" + DownloadDir = "/pulsar/download" WindowFunctionConfigKeyName = "__WINDOWCONFIGS__" WindowFunctionExecutorClass = "org.apache.pulsar.functions.windowing.WindowFunctionExecutor" @@ -224,28 +231,78 @@ func MakeHeadlessServiceName(serviceName string) string { return fmt.Sprintf("%s-headless", serviceName) } -func MakeStatefulSet(objectMeta *metav1.ObjectMeta, replicas *int32, container *corev1.Container, - volumes []corev1.Volume, labels map[string]string, policy v1alpha1.PodPolicy) *appsv1.StatefulSet { +func MakeStatefulSet(objectMeta *metav1.ObjectMeta, replicas *int32, downloaderImage string, container *corev1.Container, + volumes []corev1.Volume, labels map[string]string, policy v1alpha1.PodPolicy, pulsar v1alpha1.PulsarMessaging, + javaRuntime *v1alpha1.JavaRuntime, pythonRuntime *v1alpha1.PythonRuntime, goRuntime *v1alpha1.GoRuntime) *appsv1.StatefulSet { + + volumeMounts := generateDownloaderVolumeMountsForDownloader(javaRuntime, pythonRuntime, goRuntime) + var downloaderContainer *corev1.Container + var podVolumes = volumes + // there must be a download path specified, we need to create an init container and emptyDir volume + if len(volumeMounts) > 0 { + if pulsar.AuthConfig.OAuth2Config != nil { + volumeMounts = append(volumeMounts, generateVolumeMountFromOAuth2Config(pulsar.AuthConfig.OAuth2Config)) + } + + if !reflect.ValueOf(pulsar.TLSConfig).IsNil() && pulsar.TLSConfig.HasSecretVolume() { + volumeMounts = append(volumeMounts, generateVolumeMountFromTLSConfig(pulsar.TLSConfig)) + } + + var downloadPath, componentPackage string + if javaRuntime != nil { + downloadPath = javaRuntime.JarLocation + componentPackage = javaRuntime.Jar + } else if pythonRuntime != nil { + downloadPath = pythonRuntime.PyLocation + componentPackage = pythonRuntime.Py + } else { + downloadPath = goRuntime.GoLocation + componentPackage = goRuntime.Go + } + + image := downloaderImage + if image == "" { + image = DownloaderImage + } + + componentPackage = fmt.Sprintf("%s/%s", DownloadDir, getFilenameOfComponentPackage(componentPackage)) + + downloaderContainer = &corev1.Container{ + Name: DownloaderName, + Image: image, + Command: []string{"sh", "-c", strings.Join(getDownloadCommand(downloadPath, componentPackage, pulsar.TLSSecret != "", pulsar.AuthSecret != "", pulsar.TLSConfig, pulsar.AuthConfig), " ")}, + VolumeMounts: volumeMounts, + ImagePullPolicy: corev1.PullIfNotPresent, + Env: []corev1.EnvVar{{ + Name: "HOME", + Value: "/tmp", + }}, + EnvFrom: generateContainerEnvFrom(pulsar.PulsarConfig, pulsar.AuthSecret, pulsar.TLSSecret), + } + podVolumes = append(podVolumes, corev1.Volume{ + Name: DownloaderVolume, + }) + } return &appsv1.StatefulSet{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", APIVersion: "apps/v1", }, ObjectMeta: *objectMeta, - Spec: *MakeStatefulSetSpec(replicas, container, volumes, labels, policy, - MakeHeadlessServiceName(objectMeta.Name)), + Spec: *MakeStatefulSetSpec(replicas, container, podVolumes, labels, policy, + MakeHeadlessServiceName(objectMeta.Name), downloaderContainer), } } func MakeStatefulSetSpec(replicas *int32, container *corev1.Container, volumes []corev1.Volume, labels map[string]string, policy v1alpha1.PodPolicy, - serviceName string) *appsv1.StatefulSetSpec { + serviceName string, downloaderContainer *corev1.Container) *appsv1.StatefulSetSpec { return &appsv1.StatefulSetSpec{ Replicas: replicas, Selector: &metav1.LabelSelector{ MatchLabels: labels, }, - Template: *MakePodTemplate(container, volumes, labels, policy), + Template: *MakePodTemplate(container, volumes, labels, policy, downloaderContainer), PodManagementPolicy: appsv1.ParallelPodManagement, UpdateStrategy: appsv1.StatefulSetUpdateStrategy{ Type: appsv1.RollingUpdateStatefulSetStrategyType, @@ -255,18 +312,22 @@ func MakeStatefulSetSpec(replicas *int32, container *corev1.Container, } func MakePodTemplate(container *corev1.Container, volumes []corev1.Volume, - labels map[string]string, policy v1alpha1.PodPolicy) *corev1.PodTemplateSpec { + labels map[string]string, policy v1alpha1.PodPolicy, downloaderContainer *corev1.Container) *corev1.PodTemplateSpec { podSecurityContext := getDefaultRunnerPodSecurityContext(DefaultRunnerUserID, DefaultRunnerGroupID, false) if policy.SecurityContext != nil { podSecurityContext = policy.SecurityContext } + initContainers := policy.InitContainers + if downloaderContainer != nil { + initContainers = append(initContainers, *downloaderContainer) + } return &corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Labels: mergeLabels(labels, Configs.ResourceLabels, policy.Labels), Annotations: generateAnnotations(Configs.ResourceAnnotations, policy.Annotations), }, Spec: corev1.PodSpec{ - InitContainers: policy.InitContainers, + InitContainers: initContainers, Containers: append(policy.Sidecars, *container), TerminationGracePeriodSeconds: &policy.TerminationGracePeriodSeconds, Volumes: volumes, @@ -280,84 +341,76 @@ func MakePodTemplate(container *corev1.Container, volumes []corev1.Volume, } } -func MakeJavaFunctionCommand(downloadPath, packageFile, name, clusterName, generateLogConfigCommand, logLevel, details, memory, extraDependenciesDir, uid string, +func MakeJavaFunctionCommand(packageFile, name, clusterName, generateLogConfigCommand, logLevel, details, memory, extraDependenciesDir, uid string, authProvided, tlsProvided bool, secretMaps map[string]v1alpha1.SecretRef, state *v1alpha1.Stateful, tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig) []string { processCommand := setShardIDEnvironmentVariableCommand() + " && " + generateLogConfigCommand + strings.Join(getProcessJavaRuntimeArgs(name, packageFile, clusterName, logLevel, details, memory, extraDependenciesDir, uid, authProvided, tlsProvided, secretMaps, state, tlsConfig, authConfig), " ") - if downloadPath != "" { - // prepend download command if the downPath is provided - downloadCommand := strings.Join(getDownloadCommand(downloadPath, packageFile, authProvided, tlsProvided, - tlsConfig, authConfig), " ") - processCommand = downloadCommand + " && " + processCommand - } return []string{"sh", "-c", processCommand} } -func MakePythonFunctionCommand(downloadPath, packageFile, name, clusterName, generateLogConfigCommand, details, uid string, +func MakePythonFunctionCommand(packageFile, name, clusterName, generateLogConfigCommand, details, uid string, authProvided, tlsProvided bool, secretMaps map[string]v1alpha1.SecretRef, state *v1alpha1.Stateful, tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig) []string { processCommand := setShardIDEnvironmentVariableCommand() + " && " + generateLogConfigCommand + strings.Join(getProcessPythonRuntimeArgs(name, packageFile, clusterName, details, uid, authProvided, tlsProvided, secretMaps, state, tlsConfig, authConfig), " ") - if downloadPath != "" { - // prepend download command if the downPath is provided - downloadCommand := strings.Join(getDownloadCommand(downloadPath, packageFile, authProvided, tlsProvided, - tlsConfig, authConfig), " ") - processCommand = downloadCommand + " && " + processCommand - } return []string{"sh", "-c", processCommand} } -func MakeGoFunctionCommand(downloadPath, goExecFilePath string, function *v1alpha1.Function) []string { +func MakeGoFunctionCommand(goExecFilePath string, function *v1alpha1.Function) []string { processCommand := setShardIDEnvironmentVariableCommand() + " && " + strings.Join(getProcessGoRuntimeArgs(goExecFilePath, function), " ") - if downloadPath != "" { - // prepend download command if the downPath is provided - downloadCommand := strings.Join(getDownloadCommand(downloadPath, goExecFilePath, - function.Spec.Pulsar.AuthSecret != "", function.Spec.Pulsar.TLSSecret != "", - function.Spec.Pulsar.TLSConfig, function.Spec.Pulsar.AuthConfig), " ") - processCommand = downloadCommand + " && ls -al && pwd &&" + processCommand - } return []string{"sh", "-c", processCommand} } -func getDownloadCommand(downloadPath, componentPackage string, authProvided, tlsProvided bool, - tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig) []string { - // The download path is the path that the package saved in the pulsar. - // By default, it's the path that the package saved in the pulsar, we can use package name - // to replace it for downloading packages from packages management service. - args := []string{ - PulsarAdminExecutableFile, - "--admin-url", - "$webServiceURL", - } - if authConfig != nil { - if authConfig.OAuth2Config != nil { - args = append(args, []string{ - "--auth-plugin", - OAuth2AuthenticationPlugin, - "--auth-params", - authConfig.OAuth2Config.AuthenticationParameters(), - }...) +func getDownloadCommand(downloadPath, componentPackage string, tlsProvided, authProvided bool, tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig) []string { + var args []string + // activate oauth2 for pulsarctl + if authConfig != nil && authConfig.OAuth2Config != nil { + args = []string{ + PulsarctlExecutableFile, + "context", + "set", + "downloader", + "--admin-service-url", + "$webServiceURL", + "--issuer-endpoint", + authConfig.OAuth2Config.IssuerURL, + "--audience", + authConfig.OAuth2Config.Audience, + "--key-file", + authConfig.OAuth2Config.GetMountFile(), + "&& " + PulsarctlExecutableFile, + "oauth2", + "activate", + "&& " + PulsarctlExecutableFile, } } else if authProvided { - args = append(args, []string{ + args = []string{ + PulsarctlExecutableFile, "--auth-plugin", "$clientAuthenticationPlugin", "--auth-params", - "$clientAuthenticationParameters"}...) + "$clientAuthenticationParameters", + "--admin-service-url", + "$webServiceURL", + } + } else { + args = []string{ + PulsarctlExecutableFile, + "--admin-service-url", + "$webServiceURL", + } } // Use traditional way if reflect.ValueOf(tlsConfig).IsNil() { if tlsProvided { args = append(args, []string{ - "--tls-allow-insecure", - "${tlsAllowInsecureConnection:-" + DefaultForAllowInsecure + "}", - "--tls-enable-hostname-verification", - "${tlsHostnameVerificationEnable:-" + DefaultForEnableHostNameVerification + "}", + "--tls-allow-insecure=${tlsAllowInsecureConnection:-" + DefaultForAllowInsecure + "}", + "--tls-enable-hostname-verification=${tlsHostnameVerificationEnable:-" + DefaultForEnableHostNameVerification + "}", "--tls-trust-cert-path", "$tlsTrustCertsFilePath", }...) @@ -1129,6 +1182,45 @@ func generateContainerVolumeMountsFromConsumerConfigs(confs map[string]v1alpha1. return mounts } +func generateDownloaderVolumeMountsForDownloader(javaRuntime *v1alpha1.JavaRuntime, pythonRuntime *v1alpha1.PythonRuntime, goRuntime *v1alpha1.GoRuntime) []corev1.VolumeMount { + if (javaRuntime != nil && javaRuntime.JarLocation != "") || + (pythonRuntime != nil && pythonRuntime.PyLocation != "") || + (goRuntime != nil && goRuntime.GoLocation != "") { + return []corev1.VolumeMount{{ + Name: DownloaderVolume, + MountPath: DownloadDir, + }} + } + return nil +} + +func generateDownloaderVolumeMountsForRuntime(javaRuntime *v1alpha1.JavaRuntime, pythonRuntime *v1alpha1.PythonRuntime, + goRuntime *v1alpha1.GoRuntime) []corev1.VolumeMount { + downloadPath := "" + if javaRuntime != nil && javaRuntime.JarLocation != "" { + downloadPath = javaRuntime.Jar + } else if pythonRuntime != nil && pythonRuntime.PyLocation != "" { + downloadPath = pythonRuntime.Py + } else if goRuntime != nil && goRuntime.GoLocation != "" { + downloadPath = goRuntime.Go + } + + if downloadPath != "" { + subPath := getFilenameOfComponentPackage(downloadPath) + mountPath := downloadPath + // for relative path, volume should be mounted to the WorkDir + if !strings.HasPrefix(downloadPath, "/") { + mountPath = WorkDir + downloadPath + } + return []corev1.VolumeMount{{ + Name: DownloaderVolume, + MountPath: mountPath, + SubPath: subPath, + }} + } + return nil +} + func generateContainerVolumeMountsFromProducerConf(conf *v1alpha1.ProducerConfig) []corev1.VolumeMount { mounts := []corev1.VolumeMount{} if conf != nil && conf.CryptoConfig != nil && len(conf.CryptoConfig.CryptoSecrets) > 0 { @@ -1143,7 +1235,9 @@ func generateContainerVolumeMountsFromProducerConf(conf *v1alpha1.ProducerConfig func generateContainerVolumeMounts(volumeMounts []corev1.VolumeMount, producerConf *v1alpha1.ProducerConfig, consumerConfs map[string]v1alpha1.ConsumerConfig, tlsConfig TLSConfig, authConfig *v1alpha1.AuthConfig, - logConfs map[int32]*v1alpha1.LogConfig) []corev1.VolumeMount { + logConfs map[int32]*v1alpha1.LogConfig, javaRuntime *v1alpha1.JavaRuntime, + pythonRuntime *v1alpha1.PythonRuntime, + goRuntime *v1alpha1.GoRuntime) []corev1.VolumeMount { mounts := []corev1.VolumeMount{} mounts = append(mounts, volumeMounts...) if !reflect.ValueOf(tlsConfig).IsNil() && tlsConfig.HasSecretVolume() { @@ -1154,6 +1248,7 @@ func generateContainerVolumeMounts(volumeMounts []corev1.VolumeMount, producerCo mounts = append(mounts, generateVolumeMountFromOAuth2Config(authConfig.OAuth2Config)) } } + mounts = append(mounts, generateDownloaderVolumeMountsForRuntime(javaRuntime, pythonRuntime, goRuntime)...) mounts = append(mounts, generateContainerVolumeMountsFromProducerConf(producerConf)...) mounts = append(mounts, generateContainerVolumeMountsFromConsumerConfigs(consumerConfs)...) mounts = append(mounts, generateVolumeMountFromLogConfigs(logConfs)...) @@ -1449,3 +1544,11 @@ func GetNamespacedName(object metav1.Object, component string) string { } return component + "/" + object.GetName() } + +func getFilenameOfComponentPackage(componentPackage string) string { + data := strings.Split(componentPackage, "/") + if len(data) > 0 { + return data[len(data)-1] + } + return componentPackage +} diff --git a/controllers/spec/common_test.go b/controllers/spec/common_test.go index 557fc5cdd..a16379e82 100644 --- a/controllers/spec/common_test.go +++ b/controllers/spec/common_test.go @@ -31,66 +31,148 @@ import ( ) func TestGetDownloadCommand(t *testing.T) { - doTest := func(downloadPath, componentPackage string, expectedCommand []string) { - var tlsConfig *v1alpha1.PulsarTLSConfig - actualResult := getDownloadCommand(downloadPath, componentPackage, false, false, tlsConfig, nil) - assert.Equal(t, expectedCommand, actualResult) - } - testData := []struct { downloadPath string componentPackage string + tlsConfig *v1alpha1.PulsarTLSConfig + oauth2Config *v1alpha1.OAuth2Config expectedCommand []string }{ // test get the download command with package name - {"function://public/default/test@v1", "function-package.jar", + {"function://public/default/test@v1", "function-package.jar", nil, nil, []string{ - PulsarAdminExecutableFile, - "--admin-url", "$webServiceURL", + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", }, }, - {"sink://public/default/test@v1", "sink-package.jar", + {"sink://public/default/test@v1", "sink-package.jar", nil, nil, []string{ - PulsarAdminExecutableFile, - "--admin-url", "$webServiceURL", + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", "packages", "download", "sink://public/default/test@v1", "--path", "sink-package.jar", }, }, - {"source://public/default/test@v1", "source-package.jar", + {"source://public/default/test@v1", "source-package.jar", nil, nil, []string{ - PulsarAdminExecutableFile, - "--admin-url", "$webServiceURL", + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", "packages", "download", "source://public/default/test@v1", "--path", "source-package.jar", }, }, // test get the download command with normal name - {"/test", "test.jar", + {"/test", "test.jar", nil, nil, []string{ - PulsarAdminExecutableFile, - "--admin-url", "$webServiceURL", + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", "functions", "download", "--path", "/test", "--destination-file", "test.jar", }, }, // test get the download command with a wrong package name - {"source/public/default/test@v1", "source-package.jar", + {"source/public/default/test@v1", "source-package.jar", nil, nil, []string{ - PulsarAdminExecutableFile, - "--admin-url", "$webServiceURL", + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", "functions", "download", "--path", "source/public/default/test@v1", "--destination-file", "source-package.jar", }, }, - {"source:/public/default/test@v1", "source-package.jar", + {"source:/public/default/test@v1", "source-package.jar", nil, nil, []string{ - PulsarAdminExecutableFile, - "--admin-url", "$webServiceURL", + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", "functions", "download", "--path", "source:/public/default/test@v1", "--destination-file", "source-package.jar", }, }, + // test get the download command with an oauth2 config + {"function://public/default/test@v1", "function-package.jar", nil, + &v1alpha1.OAuth2Config{ + Audience: "test-audience", + IssuerURL: "test-issuer-url", + KeySecretName: "test-private-key", + KeySecretKey: "auth.json", + }, + []string{ + PulsarctlExecutableFile, + "context", + "set", + "downloader", + "--admin-service-url", + "$webServiceURL", + "--issuer-endpoint", + "test-issuer-url", + "--audience", + "test-audience", + "--key-file", + "/etc/oauth2/auth.json", + "&& " + PulsarctlExecutableFile, + "oauth2", + "activate", + "&& " + PulsarctlExecutableFile, + "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", + }, + }, + // test get the download command with a tls config + {"function://public/default/test@v1", "function-package.jar", + &v1alpha1.PulsarTLSConfig{ + TLSConfig: v1alpha1.TLSConfig{ + Enabled: true, + AllowInsecure: false, + HostnameVerification: true, + CertSecretName: "test-secret", + CertSecretKey: "test-key", + }, + }, nil, + []string{ + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", + "--tls-enable-hostname-verification", + "--tls-trust-cert-path", "/etc/tls/pulsar-functions/test-key", + "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", + }, + }, + {"function://public/default/test@v1", "function-package.jar", + &v1alpha1.PulsarTLSConfig{ + TLSConfig: v1alpha1.TLSConfig{ + Enabled: false, + AllowInsecure: false, + HostnameVerification: true, + CertSecretName: "test-secret", + CertSecretKey: "test-key", + }, + }, nil, + []string{ + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", + "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", + }, + }, + {"function://public/default/test@v1", "function-package.jar", + &v1alpha1.PulsarTLSConfig{ + TLSConfig: v1alpha1.TLSConfig{ + Enabled: true, + AllowInsecure: true, + HostnameVerification: false, + CertSecretName: "test-secret", + CertSecretKey: "test-key", + }, + }, nil, + []string{ + PulsarctlExecutableFile, + "--admin-service-url", "$webServiceURL", + "--tls-allow-insecure", + "--tls-trust-cert-path", "/etc/tls/pulsar-functions/test-key", + "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", + }, + }, } for _, v := range testData { - doTest(v.downloadPath, v.componentPackage, v.expectedCommand) + var authConfig v1alpha1.AuthConfig + if v.oauth2Config != nil { + authConfig.OAuth2Config = v.oauth2Config + } + actualResult := getDownloadCommand(v.downloadPath, v.componentPackage, false, false, v.tlsConfig, &authConfig) + assert.Equal(t, v.expectedCommand, actualResult) } } @@ -179,7 +261,7 @@ func TestGetSourceRunnerImage(t *testing.T) { func TestMakeGoFunctionCommand(t *testing.T) { function := makeGoFunctionSample(TestFunctionName) - commands := MakeGoFunctionCommand("", "/pulsar/go-func", function) + commands := MakeGoFunctionCommand("/pulsar/go-func", function) assert.Equal(t, commands[0], "sh") assert.Equal(t, commands[1], "-c") assert.True(t, strings.HasPrefix(commands[2], "SHARD_ID=${POD_NAME##*-} && echo shardId=${SHARD_ID}")) @@ -538,6 +620,7 @@ func TestGenerateContainerVolumeMounts(t *testing.T) { trustCert *v1alpha1.PulsarTLSConfig authConfig *v1alpha1.AuthConfig logConf map[int32]*v1alpha1.LogConfig + javaRuntime *v1alpha1.JavaRuntime } tests := []struct { name string @@ -661,6 +744,64 @@ func TestGenerateContainerVolumeMounts(t *testing.T) { }, }, }, + { + name: "generate volume mounts from runtime config", + args: args{ + producerConf: &v1alpha1.ProducerConfig{ + CryptoConfig: &v1alpha1.CryptoConfig{ + CryptoSecrets: []v1alpha1.CryptoSecret{{ + SecretName: "test-producer-secret", + SecretKey: "test-producer-key", + AsVolume: "/test-producer", + }}, + }, + }, + consumerConfs: map[string]v1alpha1.ConsumerConfig{ + "test-consumer": { + CryptoConfig: &v1alpha1.CryptoConfig{ + CryptoSecrets: []v1alpha1.CryptoSecret{{ + SecretName: "test-consumer-secret", + SecretKey: "test-consumer-key", + AsVolume: "/test-consumer", + }}, + }, + }, + }, + trustCert: &v1alpha1.PulsarTLSConfig{ + TLSConfig: v1alpha1.TLSConfig{ + Enabled: true, + AllowInsecure: true, + HostnameVerification: true, + CertSecretName: "test-trust-secret", + CertSecretKey: "test-trust-key", + }, + }, + javaRuntime: &v1alpha1.JavaRuntime{ + Jar: "test.jar", + JarLocation: "/test-jar-location", + }, + }, + want: []corev1.VolumeMount{ + { + Name: "test-trust-secret-test-trust-key", + MountPath: "/etc/tls/pulsar-functions", + }, + { + Name: DownloaderVolume, + MountPath: "/pulsar/test.jar", + SubPath: "test.jar", + ReadOnly: false, + }, + { + Name: "test-producer-secret-test-producer-key", + MountPath: "/test-producer", + }, + { + Name: "test-consumer-secret-test-consumer-key", + MountPath: "/test-consumer", + }, + }, + }, { name: "generate volume mounts from authSecret", args: args{ @@ -716,6 +857,7 @@ func TestGenerateContainerVolumeMounts(t *testing.T) { tt.args.trustCert, tt.args.authConfig, tt.args.logConf, + tt.args.javaRuntime, nil, nil, ), "generateContainerVolumeMounts(%v, %v, %v, %v)", tt.args.volumeMounts, tt.args.producerConf, tt.args.consumerConfs, tt.args.trustCert) }) } diff --git a/controllers/spec/function.go b/controllers/spec/function.go index 7f137e530..46ce7aeb0 100644 --- a/controllers/spec/function.go +++ b/controllers/spec/function.go @@ -54,8 +54,9 @@ func MakeFunctionService(function *v1alpha1.Function) *corev1.Service { func MakeFunctionStatefulSet(function *v1alpha1.Function) *appsv1.StatefulSet { objectMeta := MakeFunctionObjectMeta(function) - return MakeStatefulSet(objectMeta, function.Spec.Replicas, - MakeFunctionContainer(function), makeFunctionVolumes(function), makeFunctionLabels(function), function.Spec.Pod) + return MakeStatefulSet(objectMeta, function.Spec.Replicas, function.Spec.DownloaderImage, + MakeFunctionContainer(function), makeFunctionVolumes(function), makeFunctionLabels(function), function.Spec.Pod, + *function.Spec.Pulsar, function.Spec.Java, function.Spec.Python, function.Spec.Golang) } func MakeFunctionObjectMeta(function *v1alpha1.Function) *metav1.ObjectMeta { @@ -84,7 +85,10 @@ func makeFunctionVolumeMounts(function *v1alpha1.Function) []corev1.VolumeMount function.Spec.Input.SourceSpecs, function.Spec.Pulsar.TLSConfig, function.Spec.Pulsar.AuthConfig, - getRuntimeLogConfigNames(function.Spec.Java, function.Spec.Python, function.Spec.Golang)) + getRuntimeLogConfigNames(function.Spec.Java, function.Spec.Python, function.Spec.Golang), + function.Spec.Java, + function.Spec.Python, + function.Spec.Golang) } func MakeFunctionContainer(function *v1alpha1.Function) *corev1.Container { @@ -130,7 +134,7 @@ func makeFunctionCommand(function *v1alpha1.Function) []string { if spec.Java != nil { if spec.Java.Jar != "" { - return MakeJavaFunctionCommand(spec.Java.JarLocation, spec.Java.Jar, + return MakeJavaFunctionCommand(spec.Java.Jar, spec.Name, spec.ClusterName, generateJavaLogConfigCommand(function.Spec.Java), parseJavaLogLevel(function.Spec.Java), @@ -141,7 +145,7 @@ func makeFunctionCommand(function *v1alpha1.Function) []string { } } else if spec.Python != nil { if spec.Python.Py != "" { - return MakePythonFunctionCommand(spec.Python.PyLocation, spec.Python.Py, + return MakePythonFunctionCommand(spec.Python.Py, spec.Name, spec.ClusterName, generatePythonLogConfigCommand(function.Name, function.Spec.Python), generateFunctionDetailsInJSON(function), string(function.UID), @@ -150,8 +154,7 @@ func makeFunctionCommand(function *v1alpha1.Function) []string { } } else if spec.Golang != nil { if spec.Golang.Go != "" { - return MakeGoFunctionCommand(spec.Golang.GoLocation, spec.Golang.Go, - function) + return MakeGoFunctionCommand(spec.Golang.Go, function) } } diff --git a/controllers/spec/sink.go b/controllers/spec/sink.go index 2763b69ed..d4621c132 100644 --- a/controllers/spec/sink.go +++ b/controllers/spec/sink.go @@ -50,8 +50,9 @@ func MakeSinkService(sink *v1alpha1.Sink) *corev1.Service { func MakeSinkStatefulSet(sink *v1alpha1.Sink) *appsv1.StatefulSet { objectMeta := MakeSinkObjectMeta(sink) - return MakeStatefulSet(objectMeta, sink.Spec.Replicas, MakeSinkContainer(sink), - makeSinkVolumes(sink), MakeSinkLabels(sink), sink.Spec.Pod) + return MakeStatefulSet(objectMeta, sink.Spec.Replicas, sink.Spec.DownloaderImage, MakeSinkContainer(sink), + makeSinkVolumes(sink), MakeSinkLabels(sink), sink.Spec.Pod, *sink.Spec.Pulsar, + sink.Spec.Java, sink.Spec.Python, sink.Spec.Golang) } func MakeSinkServiceName(sink *v1alpha1.Sink) string { @@ -123,12 +124,13 @@ func makeSinkVolumeMounts(sink *v1alpha1.Sink) []corev1.VolumeMount { sink.Spec.Input.SourceSpecs, sink.Spec.Pulsar.TLSConfig, sink.Spec.Pulsar.AuthConfig, - getRuntimeLogConfigNames(sink.Spec.Java, sink.Spec.Python, sink.Spec.Golang)) + getRuntimeLogConfigNames(sink.Spec.Java, sink.Spec.Python, sink.Spec.Golang), + sink.Spec.Java, sink.Spec.Python, sink.Spec.Golang) } func MakeSinkCommand(sink *v1alpha1.Sink) []string { spec := sink.Spec - return MakeJavaFunctionCommand(spec.Java.JarLocation, spec.Java.Jar, + return MakeJavaFunctionCommand(spec.Java.Jar, spec.Name, spec.ClusterName, generateJavaLogConfigCommand(sink.Spec.Java), parseJavaLogLevel(sink.Spec.Java), diff --git a/controllers/spec/source.go b/controllers/spec/source.go index 3edca91df..d800bcb46 100644 --- a/controllers/spec/source.go +++ b/controllers/spec/source.go @@ -50,8 +50,9 @@ func MakeSourceService(source *v1alpha1.Source) *corev1.Service { func MakeSourceStatefulSet(source *v1alpha1.Source) *appsv1.StatefulSet { objectMeta := MakeSourceObjectMeta(source) - return MakeStatefulSet(objectMeta, source.Spec.Replicas, MakeSourceContainer(source), - makeSourceVolumes(source), makeSourceLabels(source), source.Spec.Pod) + return MakeStatefulSet(objectMeta, source.Spec.Replicas, source.Spec.DownloaderImage, MakeSourceContainer(source), + makeSourceVolumes(source), makeSourceLabels(source), source.Spec.Pod, *source.Spec.Pulsar, + source.Spec.Java, source.Spec.Python, source.Spec.Golang) } func MakeSourceObjectMeta(source *v1alpha1.Source) *metav1.ObjectMeta { @@ -118,12 +119,13 @@ func makeSourceVolumeMounts(source *v1alpha1.Source) []corev1.VolumeMount { nil, source.Spec.Pulsar.TLSConfig, source.Spec.Pulsar.AuthConfig, - getRuntimeLogConfigNames(source.Spec.Java, source.Spec.Python, source.Spec.Golang)) + getRuntimeLogConfigNames(source.Spec.Java, source.Spec.Python, source.Spec.Golang), + source.Spec.Java, source.Spec.Python, source.Spec.Golang) } func makeSourceCommand(source *v1alpha1.Source) []string { spec := source.Spec - return MakeJavaFunctionCommand(spec.Java.JarLocation, spec.Java.Jar, + return MakeJavaFunctionCommand(spec.Java.Jar, spec.Name, spec.ClusterName, generateJavaLogConfigCommand(source.Spec.Java), parseJavaLogLevel(source.Spec.Java), diff --git a/manifests/crd.yaml b/manifests/crd.yaml index 0bbb6e339..4e96d0929 100644 --- a/manifests/crd.yaml +++ b/manifests/crd.yaml @@ -51,6 +51,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean funcConfig: @@ -2679,6 +2681,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -2864,6 +2882,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string golang: properties: go: @@ -5426,6 +5446,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -5560,6 +5596,8 @@ spec: type: string clusterName: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean golang: @@ -8105,6 +8143,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -8322,6 +8376,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean funcConfig: @@ -10950,6 +11006,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -11214,6 +11286,8 @@ spec: type: string deadLetterTopic: type: string + downloaderImage: + type: string golang: properties: go: @@ -13776,6 +13850,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: @@ -13989,6 +14079,8 @@ spec: type: string clusterName: type: string + downloaderImage: + type: string forwardSourceMessageProperty: type: boolean golang: @@ -16534,6 +16626,22 @@ spec: type: object authSecret: type: string + oauth2Config: + properties: + audience: + type: string + issuerUrl: + type: string + keySecretKey: + type: string + keySecretName: + type: string + required: + - audience + - issuerUrl + - keySecretKey + - keySecretName + type: object pulsarConfig: type: string tlsConfig: From bd764e8c3f2c6a65f6d5b441d0dfe2352f8387f4 Mon Sep 17 00:00:00 2001 From: jiangpengcheng Date: Tue, 20 Sep 2022 01:26:22 +0000 Subject: [PATCH 2/6] Generate codes --- charts/function-mesh-operator/Chart.lock | 9 ++++ ...ompute.functionmesh.io-functionmeshes.yaml | 48 ------------------ ...crd-compute.functionmesh.io-functions.yaml | 16 ------ .../crd-compute.functionmesh.io-sinks.yaml | 16 ------ .../crd-compute.functionmesh.io-sources.yaml | 16 ------ .../charts/vertical-pod-autoscaler-5.2.0.tgz | Bin 0 -> 33941 bytes ...ompute.functionmesh.io_functionmeshes.yaml | 48 ------------------ .../compute.functionmesh.io_functions.yaml | 16 ------ .../bases/compute.functionmesh.io_sinks.yaml | 16 ------ .../compute.functionmesh.io_sources.yaml | 16 ------ 10 files changed, 9 insertions(+), 192 deletions(-) create mode 100644 charts/function-mesh-operator/Chart.lock create mode 100644 charts/function-mesh-operator/charts/vertical-pod-autoscaler-5.2.0.tgz diff --git a/charts/function-mesh-operator/Chart.lock b/charts/function-mesh-operator/Chart.lock new file mode 100644 index 000000000..9ef725cbf --- /dev/null +++ b/charts/function-mesh-operator/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: admission-webhook + repository: "" + version: 0.2.4 +- name: vertical-pod-autoscaler + repository: https://cowboysysop.github.io/charts/ + version: 5.2.0 +digest: sha256:42514216947cd89a08257b04c779cbcf92c998a466cc3c01ef80af298f39c434 +generated: "2022-09-15T08:14:16.47559339Z" diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml index a6611e787..0b42dbacf 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functionmeshes.yaml @@ -2687,22 +2687,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -5479,22 +5463,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -8203,22 +8171,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml index 62e8d3c16..8d5d0db9d 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-functions.yaml @@ -2706,22 +2706,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml index 998df9a97..e6f5b1b68 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sinks.yaml @@ -2640,22 +2640,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml index e1538f6d2..441273fbd 100644 --- a/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml +++ b/charts/function-mesh-operator/charts/admission-webhook/templates/crd-compute.functionmesh.io-sources.yaml @@ -2617,22 +2617,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/charts/function-mesh-operator/charts/vertical-pod-autoscaler-5.2.0.tgz b/charts/function-mesh-operator/charts/vertical-pod-autoscaler-5.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8600440c481d69183f0acb7b77c7cabd72e0a4af GIT binary patch literal 33941 zcmXV%V|<*?*N3yQZQHi3rm>wgwr$&PV>C&FhK z*dhx(W&4VJ1at?sbhCi2p59hKFfhJvTZoTOukCN`p&uW`j<2Di#T$K&q9CBbk_g#e zQovldr_oBU{V;@ozSA(<%}Olg5@KL z>y4A%ne2^^;;YT`z_*X)x3@^&GLiE@p68wG>xs+ekJP!ozT!QeNSdwDA7t*4#-rXn z5ds3-tpv$@*&OKF76TbmJQ{(APfsK-IWd(4-OBUXT)65HXy;&cXgJL{Jxm;656EX3_@{`Cu}Hv@0rVBmnl(et^RUq2Udl|xxXixfIY#=Qm%h{oR>2J>b+TICD*IYvzE!2dw{NEZVsJY(tg)< z|IY5BKc5)W|FXqQd|w1RTY;arUpR7EM%{$K8?{}cXBw70A=wd%)2+1sZaPr0pJv7n z=J-pr+(VHn(ZkO$J$GEVU)6_yZVC`$sb%L-Da&BLvz=<08%t6;8(-*tOq$kQP%CkP zJfr=6LBclAfq{;JJVPLuj|@=Fp0`(16iw6(nXy`nuM@9eed6FSaUpPL(^KXnRKjty%TO;B*t!XYMHltf_(+h*g+ zdwTI$0~5N_+k0)i#m~>n`+Dhgwe}JC5^;K zF5GHiXpYIZ%y8DOC8J^`SW#;zxg%7^73Lg`uI+AeW7N&U*A*Uui14HGdSUBNu!XhO|WHZ@zh3<$hd@bP^cB~jw9`A=tBP%a0_7KX= z*A0FNw+MSTyET^p`sw1Y;N>xkq|%dJHdR?ZP#b1H(hj~wxM>h9sZsLyux*C?DC$ij z`Z|6v>jixewWpHBwivgmdJL{O~d zuuPnRGP`)G%*2mz9@MDBTfGE<=v~Jo2As((<$j3t{VH|ZlQhJY^5DTn!am+C|EqlZw>404FZdmLDp?)y91rxMx+2Orc9ZfR~ zBYC1B4#+{&cCrNm3za#SB@C|G(DG$cGLK}4?JNrTQYUInSOj|lG8qbS9&e$aQ3}y# zh`okbkoD}Q2tft5aS}X85#S0QKVvD4am(#t_*>%GixLr1rArS-t%_lbe0GP$8{|%h z|9rsit045<-WPf%Sq*Uz$i-wIH5bb}3!}{IM~g&AXS;i#rDM3;8&^JUpNrcCsv|}z zJ1P26M)FHdI}dzqsNRT%vxpXk%pHigowN-=n5}($s_No8eriC44s-dCd*_4PvYGsn zJR>$R{;mZnjxDD_A|;M3*+tQ;stA_K-b=`<`=L>zK%U-W{S=Z zag_!eG`=2zsPgs8(X=_FvC;XQ$>Rmxz5Rp8fvPub6iSjvU)potyu#);VJPN9!4wB_ zC&OsGe0WsIc(^a?=-|CMVLfEq$gjU_D8A}%SCzVX#u#FmNt27WFM#s+~i?{ar&Jg_6Bnk=by%Zos z(zMZTctD1)xF9C%>NDx`-z{L+C(p*Pk^PRLH7pX-76_8)2-&MM{^qI%>A#OjJojZj zv&RYrx`hXxZZCz&T=<=+mW(&a(NdzeQUrm`kch)a{LvWDxB!sx?~*8{BWo6#X!IF( zs_qO>3_-U9`}Io!UCJ+jLplGo!H86YB2|`cw8*pjVKQ+mw<1$Cmm;#@?Xr23Wynz^ z$3r9XNOx0`gl#Y6R}N}m9L<%nF&HY#PQ7t%2SLVt@njUki6j@5z%6Ro^5R_9Za@l2 zWlf!N?oKFGPHnkOKgQPVcLAU2r zErrj|ICv*}=_t&!H;}605)y&Q$$}S>XPd*4rXw?cmy=YkO>~G!h1v$FZ-g^=@=KkX z>*5^C?Q~6Lr+($SJ&2@R(Wt*SPx*g&{J!@{(ze1J5sN*L8N}0`uNf;3+hIEyoIhb- zNnsY}z=ERjco=Qmfh%Hj^0*yh`XLiY;83X5GLI?c+cY~zth1J ze%W%g%Z4Aa@nLNOSx=h#q`$B9>;~KA&Q8*A*H&1+NFbj%GblKhIv<(}CxyX>0_Rt{ z^NV&>t)AhT+o17A+1(r3QoKG&se9_aw}OWnzWLA$A37gMUc9ui%&h2VVbCWdc>aWr znItMPFUL|~6(>@`m*NPN$NZvbvObdk{e_cCZ9bVcj|x*oc-Iy_9DSDb+*<=0scANy|7pw6T)ORP z!_MY+F`#y%n(F!fjAn#Jl}CP`5;7-B9Euwk1bos5EATnN4 z%Ymf#hhz#Eb-79Ynmid2rAJ}^n`VZlDU*2yfQhe56m4dV3MyZN>TGFLSJtNA zjxz%+vd}+E&U%yhVOuh8K}Y)DDxDjI@38@4+d5m=_62Sop{}A;OZv(aosZjGuRUQ6 z$oBX{Y)6u{bB&U13^I<2P}t~uAM9vL#H2ga&A|D9Y|_8`z)EE4pp&}jdJyg657BuX zCu<~ie%Zn&b=td64vHJ5AZl?JO^N6R7MUv`U)G+%ClIm&XdslqYYOe-Y+U(JO<@x$ z&Mo>VB+cazIDdd=4loI2_ThCo2#>+>QjC{t&bCWJ+MZtg1sheiFrEIuIs1rp=cxV_ zfK%9B->r6^m1R|zmow&BZ-N$y^>|BkrJfoS;Ht@3PMk2?b@;FL zByzhJZ0alxmsqh0gXYb2?No~@BzBbNFBPH3$EO96hg+lMO;@(UT4~_g)|SBdaNygU z%-g4LonQ%gaRhi*u<6l9MXHnjF?+15*1g2!`DP#LfCk0#r+0x&v~oc+7;t|6icxjzWhwwooy_JDVkPC<}g*S6&Xzr=;;73ab5N*bEq*N0PlN=l?Ada zUR2v_;^i#TQf^$m>yQC-R-2&yK%;Y}PDN{Ysl58v_DGt#2IC16LJ?TCqstJ)&Zun4 zt0m39YU5oQUBP}8@(*=C8zKWU(m)RyoK(yeiD-IdAfeI0z)hj$tLB^hrCUzppjQ(k zqK7@!w-Jpp@Lb(5XS%To1@;42_orrhj@9(bI(Tk7Dtvuy?$qx*r{a4jQ>HpYsg@)BArW+D))qdwR@dG(XWDv%n(X~aQ* zjEsZvtm=EwCv&Z>GMQ+wT_ph*2aRC7qT>D`xZRm8&!n}vS!B7jr3ed?S~g!Z_uSSj zu5&zS0K?f@@Gyn2M9x6XK2$Yl`*=te{SfcI6=B=VSUQ-%ED1v4M{L|K&|dESc%aC? z47P+a<0fPd7nKH(!x?vHjM{x09jXmZkKzjd0jEoLYr+L3g)!d3&Qj;ljU}_G+S93A z#Ti%x(M2~c@q^WU46H1H5H7@7W!DmLJkSH(--Mp0=x&T3L4ZnQ(aa#Vi4ihD9mc=x z$Qh{0wP{wA=5M1mjqdly2h`pD&hxj6qSlZZdT}`LGuI#wEZgWS?i6DHRquJbyJ7P^kG;;S$S9Sdo zw^1`io?B#2&AB72Y=g3twO5u;^%BTv$t{bfHUWZp^9?=!*y_D3=mhDF-8sFBh>=sZ z_hgq#j(zA|vXEH->M?pXS85f9@(^bVbUB)pY$)?kBe$q!w}~Z_x|d=iUCQ}+?9@E- z3T(h;OP-CB{A^(hgE(VXWBguSA2O(dP7Oz+$Y4Ar`@<#Zbj{CntQUd~7gM~P zjKx|^F2R1>AFd7bNk~R&Bqb7!C#2cqj1E+phl~sSG~HrTOop#~VO)j5`eyOv9+zrN zdXqdEtg(#W=R08EMR(nVMP##r%SV z+x0u6H{K}FXBj?BDc?+Qdn|KlS82hxR3Cr<1@_XwIE!hYN760O*~Tl(r{Ev2KlT-+ zaE16x5gTsl^6%+`eEUsT>M29--)06)DY(`9VOab1ossrIDN~8$dBG3S=*%Mk!uHd? zL7tl(20)ZSe^v=d*tBcS>z$bwMcrcLwJ!CX#$$Z@v4^PN*Lb~+U<4g@OL(Owk%X7c z(HGlP63ZK?(IzPhN5kzLx&69d)VN`|8rf0xa`pH`z`bQ`sJ7FP;uGDH9s;X(h^7pR z^780{7%r2j<&c^_P{VrS))Pnm={6nCmS*G8a4!q5J3K2v-8L&eQFdxUFd1Q>TYlhn zU^n*?B!|G2SDj}sOhRv6c-XK&!1xE6@(1$1hJ3M9Z&x09vc+J%3;jf6w;cNfXQv7O zL}QnW_-7IF=b^)oy?UfcBKtDaN4GzI^V{vsntNl$JJ*PTkni+ zP&N|(ul8%K&7FhXt=0C9Qk%%Q(D3xQj;47oV=iZP_hxuMrqv@8TKj;++D(F)kndCa zNfpXrTrOtVD(sEMDH#P({zaytx#=qD$k zGa=Qna&TyJ_=QGkxwSEz_~9`r_Y3!->%dDES~R9s5X@wG@J?dD=_9E3+al2Ns&;EN z@b`g^9mvro{x~j9?<@pbg5K)e_qu5)=S|5I=B~^YX5GrdMH|{bblj9vW~=B6n*7OM zHa0xIVQ9cI+Ebt8{@00NLH)70n`=m70^ zMHtMUY;zlie>jvA0}p39!8qe@89&<7i{PJ8Ma-a+zx`z?Sw@KyF{?*td2bgWewz7@ zN6^QI7&oYIr(i1&v~*kL2V#M{w!|NS2mcXLD^h1Cj+UI`K*Kk#|-27WvvoIIJ1iNvV=5or%XxVJeR<8 zpZ>sKBj_H)!KNYuk3e1=jvcb$C@GxrMm8Pbkq7V^ zC$V*Hsj7ujQk9Y$v=DUej?cnDfsy5=!{XthxYVwKg3X0ga5WCjYs%Pfh|-a7!_9MV zZOG|K)_5wLwHK!ujx!wv2l+D{O*?v=EOt+}O)3>zAp6sG4mi6Bpa|}{`K`zmvd7bB zE|h7C;s}J^|K~N#sA%DVx*=sxThKSXys6Dj13e06szgX^vY|1`c&rZ7sPiIoV$ zu`sNa7>u?Q9`3~AnfQ@B-i10GhLG5qkm-+o1bTQOu2&)giJV$qfu4||t3e>$Jetgz z!VTzE`+{EX+D%3@DaqE`M%00{EylOL*|Tms5D#4)b|&!b1q9qCtpxG$^4k0};IBX! z1_n;!!44BjAS4S{jpz%vqvF_^a3(63-%&eDO&`3@(_TEyFKSm0~c>8 zU%KVD@YXhg`DXLCpbU@*E+{eQ^F+q=mU}1#k=t z^KlxZw)}iyz)o3AseUx`K??q{^lH|cigoDXe<)741VgH+P$v8{6a@#{3foJ2_fCug zDbu|zX8UivfS!TmP6#s{dOZ%$yibCK3Utn_Q(r4xtc!Mu^>)DDQPZ#HXTJEOAcU7U z%Y6QiDF+cxkZ;S{;D3&d;>!hDfe_^U-f`Ut$TslwMMTOZf(nVz8d|px^z@ie{{r$v z@zi^p`XiWV2l`I>dm%fR8sBIXztN#%mEls@bW*0x$me{Z9Mfw$w`z%;8*XwpqAq&1 zvLR6+F6Bj1jargjg_z7leVz z-pELN3n=h;!Noq%NU5t#n@4vJ@vRz!{&?ko`7N0}22XZ;D$<6)qrLrLQ_gb2=*NOz z6&-pbiM?TZ)v2_jBM;P@MC`Z(UKuCFf&y!o{_SCcL~mE<39Tio1y(g%oEN>N-ruF0 zR;IwRITAVwzhFqCxs^CHPur})mapp8=vmYep_Wba3RuTqm<*<(j)O0UidWHHbaV;) z@~1{Ni8d4*KVXto3z|<9ux99DrL>Ch>(W;uweK=qcNQ(#DA5;K&YzzM)o}$l?_zn9 zT!+Xt3PKI5-c!!ijAn^*mHdJ47|g8>1Dowr?N0N!>AeO$Q_zOYb-mlI#NG7v4 z9dGy>a#=-^6>1tNCCw;i-JfX4xcFrH)iqY+>lg^31+cIIA|f>33naNmdD43cB$`US z16d~m2m%qcYaA7!daKr@$`rd>i1Twbgkx_&UI<40kR?ArC>~F*d>>PrK!-8V(hcKZ z5JrPhJwivcT;n>3;Q%<;vLyRR$1uMib_`B)TVxr2BU*X+*Tq@1Vev?(!I@_P6hk(Q zr;w@t6{`Qs+-@gLOUpz0YHC5n>85w5>A> zZE@pYyrL}S@go{$vvd8eu?pQ*rJq$CTe9?WCS>ws{DPd=-cmRow7sfo+HpN56`gWg zOnJ}rD6u8Iuu*xcQTU<*a$@-Br9x=%etaoN3oUN@vCM}n$u(Q+y%am+&asCzJ+7_7 zKSgB3&WM2v+cNnN!z=dy_*~s2T*kZ2%ogB~=E;@cr7o zBK-Q7p{OX*5V47u6tTWYFco~D-JA;^cR;8?8VGCPIIN(X>j=(MgnElTA-U|l!>{yv zjw+F#pkdCBPpSpcX810GPn4dT5$w|&4Vo~OGMHx*N}NYv8Yt13sO|D25lm=~aWfDh z;_5Z7*!?*~Y zW~wrTjFe(Sf<)Bt)*#wNQ)5ka0dlGndOp61$v#N;)wPuu^R{X`o!)cMPuj7{hV3ie& z%WjA8Il;gE+>;fc^l%0GT?Q2c+B!s3sBP3{saH5b@h4= zhQy*xv9t2Bqrj))O@`H5mLwZz4>T4IsMrHVzOB3)y@eKko|Ycyj1s)=gg|q3*aLrf z`;MHjapoFIW!6{05%L3~}-QVi^DlT}*Z31G`0r2S8g}_8;9#cbr<7-${`V zo0!_stcrSo{q=BClE0&J&mRl)yj{Qp75ZZW7Y$X|mmg>eV|{#$J55zGLH9x>y(1Nn zUqAEYC437dFAM6sozgvFE z9xr7TT{;C9`o{a+uah>1%6^kX`{5P+3vtv($%@fsDrDQPONTSgL?{*uH?A%xqR$mz zI$Uf?nwl+F=C_HKw?WW74o79lax$a&%UjfG7j%P4;@$NkNJ$Q?B{2s%YCq+sGdoVjhat(&Hn?+Hso1Tc0;ReXX&*2q6OUyal~59ooSE^ zWhI~68P)3p|NQYS-a?hc)YgJCxY$?TvX04mV?2F1{X2vghu|iHbM)SQ=uYM4Vbl1* z{ml)=XD%EiieMuEqQmU#Z#0_3KOmlT5cn=*E?CndFwl`F8}v{cxI7wo<^_Myjj-F8 zV#M%bUXzRuIZKONq;fHmE^fd*7+>tRF^MrPp-vggh)k!FwqD$s zc$Bc<4)L_hC*0bbRwZno!^y8l_m|}Nj zKB551-PuDDbSZ4D3}#SslhOxCRa>Ax%5I4SL7%S2rAjccEFRRBag_W3lHN6ZK?-ts zraSnc7l~vPIuv{*X4=XGnBRQ*_pa`qq|j+F-B5HycNKTO-xC(|)@*0cgq00zyx!wo ze6Vo3wS;T_rfbe^xp;T{;Cxi(>yX1FwH@19$XO@$-Fhz*oH*z{a0&FE>jw&0euko6 z^P`_noE)zudCBbD2&!gJXr?-gIaQc~8ms+}Y)fGd?d;6TiLpQ6!>fMs_QIv3T@>JA z9E?}!473v4H3T3@62993?!i-wMtqL1war8j_9~TVbFygNZE95%0okah#vdZJ&*$2Iu!`gnnd3_PJ9W83n#dW+j zYw0ic#qoNHzwOygf-=WG9uz{~joRB+-V@tlJ~TlM8J2(E1Cj9l>RxvLTJL7($od`^ zISQ}o5!#d&XRP2;GYV~SS|g01-E~mIjGzq;g^~oQDtUm(>gK*%N*#O0nwYHD=^iEU zYKb$7?_U|H_ophq-~8Sc*ZTRYlxpxBfas8kV40JRpRjIQHu>H;>#p^EfdT!Fn6g-l znJ@Eu+ufdLnHJ6vP1&y+u;EgMNvRd$Sjfd$^>6Wb8dQM>)GXR?KBJxmDOJW&`I!^2 znzI@XuOz$#+Hkl}Q;>_8S}3_tRp1F_=>R(xwW4p(wa3?u$t&G4h22`nrMuLb3f=1K zt3vE7SUg@eC0_>=Hbv&N{4m$Y8I7o}Yr@(z(>5wgTCt{==o@^}8(#|WI(LO}#t+Tu zfAgefp12d~bjTZ_r1VyHas=d*wE_cM*NwI~Z$KLpo1n{!tEQW+&(N>gM^|zb?sV(o3&;Yznnkv(qj z?hSh&SL>gZEvKEIFTig7%Nj@gbI@n33>+%hdIkMH`n3fb`^}l>=TW<;YCOjTMK9|Z z9A~_+P=T6W(W*^d+g6dUnGaP}7cJp??m%+Kx%KZyepJACyXva~9c^y*8n%BjH99_^ zz_@cKBu0#`#m-Jq*J~%d9sK)RxlXZcIA)xSZ=dwbH(m7(Di^$;trYq1-v*kyya7X=1VSO*t^oEE($}c_zmV79OLTuq`N(g<0Or(ZxruEUX zQ!^W`3#Ob0`_{)xn0^0-PNwyD)$f}&K04H6Yv2k%Q}zy~DtaH*mj-|0C%RNnHJyu) z;0>JA(`B(V@QUP|xby(jyJKAQFRT`Xz)5nI^oQmJ*!=C?zrG+F8eLPAb=g=6$r zeX=n^1BkV(Nj&XA3dv_7(O;!wFun!e%GK*7Sjyh^_WK?SXIJ(YS0d?QI>uZGZH0ptIoa7W4`Dbc@D( z8SYuhR$HtCmjjA(UuiFkImx6K@7E-7nQ}W%PeRuX)jxn9&-d@&Pu-~e=Qlyb=1U;4 zz-h;&&p6c6a%r2XDS1k{%vC&uZy=QpM(>e(`Qqx)7a%1s3!w$t0ttk~neK-o;PbP5 z0$88zg3FO3ky#;#wZNb^dsa*R|aYi}jWhQwvVz+Doh8H1gM2v+{BLg{_Gk>+)hY`lmUIX`3< zV@4DSCT*4&!Vt|<^qkeg+=?O55PfCr&wi!s6{b0;Z=8=;=SjK_$@d&B4KNhrCH|sF-O^;vRk-SmetC~Rm&hsb}c>e1%rLx`h zRtU0xiXR}$1PA52y}AC=YrkLA?_9u0Nu!`V@q&`S0k++t(HC0t$|pS61O@8 z{s>w^`Kw=oLOXkRHc8t-S4}VZOLw3D7Atr#oPNL%8k8G@SA~MQZ1uB|lcee-G4GbfeN-RcQgcTfdVB;`_N`t0$u}oiwXh=ilne06r3RT>Tk2HD6Vb=sn{B=KcmCI3TpNtF9VpZ_57(p;1eX4_}FpEydDF)BIiKj+EOLBT?Mv z6!L{;rbSna!#j*}=kMJ21J*1V8zUv~3tcOgZMBHIMU+2JH+%FheiBC5uA}O};4PV~ zx9L8*p>)az@zERHRp^JqEQW9EbiX^QubVec0Bp=NPkCI^Eg5RzA79FfK^exhVPC@# z^KrxVm691Ry{A31@~%`}NL#5aEc94}Q)fk66Cy_m7us$rVKof-*>PItozT){j7|RN#iFznqQfubm z5ijUGdBEM}0h^5$^k7AJ4}#(#7l(ct3iGL85dv<_v2vuh-zHXD{(4&LA#@#gmYxAd z8jBak#Vo4?7D2vHqN<61Dg50)Nz^~Ae8IZH_Zo$VGyFwS13e4&5AiobSziFLLVd=^ z0W2j!mvB4k`x69*8rg`^Ns*(OBI=7Jd~-+$`Pdh!H|Q;RE|qM)4|97||-f?4S14e!>-;}eE&vXCcKwJDV2T3(viD>^2a_M#DMjlN4ub3GGTN`OD zu+N1&=x3IQg6D18eikY5Bc<>N35O|w3}lOLGuBrQiyoR7#eq@;KJ4Yx)O77G2wNvB zcYYd|4N2yDdYLGGW^m`#`;lB^zVjf+@M8_6e<{bhuJ4*lRK|a{Svj~b;|lLPnbBZ07Kfr zQ>7qa(m^xbuTgpZbV^h7)nHy)Z^lZjYl6C?wRNZj@cEwN-Y*iVBta&8Gf4})Uzfk) z)!f~+8|J0bU28jRInQoH7n#POLO}n}E{*;eOtmRLcgWbc*ZN^}yg>5V>%AN5gAZ?fm%$sF{x_`c#{SMr=T?okeBO7okGVp7{d#z3~MA zds`2T;P-$C+5ts53$C1Z0IS>F#b_6m=t`Cg4|-&OmlUQlXRmw}309Eo6}fVrEZI+| zF8ZJV5CycXn+d9mshoZkN76cNRPTaCY~xga!~Q+UT*tZr83THl2SCd|xfL zby|~#XoHFh!(Lqmrh-iyd7~kob$oPa=co7_&hDy>hA)SPDloD1aIZr`_5ZxFdd|F< zDB-r`=8ZAs#vUL$W!k-DP%Qrd8w_hbu5e6q9Et%g>Av@OQIO~Ikm0fQpXL8>W9IUZ zxP^;E)tO&2YWrg65Ee?w7;O{IwHDM_PcSTJ?;Kt*BHUs@Fh?er|8QgK_wnoy{4c$g zesXBa$2_{rZ%4A(CfHy!KmG#7dDAu#<{w4@2b*y^u)>xw-|uyGsLGSmx@R>B$VG|v z3Nef?t;{-fb{)=&_fCA8!6HnlOkcC z%pwL7WFaDW+Sx`0nLi|?+3t4c6*x|RH2FHj1w@mLC>A&v(ub*s;`>+eXH?kIXSvR| z9#o=`zR=K4|614|qi9JJmddNgmQICZ;Ch$=x0NCDa!x+r~qASR5r|lUt2x^2B*~rzvzcs zfh--E3O=3#ZNH1aOe+-UhD2Q>7MoODv*RB@B$-UXKnl~tCW9%zBOm3%p2O=h|Mvya z;gJ{#u+nq*06Wcv-4pbi4S9nTo6}-Z0WiP@j0KDG2reJ(vxBf*f?uM7i@M@)Z5PGH zVpxG*>_AXA=NxA5oi#B2$ys-3P{0n;r+{B;g)@xo^>eLf?=~pLzF>zrNn)~St>=el z@Q-)wKd{4B;D2z-KYPmqpa8vJxx{rL?v;NemFEvBM~^ITxO;{|1K1~@LWS~s6)?s9 z+`Y=Bf(+J$fk~TxvM(p-n_TyeC@R2J^T-V z(>|%9ZWCD}bHGHv9J^8na_BJU!!egaSxSziV2{AR8_WSfwuPs&G#Z z%1 zT91Ln$~9zqw8)p9-&=;ksiwvhpWfEm6L&P@S=qF*OUQfb9sw(|zb{@*wGAXEZkJdO zL}C{@K+9{FLPlY+D5_kthsmY@Z4MTeHZQt&t0>Yr(+d+a>+a+4D_AgEHOBNCP!9E) zHInSa&^y|0*PER~^i1Og%U5mmLDbYlyT_X~FIvHkd>pBxb!6$5{9Z7#2{{2Lk=1HCyt@}KB22ga67ET^Gd%nM4YDPzga-+7`6Vd(~}Lf;X&2E zPKv%<5H&8dvHup)`6F11???mX{g=QA7A-+G|G@ynmgG@KTQHCDS@ubq7SA=boj*tJ z%_;O|P_<(zhT%pJLG8nYTURB47erIncSTPq2*=ZJm?(Z2Lh&x2*6Uz?PC+dFY3CDd z%;ywSMe9A;zUTvB_C+!(4%-t#Q6@p$GpXfX+wp>t|72*n%k~1X1e<8~F`qi$war*T zOt53nkn+E_VgDMam3wR}wxN`ZIsQNp`}Z{<(;9P6_>*!S z4{ShVvSuIh|63e0#OLDHL|+4ZzIg(Y7Lx75#zX_A5nADcK4<>s89Xb-Fe~HsTTZC*oZS`&pyu z{?Fi<6x6=i%KSH|(y>1lBl*1(u&yLNUPs)7WZCUJq-(~rj4g}%PaG|H+U>rYs?Oi- zS*>04Y!&s)UlTeB*PQ^GX@|e*($*R3ds~E;s^E4kpK5wuQ7-LL@c9{l~z-l=96Lg-sIXE~-Cn*R_iPZ~U9}30jL*jvh7SNK$ z4ENPL^2y}tLJfWI@^XIcOQvN>#yId3k>UJB`%VUdWE{oNdqur+8;{!;?*JS;bxSZv zC`aMTBl85pi(aqYv^N{a{bWJj50W~f`@GK8_HB1l`XNj77m~ko6+G?tZ)7>^3Q`h2 z`_R>on5w^P!-d6JoNy#EBE&u{Ckl_aW#&FPKua7JBjjF3%CsJMfKJc;@y{3Eq7{)Q zbde?|F{5p!$J)c>+{tWZ_!TwT+&qPTFD|=fm~Jc9lH46<$iYfnh@K3e0p%MW)^J4D zU9#;#14MybVqWguaP@Y&7xEnn^AdlmH4dlG`*l~y@ugwwo18Vw=@3P)Kww_^BQqxJ zGe$x7s3?Ok#_~e}VW~jk*VSYM#gt52v`B5cOMof@u~pY^f!lTCQGa% z;t_O)9rYSCl~@%Y5 zZFqdt>;(gWP%3poNB~6E*WqNA0JgJ7J?j3gl>*mTe@j@!5@oMn_Pm>Su}zeu!P|45O6wJ3vdJH{n--VkB83Yz^oCv9h^BhhZ@*RZ2dpiJnT6? z)xV+|j}6@d13^YhK7>wVb4rl_sT=XX`@9(AWjnHN?HHM|K)M7Nfk95$96_ zGW3*c<`6hCMFdEBTDVX$T1t2^W&E!(i1CcxVmaC=g3(rAGu+trM0n^vusJj+oFw2k zd`8p5SJIRNh#?js8o*YqQTtoz+{mi!>mk4zz63?wf=z&1QItVQGFiZuSY|AUa@i{- z!)PplC4s#R;aGN`8~ikc*zS+K)D?uKQy zotQsr#J~? z)Ps;y;u5(pmAK>))79)Qsfegolk&JrKRe?{Ft+O1u*CSlRV*k@?OX|+WIv`d3s5)M zzb|2+5l=4N$hU8pXJ|0A7-+&?zntln$WZSE5BaxNL|R>8Hw)byJoM~Sp)1(T9z$?jYDpZ(E! z#6Naj_x`oj3DrK~L$*M}P!`-uure6`G8$g#;i~(f*vu|3@>u*{v<4CmQ+}m&&;W&) z;(AoNZ2{!M?sur`&i>O70|d?TXl?5l-ojz)MxCD|6Tv_F^rhj^53u^LpU9sGCSBIC$Je zL(>lLzEKKkBnQL0snjbXSewPs?P;M;Gmt?oRAomYj?)vF4nBzP*|Yv=1UEjjtg>jL zw-^n7!jCNnmJAk|G{NznMX+nwDy;N=p@1B*=_N9=(Z-Db#6k9}JTdd!>b<~zSK&M0 zxsGLl3gdK;<=Hr>`xY1Kz*G#MQVA&@ZCA2F#AVA<3F8`yC>(#gy6$sjhvfL(eT~iC z?Qt?fV}DZpjYso&r<;Q}8jfC5Ee zT6X=vy2?r`cdVCDCey`y(66}G1&wtjEixeuJ-xwWo&N*8KtsRQ{%;X`;A;E7qyEwU zQO5pn?_jsz+W)QNS)cu1YxUP!{jJvOPkyhl^=oF~S7FzuzEoTDHL~H0-FPpk)V7`w zH}w3dufG`aFCd=|fhAC+qq{37F#Y2laf~#i7Fyy(ZpTcwsI*#9{FVa0;Xs4_f+kfb4 zsUFSeM%^0zr}9Q%;zzP~s?Fm`daA^PcH+;gHtvkBNm8y#LV$%45rcp@$*YWnXO{8> zOglAs(1#Pmq~mF%oChN)1ZCnYS(1vf$u@ma7P{&j8tK(Tj$QoUiYVF(miB@rh5hz| z<1|NwF0479)&Gp4m>=W zau7h43^!mHZRObOlzw{SEz#qY-k#A$WK_~B$joYvn95XZ)!Ht>)G$R((O{HSMv;oF zN)f3(LQ3I0x8fA%R)T4r=2m$;GcYB08Ga&NphJ#W0;37Bq6ib$(}V<}10m>yVp3Vh z31BKrBjXfGQYC)DS}M}rjb*q32hXq*CWAUM3!IIC*d>hfzw@eWB!x3mFg7KHxyfFP zJ}w~6E2(9b(T<`MLqW@lQ7)?Pj=Gg|Sh_q?GkJk%FOGDXo&{VyT@~yn*ZfI*Fi4V@ zahX>H1k)$Kq9-D%^is_sKW0@GckfMbnZaoBReZ^yQ}zH6ZV5H9QA&{Vs-k@%XKLBq zhB};sUMa@#X*5rFs50|aw&@W61qV|&lMP}D$enMRjh00j{y;tdijgS8BRFQf6&TNI z@KcdFWK>F-NH(?X>jx@#;Sn-q#2waSuZGppIE{+XrsBALBHjFet z#^84|%#(``uYmcXVx|Al2uv}bRcNnVe+5`HFr4e~8QcWe!;X;E#&adsQ%u6L`w#QP z>kaz=MlB0jsS4tTq*Ap(#ZOF7N^!LWHL0Z(u{#~oBoQ++>Y{p7*NLge40JE`G33~H zWE2(Ft*Vdwu;7j~etIC+UZc|QeYYHY4X46`ACFy^+!ae7=1D5Q>e;ER;m_ZXtBdq1 zuc(U4))E!~0p#MSJ_P@J>%ac}xwrivTU)>Pd*A)>@2&r`DA3e(2q*U!S*rN2h-@Y-D@;Kb}{DmAV(kKJO9QQ=_T4CRI-btMqi< zR_Mt@mXc|jmD`wICO29W4k_MOGsIunqE8G&_1j6s9lCft?6-uu!Gwu@>_PV_5vEGt za(}`kPIDRYR};87rP$Tco(smb&@LoS=J(uqL=%+-y6?y1?)^5ITC7$H168&Z^2Xs3 z6|Cm84TUKeD?lQw>v&#LHEuMV;t)#4MG6VxB;v)zGs=l+3-kc8CKh;u0+-A^}=3f*or7O|qmDKJ@U6u^*c86RSNW-Q?bq2O14g{j!K;#ks3Kh+J4kTCtjg-N+ zrLjg)Wk+$SJu4_7wUP!~mqo=o9pQ zQnFzbDIlTi0%Zwm6o)q##QBf_@J4h{#M+UG+=^)=3+VgC1(%kcvdDhid{hsRPLKXB=!O>Hv%-nw$!R`1;}?~kaQ_KNtY1@Tzp&B z=*64ww=E!!!$8Ib#!zh{P0Ot=7yT{x*Wh{ZnN z+pQq`@}op-8q#1EB89xP2v3M0iWFHyo?6678wezySW}-BD_@A+>_zc#%LU3RNwEjc zRNmB*ua`*0TP^uqDx+3%lu}Mm%xZeEIN52?Os&t;Nl2-T59=!u5p)elB;?t9*;Esi zj%wN}rvA=G7c?qBCC?^Wh)@vSUlr}nDfw0jCs+v25>3hg0{afOAx|WzAyo1@J|(PZ zIukI6h3OTE#P_)LjK;3Z8V)Yqhzm)Gi~%f>+vJ;WHCG#k7w zt3=dk=t04up(E2sqmO|LeYKwAgl?sycMylzWr?L1<73&OPy|_-%$gaADr%-q|4N+t z)!e<%-aIjAOI{=w^Q98lGznmq^el?6v-CpRx~3s|1%7}oL*+MDAC!B`_Of8h0!@IH zS3~K=ZEH?jw-oMm37;}DOn(yX79DSwy`N9sc{Okl^N92VvsFH!=;o_P@0L)f6#%Rc zbqT(oR8Of}5+%_tC}@^hjW%*^DuBHNQUvX3$<){A*P7pR$5u5??sk{O%e=+}Nj<5l ziRNuI&yH)6%Wfbr79g9m%&m0R?gEd2HqSFB5NWhr+U%JR0w{LL(1o;Mlw#~+;}0lt zLR(7~@f~$(yLXsR!A*qAD`iP8q~RNL)_L)MJT4JO*M7Ty?@MxV5TW0buuS`)p7vJb z$=qs~r0+@oQ@~p-@O~t{)~c@|N=!n;8B7Q}s$IR5CLyHI=ctfb$B#O4vv54dHWuqS zQcwr-P%Bp_CqU2<N^-Xe+8!G4$TDn2z{A1S1wnXPLw9Oo;aGzWOkJ; zN&^&zC%!aW6$AAGXmdb(5FjcgP2Wa4a0ampN7%)@z!Nwz@Ftfv>a^0XwT)P7mrd7L z={mYExrDwAg8(_#E!k`i*<_^P61zdg2`T|f3SrGe;aAFirm|Ie`$BvGZ63;uh{lIT zoN-?%bqTx`+!g!cJZ{UIn`)jvMde$`J2(dp9*+go<~r@NnMf)gtUU*cpanJznK9B+ zmp`0<876L-ex(7#U`q-`fKQ<>wp(rW0Z29dPw`}`YH{!`GGf}czz5~eq1dm~3a#2WrSL-@(w;nZcS>v3#_R-1djU2CpT0bFAkWq>we?GF z{ZgZ+^-KMS`lYsBa;=wK>m^r=(bh|@@M-;R{)xxF*54-iw1oLo3A6RLY5i@IMOuHG z*54*QeXYMu{Ivcy`KR@_Y5i?lf1C8PLVugq(W7o;)>>;FJzBD99X(n{kJiy6dRjK~WY|pW z=+QcQG_CyLjvh4$Ps{Ru+EYk5+fk|hc22~v1u}l7pX&Ud{Xzd|FO&bXf6#C9f3D@p zWTg}wWJ2hC2+sU5g^bfs-gv+R4!QGP0v)#Fk_lnvThD{^)(ZSd=N8TH z2zA)7)6)a%^uQFk0ivBA;K&Q4+|vW&(3c?!J3TYjjt8+(eu?VJ_3C^55rB}o4aU_` z)pXxc_KaSGnsJ%CyE`j6?2ckHuA0ftEH&YSHi_~-;c3SIwZX!Y8$b>J?+*?Sv;6;P zzvcgHd7eE388-Or8937he){fzGzTYVJ11`dC&Xp)K0lzuMvNh5iSqx+ZgBw6N10n* z=341Id)7(*Hms>9>8fQNPv&X1{>=`?cK(E8mG~PmiwDiPLCyL0z zM5@H4nfY!jmZ^!O-L>03gHJ?V&g2`Qa zji?u;THm0#teCxfOk6Z)VzGBYSFM%@nL#yqYD{&m$nf@O5PK+wB4?{t%VT0gEtE3nnEC(R0P% zB(u}?3fWPvW9c#wz*Krp$`twbd=o z)F$^hi!{X%&)oot+*!Ztzw0( zY;mne5K%p?Kn_Xll&cd%5-Yq;3R(U6Z{hR5ytKpaA{v0|^Z#J5d$6B5|L^w?_uKRT zI-VuY{|TFppCis;d_7B-V~TDB$I$O4e8>s`Stw14-DQ zP{de61eww$$T6FbE>`g=(Lz+JK@lS?KMuhbcl_PGJ1%0UE8)T|*4DjuU4DOjk_@rg zXjRb>v=`tv_uubThasO5Y62E7g2Jlmt3&0<<(sAmw5hWI{_anDFu*a{FNC_1nybUw z@x|E{qBCrxhPZ&-Q;&bSN3*vy|L?n$ySe*uN z0f}^PQFKQ7&EyU%1Fq+Ar6I@uWM{T3i_{=DSD_58wUwJs2b0Ff#w$byQI)ozCI}Q} zV9(n7x79fYcW^FauuYMDTT=QCDr-;dbK@u+`W(Aafjw)_>MJ+H^od$Dqp@tl#cQuz z2B4qtlK|aMU%qq!h>TpVjuf&RiJ`;L8^< zLed>ZwT%5qqx&%0nNg&y!3aB`)Bv1?7eXh)Jy6}3IKuI!)qEUf>Pbl2SW>zjJ}uf4(kAfx}? zJ=))E^}p+Qn(2Qfo4=k?5>BRy^C(6W1``Tpru~qKf7Lx)02!0!@Fs`8biETz0-e@C zma{sY4=U1+yr`T(7b~yBQ_(@c4~DOE*CufxrY&nM(Xopx*<^H`B)|PEZ;=AXrxquc zfvVr{f-XZgMLhcB9D1k=x-!I@tfGqc`u%RaKj$DEJQRe31t1(m5avM9OI1x0ikfG6 zNRq>fuG$J_B#(ma^rg0t2`-J@u;~y4kV0jB)dShyKo97xpa)D%3%nHoka424_A6vM zi~*H0$1Ab$aNDp&xC&RGwDJ6GilN9}$i_o5Qs8fH%{arv48AyC87ZB@E8eiXK zQ6(?l|039z7xj58BrhkS?-bNG5~FpATm%`i&e#V9N9z9Jxr9;Ubod%{|I5EPzPkGL z{pFi0aC&+9{&EO@BcWQ40VOl+ATTE(jp8H4>o>E=RWujXdAGdN*IJZJz3l#%53)}j zn-$HF58#-~05n3lg08E)Z~<{0U{fSxRzjBB=MH{~EU%huAFTS2ICAqR`!$lDi%!JDiem zJ}bw(~3=d{2>I?{11+)Qjdtm)A4HmKfr{GL^KwM503RuDZQ9B1PG5obDl#)3jn~E(3E7Ujr-Z(=wlu zg#*GcCnd$r$G8HAlT0b`CUK-q>T`+>8MJMJYQaEcjKA_jcwJJX)aoGdHy&piODcQD zp!+Yj^Dj1(rf;cYS-i+$m#d9rOQxBMicM5{nz-H&`xa4fCJ7=M^Ocl_Wz01Owj2~t zB%>Y-Ww`Y;T~OpZh+c%Qt7I&zXWRn z1dqX1(sDG>%(k45ELw&cNK+kuNoLKIjvW~|Qedo({*gFDLLMbGWKtY9dvyho=T^qb zNj-BYtRe3LcDd?!IRD3sfjiv%8kqPlopm-!2-$M3h=sSs3&>Z3#egkBfggG! zM7K?lU|r1uXFSTBCL_ALGJY2)Iw~LXIhaGw1r8EiSO)$x>dq*eF`)uX9iT0%>U<** zm(+7!>&S%Sv$=#ci#rl0h+nP%%}q{pE=t_K4`0{ZgcsSM6<&xF3bxSSsm6<}mA3Px z%1w(@2Z@1yw3R#viluhOKvzv=H`j;p{3!$= zWy!8lWg5gjPq(%me;d05^27b?chj9D)qIDa1&I~xl+~xY3uRKksSpFSWq{xVLS($2 z2S_E=5%e5o^J>5t%x(0AZl$aC@H&#sS4$AuR)K}gw+mayCu(yAg72M0rmp8I(5?`a&xaEKPFH>$g`jOf_;k zqJqj=u5(SvEP3icrxBB^-nm5MIILH)w?x7&I6*ra$ve-Y3GF4Dsh?cY_B++|rOGiM zpY;+gm1yG(pH2+C`aDPpywWxT4U$xdH zh0ntBzxLH#q5gj`$jSe^hldBP{J)N80sVhMmS-IL4y2B9_-3W-Kog58u6RJ+2|JQ; z%Ke%3UNl9nXR)aw&x$JYyRMV(PhK$lww9~Rb-EGM^5qq4aeAY9x`sBoE!OC1=WkA= zW?E(%3tTd{Wcn17!87UeF0cLB%ubi6!)?lG{=Vp46jd$%-1KK*{;z0e5%yoJ|2f<{ z$nyV#*8Xoj&jS4a^kX16l#posWXdBM8@iNDC3#FQE}~tbWnIZljQA-^zMmmVv4g;8 zA-4H8INXzeV(%&(kMT#)?d4^91>}j$52_;uOE3k@#_Aa|WooX|HmFjPk=6}BZz%ao z&)&a;?3^5k`r9ZXKFgHP&_QT68hN|cqFFqz%Eb2c`%V5*VG$UcF4 z94oja-lZA6Ot7t>t;V@1m^(-sIx!z3TIpq65OW0@;XQeTeC}(DfX4KifHOjeY9+mO zMzE&dE(~Cn3RA7AeitFO>JxG;5h^Vu^6mLX(qj2hT2W&>yaZvIs8FICt%{DzX}dgC zQkD5d2eUEMlP%o%;Btxrw-{Q6B<$B8Onu+i624qIL# zh1wJj72FGOo3gD=I&x{7=>}7Ti3~yH^px2x%Gxd~lMKhTy%6=RLH=7< z{#Wh@E4=?5?DzMx_Mdx$ejERJEzbh-e{}t;NI-9!75ky3ye@l_tIbB9< zsd6I`{6nplF6esm=+CMP-b_UPlh#%%o+GOjO=Bjj((DkEs$ z-a+cb7x0OMnE%H9nA|Tf$}=;5)w9HEZbFh?JTWF!9)U1Qvxdju4(aTkXoe_svp8jf zvnQkDJoJ5bnnrUXOg-CA-C9R`XaRy!O~20WFIv>e*IV$k*wZf2S-Ow+cWFtLyLpc9 z)>M5zDPtL!t>TS4FZ`7jO#&KYzzn}w6v*20Z&CF44hDg7 z6i8TJ3RqqP>^taVRjua{(B;OHwad*kQNP+ECr&~EMVw+ZLxQ%XpQ1|Q*IT-j#BAHOJ=kDg<5avFQAg4hx(0p&b?KKnO^)kiUqwC$-YoC`65mcdN)NBDT{A|W6WgYK7q=LwUBAKU@@o^7D+^b zp7g2xpQ^F{m2NG|mW-#Lu`4fNORoU3CPN{HvA^92!(9vfid`23*uDj0Oc__czlbBM zjRN)hbW~#sR5d4{CvA*kekov9U-U>Pnl>Fkq3;kcLY!(wO(*Dq?+I}c^wUlKIz`fJ zlM``t1Z?h&h`OI^&~&W9C=hfq^PvX!|Wo7ktY~tyj+<9+Mp-BRx9C`wx4o=MoShZ zSwK>B5Gb8OT_HrTvg1a2jYde-1q%ngXMsz(G~9V&wPetxM|=!?bZ1sl9;15t^s;9G zvXyQ}58;LS@FK-K6hLvuVr(&ZwcCGw+le;D=MiMX*Pz=qo9A=0HZ!kdR*((8AAK-I zO~aatCCU%_;Qwdu>$}^wl|KLHr@+d&Ppn*vw(Q1z9^aGQb)59pr)lD~o#fnYdMb#7 zB-9kZ0-zkV$$s`dcq73#QPhj=JlFiAbwm&t%nX2;9|i;8bU!U@biiuXPufH&uA_;- z5%?Mw6;XPV#Go^i%eS@FpHzae8b~zq?fRjt!a4KkRP35?CVb3&?OybgR|jj1RhRy& zB8#-Ou_{t7TxSOMr_SH_rw#}y(mAfo^p-B>`u!);vE9?HE4DPZbpsT|Mw z(^|f<#0tW{5-jbBxypZ6t`VnEJb|F!?dpHNO{R$90Q9?HSKWPIEcM0YQTeS?H*QsV z9$;LWgX=y(WAyn_Z`7Yg(HkrjI@S5~>7&C7(D~mT@I@MJTrlu_*~&A|OZi@g6IqGe zfa8;7G>TB=(5s$wN*$MsdYep3=u1 z$Nj%MdD`cHadQ-0X=MQF%unU~ZL}qj1+s%DX?iZTDPDoaI|Y_a22*G%bMMRxMWX_J zoyz^(%U(HiOA*aANdZcqx%YPETYRzjqlH@}YOXGSWnS%~Kh!o*u1L24E88{PEu#-T ze(HScxOo;_yQ1k^ZOBwpR@^zN*~8K+K*RihaC}gT|M>3t;p6;&7f-AC zpM;2|XrcydQ)t$z$f7{XibNqGpDCnbDbS$AvT>2+CJHlnY5#7P0VLVXC*sJyag)ka z-5%zCvg^-M2<2aJ8g;9`en5FeT91DX18(&E$H74<|MT@o1Xn~$$6os;nc&PL1trqs%cj3 zUDMZO_5m_`Qz!ZyQzpz!uDXJ+Utc`gy-9{B5Rqbz1sX{Ife z;&q&QdKDWru@1XuXoiuF#79J6X2K!p2t558e`;__fC;dd5kFbHBa@{7PY`$kcI`$| zMoeBqoEIrK1joP%*!}ceW70H-ip549oNJc?eHy`~Ma)g2}jz3($!F9+dFk z!{?9pf8WW|!v6oLB@f_`Cc<3!!e|t!Q&@1k$m~y*#+1K?;|1xzFDVs^X8X$8T+9@b z5bUPNM8^glcYu@7yK8ca7PEJM(R;x^U=o5(kA3$V$d-EKR@Un7v}%x-#?!JyPK!Q{BI(G5ID19&obj> zR|Y|*uPH2D@wH5>RHjgAg>~SNP5hb$bJ-yNyvMLy2uS{Pi7BVUKC;f*6zdF`*bf^6 zpHiK|AG~L%)$Q6Sv#Q8+KMhRJTC#`cAkV&~OtRGnue8^9qWfFBMlQ=-#|JGOeW~zh zvKma4rDIjO`b-GmQWfd4g&M-)dyd!zLnHioscLS}+}9r!YO)c7ZY*Ku8)fGg3T@`Y z+LT#AnKm4r6wm#r479~FWNMGKYhN0M=%keSlR~A)K3)W`+C)W`x?39(S)sh0Cc-it zto*JzzA@W?X`TaAj)S;#U!JYEB81Y7NvsS>T#$hw`HUkB+1xoGpfPQgl>v_@!a{D8 z6;AvuoZK3Rip?CdV7j`8X`_+s9KhyhBsv;X3fjyA{vfrNCMc zsjXnr0zdfC=XRn&=EYG~CC>bt$1u;wXFdOK3K@psun7um@c+I)J}l;ce17!&(f_-X zXBGeNXDRkqFE{S}S#^3azMt)At>>psKd;_oj}9N|EzNL_czCCarvP?xwUrCPT*SFqkSHagOiBHplfoTDJ$8%3n6 zD61UAEh$`;hnx?LbZ=P8(a=noqamaSm-QZLd~G6 z*S?DKODJLX)fU)PMbl!A{ks4;%dCJK!*Vug3@k(U3Sf?{wxYgOfSe_(*)WV_JJCY! zD?&JRwX6x?*lHg*eB(~1ZN^y6sM{iVv&G?->%uzY%w3V%46K^(HVn+k@!LYOnVJ1f zN;MvjM@J?6=ljR=A9wPsg#Spfzk2x}42}P> zc@W6x)WZRR+}_qBL7MC}u^_jpEdfGh_O=6r%=a4sgz|OO078ploO~5EFis<=ROnPa zsPxbPp;u7AA>_sHL-X@p0ZLcMp7SU}N%~!5O{a;Nyv}sRsVCKo8W>9b{JLJv+TbNF z6%D@V7SJz^LAWG5NLb8Fb^ivinEt>WWb3q=*3%5eNzE#Bxj@VIF}cEu_Mk91j>Hm> zTsAE=fpMnf5=yVj_c#*0G^O+g5jaE0Blfnev9USqO&MRqjkt|V(7g&KV5@KA!))lV>ITZ+`WE-fSND%iSb#|FECx z$7rv|Xs@z|uSWF00jPD~v0k~E z^Fg6X_Z;b^74R|6>wd7N#x-wqNYkbk{$`q2@vu~--!{giy0EmgSH+hq>sS|EQk6b% zY-wo_quzAeCWNt_;k7n$p~uxX9?w;6Mt^hCTpl7!XTygb$F=IS7XA}cF2)Qsfj|xM zU;X0}{&U=aJpXq$&no!Og%9t;wc(NqryWo6dGgq*gv0}NF&xD`6&RIz3n zn2MSzA)?f~Ov}6OS97g$wzt3X4CrWR!||0CL>E=JRtc>5`NifQ(UfwrO3v21`Q_sE zer?6r*ied@G8K7v#c;?GWGgLnrI<-Ck0VqxQIy95X14_t7Aogb64)-hu()Rr320c& zd=627LzLceha_QgMKqTM89EoOd1YlwIP&ccN4cEbH)!6Yqn>@YXkDwlG+$*FH~0Qq zYV{4gm>8<<5>}YRYZsNpJ; zpzV-|=K7q4PBW_Zn%@=*T5O~_V7A&*wu#Jli!ya+sm74H`R*+6r)%42Tk(dWDyNGr zHD)!?YC%P7B3G`k9yWYs!H$wi*ir;FX5|*akj=UWOZR9ivqx6+eYzpqJcB4(xjZx% z=q+%^SX?q0^LIK`eN-+nVSFE+6 zstwO~Zfo)CQ(mQS`wgp0ZJ!!crbZ>=!Z3IBVNtpJ!H?I%e;Eq#5*I-<#Qz;19UK(n z{|+ASf4rN=TLl2VlycwB@n5Y{4+i^Hh*evuWn&GU~h?;%fYhxv*i%k+JL)U zB{yi!{aBSPRHUw)fDHeM!Vie?8i+1ene&N1)8BOTT}bs9wvZMkn}gjf_)T4jROm;i zDu|-n_*MA>^hagaEHqdLx7XU$%fx{d!Q$#DuyT-Kh`9?swqjKZAvQC~ExI&&a#X(O z=rj?N_VP3;+)QJ_(M2mV9|W53++3J(Xq`yH9JlKc)U@xCe%rLM`|^;T6Mt6Fwgs_s zZpnIVJ3j^2HrzT+&TakM2d(3@AxZ&w8jN-SVU)A`OTaI#V&)ErFk4dm= zYzFW@Ux5C1-K8Z_X?Cok|CRMQV3)h{*hxLVeC@Wdxw?8S?9|v^vH^1~=!$Dck=n)P z2OiZm?~Yih-VKBCzWt|f{aMTZcbB>aC_sb%|K0IX(f>a_JbwP@|KG*4iu-TeVOd5w z`a@Lq^|kG;%Bz8WM#<>lKu#{ZMUyYR^jH1Vsq^*IUqXbz5=-*1`s=oz3pW+$Zv}5M% z)!-?aSy79pRJY5)7!kyvK;i!K$1Ke)@J;ROVy16~m=FqB-9&xd!xDCVwp8gGqx}>e z%Q;NV+QTs!m)wO+hy7I0wSJMgBfsK$>E+DZRLks@^9x6NbDwJa(kWh1&^RQg^PXEa zvxc2N9|z6d4w{0iQK}vE^4+sV)djdt{~RD$_Api+$jEOqDDz{dh*_?BQF}Jx>JC?G zliGI7!KgYN7kBbIne)@NhcKOA%DdgO(mwZ-8B9-%%Hd#^vRsid5@!ixh-9E*r&9!O zAPLi%!^{{3{KU3Y$2IlQHGNHHA0TssBx}gXd>C+@xyykrqE-9k6Zu4JG~(a*CsN_* z=*BhWQgVg^ezzvjD~|x^>Yx6NKP^vd=>^R&48hZ0Pnt#2-Fopv7B{niqym!AmtI(= z8kzK+-z)=5oOl?1&2sj?KS9wHj|pXHg*F=O|AXg;#ruB`zCZZ>(f+@SX9rwBA!jNs zbz6&AE;|Ga6C8zd7LQ?Y1ILK_-VV5)U=DZ^$CL>U_yk3fig^K3D1r$l<2}Go1O=X% zWi$I7lF-`$1dVl+^sa^`Of)L^A6*~3BhegCqP~} z5_~wj0wHGH^T$~1tN&{9J%9Ko+gJa!KTO8^@;~;Ud`9-OiiR+_Nn+*uaPOJVZ)5M7 zKZG~lGha+&@7e$JcEAV7Fiki(fAyMse$43aC=i~HLj?DAIYxi?{232ui1xoBRARaD zfBE|K)z7c}X}D4wi^u=*!T0^|i{t;`yT|-Lck=9jmsk)u#db8j!9ymkmNTgUo_7j< z`4L6a{LjDcPK1d0$^O1v7kob14{5;n1&wjQ_aj~OH={y3vP@Uu-(yCTSWYQgtw2P_ zH~>Q=ZjqdD3?ceE-}82M!1bGdyt?$f!C)XQYcE7GA|WCHM#g%VYwL-rPp$I?N<9I6 z|Fi$uM%_@31!eOSULAqgU92aVeCzjfYN%FBx`~zTqgN~`=ca^bS$LW(Y9Yr=h`#^ogYyYQSgzn zDC}q=c6Puy5sZe3+J^8vHA!njBxZDmL&O2JJhxDu>{pB!2e%U(Oh5pMG=UWSuMRrQ zP())u(5;aNNTgw{wV@>cu3aR+6cRW_%=f&PIdSG1P&587KP5v1eWB#2q?`w)AeHlf+*nvF{3&c3@P`UV}ZEm^?+=T5hM@?eZT)- zfA@O2f+PRXKlr=;M*4+F)*-owz=%c>y_NkIa2O%A<*IiTEcf6H;z+$S&XUo7!&VhC z63`eaXDY;_5mJUOM}c-)WV1WqbTq;Q3oHr!BB_!q9}W=_c!UuH?(+q_LOfttc~)TQ z=L>lKIYxo>u+B-Gh~^KxFTKT2)B8<*_Qm@G24+4?NDROiaEV012!KHT z0OUKv)VcNH7PL- zEmKNdiD_sl*_VG4fvYG>NeSpQrUVg@5|rU8gS@KLlA@VX;>z|&Q3L7>#&C$EC5KeS zU|DI5E&o)F#^wRH{!rRP1Fp0KhtIy8zRfZ?D0bIKU(S#MGU@j_)3M!=-PLPM5Men- z+9Nx71ndsI(*nR;`RyEut}pe(ALyk37{vg!bOwx)-|5iLR_#F*oiL6WjTu%bXj)XQ zO16d-3n)jLOLn+r~maTNty@My`zHaD4|9nd~iMjgKW=GtN6g0l6o%=o7TjH(OUosPy{OULH*7JjrB0p z6a%PSc|Y@2iVYN_KI{u8<|F;7-vxQs#*D`EDI7PuGIxayto$^Mk-LHvR(@Q~#Y!gn zf0dS`Tvw1*olz1+K$TPoU|9l2cT|x}N<}AidThXwm>}I2=-30*PX>E{BLsdqx1asG zyQ9i5N<}vfI_82UDs`X_DmoA+QKZi#@IhqB3tdkKOKtD_d-d-QyBTlti9rTc9WPO}diQN| zmF%z>PoY-6`A$~N5ZX6shj!e@l6`lx&BmT~(9C@-?%#|-kv+KqX&mbz3~mq!2Nfa! z|1{xF0NR0RR34bG03vc=>b)Ad>{C6APcP0>OSzrc?WpD2S+Rj=ly=hJE~pAP8$#AG zld){_7fYI*7G>Ln3LK#Pc85m5d`$O;5gqRz9`yff|KR)m{(tVn826m7c@L9bzt=zB zcc%3@5%6=mtq>p%s+em1iwh_w*Yg++oDNf2nK(u^jZ&`}q9;;x`w zvRO_K#0g$b&qYdU4eWFvOT3#Q#&DRgs!1pEaUXe<@{A#E@YuaDS!@peNMIxd7Xlc^ zinfI?>T(pQ|Hd#tx&4OID5AIKh^3B;P0N|Il2ms(L<Ym93Is59l%godwP-O z0!ERVf}e7S*5xQrqAl%R>aSE&ag^}YY{^9<(|DhY$L5-2@*DKJT0V;>mNh4oZ_vML z`M9G&2iCjuqT_xQ=R*^PzgRZblq#hPudt?yc{0r8C)cm5WTehBcc%07PZtYOVA$*2 z_rLD$*b2GH#!&%_Z9@A>?7KnpbR#EapE+)EgIa9Rt;N1Ho3L_U?~_N1dg!n(+XB!= z{h)$<=_w(~07HUdG(#$O9FG8u7=qy(1Zw37ebo z+x<@Yx5G{sbRtB?V$uQq1JL1uQ8LaFRLS|@G?V)~Q{p|KzuyD;TV?C%vZvN<)cy-i z&u&#|pOPpay+zxP2S`>G?czNN>m!-6t6Mw^Slyq`sP zbCH|(v+CuPS&PIEBFJ5M-o@vQ*nomoGHs2enZ^Yo0ji!TodOkGDi_(?Uw3z$vNhW( zN`tOrotAb}w%h}@+BRfvJz&Gi)k6_SX;M8BBBoVQ{>9TH(&{j)oD3l*+3rtnUpT2z zMSUbNzY3)1eADyAfKO-=g+P;_6ZP0;_EM)}#LyoJA|jgGkAs}kF?ceNtETiujMlyv zxEU?l?rzb>6nzPJVT&rav8r9&t2k+^SM`?(jzWOQ3^Pim`T#A%>NJ8f&~-=z)FwmA za4@a1RcG$oEb`@U6wd6XaJh2bnLfh8Z7MBjZ4#YBptUYE7%sMV=2z87&;FR-Vl8%~ za9UiOs3MySMvP8VaA*MN@OKmlBM>aO&OZ;uq*XU=atTcIzuFjImEHIW&1EOvVD26n z;9!Iq7fu%>#p>V=G>7m*(^bk$S>q2XV_BKu5g?TGY-zU}Wuy8A&HMSzDO0+tduG=9 zke&TsA;kaw!_^+}+J4v13P&IA-*UL`_8-vWPAm;6Io!?XC6df+Q|WSc*;2`&e6mg| znt@r(_RQ9=^y|}<5qW?9oPYpwg|*GI=*B(g=%Efq9A_~R6MAcxO=l_f!IgAoKDeo+ ze%;-%=~h%fyP!dS`8-F1D*4$W^~u4&xd6?c zU^!Mj$frqug%nHNY<;SO!mc{iMc66{{VZ#F^|FxPeRZ*xtusSsFB^3WQk@R6v6Dtp z*a4&=GvzA{k&d00^e6}p3lky40VO8G(wrum0SQOIP+`0#y921%w59o|Nq)IZQar_! zTgp$}q`WEVRmx9gg}P_yNg5uI?5ZwY9kiC6bLH+v1Xz}xb4TR;3edUkCLNvtQ_tK}SxZA}~K`|d8BbbbvahN4Am$hJ#Mj&Ac zr+qEI-qq?`!xf*=D8giX4aaijH_QTXNE2bw>X;Hhz_FU-)AKxo_UC)NogHu$qX5GQ zV8uZmOwbf^=Ome|DobC)%$b%G4*)Tb(TS`Old%Utn2GDe9)z*Qo%E#oToUFWqUsEg z2LSpEr*VW%K&Za*G4(tr6H`M|muX3*$l1v$w`P;EX`hTS`RsWDj+?60^$0k2tLgjw zW53@E(GWw@>mT&k@sa1nNfha$*iDrxW{>6o>gq4j57S!{6rla|G`fXz{uJO*Mu+6t zQ*}s4Jl)gxA8;g8@$=DJDlQn}h=`|}9up{*5d;~7a}NM4kj`hjm{OaLHJSr%i6*)d zKt~z*_K?XQ;WHyC$?q_3Tjx_wG?m>&s{sceW&yq#1nU5(qxCI8Cn%Z}uKjr4bbBYxmY!rKA5 z>xLqef@=pj`^DMFGFOT;^2y%Aq00kjx7l}@Ao=KdW=~vgcQ@(gKPQyy)V&#j0(_uR zGDZ1~^F44rvbxvlb@qVU%v+VUtkW@RtwPKtog9R7$pKR&}({cXHy;eBA*KV+#z}0g3~P=pD7wx**CeF7a7+b!?q>czpzutUX z$ZVaJFC}#cxWw)NkXn_pkiDeoCp1r4DS4?nED1~GO!d*6L|3`F0Y`*ml@?WvMP*^S z$?Y&nH#_$Lr&9z3o+2(QxP?Rw%CY=f9}-}CUq7atW0gi?uA4Ps(3tTeH@KfkcPE?4 z_YJSq@4a5HI+LN{%IawhfjLT{S11_A%YUjx_%4QjBq&XXm`UTWznpjqWB7jo!{hG| z3DV2|zkc;{oetwD>#^_qCSf%qvlGu+k~X#E#p%`6$9I>nyv)d)*^S>5&$T@@E7jFy zqx_o%>~bS*)0E?NQJ%Fo{5>%_$ld1#%@?+K8ciSv!kYp1_TBaCD_?xp^He|yrx9A`s*!_(yS;4WpufU(BTL>l(s;$(+82)~ z*_@B$j5MMwkSizU>3)x1?sNtXIcKR%83^gA3`U3vo)eqNt7^_`0BQe%>D=5Oppvc^ zMD?Q6*(-4KMW>^5{%N7;l3Cr04Lq?!{Wn=fA=7((wt6oecj$9WnE*~TFP`k)BtsO4 zNPTQ?f9PfBQtZK=OdCLtg5NnMlDrq4zkE68`Hmib?Z^oZa&-J1=!IRciUs|ZSkQM_ z(BBLT`deT@zsLfc2KT*9_+o-FDd_tL{(1uRX?Mk_=U@V5z(&hwu&;P$axZM?En?J(C-}y9dMsb1;R! zQ|9Jr(nqPd?65ImvU98xNXCfE^)bRa53hWmWw|w@Ot}bx%4vbJn5Ks^vh=be1VzGR zRbi-8&+4uoX&Xw_B1fVzdR16Y+LY-5z=ES_B;6{=(gRkOWv}18@jdU^vyUp~(GY%% z7y{VjB1Y!^kRlWQ*RyAy*8>+e{@nb`H9IhO`>RgaiYDw2}biJMjT^K~AU>(q&X0VUDA>w{l@L<}uXdTo0gqWSCexaigR-mIQ z7SbS*o{f^);;}P3{B3sh+Z2zri1&BWKYIyBy#R8=yJnP_S7fY(XZs*1m>o%FdC$=( zi9m$O4cEG0Tb3>6^1X{hP=;Z|_Zi|enxUQ~?oj>rs25W%dKn>F&ihV%%k-q8xJvV( zOQ4?YgKDogJM0N+{yf@OtJxbIAR;}Ln`X2y;E6(dPigYQzV08b?^W&33Uc zRrub&Oa*i(pc>?oO1rw5QUD5VB}jgp?C;;+-uh5c=~Fh|k8~-%|K|Mc_1ml0y+gTd zzb6smJX;`#bG1#U-&--|O{o}j$*Wlyn<>l$y>+{!F;N2xSd-wL$`Stm`w^!iZ z58(9ezrauDZ(r>Jgf)=&Iac{3CK?e0FDFzO?w(J literal 0 HcmV?d00001 diff --git a/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml b/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml index 704d11a08..7c108260f 100644 --- a/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml +++ b/config/crd/bases/compute.functionmesh.io_functionmeshes.yaml @@ -2689,22 +2689,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -5481,22 +5465,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -8205,22 +8173,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_functions.yaml b/config/crd/bases/compute.functionmesh.io_functions.yaml index a9d8b0f00..16aac054b 100644 --- a/config/crd/bases/compute.functionmesh.io_functions.yaml +++ b/config/crd/bases/compute.functionmesh.io_functions.yaml @@ -2686,22 +2686,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_sinks.yaml b/config/crd/bases/compute.functionmesh.io_sinks.yaml index cd302f13a..2264a9372 100644 --- a/config/crd/bases/compute.functionmesh.io_sinks.yaml +++ b/config/crd/bases/compute.functionmesh.io_sinks.yaml @@ -2620,22 +2620,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: diff --git a/config/crd/bases/compute.functionmesh.io_sources.yaml b/config/crd/bases/compute.functionmesh.io_sources.yaml index 6549cf856..c0e7ac33b 100644 --- a/config/crd/bases/compute.functionmesh.io_sources.yaml +++ b/config/crd/bases/compute.functionmesh.io_sources.yaml @@ -2597,22 +2597,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: From 941ddb6736922b63b9c86ea3fe0e094ab7baa8dd Mon Sep 17 00:00:00 2001 From: jiangpengcheng Date: Tue, 20 Sep 2022 01:39:42 +0000 Subject: [PATCH 3/6] Fix nil pointer error --- charts/function-mesh-operator/Chart.lock | 9 --------- controllers/spec/common.go | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 charts/function-mesh-operator/Chart.lock diff --git a/charts/function-mesh-operator/Chart.lock b/charts/function-mesh-operator/Chart.lock deleted file mode 100644 index 9ef725cbf..000000000 --- a/charts/function-mesh-operator/Chart.lock +++ /dev/null @@ -1,9 +0,0 @@ -dependencies: -- name: admission-webhook - repository: "" - version: 0.2.4 -- name: vertical-pod-autoscaler - repository: https://cowboysysop.github.io/charts/ - version: 5.2.0 -digest: sha256:42514216947cd89a08257b04c779cbcf92c998a466cc3c01ef80af298f39c434 -generated: "2022-09-15T08:14:16.47559339Z" diff --git a/controllers/spec/common.go b/controllers/spec/common.go index 22f4e640f..7ea6c544c 100644 --- a/controllers/spec/common.go +++ b/controllers/spec/common.go @@ -240,7 +240,7 @@ func MakeStatefulSet(objectMeta *metav1.ObjectMeta, replicas *int32, downloaderI var podVolumes = volumes // there must be a download path specified, we need to create an init container and emptyDir volume if len(volumeMounts) > 0 { - if pulsar.AuthConfig.OAuth2Config != nil { + if pulsar.AuthConfig != nil && pulsar.AuthConfig.OAuth2Config != nil { volumeMounts = append(volumeMounts, generateVolumeMountFromOAuth2Config(pulsar.AuthConfig.OAuth2Config)) } From 064ff2dc8e603f75608b9e9a3c5e278fff2437de Mon Sep 17 00:00:00 2001 From: jiangpengcheng Date: Tue, 20 Sep 2022 03:06:33 +0000 Subject: [PATCH 4/6] Fix error --- .../charts/vertical-pod-autoscaler-5.2.0.tgz | Bin 33941 -> 0 bytes controllers/spec/common.go | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 charts/function-mesh-operator/charts/vertical-pod-autoscaler-5.2.0.tgz diff --git a/charts/function-mesh-operator/charts/vertical-pod-autoscaler-5.2.0.tgz b/charts/function-mesh-operator/charts/vertical-pod-autoscaler-5.2.0.tgz deleted file mode 100644 index 8600440c481d69183f0acb7b77c7cabd72e0a4af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33941 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 diff --git a/controllers/spec/common.go b/controllers/spec/common.go index 7ea6c544c..fb847206f 100644 --- a/controllers/spec/common.go +++ b/controllers/spec/common.go @@ -51,7 +51,7 @@ const ( PulsarctlExecutableFile = "/usr/local/bin/pulsarctl" DownloaderName = "downloader" DownloaderVolume = "downloader-volume" - DownloaderImage = DefaultRunnerPrefix + "/pulsarctl:2.9.2.24" + DownloaderImage = DefaultRunnerPrefix + "pulsarctl:2.9.2.24" DownloadDir = "/pulsar/download" WindowFunctionConfigKeyName = "__WINDOWCONFIGS__" From f26fdf6c3bb884cce29f6dcefd55e5f89135913b Mon Sep 17 00:00:00 2001 From: "jiang.pengcheng" Date: Tue, 20 Sep 2022 13:18:00 +0800 Subject: [PATCH 5/6] Fix tests --- .../values_skywalking_e2e_cluster_with_oauth.yaml | 2 +- controllers/spec/common.go | 11 ++++------- controllers/spec/common_test.go | 6 ++++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.ci/clusters/values_skywalking_e2e_cluster_with_oauth.yaml b/.ci/clusters/values_skywalking_e2e_cluster_with_oauth.yaml index 1d2b48878..87477d014 100644 --- a/.ci/clusters/values_skywalking_e2e_cluster_with_oauth.yaml +++ b/.ci/clusters/values_skywalking_e2e_cluster_with_oauth.yaml @@ -138,7 +138,7 @@ auth: issuerUrlParam: https://sts.windows.net/06a8a086-ae6e-45b5-a22e-ad90de23013e/v2.0 audience: api://56c1bd14-3ba7-4804-b47b-d46de6dce33e audienceParam: api://56c1bd14-3ba7-4804-b47b-d46de6dce33e/.default - brokerClientCredential: '{"client_id":"56c1bd14-3ba7-4804-b47b-d46de6dce33e","client_secret":"pBz8Q~ILXDKvC6-NS~zSlYsMF31avrrJsWo6PbNY"}' + brokerClientCredential: '{"client_id":"56c1bd14-3ba7-4804-b47b-d46de6dce33e","client_secret":"pBz8Q~ILXDKvC6-NS~zSlYsMF31avrrJsWo6PbNY","issuer_url":"https://sts.windows.net/06a8a086-ae6e-45b5-a22e-ad90de23013e/v2.0"}' subjectClaim: appid adminScope: appid adminScopeParam: api://56c1bd14-3ba7-4804-b47b-d46de6dce33e/.default diff --git a/controllers/spec/common.go b/controllers/spec/common.go index fb847206f..53d02bec7 100644 --- a/controllers/spec/common.go +++ b/controllers/spec/common.go @@ -417,13 +417,10 @@ func getDownloadCommand(downloadPath, componentPackage string, tlsProvided, auth } } else { if tlsConfig.IsEnabled() { - if tlsConfig.AllowInsecureConnection() == "true" { - args = append(args, "--tls-allow-insecure") - } - - if tlsConfig.EnableHostnameVerification() == "true" { - args = append(args, "--tls-enable-hostname-verification") - } + args = append(args, []string{ + "--tls-allow-insecure=" + tlsConfig.AllowInsecureConnection(), + "--tls-enable-hostname-verification=" + tlsConfig.EnableHostnameVerification(), + }...) if tlsConfig.HasSecretVolume() { args = append(args, []string{ diff --git a/controllers/spec/common_test.go b/controllers/spec/common_test.go index a16379e82..165671948 100644 --- a/controllers/spec/common_test.go +++ b/controllers/spec/common_test.go @@ -125,7 +125,8 @@ func TestGetDownloadCommand(t *testing.T) { []string{ PulsarctlExecutableFile, "--admin-service-url", "$webServiceURL", - "--tls-enable-hostname-verification", + "--tls-allow-insecure=false", + "--tls-enable-hostname-verification=true", "--tls-trust-cert-path", "/etc/tls/pulsar-functions/test-key", "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", }, @@ -159,7 +160,8 @@ func TestGetDownloadCommand(t *testing.T) { []string{ PulsarctlExecutableFile, "--admin-service-url", "$webServiceURL", - "--tls-allow-insecure", + "--tls-allow-insecure=true", + "--tls-enable-hostname-verification=false", "--tls-trust-cert-path", "/etc/tls/pulsar-functions/test-key", "packages", "download", "function://public/default/test@v1", "--path", "function-package.jar", }, From e3f3f22dd9b0e319323ade8065764fae836112fa Mon Sep 17 00:00:00 2001 From: jiangpengcheng Date: Tue, 20 Sep 2022 06:25:25 +0000 Subject: [PATCH 6/6] Add scope when present --- controllers/spec/common.go | 10 +- manifests/crd.yaml | 258 +++++++++++++++++++++++-------------- 2 files changed, 171 insertions(+), 97 deletions(-) diff --git a/controllers/spec/common.go b/controllers/spec/common.go index 53d02bec7..93be91ad6 100644 --- a/controllers/spec/common.go +++ b/controllers/spec/common.go @@ -382,11 +382,19 @@ func getDownloadCommand(downloadPath, componentPackage string, tlsProvided, auth authConfig.OAuth2Config.Audience, "--key-file", authConfig.OAuth2Config.GetMountFile(), + } + if authConfig.OAuth2Config.Scope != "" { + args = append(args, []string{ + "--scope", + authConfig.OAuth2Config.Scope, + }...) + } + args = append(args, []string{ "&& " + PulsarctlExecutableFile, "oauth2", "activate", "&& " + PulsarctlExecutableFile, - } + }...) } else if authProvided { args = []string{ PulsarctlExecutableFile, diff --git a/manifests/crd.yaml b/manifests/crd.yaml index 4e96d0929..66dd5cbc6 100644 --- a/manifests/crd.yaml +++ b/manifests/crd.yaml @@ -88,6 +88,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - go @@ -200,6 +209,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - jar @@ -2681,22 +2699,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -2741,6 +2743,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object py: type: string @@ -2914,6 +2925,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - go @@ -3026,6 +3046,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - jar @@ -5446,22 +5475,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -5506,6 +5519,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object py: type: string @@ -5630,6 +5652,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - go @@ -5670,6 +5701,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - jar @@ -8143,22 +8183,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -8203,6 +8227,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object py: type: string @@ -8413,6 +8446,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - go @@ -8525,6 +8567,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - jar @@ -11006,22 +11057,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -11066,6 +11101,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object py: type: string @@ -11318,6 +11362,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - go @@ -11430,6 +11483,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - jar @@ -13850,22 +13912,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -13910,6 +13956,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object py: type: string @@ -14113,6 +14168,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - go @@ -14153,6 +14217,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object required: - jar @@ -16626,22 +16699,6 @@ spec: type: object authSecret: type: string - oauth2Config: - properties: - audience: - type: string - issuerUrl: - type: string - keySecretKey: - type: string - keySecretName: - type: string - required: - - audience - - issuerUrl - - keySecretKey - - keySecretName - type: object pulsarConfig: type: string tlsConfig: @@ -16686,6 +16743,15 @@ spec: - key - name type: object + rotatePolicy: + enum: + - TimedPolicyWithDaily + - TimedPolicyWithWeekly + - TimedPolicyWithMonthly + - SizedPolicyWith10MB + - SizedPolicyWith50MB + - SizedPolicyWith100MB + type: string type: object py: type: string