The problem turns out not to be in charms.openstack (although it's all related), but in the layer-openstack-principle layer. The issue is that the storage-ceph interface has been switched over to an Endpoint class and these are not discovered at runtime unless the start-up script (in this case actions/openstack-upgrade) explicitly calls "hookenv._run_atstart()". The RelationBase classes can still be found without this as the value (a 'pointer' to the instance) is stored along with the flag and can thus be instantiated with "from_flag". This isn't possible with endpoints, and so the discovery call (_run_atstart()) needs to be performed first.
This is necessary for any action where the endpoint data is needed as part of the action code. This bug will only address the openstack-upgrade action.
The problem turns out not to be in charms.openstack (although it's all related), but in the layer-openstack -principle layer. The issue is that the storage-ceph interface has been switched over to an Endpoint class and these are not discovered at runtime unless the start-up script (in this case actions/ openstack- upgrade) explicitly calls "hookenv. _run_atstart( )". The RelationBase classes can still be found without this as the value (a 'pointer' to the instance) is stored along with the flag and can thus be instantiated with "from_flag". This isn't possible with endpoints, and so the discovery call (_run_atstart()) needs to be performed first.
This is necessary for any action where the endpoint data is needed as part of the action code. This bug will only address the openstack-upgrade action.