The following line seems to be using join incorrectly:
|
endpoints = ":{}".format(self.endpoints.join(",")) |
In 3.0.4 this results in:
Traceback (most recent call last):
File "/home/ubuntu/code/cos-lite-bundle/tests/e2e/test_machine.py", line 52, in test_deploy_cos
await k8s_mdl.deploy(str(rendered_bundle), trust=True)
File "/home/ubuntu/code/cos-lite-bundle/.tox/e2e/lib/python3.10/site-packages/juju/model.py", line 1757, in deploy
await handler.execute_plan()
File "/home/ubuntu/code/cos-lite-bundle/.tox/e2e/lib/python3.10/site-packages/juju/bundle.py", line 402, in execute_plan
log.info("Applying change: {}".format(change))
File "/home/ubuntu/code/cos-lite-bundle/.tox/e2e/lib/python3.10/site-packages/juju/bundle.py", line 1063, in __str__
endpoints = ":{}".format(self.endpoints.join(","))
AttributeError: 'list' object has no attribute 'join'
I'm guessing it should be
endpoints = ":{}".format(",".join(self.endpoints))
The bundle file:
---
bundle: kubernetes
name: cos-lite
description: >
COS Lite is a light-weight, highly-integrated, observability stack running on Kubernetes
applications:
traefik:
charm: traefik-k8s
scale: 1
trust: true
channel: edge
alertmanager:
charm: alertmanager-k8s
scale: 1
trust: true
channel: edge
prometheus:
charm: prometheus-k8s
scale: 1
trust: true
channel: edge
grafana:
charm: grafana-k8s
scale: 1
trust: true
channel: edge
catalogue:
charm: catalogue-k8s
scale: 1
trust: true
channel: edge
options:
title: Canonical Observability Stack
tagline: Model-driven Observability Stack deployed with a single command.
description: |
Canonical Observability Stack Lite, or COS Lite, is a light-weight, highly-integrated,
Juju-based observability suite running on Kubernetes.
loki:
charm: loki-k8s
scale: 1
trust: true
channel: edge
avalanche:
charm: avalanche-k8s
scale: 2
trust: true
channel: edge
options:
metric_count: 10
series_count: 2
relations:
- [traefik:ingress-per-unit, prometheus:ingress]
- [traefik:ingress-per-unit, loki:ingress]
- [traefik:traefik-route, grafana:ingress]
- [traefik:ingress, alertmanager:ingress]
- [prometheus:alertmanager, alertmanager:alerting]
- [grafana:grafana-source, prometheus:grafana-source]
- [grafana:grafana-source, loki:grafana-source]
- [grafana:grafana-source, alertmanager:grafana-source]
- [loki:alertmanager, alertmanager:alerting]
- [prometheus:metrics-endpoint, avalanche:metrics-endpoint]
# COS-monitoring
- [prometheus:metrics-endpoint, traefik:metrics-endpoint]
- [prometheus:metrics-endpoint, alertmanager:self-metrics-endpoint]
- [prometheus:metrics-endpoint, loki:metrics-endpoint]
- [prometheus:metrics-endpoint, grafana:metrics-endpoint]
- [grafana:grafana-dashboard, loki:grafana-dashboard]
- [grafana:grafana-dashboard, prometheus:grafana-dashboard]
- [grafana:grafana-dashboard, alertmanager:grafana-dashboard]
# Service Catalogue
- [catalogue:ingress, traefik:ingress]
- [catalogue:catalogue, grafana:catalogue]
- [catalogue:catalogue, prometheus:catalogue]
- [catalogue:catalogue, alertmanager:catalogue]
--- # overlay.yaml
applications:
alertmanager:
offers:
alertmanager-karma-dashboard:
endpoints:
- karma-dashboard
grafana:
offers:
grafana-dashboards:
endpoints:
- grafana-dashboard
loki:
offers:
loki-logging:
endpoints:
- logging
prometheus:
offers:
prometheus-scrape:
endpoints:
- metrics-endpoint
The following line seems to be using
joinincorrectly:python-libjuju/juju/bundle.py
Line 1025 in 5c4910b
In 3.0.4 this results in:
I'm guessing it should be
The bundle file: