Skip to content

Error deploying a bundle with offers #816

@sed-i

Description

@sed-i

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions