)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"f8686aa136310f12f2cc74f2c04ed21009434732","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a17bf623_358fbc38","updated":"2025-08-17 18:03:25.000000000","message":"@zain.marvi@rackspace.com You\u0027ll want to get this passing first before reviews will happen. Install pre-commit on your system as well and you can get some initial pieces passing without burning CI time.","commit_id":"a0f30b978104408b494888cc16939f6a186a6df3"},{"author":{"_account_id":38049,"name":"Zain M","display_name":"Zain M","email":"zain.marvi@rackspace.com","username":"kernel53","status":"Rackspace Technology"},"change_message_id":"e82ebac323b38f39ed1b1375f3e6d23d44200790","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5415e2a4_61025904","updated":"2025-08-08 16:56:42.000000000","message":"Hey guys, this is my first commit to the openstack-helm, would love to get your expert review on this implementation for adding cloudkitty to the repo. \n\nThanks\nZain Marvi\nzain.marvi@rackspace.com","commit_id":"a0f30b978104408b494888cc16939f6a186a6df3"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f4a42333_d8aab4dd","updated":"2025-08-26 16:14:55.000000000","message":"Please also add the cloudkitty deployment job to the periodic test pipeline. See example [1], [2] and [3]\n\n[1] https://opendev.org/openstack/openstack-helm/src/branch/master/zuul.d/base.yaml#L518-L537\n[2] https://opendev.org/openstack/openstack-helm/src/branch/master/zuul.d/2025.1.yaml#L78-L87\n[3] https://opendev.org/openstack/openstack-helm/src/branch/master/zuul.d/project.yaml#L65","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"95d5579e7388a1c251e63f62d444410f7a486f9d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"33eb9b8d_1afde5e9","updated":"2025-08-26 16:15:58.000000000","message":"Some of my comments are addressed here https://review.opendev.org/c/openstack/openstack-helm/+/958188","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/bin/_storage-init.sh.tpl":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":14,"context_line":"limitations under the License."},{"line_number":15,"context_line":"*/}}"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"exec -ex"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"cloudkitty-storage-init"}],"source_content_type":"text/x-smarty","patch_set":2,"id":"464266ff_ba9bc660","line":17,"updated":"2025-08-26 16:14:55.000000000","message":"You probably meant set -ex","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/configmap-etc.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":25,"context_line":"{{- $_ :\u003d tuple \"identity\" \"internal\" \"api\" . | include \"helm-toolkit.endpoints.keystone_endpoint_uri_lookup\"| set .Values.conf.cloudkitty.keystone_authtoken \"auth_url\" -}}"},{"line_number":26,"context_line":"{{- end -}}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"{{- if empty .Values.conf.cloudkitty.keystone_authtoken.region_name -}}"},{"line_number":29,"context_line":"{{- $_ :\u003d set .Values.conf.cloudkitty.keystone_authtoken \"region_name\" .Values.endpoints.identity.auth.cloudkitty.region_name -}}"},{"line_number":30,"context_line":"{{- end -}}"},{"line_number":31,"context_line":"{{- if empty .Values.conf.cloudkitty.keystone_authtoken.project_name -}}"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"857c4a8d_f8c15209","line":28,"updated":"2025-08-26 16:14:55.000000000","message":"We recently switched to the pattern when credential config snippets are put in a separate secret and then mounted to /etc/\u003cproject\u003e/\u003cproject\u003e.conf.d/* See for example [1] and [2]. Oslo_config automatically loads all *.conf from the cond.d directory.\n\n[1] https://opendev.org/openstack/openstack-helm/src/branch/master/nova/templates/secret-ks-etc.yaml\n[2] https://opendev.org/openstack/openstack-helm/src/branch/master/nova/templates/deployment-api-osapi.yaml#L114-L116","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":102,"context_line":"  name: {{ $configMapName }}"},{"line_number":103,"context_line":"type: Opaque"},{"line_number":104,"context_line":"data:"},{"line_number":105,"context_line":"  cloudkitty.conf: {{ include \"helm-toolkit.utils.to_oslo_conf\" .Values.conf.cloudkitty | b64enc }}"},{"line_number":106,"context_line":"  api-paste.ini: {{ include \"helm-toolkit.utils.to_oslo_conf\" .Values.conf.paste | b64enc }}"},{"line_number":107,"context_line":"  metrics.yml: {{ $envAll.Values.conf.processor_metrics | b64enc }}"},{"line_number":108,"context_line":"  cloudkitty_sudoers: {{ $envAll.Values.conf.cloudkitty_sudoers | b64enc }}"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"c8d258a3_dac00969","line":105,"updated":"2025-08-26 16:14:55.000000000","message":"please add logging.conf, the same way how we do in most of other charts","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/deployment-api.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                  - /tmp/cloudkitty-api.sh"},{"line_number":86,"context_line":"                  - stop"},{"line_number":87,"context_line":"          ports:"},{"line_number":88,"context_line":"            - name: n-api"},{"line_number":89,"context_line":"              containerPort: {{ tuple \"rating\" \"internal\" \"api\" . | include \"helm-toolkit.endpoints.endpoint_port_lookup\" }}"},{"line_number":90,"context_line":"{{ dict \"envAll\" $envAll \"component\" \"cloudkitty\" \"container\" \"default\" \"type\" \"liveness\" \"probeTemplate\" (include \"cloudkittyApiLivenessProbeTemplate\" $envAll | fromYaml) | include \"helm-toolkit.snippets.kubernetes_probe\" | indent 10 }}"},{"line_number":91,"context_line":"{{ dict \"envAll\" $envAll \"component\" \"cloudkitty\" \"container\" \"default\" \"type\" \"readiness\" \"probeTemplate\" (include \"cloudkittyApiReadinessProbeTemplate\" $envAll | fromYaml) | include \"helm-toolkit.snippets.kubernetes_probe\" | indent 10 }}"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"5434fcc5_584d2a9a","line":88,"updated":"2025-08-26 16:14:55.000000000","message":"Let\u0027s use c-api like Cloudkitty API","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":99,"context_line":"              mountPath: /etc/cloudkitty"},{"line_number":100,"context_line":"            - name: cloudkitty-etc"},{"line_number":101,"context_line":"              mountPath: /etc/cloudkitty/cloudkitty.conf"},{"line_number":102,"context_line":"              subPath: cloudkitty.conf"},{"line_number":103,"context_line":"            - name: cloudkitty-etc"},{"line_number":104,"context_line":"              mountPath: /etc/cloudkitty/api-paste.ini"},{"line_number":105,"context_line":"              subPath: api-paste.ini"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"fe2b20a8_18024b20","line":102,"updated":"2025-08-26 16:14:55.000000000","message":"Please add here the logging.conf. See the related comment to the configmap-etc template.","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/deployment-processor.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":80,"context_line":"              mountPath: /etc/cloudkitty"},{"line_number":81,"context_line":"            - name: cloudkitty-etc"},{"line_number":82,"context_line":"              mountPath: /etc/cloudkitty/cloudkitty.conf"},{"line_number":83,"context_line":"              subPath: cloudkitty.conf"},{"line_number":84,"context_line":"            - name: cloudkitty-etc"},{"line_number":85,"context_line":"              mountPath: /etc/cloudkitty/metrics.yml"},{"line_number":86,"context_line":"              subPath: metrics.yml"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"314d5dda_aa5dd90d","line":83,"updated":"2025-08-26 16:14:55.000000000","message":"Please add here the logging.conf. See the related comment to the configmap-etc template","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/ingress-api.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":13,"context_line":"*/}}"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"{{- if and .Values.manifests.ingress_api .Values.network.api.ingress.public }}"},{"line_number":16,"context_line":"{{- $ingressOpts :\u003d dict \"envAll\" . \"backendServiceType\" \"rating\" \"backendPort\" \"m-api\" -}}"},{"line_number":17,"context_line":"{{ $ingressOpts | include \"helm-toolkit.manifests.ingress\" }}"},{"line_number":18,"context_line":"{{- end }}"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"0d5281e1_f1455c88","line":16,"updated":"2025-08-26 16:14:55.000000000","message":"the backend port name must match the name used in the service-api. Also I suggest to use c-api like cloudkitty API","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/job-db-sync.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":18,"context_line":"{{- $serviceAccountName :\u003d \"cloudkitty-db-sync\" }}"},{"line_number":19,"context_line":"{{ tuple $envAll \"db_sync\" $serviceAccountName | include \"helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount\" }}"},{"line_number":20,"context_line":"---"},{"line_number":21,"context_line":"apiVersion: batch/v1"},{"line_number":22,"context_line":"kind: Job"},{"line_number":23,"context_line":"metadata:"},{"line_number":24,"context_line":"  name: cloudkitty-db-sync"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"e80d745e_a41d48d7","line":21,"updated":"2025-08-26 16:14:55.000000000","message":"can you please use the helm-toolkit snippet for the db-sync job? See for example [1]\n\n[1] https://opendev.org/openstack/openstack-helm/src/branch/master/neutron/templates/job-db-sync.yaml","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/job-storage-init.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":57,"context_line":"              subPath: storage-init.sh"},{"line_number":58,"context_line":"            - name: etccloudkitty"},{"line_number":59,"context_line":"              mountPath: /etc/cloudkitty"},{"line_number":60,"context_line":"            - name: cloudkitty-etc"},{"line_number":61,"context_line":"              mountPath: /etc/cloudkitty/cloudkitty.conf"},{"line_number":62,"context_line":"              subPath: cloudkitty.conf"},{"line_number":63,"context_line":"      volumes:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"0e79d047_e2df4655","line":60,"updated":"2025-08-26 16:14:55.000000000","message":"Please add here the logging.conf. See the related comment to the configmap-etc template.","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/templates/service-api.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":21,"context_line":"  name: {{ tuple \"rating\" \"internal\" . | include \"helm-toolkit.endpoints.hostname_short_endpoint_lookup\" }}"},{"line_number":22,"context_line":"spec:"},{"line_number":23,"context_line":"  ports:"},{"line_number":24,"context_line":"    - name: n-api"},{"line_number":25,"context_line":"      port: {{ tuple \"rating\" \"internal\" \"api\" . | include \"helm-toolkit.endpoints.endpoint_port_lookup\" }}"},{"line_number":26,"context_line":"    {{ if .Values.network.api.node_port.enabled }}"},{"line_number":27,"context_line":"      nodePort: {{ .Values.network.api.node_port.port }}"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"50d08a10_1bab4e94","line":24,"updated":"2025-08-26 16:14:55.000000000","message":"Let\u0027s use c-api like Cloudkitty API","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"cloudkitty/values.yaml":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":129,"context_line":"        project_name: service"},{"line_number":130,"context_line":"        user_domain_name: service"},{"line_number":131,"context_line":"        project_domain_name: service"},{"line_number":132,"context_line":"      test:"},{"line_number":133,"context_line":"        role: admin"},{"line_number":134,"context_line":"        region_name: RegionOne"},{"line_number":135,"context_line":"        username: test"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"6443299e_5fb1d5d2","line":132,"updated":"2025-08-26 16:14:55.000000000","message":"We probably don\u0027t need this because we don\u0027t have any test pods.","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":320,"context_line":"        - endpoint: internal"},{"line_number":321,"context_line":"          service: local_image_registry"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"pod:"},{"line_number":324,"context_line":"  security_context:"},{"line_number":325,"context_line":"    cloudkitty:"},{"line_number":326,"context_line":"      pod:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f0901bf_e6c30d73","line":323,"updated":"2025-08-26 16:14:55.000000000","message":"Please add tolerations section. See example [1]\n\n[1] https://opendev.org/openstack/openstack-helm/src/branch/master/neutron/values.yaml#L699-L708","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":553,"context_line":"      processes: 1"},{"line_number":554,"context_line":"  cloudkitty:"},{"line_number":555,"context_line":"    DEFAULT:"},{"line_number":556,"context_line":"      api_paste_config: /etc/cloudkitty/api-paste.ini"},{"line_number":557,"context_line":"      auth_strategy: keystone"},{"line_number":558,"context_line":"      debug: false"},{"line_number":559,"context_line":"    keystone_authtoken:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9e1e8e21_1a656310","line":556,"updated":"2025-08-26 16:14:55.000000000","message":"Please add the option `log_config_append: /etc/cloudkitty/logging.conf` like how we do for other charts. See the related comment to the configmap-etc template.","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"},{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[{"line_number":578,"context_line":"      backend: cloudkitty.backend.file.FileBackend"},{"line_number":579,"context_line":"    storage:"},{"line_number":580,"context_line":"      backend: sqlalchemy"},{"line_number":581,"context_line":"      version: 1"},{"line_number":582,"context_line":"  cloudkitty_sudoers: |"},{"line_number":583,"context_line":"    Defaults secure_path\u003d\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/var/lib/openstack/bin\""},{"line_number":584,"context_line":"    cloudkitty ALL\u003d(ALL:ALL) NOPASSWD: /var/lib/openstack/bin/privsep-helper"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9aaf71a8_81f3ee5d","line":581,"updated":"2025-08-26 16:14:55.000000000","message":"Please add the logging section here. See example [1]\n\n[1] https://opendev.org/openstack/openstack-helm/src/branch/master/neutron/values.yaml#L1998-L2063","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}],"tools/deployment/component/cloudkitty/cloudkitty.sh":[{"author":{"_account_id":3009,"name":"Vladimir Kozhukalov","email":"kozhukalov@gmail.com","username":"kozhukalov"},"change_message_id":"affe975cdebf5d4e9fc7c9df6a56a8712854479a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3c589073_9d80d934","line":35,"updated":"2025-08-26 16:14:55.000000000","message":"Can you please add here a openstack command to check if the rating service is actually working and is available? For example `openstack rating module list`. This way we can be sure that the service endpoint is properly exposed and reverse proxied to the cloudkitty pods.","commit_id":"8aeae48a1b6c9e6d2988918258d97fcbfa1f7f11"}]}
