dffe0f0463
openstacksdk is in the business of being an SDK for OpenStack. While it's tempting to support other services that people might want to run alongside their OpenStack cloud and register in their keystone catalog, doing so is just not feasible. At the same time, the 95% case is that the openstacksdk will be used for OpenStack services, so using entrpoints-based plugin loading as part of normal usage incurs a startup cost that can be rather high (it's based on the number of python packages installed on the system, not the number of plugins for openstacksdk) Add a method and a constructor parameter to Connection that allows people to programmatically enable support for additional non-OpenStack services. This introduce a new Service description class that maps service_type, Proxy class and optional service_type aliases. A subclass of Service could be provided by whoever is writing the Proxy class and associated Resoure objects, or the base class can be instantiated with type and proxy_class as arguments. While doing this, rework the loading of the official OpenStack services to use the Service descriptor objects. Add an OpenStackService subclass which does the importlib searching of the openstack module tree for proxy classes. This gets all of the module searching and loading into the openstack.services module and out of Connection. This should allow us to delete the metric service from the tree but provide people who want to use the metric service with openstacksdk a mechanism to do so. It also should provide a vehicle for people developing new not-yet-official services to develop their Resource and Proxy classes out of tree, and then move them in once they are official Change-Id: I6d1e0c45026a2e7b3c42983df9c0565b1c501bc3 |
||
---|---|---|
.. | ||
add_description_create_user-0ddc9a0ef4da840d.yaml | ||
add_designate_recordsets_support-69af0a6b317073e7.yaml | ||
add_designate_zones_support-35fa9b8b09995b43.yaml | ||
add_heat_tag_support-135aa43ba1dce3bb.yaml | ||
add_host_aggregate_support-471623faf45ec3c3.yaml | ||
add_magnum_baymodel_support-e35e5aab0b14ff75.yaml | ||
add_magnum_services_support-3d95f9dcc60b5573.yaml | ||
add_server_group_support-dfa472e3dae7d34d.yaml | ||
add_update_server-8761059d6de7e68b.yaml | ||
add_update_service-28e590a7a7524053.yaml | ||
add-current-user-id-49b6463e6bcc3b31.yaml | ||
add-jmespath-support-f47b7a503dbbfda1.yaml | ||
add-list_flavor_access-e038253e953e6586.yaml | ||
add-server-console-078ed2696e5b04d9.yaml | ||
add-service-0bcc16eb026eade3.yaml | ||
add-show-all-images-flag-352748b6c3d99f3f.yaml | ||
alternate-auth-context-3939f1492a0e1355.yaml | ||
always-detail-cluster-templates-3eb4b5744ba327ac.yaml | ||
boot-on-server-group-a80e51850db24b3d.yaml | ||
bug-2001080-de52ead3c5466792.yaml | ||
cache-in-use-volumes-c7fa8bb378106fe3.yaml | ||
catch-up-release-notes-e385fad34e9f3d6e.yaml | ||
change-attach-vol-return-value-4834a1f78392abb1.yaml | ||
cinder_volume_backups_support-6f7ceab440853833.yaml | ||
cinderv2-norm-fix-037189c60b43089f.yaml | ||
cleanup-objects-f99aeecf22ac13dd.yaml | ||
cloud-profile-status-e0d29b5e2f10e95c.yaml | ||
compute-quotas-b07a0f24dfac8444.yaml | ||
compute-usage-defaults-5f5b2936f17ff400.yaml | ||
config-flavor-specs-ca712e17971482b6.yaml | ||
create_server_network_fix-c4a56b31d2850a4b.yaml | ||
create_service_norm-319a97433d68fa6a.yaml | ||
create-stack-fix-12dbb59a48ac7442.yaml | ||
data-model-cf50d86982646370.yaml | ||
default-cloud-7ee0bcb9e5dd24b9.yaml | ||
delete_project-399f9b3107014dde.yaml | ||
delete-autocreated-1839187b0aa35022.yaml | ||
delete-image-objects-9d4b4e0fff36a23f.yaml | ||
delete-obj-return-a3ecf0415b7a2989.yaml | ||
domain_operations_name_or_id-baba4cac5b67234d.yaml | ||
dual-stack-networks-8a81941c97d28deb.yaml | ||
endpoint-from-catalog-bad36cb0409a4e6a.yaml | ||
false-not-attribute-error-49484d0fdc61f75d.yaml | ||
feature-server-metadata-50caf18cec532160.yaml | ||
fip_timeout-035c4bb3ff92fa1f.yaml | ||
fix-compat-with-old-keystoneauth-66e11ee9d008b962.yaml | ||
fix-config-drive-a148b7589f7e1022.yaml | ||
fix-delete-ips-1d4eebf7bc4d4733.yaml | ||
fix-list-networks-a592725df64c306e.yaml | ||
fix-missing-futures-a0617a1c1ce6e659.yaml | ||
fix-properties-key-conflict-2161ca1faaad6731.yaml | ||
fix-supplemental-fips-c9cd58aac12eb30e.yaml | ||
fix-update-domain-af47b066ac52eb7f.yaml | ||
fixed-magnum-type-7406f0a60525f858.yaml | ||
flavor_fix-a53c6b326dc34a2c.yaml | ||
fnmatch-name-or-id-f658fe26f84086c8.yaml | ||
get_object_api-968483adb016bce1.yaml | ||
get-limits-c383c512f8e01873.yaml | ||
get-usage-72d249ff790d1b8f.yaml | ||
glance-image-pagination-0b4dfef22b25852b.yaml | ||
grant-revoke-assignments-231d3f9596a1ae75.yaml | ||
image-flavor-by-name-54865b00ebbf1004.yaml | ||
image-from-volume-9acf7379f5995b5b.yaml | ||
infer-secgroup-source-58d840aaf1a1f485.yaml | ||
ironic-microversion-ba5b0f36f11196a6.yaml | ||
less-file-hashing-d2497337da5acbef.yaml | ||
list-az-names-a38c277d1192471b.yaml | ||
list-role-assignments-keystone-v2-b127b12b4860f50c.yaml | ||
list-servers-all-projects-349e6dc665ba2e8d.yaml | ||
load-yaml-3177efca78e5c67a.yaml | ||
log-request-ids-37507cb6eed9a7da.yaml | ||
magic-fixes-dca4ae4dac2441a8.yaml | ||
make_object_metadata_easier.yaml-e9751723e002e06f.yaml | ||
make-rest-client-dd3d365632a26fa0.yaml | ||
make-rest-client-version-discovery-84125700f159491a.yaml | ||
merge-shade-os-client-config-29878734ad643e33.yaml | ||
meta-passthrough-d695bff4f9366b65.yaml | ||
min-max-legacy-version-301242466ddefa93.yaml | ||
multiple-updates-b48cc2f6db2e526d.yaml | ||
nat-source-field-7c7db2a724616d59.yaml | ||
net_provider-dd64b697476b7094.yaml | ||
network-list-e6e9dafdd8446263.yaml | ||
network-quotas-b98cce9ffeffdbf4.yaml | ||
new-floating-attributes-213cdf5681d337e1.yaml | ||
no-more-troveclient-0a4739c21432ac63.yaml | ||
norm_role_assignments-a13f41768e62d40c.yaml | ||
normalize-images-1331bea7bfffa36a.yaml | ||
nova-flavor-to-rest-0a5757e35714a690.yaml | ||
nova-old-microversion-5e4b8e239ba44096.yaml | ||
option-precedence-1fecab21fdfb2c33.yaml | ||
remove-magnumclient-875b3e513f98f57c.yaml | ||
remove-novaclient-3f8d4db20d5f9582.yaml | ||
removed-glanceclient-105c7fba9481b9be.yaml | ||
removed-profile-437f3038025b0fb3.yaml | ||
removed-swiftclient-aff22bfaeee5f59f.yaml | ||
renamed-bare-metal-b1cdbc52af14e042.yaml | ||
renamed-block-store-bc5e0a7315bfeb67.yaml | ||
renamed-cluster-743da6d321fffcba.yaml | ||
renamed-telemetry-c08ae3e72afca24f.yaml | ||
router_ext_gw-b86582317bca8b39.yaml | ||
sdk-helper-41f8d815cfbcfb00.yaml | ||
server-create-error-id-66c698c7e633fb8b.yaml | ||
server-security-groups-840ab28c04f359de.yaml | ||
service_enabled_flag-c917b305d3f2e8fd.yaml | ||
session-client-b581a6e5d18c8f04.yaml | ||
set-bootable-volume-454a7a41e7e77d08.yaml | ||
shade-helper-568f8cb372eef6d9.yaml | ||
stack-update-5886e91fd6e423bf.yaml | ||
started-using-reno-242e2b0cd27f9480.yaml | ||
stream-to-file-91f48d6dcea399c6.yaml | ||
strict-mode-d493abc0c3e87945.yaml | ||
swift-upload-lock-d18f3d42b3a0719a.yaml | ||
update_endpoint-f87c1f42d0c0d1ef.yaml | ||
use-interface-ip-c5cb3e7c91150096.yaml | ||
vendor-updates-f11184ba56bb27cf.yaml | ||
version-discovery-a501c4e9e9869f77.yaml | ||
volume-quotas-5b674ee8c1f71eb6.yaml | ||
volume-types-a07a14ae668e7dd2.yaml | ||
wait_for_server-8dc8446b7c673d36.yaml | ||
wait-on-image-snapshot-27cd2eacab2fabd8.yaml | ||
workaround-transitive-deps-1e7a214f3256b77e.yaml |