The ceph_state module is implemented in C++, and isn't available at
build time, which causes import failures when api_docs.py tries to
import calamari_rest in order to introspect it (MgrModule is eventually
imported, which in turn tries to import ceph_state, which fails unless
we stub it out).
Additional changes:
* Search calamari_rest.urls (not calamari_web)
calamari_web isn't available - it largely held static content in
Calamari, and in turn included calamari_rest.urls. Here in ceph-mgr we
only have calamari_rest.
* note that --list-urls does nothing, apparently
* Pass actions to old as_view method
django-rest-framework 3.x raises TypeError if the actions argument isn't
passed to as_view().
* Use view().get_view_name() instead of metadata
Attempting to access view().metadata(None)['name'] results in
"AttributeError: 'super' object has no attribute 'metadata'".
* Use somewhat unfriendly field class names
django-rest-framework 3.x seems to have done away with type_label for
fields, so instead use the field's class name, which is somewhat
unfriendly, but arguably better than nothing.
* import global_instance to fix ImportError
This is necessary to avoid what seems to be weird import loops (if this
isn't present, we later get "ImportError: cannot import name
UserRequest" or similar).
* Make api_examples.json optional
This way we at least get bare docs with no examples, rather than no docs
at all.