TypeError wrong type parsing cert_requests
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Kubernetes API Load Balancer |
New
|
Undecided
|
Unassigned | ||
Kubernetes Control Plane Charm |
New
|
Undecided
|
Unassigned | ||
Kubernetes Worker Charm |
New
|
Undecided
|
Unassigned |
Bug Description
When deploying k8s on top of Openstack using fce, everything is smooth until I want to attach a floating IP to the kubernetes-
channel: latest/stable
From then, the unit goes in blocking state
`kubernetes-
The associated error is
```
unit-kubernetes
Traceback (most recent call last):
File "/var/lib/
result = self.reconcile_
File "/var/lib/
self.
File "/var/lib/
self.
File "/var/lib/
requests[cn] = {"sans": sans or []}
TypeError: 'str' object does not support item assignment
```
The error is located in the `ops/interface_
```
requests = data.get(
requests[cn] = {"sans": sans or []}
data["cert_
```
When the `cert_requests` variable is not empty, it is assumed to be a dict.
But in the databag of the juju relation, it is clearly a string
jhack utils show-relation kubernetes-
```
...
"units_data": {
"0": {
\"kubernetes\", \"kubernetes.
"sans": "[\"10.152.183.1\", \"127.0.0.1\", \"192.168.0.103\", \"192.168.0.160\", \"juju-
\"kubernetes.
}
},
```
Current workaround is to edit the charm and force type casting of requests into a dict
```
requests = data.get(
import json
requests = json.loads(
requests[cn] = {"sans": sans or []}
data["cert_
```
Unit is now active/idle
WE also have the same issue -control- plane-1: 19:58:46 ERROR unit.kubernetes -control- plane/1. juju-log 'str' object does not support item assignment juju/agents/ unit-kubernetes -control- plane-1/ charm/venv/ charms/ reconciler. py", line 34, in reconcile function( event) juju/agents/ unit-kubernetes -control- plane-1/ charm/. /src/charm. py", line 499, in reconcile request_ certificates( ) juju/agents/ unit-kubernetes -control- plane-1/ charm/. /src/charm. py", line 592, in request_ certificates certificates. request_ server_ cert(cn= common_ name, sans=sans) juju/agents/ unit-kubernetes -control- plane-1/ charm/venv/ ops/interface_ tls_certificate s/requires. py", line 160, in request_server_cert
unit-kubernetes
Traceback (most recent call last):
File "/var/lib/
result = self.reconcile_
File "/var/lib/
self.
File "/var/lib/
self.
File "/var/lib/
requests[cn] = {"sans": sans or []}
TypeError: 'str' object does not support item assignment
This also affects the control plane and all workers "cert_requests" , {}) requests) requests" ] = json.dumps( requests)
the same patch works
```
requests = data.get(
import json
requests = json.loads(
requests[cn] = {"sans": sans or []}
data["cert_
```