|
| 1 | +[1mdiff --git a/api/bases/keystone.openstack.org_keystoneapis.yaml b/api/bases/keystone.openstack.org_keystoneapis.yaml[m |
| 2 | +[1mindex f460b11..a82074b 100644[m |
| 3 | +[1m--- a/api/bases/keystone.openstack.org_keystoneapis.yaml[m |
| 4 | +[1m+++ b/api/bases/keystone.openstack.org_keystoneapis.yaml[m |
| 5 | +[36m@@ -103,6 +103,17 @@[m [mspec:[m |
| 6 | + format: int32[m |
| 7 | + minimum: 1[m |
| 8 | + type: integer[m |
| 9 | +[32m+[m[32m httpdCustomization:[m |
| 10 | +[32m+[m[32m description: HttpdCustomization - customize the httpd service[m |
| 11 | +[32m+[m[32m properties:[m |
| 12 | +[32m+[m[32m processNumber:[m |
| 13 | +[32m+[m[32m default: 3[m |
| 14 | +[32m+[m[32m description: ProcessNumber - Number of processes running in keystone[m |
| 15 | +[32m+[m[32m API[m |
| 16 | +[32m+[m[32m format: int32[m |
| 17 | +[32m+[m[32m minimum: 1[m |
| 18 | +[32m+[m[32m type: integer[m |
| 19 | +[32m+[m[32m type: object[m |
| 20 | + memcachedInstance:[m |
| 21 | + default: memcached[m |
| 22 | + description: Memcached instance name.[m |
| 23 | +[1mdiff --git a/api/v1beta1/keystoneapi_types.go b/api/v1beta1/keystoneapi_types.go[m |
| 24 | +[1mindex a4c9b3c..29dd60d 100644[m |
| 25 | +[1m--- a/api/v1beta1/keystoneapi_types.go[m |
| 26 | +[1m+++ b/api/v1beta1/keystoneapi_types.go[m |
| 27 | +[36m@@ -157,6 +157,10 @@[m [mtype KeystoneAPISpecCore struct {[m |
| 28 | + // TODO: -> implement[m |
| 29 | + DefaultConfigOverwrite map[string]string `json:"defaultConfigOverwrite,omitempty"`[m |
| 30 | + [m |
| 31 | +[32m+[m [32m// +kubebuilder:validation:Optional[m |
| 32 | +[32m+[m [32m// HttpdCustomization - customize the httpd service[m |
| 33 | +[32m+[m [32mHttpdCustomization HttpdCustomization `json:"httpdCustomization,omitempty"`[m |
| 34 | +[32m+[m |
| 35 | + // +kubebuilder:validation:Optional[m |
| 36 | + // Resources - Compute Resources required by this service (Limits/Requests).[m |
| 37 | + // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/[m |
| 38 | +[36m@@ -197,6 +201,15 @@[m [mtype PasswordSelector struct {[m |
| 39 | + Admin string `json:"admin"`[m |
| 40 | + }[m |
| 41 | + [m |
| 42 | +[32m+[m[32m// HttpdCustomization - customize the httpd service[m |
| 43 | +[32m+[m[32mtype HttpdCustomization struct {[m |
| 44 | +[32m+[m [32m// +kubebuilder:validation:Optional[m |
| 45 | +[32m+[m [32m// +kubebuilder:default=3[m |
| 46 | +[32m+[m [32m// +kubebuilder:validation:Minimum=1[m |
| 47 | +[32m+[m [32m// ProcessNumber - Number of processes running in keystone API[m |
| 48 | +[32m+[m [32mProcessNumber *int32 `json:"processNumber"`[m |
| 49 | +[32m+[m[32m}[m |
| 50 | +[32m+[m |
| 51 | + // KeystoneAPIStatus defines the observed state of KeystoneAPI[m |
| 52 | + type KeystoneAPIStatus struct {[m |
| 53 | + // ReadyCount of keystone API instances[m |
| 54 | +[1mdiff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go[m |
| 55 | +[1mindex 7ee4749..da70b75 100644[m |
| 56 | +[1m--- a/api/v1beta1/zz_generated.deepcopy.go[m |
| 57 | +[1m+++ b/api/v1beta1/zz_generated.deepcopy.go[m |
| 58 | +[36m@@ -49,6 +49,26 @@[m [mfunc (in *APIOverrideSpec) DeepCopy() *APIOverrideSpec {[m |
| 59 | + return out[m |
| 60 | + }[m |
| 61 | + [m |
| 62 | +[32m+[m[32m// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.[m |
| 63 | +[32m+[m[32mfunc (in *HttpdCustomization) DeepCopyInto(out *HttpdCustomization) {[m |
| 64 | +[32m+[m [32m*out = *in[m |
| 65 | +[32m+[m [32mif in.ProcessNumber != nil {[m |
| 66 | +[32m+[m [32min, out := &in.ProcessNumber, &out.ProcessNumber[m |
| 67 | +[32m+[m [32m*out = new(int32)[m |
| 68 | +[32m+[m [32m**out = **in[m |
| 69 | +[32m+[m [32m}[m |
| 70 | +[32m+[m[32m}[m |
| 71 | +[32m+[m |
| 72 | +[32m+[m[32m// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HttpdCustomization.[m |
| 73 | +[32m+[m[32mfunc (in *HttpdCustomization) DeepCopy() *HttpdCustomization {[m |
| 74 | +[32m+[m [32mif in == nil {[m |
| 75 | +[32m+[m [32mreturn nil[m |
| 76 | +[32m+[m [32m}[m |
| 77 | +[32m+[m [32mout := new(HttpdCustomization)[m |
| 78 | +[32m+[m [32min.DeepCopyInto(out)[m |
| 79 | +[32m+[m [32mreturn out[m |
| 80 | +[32m+[m[32m}[m |
| 81 | +[32m+[m |
| 82 | + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.[m |
| 83 | + func (in *KeystoneAPI) DeepCopyInto(out *KeystoneAPI) {[m |
| 84 | + *out = *in[m |
| 85 | +[36m@@ -172,6 +192,7 @@[m [mfunc (in *KeystoneAPISpecCore) DeepCopyInto(out *KeystoneAPISpecCore) {[m |
| 86 | + (*out)[key] = val[m |
| 87 | + }[m |
| 88 | + }[m |
| 89 | +[32m+[m [32min.HttpdCustomization.DeepCopyInto(&out.HttpdCustomization)[m |
| 90 | + in.Resources.DeepCopyInto(&out.Resources)[m |
| 91 | + if in.NetworkAttachments != nil {[m |
| 92 | + in, out := &in.NetworkAttachments, &out.NetworkAttachments[m |
| 93 | +[1mdiff --git a/config/crd/bases/keystone.openstack.org_keystoneapis.yaml b/config/crd/bases/keystone.openstack.org_keystoneapis.yaml[m |
| 94 | +[1mindex f460b11..a82074b 100644[m |
| 95 | +[1m--- a/config/crd/bases/keystone.openstack.org_keystoneapis.yaml[m |
| 96 | +[1m+++ b/config/crd/bases/keystone.openstack.org_keystoneapis.yaml[m |
| 97 | +[36m@@ -103,6 +103,17 @@[m [mspec:[m |
| 98 | + format: int32[m |
| 99 | + minimum: 1[m |
| 100 | + type: integer[m |
| 101 | +[32m+[m[32m httpdCustomization:[m |
| 102 | +[32m+[m[32m description: HttpdCustomization - customize the httpd service[m |
| 103 | +[32m+[m[32m properties:[m |
| 104 | +[32m+[m[32m processNumber:[m |
| 105 | +[32m+[m[32m default: 3[m |
| 106 | +[32m+[m[32m description: ProcessNumber - Number of processes running in keystone[m |
| 107 | +[32m+[m[32m API[m |
| 108 | +[32m+[m[32m format: int32[m |
| 109 | +[32m+[m[32m minimum: 1[m |
| 110 | +[32m+[m[32m type: integer[m |
| 111 | +[32m+[m[32m type: object[m |
| 112 | + memcachedInstance:[m |
| 113 | + default: memcached[m |
| 114 | + description: Memcached instance name.[m |
| 115 | +[1mdiff --git a/controllers/keystoneapi_controller.go b/controllers/keystoneapi_controller.go[m |
| 116 | +[1mindex 1ce2985..0df5e1a 100644[m |
| 117 | +[1m--- a/controllers/keystoneapi_controller.go[m |
| 118 | +[1m+++ b/controllers/keystoneapi_controller.go[m |
| 119 | +[36m@@ -1190,6 +1190,7 @@[m [mfunc (r *KeystoneAPIReconciler) generateServiceConfigMaps([m |
| 120 | + keystone.DatabaseName,[m |
| 121 | + ),[m |
| 122 | + "enableSecureRBAC": instance.Spec.EnableSecureRBAC,[m |
| 123 | +[32m+[m [32m"ProcessNumber": instance.Spec.HttpdCustomization.ProcessNumber,[m |
| 124 | + }[m |
| 125 | + [m |
| 126 | + // create httpd vhost template parameters[m |
| 127 | +[1mdiff --git a/templates/keystoneapi/config/httpd.conf b/templates/keystoneapi/config/httpd.conf[m |
| 128 | +[1mindex 2046181..641b6dd 100644[m |
| 129 | +[1m--- a/templates/keystoneapi/config/httpd.conf[m |
| 130 | +[1m+++ b/templates/keystoneapi/config/httpd.conf[m |
| 131 | +[36m@@ -53,7 +53,7 @@[m [mCustomLog /dev/stdout proxy env=forwarded[m |
| 132 | + [m |
| 133 | + ## WSGI configuration[m |
| 134 | + WSGIApplicationGroup %{GLOBAL}[m |
| 135 | +[31m- WSGIDaemonProcess {{ $endpt }} display-name={{ $endpt }} group=keystone processes=3 threads=1 user=keystone[m |
| 136 | +[32m+[m[32m WSGIDaemonProcess {{ $endpt }} display-name={{ $endpt }} group=keystone processes={{ $.ProcessNumber }} threads=1 user=keystone[m |
| 137 | + WSGIProcessGroup {{ $endpt }}[m |
| 138 | + WSGIScriptAlias / "/usr/bin/keystone-wsgi-public"[m |
| 139 | + WSGIPassAuthorization On[m |
0 commit comments