FWIW, what the charm is doing is attempting to update the image-streams endpoint by deleting and recreating it first. This allows for a potential race, which is bad in itself. I think it's worth fixing it in the charm as well.
However, we'd have to make it conditional on the returned keystone client API version: 2.0 does not support the update() call, whereas 3.0 does (see http://docs.openstack.org/developer/python-keystoneclient/api/keystoneclient.v2_0.html#module-keystoneclient.v2_0.endpoints, http://docs.openstack.org/developer/python-keystoneclient/api/keystoneclient.v3.html#module-keystoneclient.v3.endpoints).
FWIW, what the charm is doing is attempting to update the image-streams endpoint by deleting and recreating it first. This allows for a potential race, which is bad in itself. I think it's worth fixing it in the charm as well.
However, we'd have to make it conditional on the returned keystone client API version: 2.0 does not support the update() call, whereas 3.0 does (see http:// docs.openstack. org/developer/ python- keystoneclient/ api/keystonecli ent.v2_ 0.html# module- keystoneclient. v2_0.endpoints, http:// docs.openstack. org/developer/ python- keystoneclient/ api/keystonecli ent.v3. html#module- keystoneclient. v3.endpoints).