[openstack-dev] [Horizon] dependency on non-standardized, private APIs
rzarzynski at mirantis.com
Tue Mar 3 14:59:56 UTC 2015
I would like discuss a problem which can be seen in Horizon: breaking
the boundaries of public, well-specified Object Storage API in favour
of utilizing a Swift-specific extensions. Ticket #1297173  may serve
as a good example of such violation. It is about relying on
non-standard (in the terms of OpenStack Object Storage API v1) and
undocumented HTTP header provided by Swift. In order to make
Ceph RADOS Gateway work correctly with Horizon, developers had to
inspect sources of Swift and implement the same behaviour.
>From my perspective, that practise breaks the the mission of OpenStack
which is much more than delivering yet another IaaS/PaaS implementation.
I think its main goal is to provide a universal set of APIs covering all
functional areas relevant for cloud computing, and to place that set
of APIs in front as many implementations as possible. Having an open
source reference implementation of a particular API is required to prove
its viability, but is secondary to having an open and documented API.
I have full understanding that situations where the public OpenStack
interfaces are insufficient to get the work done might exist.
However, introduction of dependency on implementation-specific feature
(especially without giving the users a choice via e.g. some
configuration option) is not the proper way to deal with the problem.
>From my point of view, such cases should be handled with adoption of
new, carefully designed and documented version of the given API.
In any case I think that Horizon, at least basic functionality, should
work with any storage which provides Object Storage API.
That being said, I'm willing to contribute such patches, if we decide
to go that way.
More information about the OpenStack-dev