From 071e567b320dc71f79658dfe74b82be0bbac9c1e Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sat, 25 Aug 2018 10:57:46 +0900 Subject: [PATCH] Use discovery instead of config to create proxies Since the dawn of time we've labored under the crippling burden of needing to explicitly request a version via configuration in order to get a usable handle to the cloud. This is despite the hilarity of the existence of a system for discovering available versions since basically the beginning of the entire OpenStack project. Today we shall be liberated from the tyranny of terrible past life decisions on the part of our forefathers and shall usher forth the shining freedom of actually using the discovery system. Change-Id: I11c16d37d3ab3d77bed3a0bcbd98f1fa33b9555f --- SHADE-MERGE-TODO.rst | 4 +- .../create/examples/resource/fake.py | 2 - .../create/examples/resource/fake_service.py | 13 +- doc/source/user/index.rst | 2 +- doc/source/user/service_description.rst | 10 + doc/source/user/service_filter.rst | 10 - lower-constraints.txt | 2 +- openstack/_meta/connection.py | 53 +++-- openstack/baremetal/baremetal_service.py | 14 +- openstack/baremetal/v1/chassis.py | 2 - openstack/baremetal/v1/driver.py | 2 - openstack/baremetal/v1/node.py | 2 - openstack/baremetal/v1/port.py | 2 - openstack/baremetal/v1/port_group.py | 2 - openstack/baremetal/version.py | 4 - .../block_storage/block_storage_service.py | 15 +- openstack/block_storage/v2/snapshot.py | 2 - openstack/block_storage/v2/stats.py | 2 - openstack/block_storage/v2/type.py | 2 - openstack/block_storage/v2/volume.py | 2 - openstack/clustering/clustering_service.py | 17 +- openstack/clustering/v1/action.py | 2 - openstack/clustering/v1/build_info.py | 2 - openstack/clustering/v1/cluster.py | 2 - openstack/clustering/v1/cluster_attr.py | 2 - openstack/clustering/v1/cluster_policy.py | 2 - openstack/clustering/v1/event.py | 2 - openstack/clustering/v1/node.py | 2 - openstack/clustering/v1/policy.py | 2 - openstack/clustering/v1/policy_type.py | 2 - openstack/clustering/v1/profile.py | 2 - openstack/clustering/v1/profile_type.py | 2 - openstack/clustering/v1/receiver.py | 2 - openstack/clustering/v1/service.py | 2 - openstack/clustering/version.py | 4 - openstack/compute/compute_service.py | 14 +- openstack/compute/v2/availability_zone.py | 3 - openstack/compute/v2/extension.py | 2 - openstack/compute/v2/flavor.py | 2 - openstack/compute/v2/hypervisor.py | 3 - openstack/compute/v2/image.py | 2 - openstack/compute/v2/keypair.py | 2 - openstack/compute/v2/limits.py | 2 - openstack/compute/v2/server.py | 4 +- openstack/compute/v2/server_group.py | 2 - openstack/compute/v2/server_interface.py | 2 - openstack/compute/v2/server_ip.py | 2 - openstack/compute/v2/service.py | 3 - openstack/compute/v2/volume_attachment.py | 2 - openstack/compute/version.py | 4 - openstack/config/cloud_region.py | 28 ++- openstack/database/database_service.py | 14 +- openstack/database/v1/database.py | 2 - openstack/database/v1/flavor.py | 2 - openstack/database/v1/instance.py | 2 - openstack/database/v1/user.py | 2 - openstack/identity/identity_service.py | 26 +-- openstack/identity/v2/extension.py | 2 - openstack/identity/v2/role.py | 2 - openstack/identity/v2/tenant.py | 2 - openstack/identity/v2/user.py | 2 - openstack/identity/v3/credential.py | 2 - openstack/identity/v3/domain.py | 2 - openstack/identity/v3/endpoint.py | 2 - openstack/identity/v3/group.py | 2 - openstack/identity/v3/policy.py | 2 - openstack/identity/v3/project.py | 3 - openstack/identity/v3/region.py | 2 - openstack/identity/v3/role.py | 2 - openstack/identity/v3/role_assignment.py | 2 - .../v3/role_domain_group_assignment.py | 2 - .../v3/role_domain_user_assignment.py | 2 - .../v3/role_project_group_assignment.py | 2 - .../v3/role_project_user_assignment.py | 2 - openstack/identity/v3/service.py | 2 - openstack/identity/v3/trust.py | 2 - openstack/identity/v3/user.py | 2 - openstack/identity/version.py | 4 - openstack/image/image_service.py | 19 +- openstack/image/v1/image.py | 2 - openstack/image/v2/image.py | 2 - openstack/image/v2/member.py | 2 - openstack/instance_ha/instance_ha_service.py | 14 +- openstack/instance_ha/v1/host.py | 2 - openstack/instance_ha/v1/notification.py | 2 - openstack/instance_ha/v1/segment.py | 2 - openstack/key_manager/key_manager_service.py | 14 +- openstack/key_manager/v1/container.py | 2 - openstack/key_manager/v1/order.py | 2 - openstack/key_manager/v1/secret.py | 2 - .../load_balancer/load_balancer_service.py | 16 +- openstack/load_balancer/v2/health_monitor.py | 4 +- openstack/load_balancer/v2/l7_policy.py | 4 +- openstack/load_balancer/v2/l7_rule.py | 4 +- openstack/load_balancer/v2/listener.py | 4 +- openstack/load_balancer/v2/load_balancer.py | 4 +- openstack/load_balancer/v2/member.py | 4 +- openstack/load_balancer/v2/pool.py | 4 +- openstack/load_balancer/version.py | 4 - openstack/message/message_service.py | 16 +- openstack/message/v2/claim.py | 2 - openstack/message/v2/message.py | 2 - openstack/message/v2/queue.py | 2 - openstack/message/v2/subscription.py | 2 - openstack/message/version.py | 4 - openstack/network/network_service.py | 14 +- openstack/network/v2/address_scope.py | 2 - openstack/network/v2/agent.py | 4 - .../network/v2/auto_allocated_topology.py | 2 - openstack/network/v2/availability_zone.py | 2 - openstack/network/v2/extension.py | 2 - openstack/network/v2/firewall_group.py | 2 - openstack/network/v2/firewall_policy.py | 2 - openstack/network/v2/firewall_rule.py | 2 - openstack/network/v2/flavor.py | 2 - openstack/network/v2/floating_ip.py | 2 - openstack/network/v2/health_monitor.py | 2 - openstack/network/v2/listener.py | 2 - openstack/network/v2/load_balancer.py | 2 - openstack/network/v2/metering_label.py | 2 - openstack/network/v2/metering_label_rule.py | 2 - openstack/network/v2/network.py | 3 - .../network/v2/network_ip_availability.py | 2 - openstack/network/v2/pool.py | 2 - openstack/network/v2/pool_member.py | 2 - openstack/network/v2/port.py | 2 - .../network/v2/qos_bandwidth_limit_rule.py | 2 - openstack/network/v2/qos_dscp_marking_rule.py | 2 - .../network/v2/qos_minimum_bandwidth_rule.py | 2 - openstack/network/v2/qos_policy.py | 2 - openstack/network/v2/qos_rule_type.py | 2 - openstack/network/v2/quota.py | 2 - openstack/network/v2/rbac_policy.py | 2 - openstack/network/v2/router.py | 3 - openstack/network/v2/security_group.py | 2 - openstack/network/v2/security_group_rule.py | 2 - openstack/network/v2/segment.py | 2 - openstack/network/v2/service_profile.py | 2 - openstack/network/v2/service_provider.py | 2 - openstack/network/v2/subnet.py | 2 - openstack/network/v2/subnet_pool.py | 2 - openstack/network/v2/trunk.py | 2 - openstack/network/v2/vpn_service.py | 2 - openstack/network/version.py | 4 - .../object_store/object_store_service.py | 14 +- openstack/object_store/v1/_base.py | 2 - openstack/object_store/v1/obj.py | 2 - .../orchestration/orchestration_service.py | 17 +- openstack/orchestration/v1/resource.py | 2 - openstack/orchestration/v1/software_config.py | 2 - .../orchestration/v1/software_deployment.py | 2 - openstack/orchestration/v1/stack.py | 2 - .../orchestration/v1/stack_environment.py | 2 - openstack/orchestration/v1/stack_files.py | 2 - openstack/orchestration/v1/stack_template.py | 2 - openstack/orchestration/v1/template.py | 2 - openstack/orchestration/version.py | 4 - openstack/service_description.py | 157 ++++++++------ openstack/service_filter.py | 199 ------------------ .../unit/baremetal/test_baremetal_service.py | 28 --- .../tests/unit/baremetal/test_version.py | 1 - .../tests/unit/baremetal/v1/test_chassis.py | 2 - .../tests/unit/baremetal/v1/test_driver.py | 1 - .../tests/unit/baremetal/v1/test_node.py | 2 - .../tests/unit/baremetal/v1/test_port.py | 2 - .../unit/baremetal/v1/test_port_group.py | 2 - .../test_block_storage_service.py | 28 --- .../unit/block_storage/v2/test_snapshot.py | 1 - .../tests/unit/block_storage/v2/test_type.py | 1 - .../unit/block_storage/v2/test_volume.py | 1 - .../tests/unit/block_store/v2/test_stats.py | 1 - .../tests/unit/cloud/test_operator_noauth.py | 117 +++++++++- .../unit/clustering/test_cluster_service.py | 28 --- .../tests/unit/clustering/test_version.py | 1 - .../tests/unit/clustering/v1/test_action.py | 1 - .../unit/clustering/v1/test_build_info.py | 1 - .../tests/unit/clustering/v1/test_cluster.py | 1 - .../unit/clustering/v1/test_cluster_attr.py | 1 - .../unit/clustering/v1/test_cluster_policy.py | 1 - .../tests/unit/clustering/v1/test_event.py | 1 - .../tests/unit/clustering/v1/test_node.py | 1 - .../tests/unit/clustering/v1/test_policy.py | 2 - .../unit/clustering/v1/test_policy_type.py | 1 - .../tests/unit/clustering/v1/test_profile.py | 2 - .../unit/clustering/v1/test_profile_type.py | 1 - .../tests/unit/clustering/v1/test_receiver.py | 1 - .../tests/unit/clustering/v1/test_service.py | 1 - .../unit/compute/test_compute_service.py | 28 --- openstack/tests/unit/compute/test_version.py | 1 - .../unit/compute/v2/test_availability_zone.py | 2 - .../tests/unit/compute/v2/test_extension.py | 1 - .../tests/unit/compute/v2/test_flavor.py | 2 - .../tests/unit/compute/v2/test_hypervisor.py | 2 - openstack/tests/unit/compute/v2/test_image.py | 2 - .../tests/unit/compute/v2/test_keypair.py | 1 - .../tests/unit/compute/v2/test_limits.py | 2 - .../tests/unit/compute/v2/test_server.py | 2 - .../unit/compute/v2/test_server_group.py | 1 - .../unit/compute/v2/test_server_interface.py | 1 - .../tests/unit/compute/v2/test_server_ip.py | 1 - .../tests/unit/compute/v2/test_service.py | 1 - .../unit/compute/v2/test_volume_attachment.py | 1 - .../unit/database/test_database_service.py | 28 --- .../tests/unit/database/v1/test_database.py | 1 - .../tests/unit/database/v1/test_flavor.py | 1 - .../tests/unit/database/v1/test_instance.py | 1 - openstack/tests/unit/database/v1/test_user.py | 1 - .../unit/identity/test_identity_service.py | 37 ---- openstack/tests/unit/identity/test_version.py | 1 - .../tests/unit/identity/v2/test_extension.py | 1 - openstack/tests/unit/identity/v2/test_role.py | 1 - .../tests/unit/identity/v2/test_tenant.py | 1 - openstack/tests/unit/identity/v2/test_user.py | 1 - .../tests/unit/identity/v3/test_credential.py | 1 - .../tests/unit/identity/v3/test_domain.py | 1 - .../tests/unit/identity/v3/test_endpoint.py | 1 - .../tests/unit/identity/v3/test_group.py | 1 - .../tests/unit/identity/v3/test_policy.py | 1 - .../tests/unit/identity/v3/test_project.py | 2 - .../tests/unit/identity/v3/test_region.py | 1 - openstack/tests/unit/identity/v3/test_role.py | 1 - .../unit/identity/v3/test_role_assignment.py | 1 - .../v3/test_role_domain_group_assignment.py | 1 - .../v3/test_role_domain_user_assignment.py | 1 - .../v3/test_role_project_group_assignment.py | 1 - .../v3/test_role_project_user_assignment.py | 1 - .../tests/unit/identity/v3/test_service.py | 1 - .../tests/unit/identity/v3/test_trust.py | 1 - openstack/tests/unit/identity/v3/test_user.py | 1 - .../tests/unit/image/test_image_service.py | 30 --- openstack/tests/unit/image/v1/test_image.py | 1 - openstack/tests/unit/image/v2/test_image.py | 1 - openstack/tests/unit/image/v2/test_member.py | 1 - .../instance_ha/test_instance_ha_service.py | 30 --- .../tests/unit/instance_ha/v1/test_host.py | 1 - .../unit/instance_ha/v1/test_notification.py | 1 - .../tests/unit/instance_ha/v1/test_segment.py | 1 - .../test_key_management_service.py | 28 --- .../unit/key_manager/v1/test_container.py | 1 - .../tests/unit/key_manager/v1/test_order.py | 1 - .../tests/unit/key_manager/v1/test_secret.py | 1 - .../unit/load_balancer/test_health_monitor.py | 3 +- .../tests/unit/load_balancer/test_l7policy.py | 3 +- .../tests/unit/load_balancer/test_l7rule.py | 3 +- .../tests/unit/load_balancer/test_listener.py | 3 +- .../unit/load_balancer/test_load_balancer.py | 8 +- .../test_load_balancer_service.py | 28 --- .../tests/unit/load_balancer/test_member.py | 3 +- .../tests/unit/load_balancer/test_pool.py | 4 +- .../tests/unit/load_balancer/test_version.py | 1 - .../unit/message/test_message_service.py | 28 --- openstack/tests/unit/message/test_version.py | 1 - openstack/tests/unit/message/v2/test_claim.py | 1 - .../tests/unit/message/v2/test_message.py | 1 - openstack/tests/unit/message/v2/test_queue.py | 1 - .../unit/message/v2/test_subscription.py | 1 - .../unit/network/test_network_service.py | 28 --- openstack/tests/unit/network/test_version.py | 1 - .../unit/network/v2/test_address_scope.py | 1 - openstack/tests/unit/network/v2/test_agent.py | 3 - .../unit/network/v2/test_availability_zone.py | 1 - .../tests/unit/network/v2/test_extension.py | 1 - .../unit/network/v2/test_firewall_group.py | 1 - .../unit/network/v2/test_firewall_policy.py | 1 - .../unit/network/v2/test_firewall_rule.py | 1 - .../tests/unit/network/v2/test_flavor.py | 1 - .../tests/unit/network/v2/test_floating_ip.py | 1 - .../unit/network/v2/test_health_monitor.py | 1 - .../tests/unit/network/v2/test_listener.py | 1 - .../unit/network/v2/test_load_balancer.py | 1 - .../unit/network/v2/test_metering_label.py | 1 - .../network/v2/test_metering_label_rule.py | 1 - .../tests/unit/network/v2/test_network.py | 2 - .../v2/test_network_ip_availability.py | 1 - openstack/tests/unit/network/v2/test_pool.py | 1 - .../tests/unit/network/v2/test_pool_member.py | 1 - openstack/tests/unit/network/v2/test_port.py | 1 - .../v2/test_qos_bandwidth_limit_rule.py | 1 - .../network/v2/test_qos_dscp_marking_rule.py | 1 - .../v2/test_qos_minimum_bandwidth_rule.py | 1 - .../tests/unit/network/v2/test_qos_policy.py | 1 - .../unit/network/v2/test_qos_rule_type.py | 1 - openstack/tests/unit/network/v2/test_quota.py | 2 - .../tests/unit/network/v2/test_rbac_policy.py | 1 - .../tests/unit/network/v2/test_router.py | 2 - .../unit/network/v2/test_security_group.py | 1 - .../network/v2/test_security_group_rule.py | 1 - .../tests/unit/network/v2/test_segment.py | 1 - .../unit/network/v2/test_service_provider.py | 1 - .../tests/unit/network/v2/test_subnet.py | 1 - .../tests/unit/network/v2/test_subnet_pool.py | 1 - openstack/tests/unit/network/v2/test_trunk.py | 1 - .../tests/unit/network/v2/test_vpn_service.py | 2 +- .../object_store/test_object_store_service.py | 28 --- .../unit/object_store/v1/test_account.py | 1 - .../unit/object_store/v1/test_container.py | 1 - .../tests/unit/object_store/v1/test_obj.py | 1 - .../test_orchestration_service.py | 29 --- .../tests/unit/orchestration/test_version.py | 1 - .../unit/orchestration/v1/test_resource.py | 1 - .../orchestration/v1/test_software_config.py | 1 - .../v1/test_software_deployment.py | 1 - .../tests/unit/orchestration/v1/test_stack.py | 1 - .../v1/test_stack_environment.py | 1 - .../unit/orchestration/v1/test_stack_files.py | 2 - .../orchestration/v1/test_stack_template.py | 1 - .../unit/orchestration/v1/test_template.py | 1 - openstack/tests/unit/test_connection.py | 56 +++-- openstack/tests/unit/test_service_filter.py | 41 ---- .../tests/unit/workflow/test_execution.py | 1 - openstack/tests/unit/workflow/test_version.py | 1 - .../tests/unit/workflow/test_workflow.py | 1 - .../unit/workflow/test_workflow_service.py | 28 --- openstack/workflow/v2/execution.py | 2 - openstack/workflow/v2/workflow.py | 2 - openstack/workflow/version.py | 4 - openstack/workflow/workflow_service.py | 16 +- requirements.txt | 2 +- 318 files changed, 421 insertions(+), 1441 deletions(-) create mode 100644 doc/source/user/service_description.rst delete mode 100644 doc/source/user/service_filter.rst delete mode 100644 openstack/service_filter.py delete mode 100644 openstack/tests/unit/baremetal/test_baremetal_service.py delete mode 100644 openstack/tests/unit/block_storage/test_block_storage_service.py delete mode 100644 openstack/tests/unit/clustering/test_cluster_service.py delete mode 100644 openstack/tests/unit/compute/test_compute_service.py delete mode 100644 openstack/tests/unit/database/test_database_service.py delete mode 100644 openstack/tests/unit/identity/test_identity_service.py delete mode 100644 openstack/tests/unit/image/test_image_service.py delete mode 100644 openstack/tests/unit/instance_ha/test_instance_ha_service.py delete mode 100644 openstack/tests/unit/key_manager/test_key_management_service.py delete mode 100644 openstack/tests/unit/load_balancer/test_load_balancer_service.py delete mode 100644 openstack/tests/unit/message/test_message_service.py delete mode 100644 openstack/tests/unit/network/test_network_service.py delete mode 100644 openstack/tests/unit/object_store/test_object_store_service.py delete mode 100644 openstack/tests/unit/orchestration/test_orchestration_service.py delete mode 100644 openstack/tests/unit/test_service_filter.py delete mode 100644 openstack/tests/unit/workflow/test_workflow_service.py diff --git a/SHADE-MERGE-TODO.rst b/SHADE-MERGE-TODO.rst index 15c266d4c..e34d87810 100644 --- a/SHADE-MERGE-TODO.rst +++ b/SHADE-MERGE-TODO.rst @@ -34,7 +34,7 @@ already. For reference, those are: servers = conn.list_servers() # High-level resource interface from shade servers = conn.compute.servers() # SDK Service/Object Interface response = conn.compute.get('/servers') # REST passthrough - +* Removed ServiceFilter and the various Service objects in favor of discovery. Next steps ========== @@ -44,8 +44,6 @@ Next steps mean anything to people. * Migrate unit tests to requests-mock instead of mocking python calls to session. -* Investigate removing ServiceFilter and the various Service objects if an - acceptable plan can be found for using discovery. * Replace _prepare_request with requests.Session.prepare_request. shade integration diff --git a/doc/source/contributor/create/examples/resource/fake.py b/doc/source/contributor/create/examples/resource/fake.py index d73a4f07b..b02175c12 100644 --- a/doc/source/contributor/create/examples/resource/fake.py +++ b/doc/source/contributor/create/examples/resource/fake.py @@ -1,6 +1,5 @@ # Apache 2 header omitted for brevity -from openstack.fake import fake_service from openstack import resource @@ -8,7 +7,6 @@ class Fake(resource.Resource): resource_key = "resource" resources_key = "resources" base_path = "/fake" - service = fake_service.FakeService() allow_create = True allow_fetch = True diff --git a/doc/source/contributor/create/examples/resource/fake_service.py b/doc/source/contributor/create/examples/resource/fake_service.py index 9524b967d..34000b986 100644 --- a/doc/source/contributor/create/examples/resource/fake_service.py +++ b/doc/source/contributor/create/examples/resource/fake_service.py @@ -1,13 +1,12 @@ # Apache 2 header omitted for brevity -from openstack import service_filter +from openstack import service_description +from openstack.fake.v2 import _proxy as _proxy_v2 -class FakeService(service_filter.ServiceFilter): +class FakeService(service_description.ServiceDescription): """The fake service.""" - valid_versions = [service_filter.ValidVersion('v2')] - - def __init__(self, version=None): - """Create a fake service.""" - super(FakeService, self).__init__(service_type='fake', version=version) + supported_versions = { + '2': _proxy_v2.Proxy, + } diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst index e88e7e298..d0eeb6b65 100644 --- a/doc/source/user/index.rst +++ b/doc/source/user/index.rst @@ -148,7 +148,7 @@ can be customized. :maxdepth: 1 resource - service_filter + service_description utils Presentations diff --git a/doc/source/user/service_description.rst b/doc/source/user/service_description.rst new file mode 100644 index 000000000..3eeeb4a7a --- /dev/null +++ b/doc/source/user/service_description.rst @@ -0,0 +1,10 @@ +ServiceDescription +================== +.. automodule:: openstack.service_description + + +ServiceDescription object +------------------------- + +.. autoclass:: openstack.service_description.ServiceDescription + :members: diff --git a/doc/source/user/service_filter.rst b/doc/source/user/service_filter.rst deleted file mode 100644 index a58177f25..000000000 --- a/doc/source/user/service_filter.rst +++ /dev/null @@ -1,10 +0,0 @@ -ServiceFilter -============= -.. automodule:: openstack.service_filter - - -ServiceFilter object --------------------- - -.. autoclass:: openstack.service_filter.ServiceFilter - :members: diff --git a/lower-constraints.txt b/lower-constraints.txt index 2842cdfd0..59dee61ee 100644 --- a/lower-constraints.txt +++ b/lower-constraints.txt @@ -14,7 +14,7 @@ jmespath==0.9.0 jsonpatch==1.16 jsonpointer==1.13 jsonschema==2.6.0 -keystoneauth1==3.8.0 +keystoneauth1==3.11.0 linecache2==1.0.0 mock==2.0.0 mox3==0.20.0 diff --git a/openstack/_meta/connection.py b/openstack/_meta/connection.py index 6511e9683..61db44b0c 100644 --- a/openstack/_meta/connection.py +++ b/openstack/_meta/connection.py @@ -18,7 +18,6 @@ import warnings import os_service_types from openstack import _log -from openstack import proxy from openstack import service_description _logger = _log.setup_logging('openstack') @@ -43,28 +42,28 @@ class ConnectionMeta(type): # from openstacksdk. The credentials API calls are all calls # on identity endpoints. continue - desc_class = service_description.ServiceDescription - service_filter_class = _find_service_filter_class(service_type) + desc_class = _find_service_description_class(service_type) descriptor_args = {'service_type': service_type} - if service_filter_class: - desc_class = service_description.OpenStackServiceDescription - descriptor_args['service_filter_class'] = service_filter_class - class_names = service_filter_class._get_proxy_class_names() - if len(class_names) == 1: - doc = _DOC_TEMPLATE.format( - class_name="{service_type} Proxy <{name}>".format( - service_type=service_type, name=class_names[0]), - **service) - else: - class_doc_strings = "\n".join([ - ":class:`{class_name}`".format(class_name=class_name) - for class_name in class_names]) - doc = _PROXY_TEMPLATE.format( - class_doc_strings=class_doc_strings, **service) - else: - descriptor_args['proxy_class'] = proxy.Proxy + + if not desc_class.supported_versions: doc = _DOC_TEMPLATE.format( - class_name='~openstack.proxy.Proxy', **service) + class_name="{service_type} Proxy".format( + service_type=service_type), + **service) + elif len(desc_class.supported_versions) == 1: + supported_version = list( + desc_class.supported_versions.keys())[0] + doc = _DOC_TEMPLATE.format( + class_name="{service_type} Proxy <{name}>".format( + service_type=service_type, name=supported_version), + **service) + else: + class_doc_strings = "\n".join([ + ":class:`{class_name}`".format( + class_name=proxy_class.__name__) + for proxy_class in desc_class.supported_versions.values()]) + doc = _PROXY_TEMPLATE.format( + class_doc_strings=class_doc_strings, **service) descriptor = desc_class(**descriptor_args) descriptor.__doc__ = doc st = service_type.replace('-', '_') @@ -103,7 +102,7 @@ def _get_aliases(service_type, aliases=None): return all_types -def _find_service_filter_class(service_type): +def _find_service_description_class(service_type): package_name = 'openstack.{service_type}'.format( service_type=service_type).replace('-', '_') module_name = service_type.replace('-', '_') + '_service' @@ -111,17 +110,17 @@ def _find_service_filter_class(service_type): [part.capitalize() for part in module_name.split('_')]) try: import_name = '.'.join([package_name, module_name]) - service_filter_module = importlib.import_module(import_name) + service_description_module = importlib.import_module(import_name) except ImportError as e: # ImportWarning is ignored by default. This warning is here # as an opt-in for people trying to figure out why something # didn't work. warnings.warn( - "Could not import {service_type} service filter: {e}".format( + "Could not import {service_type} service description: {e}".format( service_type=service_type, e=str(e)), ImportWarning) - return None + return service_description.ServiceDescription # There are no cases in which we should have a module but not the class # inside it. - service_filter_class = getattr(service_filter_module, class_name) - return service_filter_class + service_description_class = getattr(service_description_module, class_name) + return service_description_class diff --git a/openstack/baremetal/baremetal_service.py b/openstack/baremetal/baremetal_service.py index 9853be081..0b0cb818a 100644 --- a/openstack/baremetal/baremetal_service.py +++ b/openstack/baremetal/baremetal_service.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack import service_description +from openstack.baremetal.v1 import _proxy -class BaremetalService(service_filter.ServiceFilter): +class BaremetalService(service_description.ServiceDescription): """The bare metal service.""" - valid_versions = [service_filter.ValidVersion('v1')] - - def __init__(self, version=None): - """Create a bare metal service.""" - super(BaremetalService, self).__init__(service_type='baremetal', - version=version) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/baremetal/v1/chassis.py b/openstack/baremetal/v1/chassis.py index ffe22ebc6..eb9842f5b 100644 --- a/openstack/baremetal/v1/chassis.py +++ b/openstack/baremetal/v1/chassis.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.baremetal import baremetal_service from openstack import resource @@ -18,7 +17,6 @@ class Chassis(resource.Resource): resources_key = 'chassis' base_path = '/chassis' - service = baremetal_service.BaremetalService() # capabilities allow_create = True diff --git a/openstack/baremetal/v1/driver.py b/openstack/baremetal/v1/driver.py index 63803127a..00a31954d 100644 --- a/openstack/baremetal/v1/driver.py +++ b/openstack/baremetal/v1/driver.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.baremetal import baremetal_service from openstack import resource @@ -18,7 +17,6 @@ class Driver(resource.Resource): resources_key = 'drivers' base_path = '/drivers' - service = baremetal_service.BaremetalService() # capabilities allow_create = False diff --git a/openstack/baremetal/v1/node.py b/openstack/baremetal/v1/node.py index 69779fae5..913301cc6 100644 --- a/openstack/baremetal/v1/node.py +++ b/openstack/baremetal/v1/node.py @@ -11,7 +11,6 @@ # under the License. from openstack import _log -from openstack.baremetal import baremetal_service from openstack.baremetal.v1 import _common from openstack import exceptions from openstack import resource @@ -39,7 +38,6 @@ class Node(resource.Resource): resources_key = 'nodes' base_path = '/nodes' - service = baremetal_service.BaremetalService() # capabilities allow_create = True diff --git a/openstack/baremetal/v1/port.py b/openstack/baremetal/v1/port.py index 871b97a2a..c05f1f7a5 100644 --- a/openstack/baremetal/v1/port.py +++ b/openstack/baremetal/v1/port.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.baremetal import baremetal_service from openstack import resource @@ -18,7 +17,6 @@ class Port(resource.Resource): resources_key = 'ports' base_path = '/ports' - service = baremetal_service.BaremetalService() # capabilities allow_create = True diff --git a/openstack/baremetal/v1/port_group.py b/openstack/baremetal/v1/port_group.py index dbee1d93f..6e587fe2d 100644 --- a/openstack/baremetal/v1/port_group.py +++ b/openstack/baremetal/v1/port_group.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.baremetal import baremetal_service from openstack import resource @@ -18,7 +17,6 @@ class PortGroup(resource.Resource): resources_key = 'portgroups' base_path = '/portgroups' - service = baremetal_service.BaremetalService() # capabilities allow_create = True diff --git a/openstack/baremetal/version.py b/openstack/baremetal/version.py index 1613fe43a..9311893e5 100644 --- a/openstack/baremetal/version.py +++ b/openstack/baremetal/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.baremetal import baremetal_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = baremetal_service.BaremetalService( - version=baremetal_service.BaremetalService.UNVERSIONED - ) # Capabilities allow_list = True diff --git a/openstack/block_storage/block_storage_service.py b/openstack/block_storage/block_storage_service.py index 7a8b99913..a4906298a 100644 --- a/openstack/block_storage/block_storage_service.py +++ b/openstack/block_storage/block_storage_service.py @@ -10,16 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.block_storage.v2 import _proxy +from openstack import service_description -class BlockStorageService(service_filter.ServiceFilter): +class BlockStorageService(service_description.ServiceDescription): """The block storage service.""" - valid_versions = [service_filter.ValidVersion('v2')] - - def __init__(self, version=None): - """Create a block storage service.""" - super(BlockStorageService, self).__init__( - service_type='block-storage', - version=version, requires_project_id=True) + supported_versions = { + '2': _proxy.Proxy, + } diff --git a/openstack/block_storage/v2/snapshot.py b/openstack/block_storage/v2/snapshot.py index 9b5b91f66..d9137934c 100644 --- a/openstack/block_storage/v2/snapshot.py +++ b/openstack/block_storage/v2/snapshot.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.block_storage import block_storage_service from openstack import format from openstack import resource @@ -19,7 +18,6 @@ class Snapshot(resource.Resource): resource_key = "snapshot" resources_key = "snapshots" base_path = "/snapshots" - service = block_storage_service.BlockStorageService() _query_mapping = resource.QueryParameters( 'all_tenants', 'name', 'status', 'volume_id') diff --git a/openstack/block_storage/v2/stats.py b/openstack/block_storage/v2/stats.py index 5a3f6ae3f..dcd2e2945 100644 --- a/openstack/block_storage/v2/stats.py +++ b/openstack/block_storage/v2/stats.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.block_storage import block_storage_service from openstack import resource @@ -18,7 +17,6 @@ class Pools(resource.Resource): resource_key = "pool" resources_key = "pools" base_path = "/scheduler-stats/get_pools?detail=True" - service = block_storage_service.BlockStorageService() # capabilities allow_fetch = False diff --git a/openstack/block_storage/v2/type.py b/openstack/block_storage/v2/type.py index d57d31853..db0726051 100644 --- a/openstack/block_storage/v2/type.py +++ b/openstack/block_storage/v2/type.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.block_storage import block_storage_service from openstack import resource @@ -18,7 +17,6 @@ class Type(resource.Resource): resource_key = "volume_type" resources_key = "volume_types" base_path = "/types" - service = block_storage_service.BlockStorageService() # capabilities allow_fetch = True diff --git a/openstack/block_storage/v2/volume.py b/openstack/block_storage/v2/volume.py index 04a05d963..4402e624f 100644 --- a/openstack/block_storage/v2/volume.py +++ b/openstack/block_storage/v2/volume.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.block_storage import block_storage_service from openstack import format from openstack import resource @@ -19,7 +18,6 @@ class Volume(resource.Resource): resource_key = "volume" resources_key = "volumes" base_path = "/volumes" - service = block_storage_service.BlockStorageService() _query_mapping = resource.QueryParameters( 'all_tenants', 'name', 'status', 'project_id') diff --git a/openstack/clustering/clustering_service.py b/openstack/clustering/clustering_service.py index 0d5e57e4a..5920fe50a 100644 --- a/openstack/clustering/clustering_service.py +++ b/openstack/clustering/clustering_service.py @@ -10,18 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.clustering.v1 import _proxy +from openstack import service_description -class ClusteringService(service_filter.ServiceFilter): +class ClusteringService(service_description.ServiceDescription): """The clustering service.""" - valid_versions = [service_filter.ValidVersion('v1')] - UNVERSIONED = None - - def __init__(self, version=None): - """Create a clustering service.""" - super(ClusteringService, self).__init__( - service_type='clustering', - version=version - ) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/clustering/v1/action.py b/openstack/clustering/v1/action.py index 79c5d4edc..2bfdf9de0 100644 --- a/openstack/clustering/v1/action.py +++ b/openstack/clustering/v1/action.py @@ -11,7 +11,6 @@ # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -19,7 +18,6 @@ class Action(resource.Resource): resource_key = 'action' resources_key = 'actions' base_path = '/actions' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/build_info.py b/openstack/clustering/v1/build_info.py index 705f4065c..a031fac13 100644 --- a/openstack/clustering/v1/build_info.py +++ b/openstack/clustering/v1/build_info.py @@ -10,14 +10,12 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource class BuildInfo(resource.Resource): base_path = '/build-info' resource_key = 'build_info' - service = clustering_service.ClusteringService() # Capabilities allow_fetch = True diff --git a/openstack/clustering/v1/cluster.py b/openstack/clustering/v1/cluster.py index e8ab4c969..26e22cd2f 100644 --- a/openstack/clustering/v1/cluster.py +++ b/openstack/clustering/v1/cluster.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Cluster(resource.Resource): resource_key = 'cluster' resources_key = 'clusters' base_path = '/clusters' - service = clustering_service.ClusteringService() # capabilities allow_create = True diff --git a/openstack/clustering/v1/cluster_attr.py b/openstack/clustering/v1/cluster_attr.py index 68e1f53f8..1ca1aaf1e 100644 --- a/openstack/clustering/v1/cluster_attr.py +++ b/openstack/clustering/v1/cluster_attr.py @@ -10,14 +10,12 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource class ClusterAttr(resource.Resource): resources_key = 'cluster_attributes' base_path = '/clusters/%(cluster_id)s/attrs/%(path)s' - service = clustering_service.ClusteringService() # capabilities allow_list = True diff --git a/openstack/clustering/v1/cluster_policy.py b/openstack/clustering/v1/cluster_policy.py index 6e430cc5f..f9af351c7 100644 --- a/openstack/clustering/v1/cluster_policy.py +++ b/openstack/clustering/v1/cluster_policy.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -18,7 +17,6 @@ class ClusterPolicy(resource.Resource): resource_key = 'cluster_policy' resources_key = 'cluster_policies' base_path = '/clusters/%(cluster_id)s/policies' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/event.py b/openstack/clustering/v1/event.py index d187fa69c..cd556257c 100644 --- a/openstack/clustering/v1/event.py +++ b/openstack/clustering/v1/event.py @@ -11,7 +11,6 @@ # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -19,7 +18,6 @@ class Event(resource.Resource): resource_key = 'event' resources_key = 'events' base_path = '/events' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/node.py b/openstack/clustering/v1/node.py index 655e3a959..cf9fe05e2 100644 --- a/openstack/clustering/v1/node.py +++ b/openstack/clustering/v1/node.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Node(resource.Resource): resource_key = 'node' resources_key = 'nodes' base_path = '/nodes' - service = clustering_service.ClusteringService() # capabilities allow_create = True diff --git a/openstack/clustering/v1/policy.py b/openstack/clustering/v1/policy.py index be98984f7..f6e8111f5 100644 --- a/openstack/clustering/v1/policy.py +++ b/openstack/clustering/v1/policy.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -18,7 +17,6 @@ class Policy(resource.Resource): resource_key = 'policy' resources_key = 'policies' base_path = '/policies' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/policy_type.py b/openstack/clustering/v1/policy_type.py index bd2bdd490..96bf477f8 100644 --- a/openstack/clustering/v1/policy_type.py +++ b/openstack/clustering/v1/policy_type.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -18,7 +17,6 @@ class PolicyType(resource.Resource): resource_key = 'policy_type' resources_key = 'policy_types' base_path = '/policy-types' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/profile.py b/openstack/clustering/v1/profile.py index 77f117dde..595de3946 100644 --- a/openstack/clustering/v1/profile.py +++ b/openstack/clustering/v1/profile.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -18,7 +17,6 @@ class Profile(resource.Resource): resource_key = 'profile' resources_key = 'profiles' base_path = '/profiles' - service = clustering_service.ClusteringService() # capabilities allow_create = True diff --git a/openstack/clustering/v1/profile_type.py b/openstack/clustering/v1/profile_type.py index f2b7ad88f..de6452502 100644 --- a/openstack/clustering/v1/profile_type.py +++ b/openstack/clustering/v1/profile_type.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class ProfileType(resource.Resource): resource_key = 'profile_type' resources_key = 'profile_types' base_path = '/profile-types' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/receiver.py b/openstack/clustering/v1/receiver.py index d42d7a48d..95faa06c9 100644 --- a/openstack/clustering/v1/receiver.py +++ b/openstack/clustering/v1/receiver.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -18,7 +17,6 @@ class Receiver(resource.Resource): resource_key = 'receiver' resources_key = 'receivers' base_path = '/receivers' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/v1/service.py b/openstack/clustering/v1/service.py index d9de49687..52f380298 100644 --- a/openstack/clustering/v1/service.py +++ b/openstack/clustering/v1/service.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -18,7 +17,6 @@ class Service(resource.Resource): resource_key = 'service' resources_key = 'services' base_path = '/services' - service = clustering_service.ClusteringService() # Capabilities allow_list = True diff --git a/openstack/clustering/version.py b/openstack/clustering/version.py index 8fc20902b..692230a19 100644 --- a/openstack/clustering/version.py +++ b/openstack/clustering/version.py @@ -11,7 +11,6 @@ # under the License. -from openstack.clustering import clustering_service from openstack import resource @@ -19,9 +18,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = clustering_service.ClusteringService( - version=clustering_service.ClusteringService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/compute/compute_service.py b/openstack/compute/compute_service.py index 64c8bd9e0..2204f04d4 100644 --- a/openstack/compute/compute_service.py +++ b/openstack/compute/compute_service.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack import service_description +from openstack.compute.v2 import _proxy -class ComputeService(service_filter.ServiceFilter): +class ComputeService(service_description.ServiceDescription): """The compute service.""" - valid_versions = [service_filter.ValidVersion('v2')] - - def __init__(self, version=None): - """Create a compute service.""" - super(ComputeService, self).__init__(service_type='compute', - version=version) + supported_versions = { + '2': _proxy.Proxy + } diff --git a/openstack/compute/v2/availability_zone.py b/openstack/compute/v2/availability_zone.py index 5727d4825..0238dd435 100644 --- a/openstack/compute/v2/availability_zone.py +++ b/openstack/compute/v2/availability_zone.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,8 +17,6 @@ class AvailabilityZone(resource.Resource): resources_key = 'availabilityZoneInfo' base_path = '/os-availability-zone' - service = compute_service.ComputeService() - # capabilities allow_list = True diff --git a/openstack/compute/v2/extension.py b/openstack/compute/v2/extension.py index a12f22efb..4b19b0934 100644 --- a/openstack/compute/v2/extension.py +++ b/openstack/compute/v2/extension.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,7 +17,6 @@ class Extension(resource.Resource): resource_key = 'extension' resources_key = 'extensions' base_path = '/extensions' - service = compute_service.ComputeService() id_attribute = "alias" # capabilities diff --git a/openstack/compute/v2/flavor.py b/openstack/compute/v2/flavor.py index 14920403a..7128e9d1c 100644 --- a/openstack/compute/v2/flavor.py +++ b/openstack/compute/v2/flavor.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,7 +17,6 @@ class Flavor(resource.Resource): resource_key = 'flavor' resources_key = 'flavors' base_path = '/flavors' - service = compute_service.ComputeService() # capabilities allow_create = True diff --git a/openstack/compute/v2/hypervisor.py b/openstack/compute/v2/hypervisor.py index 2f49f5a3c..50d5ae64c 100644 --- a/openstack/compute/v2/hypervisor.py +++ b/openstack/compute/v2/hypervisor.py @@ -11,7 +11,6 @@ # under the License. -from openstack.compute import compute_service from openstack import resource @@ -20,8 +19,6 @@ class Hypervisor(resource.Resource): resources_key = 'hypervisors' base_path = '/os-hypervisors' - service = compute_service.ComputeService() - # capabilities allow_fetch = True allow_list = True diff --git a/openstack/compute/v2/image.py b/openstack/compute/v2/image.py index 44c037a68..ed6a1682b 100644 --- a/openstack/compute/v2/image.py +++ b/openstack/compute/v2/image.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack.compute.v2 import metadata from openstack import resource @@ -19,7 +18,6 @@ class Image(resource.Resource, metadata.MetadataMixin): resource_key = 'image' resources_key = 'images' base_path = '/images' - service = compute_service.ComputeService() # capabilities allow_fetch = True diff --git a/openstack/compute/v2/keypair.py b/openstack/compute/v2/keypair.py index a1fb16e16..51109632c 100644 --- a/openstack/compute/v2/keypair.py +++ b/openstack/compute/v2/keypair.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,7 +17,6 @@ class Keypair(resource.Resource): resource_key = 'keypair' resources_key = 'keypairs' base_path = '/os-keypairs' - service = compute_service.ComputeService() # capabilities allow_create = True diff --git a/openstack/compute/v2/limits.py b/openstack/compute/v2/limits.py index 1dc92bb15..b08b29219 100644 --- a/openstack/compute/v2/limits.py +++ b/openstack/compute/v2/limits.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -71,7 +70,6 @@ class RateLimit(resource.Resource): class Limits(resource.Resource): base_path = "/limits" resource_key = "limits" - service = compute_service.ComputeService() allow_fetch = True diff --git a/openstack/compute/v2/server.py b/openstack/compute/v2/server.py index f1b14771f..17b155853 100644 --- a/openstack/compute/v2/server.py +++ b/openstack/compute/v2/server.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack.compute.v2 import metadata from openstack import resource from openstack import utils @@ -20,7 +19,6 @@ class Server(resource.Resource, metadata.MetadataMixin): resource_key = 'server' resources_key = 'servers' base_path = '/servers' - service = compute_service.ComputeService() # capabilities allow_create = True @@ -189,7 +187,7 @@ class Server(resource.Resource, metadata.MetadataMixin): def get_password(self, session): """Get the encrypted administrator password.""" url = utils.urljoin(Server.base_path, self.id, 'os-server-password') - return session.get(url, endpoint_filter=self.service) + return session.get(url) def reboot(self, session, reboot_type): """Reboot server where reboot_type might be 'SOFT' or 'HARD'.""" diff --git a/openstack/compute/v2/server_group.py b/openstack/compute/v2/server_group.py index 18a211358..4e3e4a4ba 100644 --- a/openstack/compute/v2/server_group.py +++ b/openstack/compute/v2/server_group.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,7 +17,6 @@ class ServerGroup(resource.Resource): resource_key = 'server_group' resources_key = 'server_groups' base_path = '/os-server-groups' - service = compute_service.ComputeService() _query_mapping = resource.QueryParameters("all_projects") diff --git a/openstack/compute/v2/server_interface.py b/openstack/compute/v2/server_interface.py index 0a2750fc2..f12213c54 100644 --- a/openstack/compute/v2/server_interface.py +++ b/openstack/compute/v2/server_interface.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,7 +17,6 @@ class ServerInterface(resource.Resource): resource_key = 'interfaceAttachment' resources_key = 'interfaceAttachments' base_path = '/servers/%(server_id)s/os-interface' - service = compute_service.ComputeService() # capabilities allow_create = True diff --git a/openstack/compute/v2/server_ip.py b/openstack/compute/v2/server_ip.py index 4c797a68a..bc868fb6c 100644 --- a/openstack/compute/v2/server_ip.py +++ b/openstack/compute/v2/server_ip.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource from openstack import utils @@ -18,7 +17,6 @@ from openstack import utils class ServerIP(resource.Resource): resources_key = 'addresses' base_path = '/servers/%(server_id)s/ips' - service = compute_service.ComputeService() # capabilities allow_list = True diff --git a/openstack/compute/v2/service.py b/openstack/compute/v2/service.py index 78d0735c6..f13cac1c4 100644 --- a/openstack/compute/v2/service.py +++ b/openstack/compute/v2/service.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource from openstack import utils @@ -20,8 +19,6 @@ class Service(resource.Resource): resources_key = 'services' base_path = '/os-services' - service = compute_service.ComputeService() - # capabilities allow_list = True allow_commit = True diff --git a/openstack/compute/v2/volume_attachment.py b/openstack/compute/v2/volume_attachment.py index 982ae42b0..750a62a58 100644 --- a/openstack/compute/v2/volume_attachment.py +++ b/openstack/compute/v2/volume_attachment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,7 +17,6 @@ class VolumeAttachment(resource.Resource): resource_key = 'volumeAttachment' resources_key = 'volumeAttachments' base_path = '/servers/%(server_id)s/os-volume_attachments' - service = compute_service.ComputeService() # capabilities allow_create = True diff --git a/openstack/compute/version.py b/openstack/compute/version.py index d1230260a..f78d3addd 100644 --- a/openstack/compute/version.py +++ b/openstack/compute/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.compute import compute_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = compute_service.ComputeService( - version=compute_service.ComputeService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/config/cloud_region.py b/openstack/config/cloud_region.py index 24b9ab789..32902bcf7 100644 --- a/openstack/config/cloud_region.py +++ b/openstack/config/cloud_region.py @@ -252,7 +252,13 @@ class CloudRegion(object): 'interface', service_type, fallback_to_unprefixed=True) def get_api_version(self, service_type): - return self._get_config('api_version', service_type) + version = self._get_config('api_version', service_type) + if version: + try: + float(version) + except ValueError: + return None + return version def get_default_microversion(self, service_type): return self._get_config('default_microversion', service_type) @@ -412,6 +418,20 @@ class CloudRegion(object): return version_request + def get_all_version_data(self, service_type): + # Seriously. Don't think about the existential crisis + # that is the next line. You'll wind up in cthulhu's lair. + service_type = self.get_service_type(service_type) + versions = self.get_session().get_all_version_data( + service_type=service_type, + interface=self.get_interface(service_type), + region_name=self.region_name, + ) + region_versions = versions.get(self.region_name, {}) + interface_versions = region_versions.get( + self.get_interface(service_type), {}) + return interface_versions.get(service_type, []) + def get_session_client( self, service_type, version=None, constructor=adapter.Adapter, **kwargs): @@ -436,8 +456,10 @@ class CloudRegion(object): self.get_status_code_retries(service_type)) endpoint_override = self.get_endpoint(service_type) version = version_request.version - min_api_version = version_request.min_api_version - max_api_version = version_request.max_api_version + min_api_version = ( + kwargs.pop('min_version', None) or version_request.min_api_version) + max_api_version = ( + kwargs.pop('max_version', None) or version_request.max_api_version) # Older neutron has inaccessible discovery document. Nobody noticed # because neutronclient hard-codes an append of v2.0. YAY! if service_type == 'network': diff --git a/openstack/database/database_service.py b/openstack/database/database_service.py index ced980534..e37f45715 100644 --- a/openstack/database/database_service.py +++ b/openstack/database/database_service.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.database.v1 import _proxy +from openstack import service_description -class DatabaseService(service_filter.ServiceFilter): +class DatabaseService(service_description.ServiceDescription): """The database service.""" - valid_versions = [service_filter.ValidVersion('v1')] - - def __init__(self, version=None): - """Create a database service.""" - super(DatabaseService, self).__init__(service_type='database', - version=version) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/database/v1/database.py b/openstack/database/v1/database.py index be46be803..7bf8eef8a 100644 --- a/openstack/database/v1/database.py +++ b/openstack/database/v1/database.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.database import database_service from openstack import resource @@ -18,7 +17,6 @@ class Database(resource.Resource): resource_key = 'database' resources_key = 'databases' base_path = '/instances/%(instance_id)s/databases' - service = database_service.DatabaseService() # capabilities allow_create = True diff --git a/openstack/database/v1/flavor.py b/openstack/database/v1/flavor.py index 10f78e3cc..64a9dd362 100644 --- a/openstack/database/v1/flavor.py +++ b/openstack/database/v1/flavor.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.database import database_service from openstack import resource @@ -18,7 +17,6 @@ class Flavor(resource.Resource): resource_key = 'flavor' resources_key = 'flavors' base_path = '/flavors' - service = database_service.DatabaseService() # capabilities allow_list = True diff --git a/openstack/database/v1/instance.py b/openstack/database/v1/instance.py index b0b8424c6..02c033bae 100644 --- a/openstack/database/v1/instance.py +++ b/openstack/database/v1/instance.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.database import database_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Instance(resource.Resource): resource_key = 'instance' resources_key = 'instances' base_path = '/instances' - service = database_service.DatabaseService() # capabilities allow_create = True diff --git a/openstack/database/v1/user.py b/openstack/database/v1/user.py index 2055544b9..c3a0d3d6e 100644 --- a/openstack/database/v1/user.py +++ b/openstack/database/v1/user.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.database import database_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class User(resource.Resource): resource_key = 'user' resources_key = 'users' base_path = '/instances/%(instance_id)s/users' - service = database_service.DatabaseService() # capabilities allow_create = True diff --git a/openstack/identity/identity_service.py b/openstack/identity/identity_service.py index 4bcfafa5b..df8051170 100644 --- a/openstack/identity/identity_service.py +++ b/openstack/identity/identity_service.py @@ -10,25 +10,15 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.identity.v2 import _proxy as _proxy_v2 +from openstack.identity.v3 import _proxy as _proxy_v3 +from openstack import service_description -class IdentityService(service_filter.ServiceFilter): +class IdentityService(service_description.ServiceDescription): """The identity service.""" - valid_versions = [ - service_filter.ValidVersion('v3'), - service_filter.ValidVersion('v2'), - ] - - def __init__(self, **kwargs): - """Create an identity service.""" - kwargs['service_type'] = 'identity' - super(IdentityService, self).__init__(**kwargs) - - -class AdminService(IdentityService): - - def __init__(self, **kwargs): - kwargs['interface'] = service_filter.ServiceFilter.ADMIN - super(AdminService, self).__init__(**kwargs) + supported_versions = { + '2': _proxy_v2.Proxy, + '3': _proxy_v3.Proxy, + } diff --git a/openstack/identity/v2/extension.py b/openstack/identity/v2/extension.py index 7f05fb747..153d6df91 100644 --- a/openstack/identity/v2/extension.py +++ b/openstack/identity/v2/extension.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Extension(resource.Resource): resource_key = 'extension' resources_key = 'extensions' base_path = '/extensions' - service = identity_service.IdentityService() # capabilities allow_list = True diff --git a/openstack/identity/v2/role.py b/openstack/identity/v2/role.py index 625c1413b..df27e5596 100644 --- a/openstack/identity/v2/role.py +++ b/openstack/identity/v2/role.py @@ -11,7 +11,6 @@ # under the License. from openstack import format -from openstack.identity import identity_service from openstack import resource @@ -19,7 +18,6 @@ class Role(resource.Resource): resource_key = 'role' resources_key = 'roles' base_path = '/OS-KSADM/roles' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v2/tenant.py b/openstack/identity/v2/tenant.py index 66a54aad5..1ea272ffa 100644 --- a/openstack/identity/v2/tenant.py +++ b/openstack/identity/v2/tenant.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Tenant(resource.Resource): resource_key = 'tenant' resources_key = 'tenants' base_path = '/tenants' - service = identity_service.AdminService() # capabilities allow_create = True diff --git a/openstack/identity/v2/user.py b/openstack/identity/v2/user.py index a8f219e92..7b4d893a5 100644 --- a/openstack/identity/v2/user.py +++ b/openstack/identity/v2/user.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class User(resource.Resource): resource_key = 'user' resources_key = 'users' base_path = '/users' - service = identity_service.AdminService() # capabilities allow_create = True diff --git a/openstack/identity/v3/credential.py b/openstack/identity/v3/credential.py index 2b2bf0c0b..c388dbf96 100644 --- a/openstack/identity/v3/credential.py +++ b/openstack/identity/v3/credential.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Credential(resource.Resource): resource_key = 'credential' resources_key = 'credentials' base_path = '/credentials' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/domain.py b/openstack/identity/v3/domain.py index 6c32a5c4c..8a39d0a8b 100644 --- a/openstack/identity/v3/domain.py +++ b/openstack/identity/v3/domain.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Domain(resource.Resource): resource_key = 'domain' resources_key = 'domains' base_path = '/domains' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/endpoint.py b/openstack/identity/v3/endpoint.py index 841f5c59a..e18b17a4b 100644 --- a/openstack/identity/v3/endpoint.py +++ b/openstack/identity/v3/endpoint.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Endpoint(resource.Resource): resource_key = 'endpoint' resources_key = 'endpoints' base_path = '/endpoints' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/group.py b/openstack/identity/v3/group.py index acf763006..001f5124c 100644 --- a/openstack/identity/v3/group.py +++ b/openstack/identity/v3/group.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Group(resource.Resource): resource_key = 'group' resources_key = 'groups' base_path = '/groups' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/policy.py b/openstack/identity/v3/policy.py index a4a6f7cfd..35d3bbcb5 100644 --- a/openstack/identity/v3/policy.py +++ b/openstack/identity/v3/policy.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Policy(resource.Resource): resource_key = 'policy' resources_key = 'policies' base_path = '/policies' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/project.py b/openstack/identity/v3/project.py index 56ee7dab2..7f11cae17 100644 --- a/openstack/identity/v3/project.py +++ b/openstack/identity/v3/project.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Project(resource.Resource): resource_key = 'project' resources_key = 'projects' base_path = '/projects' - service = identity_service.IdentityService() # capabilities allow_create = True @@ -119,7 +117,6 @@ class UserProject(Project): resource_key = 'project' resources_key = 'projects' base_path = '/users/%(user_id)s/projects' - service = identity_service.IdentityService() # capabilities allow_create = False diff --git a/openstack/identity/v3/region.py b/openstack/identity/v3/region.py index fc0e44e73..33db63c8f 100644 --- a/openstack/identity/v3/region.py +++ b/openstack/identity/v3/region.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Region(resource.Resource): resource_key = 'region' resources_key = 'regions' base_path = '/regions' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/role.py b/openstack/identity/v3/role.py index cd8e272e7..cb3518bbe 100644 --- a/openstack/identity/v3/role.py +++ b/openstack/identity/v3/role.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Role(resource.Resource): resource_key = 'role' resources_key = 'roles' base_path = '/roles' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/role_assignment.py b/openstack/identity/v3/role_assignment.py index b047c9ddc..a12cce27a 100644 --- a/openstack/identity/v3/role_assignment.py +++ b/openstack/identity/v3/role_assignment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class RoleAssignment(resource.Resource): resource_key = 'role_assignment' resources_key = 'role_assignments' base_path = '/role_assignments' - service = identity_service.IdentityService() # capabilities allow_list = True diff --git a/openstack/identity/v3/role_domain_group_assignment.py b/openstack/identity/v3/role_domain_group_assignment.py index 27b6963cb..e65ef8c9e 100644 --- a/openstack/identity/v3/role_domain_group_assignment.py +++ b/openstack/identity/v3/role_domain_group_assignment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class RoleDomainGroupAssignment(resource.Resource): resource_key = 'role' resources_key = 'roles' base_path = '/domains/%(domain_id)s/groups/%(group_id)s/roles' - service = identity_service.IdentityService() # capabilities allow_list = True diff --git a/openstack/identity/v3/role_domain_user_assignment.py b/openstack/identity/v3/role_domain_user_assignment.py index 085a77e0f..242932cab 100644 --- a/openstack/identity/v3/role_domain_user_assignment.py +++ b/openstack/identity/v3/role_domain_user_assignment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class RoleDomainUserAssignment(resource.Resource): resource_key = 'role' resources_key = 'roles' base_path = '/domains/%(domain_id)s/users/%(user_id)s/roles' - service = identity_service.IdentityService() # capabilities allow_list = True diff --git a/openstack/identity/v3/role_project_group_assignment.py b/openstack/identity/v3/role_project_group_assignment.py index cb48025c1..95f2f1863 100644 --- a/openstack/identity/v3/role_project_group_assignment.py +++ b/openstack/identity/v3/role_project_group_assignment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class RoleProjectGroupAssignment(resource.Resource): resource_key = 'role' resources_key = 'roles' base_path = '/projects/%(project_id)s/groups/%(group_id)s/roles' - service = identity_service.IdentityService() # capabilities allow_list = True diff --git a/openstack/identity/v3/role_project_user_assignment.py b/openstack/identity/v3/role_project_user_assignment.py index a7e887099..c5c99bdf2 100644 --- a/openstack/identity/v3/role_project_user_assignment.py +++ b/openstack/identity/v3/role_project_user_assignment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class RoleProjectUserAssignment(resource.Resource): resource_key = 'role' resources_key = 'roles' base_path = '/projects/%(project_id)s/users/%(user_id)s/roles' - service = identity_service.IdentityService() # capabilities allow_list = True diff --git a/openstack/identity/v3/service.py b/openstack/identity/v3/service.py index 6445fb759..982254ad4 100644 --- a/openstack/identity/v3/service.py +++ b/openstack/identity/v3/service.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class Service(resource.Resource): resource_key = 'service' resources_key = 'services' base_path = '/services' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/trust.py b/openstack/identity/v3/trust.py index 07985f1b4..66aaa4422 100644 --- a/openstack/identity/v3/trust.py +++ b/openstack/identity/v3/trust.py @@ -11,7 +11,6 @@ # under the License. -from openstack.identity import identity_service from openstack import resource @@ -19,7 +18,6 @@ class Trust(resource.Resource): resource_key = 'trust' resources_key = 'trusts' base_path = '/OS-TRUST/trusts' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/v3/user.py b/openstack/identity/v3/user.py index bf1b34615..609c9f652 100644 --- a/openstack/identity/v3/user.py +++ b/openstack/identity/v3/user.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,7 +17,6 @@ class User(resource.Resource): resource_key = 'user' resources_key = 'users' base_path = '/users' - service = identity_service.IdentityService() # capabilities allow_create = True diff --git a/openstack/identity/version.py b/openstack/identity/version.py index 30992f109..3ad27ee86 100644 --- a/openstack/identity/version.py +++ b/openstack/identity/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.identity import identity_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = identity_service.IdentityService( - version=identity_service.IdentityService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/image/image_service.py b/openstack/image/image_service.py index 55c43fd5f..b091a0100 100644 --- a/openstack/image/image_service.py +++ b/openstack/image/image_service.py @@ -10,18 +10,15 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.image.v1 import _proxy as _proxy_v1 +from openstack.image.v2 import _proxy as _proxy_v2 +from openstack import service_description -class ImageService(service_filter.ServiceFilter): +class ImageService(service_description.ServiceDescription): """The image service.""" - valid_versions = [ - service_filter.ValidVersion('v2'), - service_filter.ValidVersion('v1') - ] - - def __init__(self, version=None): - """Create an image service.""" - super(ImageService, self).__init__(service_type='image', - version=version) + supported_versions = { + '1': _proxy_v1.Proxy, + '2': _proxy_v2.Proxy, + } diff --git a/openstack/image/v1/image.py b/openstack/image/v1/image.py index 3f93a51df..bd060146c 100644 --- a/openstack/image/v1/image.py +++ b/openstack/image/v1/image.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.image import image_service from openstack import resource @@ -18,7 +17,6 @@ class Image(resource.Resource): resource_key = 'image' resources_key = 'images' base_path = '/images' - service = image_service.ImageService() # capabilities allow_create = True diff --git a/openstack/image/v2/image.py b/openstack/image/v2/image.py index 7be9e6816..271f82d98 100644 --- a/openstack/image/v2/image.py +++ b/openstack/image/v2/image.py @@ -14,7 +14,6 @@ import hashlib from openstack import _log from openstack import exceptions -from openstack.image import image_service from openstack import resource from openstack import utils @@ -24,7 +23,6 @@ _logger = _log.setup_logging('openstack') class Image(resource.Resource): resources_key = 'images' base_path = '/images' - service = image_service.ImageService() # capabilities allow_create = True diff --git a/openstack/image/v2/member.py b/openstack/image/v2/member.py index 6d565b447..b9568545d 100644 --- a/openstack/image/v2/member.py +++ b/openstack/image/v2/member.py @@ -10,14 +10,12 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.image import image_service from openstack import resource class Member(resource.Resource): resources_key = 'members' base_path = '/images/%(image_id)s/members' - service = image_service.ImageService() # capabilities allow_create = True diff --git a/openstack/instance_ha/instance_ha_service.py b/openstack/instance_ha/instance_ha_service.py index 228d9933a..89a1d9a22 100644 --- a/openstack/instance_ha/instance_ha_service.py +++ b/openstack/instance_ha/instance_ha_service.py @@ -12,15 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -from openstack import service_filter +from openstack.instance_ha.v1 import _proxy +from openstack import service_description -class InstanceHaService(service_filter.ServiceFilter): +class InstanceHaService(service_description.ServiceDescription): """The HA service.""" - valid_versions = [service_filter.ValidVersion('v1')] - - def __init__(self, version=None): - """Create an ha service.""" - super(InstanceHaService, self).__init__(service_type='ha', - version=version) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/instance_ha/v1/host.py b/openstack/instance_ha/v1/host.py index a6d9a0142..a505a648d 100644 --- a/openstack/instance_ha/v1/host.py +++ b/openstack/instance_ha/v1/host.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from openstack.instance_ha import instance_ha_service from openstack import resource @@ -20,7 +19,6 @@ class Host(resource.Resource): resource_key = "host" resources_key = "hosts" base_path = "/segments/%(segment_id)s/hosts" - service = instance_ha_service.InstanceHaService() # capabilities # 1] GET /v1/segments//hosts diff --git a/openstack/instance_ha/v1/notification.py b/openstack/instance_ha/v1/notification.py index 45f1a2e27..4cf538861 100644 --- a/openstack/instance_ha/v1/notification.py +++ b/openstack/instance_ha/v1/notification.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from openstack.instance_ha import instance_ha_service from openstack import resource @@ -20,7 +19,6 @@ class Notification(resource.Resource): resource_key = "notification" resources_key = "notifications" base_path = "/notifications" - service = instance_ha_service.InstanceHaService() # capabilities # 1] GET /v1/notifications diff --git a/openstack/instance_ha/v1/segment.py b/openstack/instance_ha/v1/segment.py index eec2c6c13..a2668f71c 100644 --- a/openstack/instance_ha/v1/segment.py +++ b/openstack/instance_ha/v1/segment.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from openstack.instance_ha import instance_ha_service from openstack import resource @@ -20,7 +19,6 @@ class Segment(resource.Resource): resource_key = "segment" resources_key = "segments" base_path = "/segments" - service = instance_ha_service.InstanceHaService() # capabilities # 1] GET /v1/segments diff --git a/openstack/key_manager/key_manager_service.py b/openstack/key_manager/key_manager_service.py index 36d3b413b..64d76d210 100644 --- a/openstack/key_manager/key_manager_service.py +++ b/openstack/key_manager/key_manager_service.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.key_manager.v1 import _proxy +from openstack import service_description -class KeyManagerService(service_filter.ServiceFilter): +class KeyManagerService(service_description.ServiceDescription): """The key manager service.""" - valid_versions = [service_filter.ValidVersion('v1')] - - def __init__(self, version=None): - """Create a key manager service.""" - super(KeyManagerService, self).__init__(service_type='key-manager', - version=version) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/key_manager/v1/container.py b/openstack/key_manager/v1/container.py index e5b2629c6..4b14020ab 100644 --- a/openstack/key_manager/v1/container.py +++ b/openstack/key_manager/v1/container.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.key_manager import key_manager_service from openstack.key_manager.v1 import _format from openstack import resource @@ -18,7 +17,6 @@ from openstack import resource class Container(resource.Resource): resources_key = 'containers' base_path = '/containers' - service = key_manager_service.KeyManagerService() # capabilities allow_create = True diff --git a/openstack/key_manager/v1/order.py b/openstack/key_manager/v1/order.py index fec0592f2..1f7198c4e 100644 --- a/openstack/key_manager/v1/order.py +++ b/openstack/key_manager/v1/order.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.key_manager import key_manager_service from openstack.key_manager.v1 import _format from openstack import resource @@ -18,7 +17,6 @@ from openstack import resource class Order(resource.Resource): resources_key = 'orders' base_path = '/orders' - service = key_manager_service.KeyManagerService() # capabilities allow_create = True diff --git a/openstack/key_manager/v1/secret.py b/openstack/key_manager/v1/secret.py index 2ba4ab552..4e2be6c46 100644 --- a/openstack/key_manager/v1/secret.py +++ b/openstack/key_manager/v1/secret.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.key_manager import key_manager_service from openstack.key_manager.v1 import _format from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ from openstack import utils class Secret(resource.Resource): resources_key = 'secrets' base_path = '/secrets' - service = key_manager_service.KeyManagerService() # capabilities allow_create = True diff --git a/openstack/load_balancer/load_balancer_service.py b/openstack/load_balancer/load_balancer_service.py index 3c645e6f6..31542a317 100644 --- a/openstack/load_balancer/load_balancer_service.py +++ b/openstack/load_balancer/load_balancer_service.py @@ -10,17 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.load_balancer.v2 import _proxy +from openstack import service_description -class LoadBalancerService(service_filter.ServiceFilter): +class LoadBalancerService(service_description.ServiceDescription): """The load balancer service.""" - valid_versions = [service_filter.ValidVersion('v2', 'v2.0')] - - def __init__(self, version=None): - """Create a load balancer service.""" - super(LoadBalancerService, self).__init__( - service_type='load-balancer', - version=version - ) + supported_versions = { + '2': _proxy.Proxy, + } diff --git a/openstack/load_balancer/v2/health_monitor.py b/openstack/load_balancer/v2/health_monitor.py index aca7fcb5d..4cca0262d 100644 --- a/openstack/load_balancer/v2/health_monitor.py +++ b/openstack/load_balancer/v2/health_monitor.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class HealthMonitor(resource.Resource): resource_key = 'healthmonitor' resources_key = 'healthmonitors' - base_path = '/v2.0/lbaas/healthmonitors' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/healthmonitors' # capabilities allow_create = True diff --git a/openstack/load_balancer/v2/l7_policy.py b/openstack/load_balancer/v2/l7_policy.py index 37e434a69..099b176da 100644 --- a/openstack/load_balancer/v2/l7_policy.py +++ b/openstack/load_balancer/v2/l7_policy.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class L7Policy(resource.Resource): resource_key = 'l7policy' resources_key = 'l7policies' - base_path = '/v2.0/lbaas/l7policies' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/l7policies' # capabilities allow_create = True diff --git a/openstack/load_balancer/v2/l7_rule.py b/openstack/load_balancer/v2/l7_rule.py index cc2aa4364..be5c118f5 100644 --- a/openstack/load_balancer/v2/l7_rule.py +++ b/openstack/load_balancer/v2/l7_rule.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class L7Rule(resource.Resource): resource_key = 'rule' resources_key = 'rules' - base_path = '/v2.0/lbaas/l7policies/%(l7policy_id)s/rules' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/l7policies/%(l7policy_id)s/rules' # capabilities allow_create = True diff --git a/openstack/load_balancer/v2/listener.py b/openstack/load_balancer/v2/listener.py index 6597c8998..6ea5d74bb 100644 --- a/openstack/load_balancer/v2/listener.py +++ b/openstack/load_balancer/v2/listener.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class Listener(resource.Resource): resource_key = 'listener' resources_key = 'listeners' - base_path = '/v2.0/lbaas/listeners' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/listeners' # capabilities allow_create = True diff --git a/openstack/load_balancer/v2/load_balancer.py b/openstack/load_balancer/v2/load_balancer.py index a3ce64999..9b36f7e5f 100644 --- a/openstack/load_balancer/v2/load_balancer.py +++ b/openstack/load_balancer/v2/load_balancer.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class LoadBalancer(resource.Resource): resource_key = 'loadbalancer' resources_key = 'loadbalancers' - base_path = '/v2.0/lbaas/loadbalancers' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/loadbalancers' # capabilities allow_create = True diff --git a/openstack/load_balancer/v2/member.py b/openstack/load_balancer/v2/member.py index ac65eb268..f67ad3b74 100644 --- a/openstack/load_balancer/v2/member.py +++ b/openstack/load_balancer/v2/member.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class Member(resource.Resource): resource_key = 'member' resources_key = 'members' - base_path = '/v2.0/lbaas/pools/%(pool_id)s/members' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/pools/%(pool_id)s/members' # capabilities allow_create = True diff --git a/openstack/load_balancer/v2/pool.py b/openstack/load_balancer/v2/pool.py index 1868d208c..9bbc13bf0 100644 --- a/openstack/load_balancer/v2/pool.py +++ b/openstack/load_balancer/v2/pool.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource class Pool(resource.Resource): resource_key = 'pool' resources_key = 'pools' - base_path = '/v2.0/lbaas/pools' - service = lb_service.LoadBalancerService() + base_path = '/lbaas/pools' # capabilities allow_create = True diff --git a/openstack/load_balancer/version.py b/openstack/load_balancer/version.py index c2266a2b0..bb0891768 100644 --- a/openstack/load_balancer/version.py +++ b/openstack/load_balancer/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.load_balancer import load_balancer_service as lb_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = lb_service.LoadBalancerService( - version=lb_service.LoadBalancerService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/message/message_service.py b/openstack/message/message_service.py index c9f57ad60..204d391c1 100644 --- a/openstack/message/message_service.py +++ b/openstack/message/message_service.py @@ -10,17 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.message.v2 import _proxy +from openstack import service_description -class MessageService(service_filter.ServiceFilter): +class MessageService(service_description.ServiceDescription): """The message service.""" - valid_versions = [service_filter.ValidVersion('v2')] - - def __init__(self, version=None): - """Create a message service.""" - super(MessageService, self).__init__( - service_type='messaging', - version=version - ) + supported_versions = { + '2': _proxy.Proxy, + } diff --git a/openstack/message/v2/claim.py b/openstack/message/v2/claim.py index 51c1c0a14..f02e51748 100644 --- a/openstack/message/v2/claim.py +++ b/openstack/message/v2/claim.py @@ -12,7 +12,6 @@ import uuid -from openstack.message import message_service from openstack import resource @@ -24,7 +23,6 @@ class Claim(resource.Resource): resources_key = 'claims' base_path = '/queues/%(queue_name)s/claims' - service = message_service.MessageService() # capabilities allow_create = True diff --git a/openstack/message/v2/message.py b/openstack/message/v2/message.py index d85f5d2b5..5f7acb090 100644 --- a/openstack/message/v2/message.py +++ b/openstack/message/v2/message.py @@ -12,7 +12,6 @@ import uuid -from openstack.message import message_service from openstack import resource @@ -24,7 +23,6 @@ class Message(resource.Resource): resources_key = 'messages' base_path = '/queues/%(queue_name)s/messages' - service = message_service.MessageService() # capabilities allow_create = True diff --git a/openstack/message/v2/queue.py b/openstack/message/v2/queue.py index 2da9e87c9..7901f1959 100644 --- a/openstack/message/v2/queue.py +++ b/openstack/message/v2/queue.py @@ -12,7 +12,6 @@ import uuid -from openstack.message import message_service from openstack import resource @@ -24,7 +23,6 @@ class Queue(resource.Resource): resources_key = "queues" base_path = "/queues" - service = message_service.MessageService() # capabilities allow_create = True diff --git a/openstack/message/v2/subscription.py b/openstack/message/v2/subscription.py index 2bd779711..7372951b8 100644 --- a/openstack/message/v2/subscription.py +++ b/openstack/message/v2/subscription.py @@ -12,7 +12,6 @@ import uuid -from openstack.message import message_service from openstack import resource @@ -24,7 +23,6 @@ class Subscription(resource.Resource): resources_key = 'subscriptions' base_path = '/queues/%(queue_name)s/subscriptions' - service = message_service.MessageService() # capabilities allow_create = True diff --git a/openstack/message/version.py b/openstack/message/version.py index 6cb2ee51d..805ce6a34 100644 --- a/openstack/message/version.py +++ b/openstack/message/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.message import message_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = message_service.MessageService( - version=message_service.MessageService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/network/network_service.py b/openstack/network/network_service.py index 28c20e4b8..17070efed 100644 --- a/openstack/network/network_service.py +++ b/openstack/network/network_service.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.network.v2 import _proxy +from openstack import service_description -class NetworkService(service_filter.ServiceFilter): +class NetworkService(service_description.ServiceDescription): """The network service.""" - valid_versions = [service_filter.ValidVersion('v2', 'v2.0')] - - def __init__(self, version=None): - """Create a network service.""" - super(NetworkService, self).__init__(service_type='network', - version=version) + supported_versions = { + '2': _proxy.Proxy, + } diff --git a/openstack/network/v2/address_scope.py b/openstack/network/v2/address_scope.py index 326cf2035..ff256e035 100644 --- a/openstack/network/v2/address_scope.py +++ b/openstack/network/v2/address_scope.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -19,7 +18,6 @@ class AddressScope(resource.Resource): resource_key = 'address_scope' resources_key = 'address_scopes' base_path = '/address-scopes' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/agent.py b/openstack/network/v2/agent.py index 6df7af057..b6a6097fe 100644 --- a/openstack/network/v2/agent.py +++ b/openstack/network/v2/agent.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource from openstack import utils @@ -20,7 +19,6 @@ class Agent(resource.Resource): resource_key = 'agent' resources_key = 'agents' base_path = '/agents' - service = network_service.NetworkService() # capabilities allow_create = False @@ -96,7 +94,6 @@ class NetworkHostingDHCPAgent(Agent): resources_key = 'agents' resource_name = 'dhcp-agent' base_path = '/networks/%(network_id)s/dhcp-agents' - service = network_service.NetworkService() # capabilities allow_create = False @@ -113,7 +110,6 @@ class RouterL3Agent(Agent): resources_key = 'agents' base_path = '/routers/%(router_id)s/l3-agents' resource_name = 'l3-agent' - service = network_service.NetworkService() # capabilities allow_create = False diff --git a/openstack/network/v2/auto_allocated_topology.py b/openstack/network/v2/auto_allocated_topology.py index 98b2d9fbe..66ea343e9 100644 --- a/openstack/network/v2/auto_allocated_topology.py +++ b/openstack/network/v2/auto_allocated_topology.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class AutoAllocatedTopology(resource.Resource): resource_name = 'auto_allocated_topology' resource_key = 'auto_allocated_topology' base_path = '/auto-allocated-topology' - service = network_service.NetworkService() # Capabilities allow_create = False diff --git a/openstack/network/v2/availability_zone.py b/openstack/network/v2/availability_zone.py index 295ac42ac..9ff48135e 100644 --- a/openstack/network/v2/availability_zone.py +++ b/openstack/network/v2/availability_zone.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource as _resource @@ -18,7 +17,6 @@ class AvailabilityZone(_resource.Resource): resource_key = 'availability_zone' resources_key = 'availability_zones' base_path = '/availability_zones' - service = network_service.NetworkService() # capabilities allow_create = False diff --git a/openstack/network/v2/extension.py b/openstack/network/v2/extension.py index d13c806b2..00c91a7f8 100644 --- a/openstack/network/v2/extension.py +++ b/openstack/network/v2/extension.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class Extension(resource.Resource): resource_key = 'extension' resources_key = 'extensions' base_path = '/extensions' - service = network_service.NetworkService() # capabilities allow_fetch = True diff --git a/openstack/network/v2/firewall_group.py b/openstack/network/v2/firewall_group.py index aff20e747..2ed0ad2d5 100644 --- a/openstack/network/v2/firewall_group.py +++ b/openstack/network/v2/firewall_group.py @@ -13,7 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -21,7 +20,6 @@ class FirewallGroup(resource.Resource): resource_key = 'firewall_group' resources_key = 'firewall_groups' base_path = '/fwaas/firewall_groups' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/firewall_policy.py b/openstack/network/v2/firewall_policy.py index e94753027..aa4df63dd 100644 --- a/openstack/network/v2/firewall_policy.py +++ b/openstack/network/v2/firewall_policy.py @@ -14,7 +14,6 @@ # under the License. from openstack.exceptions import HttpException -from openstack.network import network_service from openstack import resource from openstack import utils @@ -23,7 +22,6 @@ class FirewallPolicy(resource.Resource): resource_key = 'firewall_policy' resources_key = 'firewall_policies' base_path = '/fwaas/firewall_policies' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/firewall_rule.py b/openstack/network/v2/firewall_rule.py index 6f4e537bb..786d86e8b 100644 --- a/openstack/network/v2/firewall_rule.py +++ b/openstack/network/v2/firewall_rule.py @@ -13,7 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -21,7 +20,6 @@ class FirewallRule(resource.Resource): resource_key = 'firewall_rule' resources_key = 'firewall_rules' base_path = '/fwaas/firewall_rules' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/flavor.py b/openstack/network/v2/flavor.py index cb7f0c1eb..987a3483b 100644 --- a/openstack/network/v2/flavor.py +++ b/openstack/network/v2/flavor.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Flavor(resource.Resource): resource_key = 'flavor' resources_key = 'flavors' base_path = '/flavors' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/floating_ip.py b/openstack/network/v2/floating_ip.py index dcde09905..1511fb8d2 100644 --- a/openstack/network/v2/floating_ip.py +++ b/openstack/network/v2/floating_ip.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource @@ -21,7 +20,6 @@ class FloatingIP(resource.Resource, tag.TagMixin): resource_key = 'floatingip' resources_key = 'floatingips' base_path = '/floatingips' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/health_monitor.py b/openstack/network/v2/health_monitor.py index 6ed64bf05..c8cfa59f0 100644 --- a/openstack/network/v2/health_monitor.py +++ b/openstack/network/v2/health_monitor.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class HealthMonitor(resource.Resource): resource_key = 'healthmonitor' resources_key = 'healthmonitors' base_path = '/lbaas/healthmonitors' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/listener.py b/openstack/network/v2/listener.py index e90398577..64595b5f4 100644 --- a/openstack/network/v2/listener.py +++ b/openstack/network/v2/listener.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class Listener(resource.Resource): resource_key = 'listener' resources_key = 'listeners' base_path = '/lbaas/listeners' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/load_balancer.py b/openstack/network/v2/load_balancer.py index 6f66b752d..ab88913c9 100644 --- a/openstack/network/v2/load_balancer.py +++ b/openstack/network/v2/load_balancer.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class LoadBalancer(resource.Resource): resource_key = 'loadbalancer' resources_key = 'loadbalancers' base_path = '/lbaas/loadbalancers' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/metering_label.py b/openstack/network/v2/metering_label.py index 90a62781b..31f2b51c8 100644 --- a/openstack/network/v2/metering_label.py +++ b/openstack/network/v2/metering_label.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class MeteringLabel(resource.Resource): resource_key = 'metering_label' resources_key = 'metering_labels' base_path = '/metering/metering-labels' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/metering_label_rule.py b/openstack/network/v2/metering_label_rule.py index eb766c8de..ed643ed17 100644 --- a/openstack/network/v2/metering_label_rule.py +++ b/openstack/network/v2/metering_label_rule.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class MeteringLabelRule(resource.Resource): resource_key = 'metering_label_rule' resources_key = 'metering_label_rules' base_path = '/metering/metering-label-rules' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/network.py b/openstack/network/v2/network.py index 5b706375a..3ba20e2ed 100644 --- a/openstack/network/v2/network.py +++ b/openstack/network/v2/network.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource @@ -19,7 +18,6 @@ class Network(resource.Resource, tag.TagMixin): resource_key = 'network' resources_key = 'networks' base_path = '/networks' - service = network_service.NetworkService() # capabilities allow_create = True @@ -121,7 +119,6 @@ class DHCPAgentHostingNetwork(Network): resources_key = 'networks' base_path = '/agents/%(agent_id)s/dhcp-networks' resource_name = 'dhcp-network' - service = network_service.NetworkService() # capabilities allow_create = False diff --git a/openstack/network/v2/network_ip_availability.py b/openstack/network/v2/network_ip_availability.py index ce2c372b7..c2946b6a6 100644 --- a/openstack/network/v2/network_ip_availability.py +++ b/openstack/network/v2/network_ip_availability.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -19,7 +18,6 @@ class NetworkIPAvailability(resource.Resource): resources_key = 'network_ip_availabilities' base_path = '/network-ip-availabilities' name_attribute = 'network_name' - service = network_service.NetworkService() # capabilities allow_create = False diff --git a/openstack/network/v2/pool.py b/openstack/network/v2/pool.py index 671610087..4e463c92f 100644 --- a/openstack/network/v2/pool.py +++ b/openstack/network/v2/pool.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class Pool(resource.Resource): resource_key = 'pool' resources_key = 'pools' base_path = '/lbaas/pools' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/pool_member.py b/openstack/network/v2/pool_member.py index c75e0c3bb..909bbe21f 100644 --- a/openstack/network/v2/pool_member.py +++ b/openstack/network/v2/pool_member.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class PoolMember(resource.Resource): resource_key = 'member' resources_key = 'members' base_path = '/lbaas/pools/%(pool_id)s/members' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/port.py b/openstack/network/v2/port.py index 625464713..e3290aef2 100644 --- a/openstack/network/v2/port.py +++ b/openstack/network/v2/port.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource @@ -19,7 +18,6 @@ class Port(resource.Resource, tag.TagMixin): resource_key = 'port' resources_key = 'ports' base_path = '/ports' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/qos_bandwidth_limit_rule.py b/openstack/network/v2/qos_bandwidth_limit_rule.py index 1f289ebb6..d10939d36 100644 --- a/openstack/network/v2/qos_bandwidth_limit_rule.py +++ b/openstack/network/v2/qos_bandwidth_limit_rule.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class QoSBandwidthLimitRule(resource.Resource): resource_key = 'bandwidth_limit_rule' resources_key = 'bandwidth_limit_rules' base_path = '/qos/policies/%(qos_policy_id)s/bandwidth_limit_rules' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/qos_dscp_marking_rule.py b/openstack/network/v2/qos_dscp_marking_rule.py index 9333d9813..fbdf86de1 100644 --- a/openstack/network/v2/qos_dscp_marking_rule.py +++ b/openstack/network/v2/qos_dscp_marking_rule.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class QoSDSCPMarkingRule(resource.Resource): resource_key = 'dscp_marking_rule' resources_key = 'dscp_marking_rules' base_path = '/qos/policies/%(qos_policy_id)s/dscp_marking_rules' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/qos_minimum_bandwidth_rule.py b/openstack/network/v2/qos_minimum_bandwidth_rule.py index 476079570..06d2ce75c 100644 --- a/openstack/network/v2/qos_minimum_bandwidth_rule.py +++ b/openstack/network/v2/qos_minimum_bandwidth_rule.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class QoSMinimumBandwidthRule(resource.Resource): resource_key = 'minimum_bandwidth_rule' resources_key = 'minimum_bandwidth_rules' base_path = '/qos/policies/%(qos_policy_id)s/minimum_bandwidth_rules' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/qos_policy.py b/openstack/network/v2/qos_policy.py index 941132899..7efa40efc 100644 --- a/openstack/network/v2/qos_policy.py +++ b/openstack/network/v2/qos_policy.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource from openstack import utils @@ -20,7 +19,6 @@ class QoSPolicy(resource.Resource, tag.TagMixin): resource_key = 'policy' resources_key = 'policies' base_path = '/qos/policies' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/qos_rule_type.py b/openstack/network/v2/qos_rule_type.py index a917af2a1..cf23a448f 100644 --- a/openstack/network/v2/qos_rule_type.py +++ b/openstack/network/v2/qos_rule_type.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class QoSRuleType(resource.Resource): resource_key = 'rule_type' resources_key = 'rule_types' base_path = '/qos/rule-types' - service = network_service.NetworkService() # capabilities allow_create = False diff --git a/openstack/network/v2/quota.py b/openstack/network/v2/quota.py index fbed68f5f..eab5aa79b 100644 --- a/openstack/network/v2/quota.py +++ b/openstack/network/v2/quota.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class Quota(resource.Resource): resource_key = 'quota' resources_key = 'quotas' base_path = '/quotas' - service = network_service.NetworkService() # capabilities allow_fetch = True diff --git a/openstack/network/v2/rbac_policy.py b/openstack/network/v2/rbac_policy.py index 4043f0e44..3fdb158fa 100644 --- a/openstack/network/v2/rbac_policy.py +++ b/openstack/network/v2/rbac_policy.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class RBACPolicy(resource.Resource): resource_key = 'rbac_policy' resources_key = 'rbac_policies' base_path = '/rbac-policies' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/router.py b/openstack/network/v2/router.py index 71cb19495..73db5b697 100644 --- a/openstack/network/v2/router.py +++ b/openstack/network/v2/router.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource from openstack import utils @@ -20,7 +19,6 @@ class Router(resource.Resource, tag.TagMixin): resource_key = 'router' resources_key = 'routers' base_path = '/routers' - service = network_service.NetworkService() # capabilities allow_create = True @@ -137,7 +135,6 @@ class L3AgentRouter(Router): resources_key = 'routers' base_path = '/agents/%(agent_id)s/l3-routers' resource_name = 'l3-router' - service = network_service.NetworkService() # capabilities allow_create = False diff --git a/openstack/network/v2/security_group.py b/openstack/network/v2/security_group.py index 2ec91d5a1..e80b96c92 100644 --- a/openstack/network/v2/security_group.py +++ b/openstack/network/v2/security_group.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource @@ -19,7 +18,6 @@ class SecurityGroup(resource.Resource, tag.TagMixin): resource_key = 'security_group' resources_key = 'security_groups' base_path = '/security-groups' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/security_group_rule.py b/openstack/network/v2/security_group_rule.py index 286a7adc7..54de7fdd2 100644 --- a/openstack/network/v2/security_group_rule.py +++ b/openstack/network/v2/security_group_rule.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class SecurityGroupRule(resource.Resource): resource_key = 'security_group_rule' resources_key = 'security_group_rules' base_path = '/security-group-rules' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/segment.py b/openstack/network/v2/segment.py index 808d08cdb..ce6aa2710 100644 --- a/openstack/network/v2/segment.py +++ b/openstack/network/v2/segment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class Segment(resource.Resource): resource_key = 'segment' resources_key = 'segments' base_path = '/segments' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/service_profile.py b/openstack/network/v2/service_profile.py index 4b999ef8c..78178a95e 100644 --- a/openstack/network/v2/service_profile.py +++ b/openstack/network/v2/service_profile.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,7 +17,6 @@ class ServiceProfile(resource.Resource): resource_key = 'service_profile' resources_key = 'service_profiles' base_path = '/service_profiles' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/service_provider.py b/openstack/network/v2/service_provider.py index 9f0ec773a..1b19b6002 100644 --- a/openstack/network/v2/service_provider.py +++ b/openstack/network/v2/service_provider.py @@ -10,14 +10,12 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource class ServiceProvider(resource.Resource): resources_key = 'service_providers' base_path = '/service-providers' - service = network_service.NetworkService() # Capabilities allow_create = False diff --git a/openstack/network/v2/subnet.py b/openstack/network/v2/subnet.py index e611d0b6a..4c9078acb 100644 --- a/openstack/network/v2/subnet.py +++ b/openstack/network/v2/subnet.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource @@ -19,7 +18,6 @@ class Subnet(resource.Resource, tag.TagMixin): resource_key = 'subnet' resources_key = 'subnets' base_path = '/subnets' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/subnet_pool.py b/openstack/network/v2/subnet_pool.py index a8648fdf3..e7d186dd6 100644 --- a/openstack/network/v2/subnet_pool.py +++ b/openstack/network/v2/subnet_pool.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack.network.v2 import tag from openstack import resource @@ -19,7 +18,6 @@ class SubnetPool(resource.Resource, tag.TagMixin): resource_key = 'subnetpool' resources_key = 'subnetpools' base_path = '/subnetpools' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/trunk.py b/openstack/network/v2/trunk.py index 14bb47e10..0168f9933 100644 --- a/openstack/network/v2/trunk.py +++ b/openstack/network/v2/trunk.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource from openstack import utils @@ -19,7 +18,6 @@ class Trunk(resource.Resource): resource_key = 'trunk' resources_key = 'trunks' base_path = '/trunks' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/v2/vpn_service.py b/openstack/network/v2/vpn_service.py index f40d20c8a..d9c1483ec 100644 --- a/openstack/network/v2/vpn_service.py +++ b/openstack/network/v2/vpn_service.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -20,7 +19,6 @@ class VPNService(resource.Resource): resource_key = 'vpnservice' resources_key = 'vpnservices' base_path = '/vpn/vpnservices' - service = network_service.NetworkService() # capabilities allow_create = True diff --git a/openstack/network/version.py b/openstack/network/version.py index 9de4601ca..805ce6a34 100644 --- a/openstack/network/version.py +++ b/openstack/network/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.network import network_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = network_service.NetworkService( - version=network_service.NetworkService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/object_store/object_store_service.py b/openstack/object_store/object_store_service.py index 1f58b97cf..2a0aa3d1a 100644 --- a/openstack/object_store/object_store_service.py +++ b/openstack/object_store/object_store_service.py @@ -10,15 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.object_store.v1 import _proxy +from openstack import service_description -class ObjectStoreService(service_filter.ServiceFilter): +class ObjectStoreService(service_description.ServiceDescription): """The object store service.""" - valid_versions = [service_filter.ValidVersion('v1')] - - def __init__(self, version=None): - """Create an object store service.""" - super(ObjectStoreService, self).__init__(service_type='object-store', - version=version) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/object_store/v1/_base.py b/openstack/object_store/v1/_base.py index 4c576da64..21372406f 100644 --- a/openstack/object_store/v1/_base.py +++ b/openstack/object_store/v1/_base.py @@ -12,12 +12,10 @@ # under the License. from openstack import exceptions -from openstack.object_store import object_store_service from openstack import resource class BaseResource(resource.Resource): - service = object_store_service.ObjectStoreService() commit_method = 'POST' create_method = 'PUT' diff --git a/openstack/object_store/v1/obj.py b/openstack/object_store/v1/obj.py index 595d0e4cd..e77588f0d 100644 --- a/openstack/object_store/v1/obj.py +++ b/openstack/object_store/v1/obj.py @@ -14,7 +14,6 @@ import copy from openstack import exceptions -from openstack.object_store import object_store_service from openstack.object_store.v1 import _base from openstack import resource @@ -32,7 +31,6 @@ class Object(_base.BaseResource): base_path = "/%(container)s" pagination_key = 'X-Container-Object-Count' - service = object_store_service.ObjectStoreService() allow_create = True allow_fetch = True diff --git a/openstack/orchestration/orchestration_service.py b/openstack/orchestration/orchestration_service.py index 0333ff74f..827f9831c 100644 --- a/openstack/orchestration/orchestration_service.py +++ b/openstack/orchestration/orchestration_service.py @@ -10,18 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack.orchestration.v1 import _proxy +from openstack import service_description -class OrchestrationService(service_filter.ServiceFilter): +class OrchestrationService(service_description.ServiceDescription): """The orchestration service.""" - valid_versions = [service_filter.ValidVersion('v1')] - - def __init__(self, version=None): - """Create an orchestration service.""" - super(OrchestrationService, self).__init__( - service_type='orchestration', - version=version, - requires_project_id=True, - ) + supported_versions = { + '1': _proxy.Proxy, + } diff --git a/openstack/orchestration/v1/resource.py b/openstack/orchestration/v1/resource.py index 97184bb9c..ddc466fda 100644 --- a/openstack/orchestration/v1/resource.py +++ b/openstack/orchestration/v1/resource.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource @@ -19,7 +18,6 @@ class Resource(resource.Resource): resource_key = 'resource' resources_key = 'resources' base_path = '/stacks/%(stack_name)s/%(stack_id)s/resources' - service = orchestration_service.OrchestrationService() # capabilities allow_create = False diff --git a/openstack/orchestration/v1/software_config.py b/openstack/orchestration/v1/software_config.py index a4f4b4fae..af59e8989 100644 --- a/openstack/orchestration/v1/software_config.py +++ b/openstack/orchestration/v1/software_config.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource @@ -18,7 +17,6 @@ class SoftwareConfig(resource.Resource): resource_key = 'software_config' resources_key = 'software_configs' base_path = '/software_configs' - service = orchestration_service.OrchestrationService() # capabilities allow_create = True diff --git a/openstack/orchestration/v1/software_deployment.py b/openstack/orchestration/v1/software_deployment.py index 00e4acd0c..5ac670973 100644 --- a/openstack/orchestration/v1/software_deployment.py +++ b/openstack/orchestration/v1/software_deployment.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource @@ -18,7 +17,6 @@ class SoftwareDeployment(resource.Resource): resource_key = 'software_deployment' resources_key = 'software_deployments' base_path = '/software_deployments' - service = orchestration_service.OrchestrationService() # capabilities allow_create = True diff --git a/openstack/orchestration/v1/stack.py b/openstack/orchestration/v1/stack.py index 4828b1332..97bb6e3f6 100644 --- a/openstack/orchestration/v1/stack.py +++ b/openstack/orchestration/v1/stack.py @@ -11,7 +11,6 @@ # under the License. from openstack import exceptions -from openstack.orchestration import orchestration_service from openstack import resource from openstack import utils @@ -21,7 +20,6 @@ class Stack(resource.Resource): resource_key = 'stack' resources_key = 'stacks' base_path = '/stacks' - service = orchestration_service.OrchestrationService() # capabilities allow_create = True diff --git a/openstack/orchestration/v1/stack_environment.py b/openstack/orchestration/v1/stack_environment.py index 2b972bdf4..24b05e750 100644 --- a/openstack/orchestration/v1/stack_environment.py +++ b/openstack/orchestration/v1/stack_environment.py @@ -10,13 +10,11 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource class StackEnvironment(resource.Resource): - service = orchestration_service.OrchestrationService() base_path = "/stacks/%(stack_name)s/%(stack_id)s/environment" # capabilities diff --git a/openstack/orchestration/v1/stack_files.py b/openstack/orchestration/v1/stack_files.py index 6963d5b84..faa4c942b 100644 --- a/openstack/orchestration/v1/stack_files.py +++ b/openstack/orchestration/v1/stack_files.py @@ -10,13 +10,11 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource class StackFiles(resource.Resource): - service = orchestration_service.OrchestrationService() base_path = "/stacks/%(stack_name)s/%(stack_id)s/files" # capabilities diff --git a/openstack/orchestration/v1/stack_template.py b/openstack/orchestration/v1/stack_template.py index 0bea61ab9..7ba46e767 100644 --- a/openstack/orchestration/v1/stack_template.py +++ b/openstack/orchestration/v1/stack_template.py @@ -10,13 +10,11 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource class StackTemplate(resource.Resource): - service = orchestration_service.OrchestrationService() base_path = "/stacks/%(stack_name)s/%(stack_id)s/template" # capabilities diff --git a/openstack/orchestration/v1/template.py b/openstack/orchestration/v1/template.py index ec04b6cec..ab0bc5655 100644 --- a/openstack/orchestration/v1/template.py +++ b/openstack/orchestration/v1/template.py @@ -12,12 +12,10 @@ from six.moves.urllib import parse -from openstack.orchestration import orchestration_service from openstack import resource class Template(resource.Resource): - service = orchestration_service.OrchestrationService() # capabilities allow_create = False diff --git a/openstack/orchestration/version.py b/openstack/orchestration/version.py index 2dd05c286..805ce6a34 100644 --- a/openstack/orchestration/version.py +++ b/openstack/orchestration/version.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack.orchestration import orchestration_service from openstack import resource @@ -18,9 +17,6 @@ class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = orchestration_service.OrchestrationService( - version=orchestration_service.OrchestrationService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/service_description.py b/openstack/service_description.py index 12a7dc66a..e49d9db83 100644 --- a/openstack/service_description.py +++ b/openstack/service_description.py @@ -11,15 +11,12 @@ # License for the specific language governing permissions and limitations # under the License. -import importlib - import os_service_types from openstack import _log from openstack import proxy __all__ = [ - 'OpenStackServiceDescription', 'ServiceDescription', ] @@ -29,14 +26,14 @@ _service_type_manager = os_service_types.ServiceTypes() class ServiceDescription(object): - #: Proxy class for this service - proxy_class = proxy.Proxy + #: Dictionary of supported versions and proxy classes for that version + supported_versions = None #: main service_type to use to find this service in the catalog service_type = None #: list of aliases this service might be registered as aliases = [] - def __init__(self, service_type, proxy_class=None, aliases=None): + def __init__(self, service_type, supported_versions=None, aliases=None): """Class describing how to interact with a REST service. Each service in an OpenStack cloud needs to be found by looking @@ -65,72 +62,112 @@ class ServiceDescription(object): be used to register the service in the catalog. """ self.service_type = service_type or self.service_type - self.proxy_class = proxy_class or self.proxy_class - if self.proxy_class: - self._validate_proxy_class() + self.supported_versions = ( + supported_versions + or self.supported_versions + or {}) + self.aliases = aliases or self.aliases self.all_types = [service_type] + self.aliases - self._proxy = None - - def _validate_proxy_class(self): - if not issubclass(self.proxy_class, proxy.Proxy): - raise TypeError( - "{module}.{proxy_class} must inherit from Proxy".format( - module=self.proxy_class.__module__, - proxy_class=self.proxy_class.__name__)) - - def get_proxy_class(self, config): - return self.proxy_class def __get__(self, instance, owner): if instance is None: return self if self.service_type not in instance._proxies: - config = instance.config - proxy_class = self.get_proxy_class(config) - instance._proxies[self.service_type] = config.get_session_client( - self.service_type, - constructor=proxy_class, - task_manager=instance.task_manager, - allow_version_hack=True, - ) + instance._proxies[self.service_type] = self._make_proxy( + instance, owner) instance._proxies[self.service_type]._connection = instance return instance._proxies[self.service_type] + def _make_proxy(self, instance, owner): + config = instance.config + + # First, check to see if we've got config that matches what we + # understand in the SDK. + version_string = config.get_api_version(self.service_type) + endpoint_override = config.get_endpoint(self.service_type) + + # If the user doesn't give a version in config, but we only support + # one version, then just use that version. + if not version_string and len(self.supported_versions) == 1: + version_string = list(self.supported_versions.keys())[0] + + proxy_obj = None + if endpoint_override and version_string and self.supported_versions: + # Both endpoint override and version_string are set, we don't + # need to do discovery - just trust the user. + proxy_class = self.supported_versions.get(version_string[0]) + if proxy_class: + proxy_obj = config.get_session_client( + self.service_type, + constructor=proxy_class, + task_manager=instance.task_manager, + ) + elif endpoint_override and self.supported_versions: + temp_adapter = config.get_session_client( + self.service_type + ) + api_version = temp_adapter.get_endpoint_data().api_version + proxy_class = self.supported_versions.get(str(api_version[0])) + if proxy_class: + proxy_obj = config.get_session_client( + self.service_type, + constructor=proxy_class, + task_manager=instance.task_manager, + ) + + if proxy_obj: + data = proxy_obj.get_endpoint_data() + if data.catalog_url != data.service_url: + ep_key = '{service_type}_endpoint_override'.format( + service_type=self.service_type) + config.config[ep_key] = data.service_url + proxy_obj = config.get_session_client( + self.service_type, + constructor=proxy_class, + task_manager=instance.task_manager, + ) + return proxy_obj + + # Make an adapter to let discovery take over + version_kwargs = {} + if version_string: + version_kwargs['version'] = version_string + elif self.supported_versions: + supported_versions = sorted([ + int(f) for f in self.supported_versions]) + version_kwargs['min_version'] = str(supported_versions[0]) + version_kwargs['max_version'] = '{version}.latest'.format( + version=str(supported_versions[-1])) + + temp_adapter = config.get_session_client( + self.service_type, + constructor=proxy.Proxy, + allow_version_hack=True, + **version_kwargs + ) + found_version = temp_adapter.get_api_major_version() + if found_version is None: + # Maybe openstacksdk is being used for the passthrough + # REST API proxy layer for an unknown service in the + # service catalog that also doesn't have any useful + # version discovery? + instance._proxies[self.service_type] = temp_adapter + instance._proxies[self.service_type]._connection = instance + return instance._proxies[self.service_type] + proxy_class = self.supported_versions.get(str(found_version[0])) + if not proxy_class: + proxy_class = proxy.Proxy + return config.get_session_client( + self.service_type, + constructor=proxy_class, + task_manager=instance.task_manager, + allow_version_hack=True, + **version_kwargs + ) + def __set__(self, instance, value): raise AttributeError('Service Descriptors cannot be set') def __delete__(self, instance): raise AttributeError('Service Descriptors cannot be deleted') - - -class OpenStackServiceDescription(ServiceDescription): - def __init__(self, service_filter_class, *args, **kwargs): - """Official OpenStack ServiceDescription. - - The OpenStackServiceDescription class is a helper class for - services listed in Service Types Authority and that are directly - supported by openstacksdk. - - It finds the proxy_class by looking in the openstacksdk tree for - appropriately named modules. - - :param service_filter_class: - A subclass of :class:`~openstack.service_filter.ServiceFilter` - """ - super(OpenStackServiceDescription, self).__init__(*args, **kwargs) - self._service_filter_class = service_filter_class - - def get_proxy_class(self, config): - # TODO(mordred) Replace this with proper discovery - if self.service_type == 'block-storage': - version_string = config.get_api_version('volume') - else: - version_string = config.get_api_version(self.service_type) - version = None - if version_string: - version = 'v{version}'.format(version=version_string[0]) - service_filter = self._service_filter_class(version=version) - module_name = service_filter.get_module() + "._proxy" - module = importlib.import_module(module_name) - return getattr(module, "Proxy") diff --git a/openstack/service_filter.py b/openstack/service_filter.py deleted file mode 100644 index b5c4fe82d..000000000 --- a/openstack/service_filter.py +++ /dev/null @@ -1,199 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -""" -The :class:`~openstack.service_filter.ServiceFilter` is the base class -for service identifiers and user service preferences. Each -:class:`~openstack.resource.Resource` has a service identifier to -associate the resource with a service. An example of a service identifier -would be ``openstack.compute.compute_service.ComputeService``. -The service preference and the service identifier are joined to create a -filter to match a service. - -Examples --------- - -The :class:`~openstack.service_filter.ServiceFilter` class can be built -with a service type, interface, region, name, and version. - -Create a service filter -~~~~~~~~~~~~~~~~~~~~~~~ - -Create a compute service and service preference. Join the services -and match:: - - from openstack import service_filter - from openstack.compute import compute_service - default = compute_service.ComputeService() - preference = service_filter.ServiceFilter('compute', version='v2') - result = preference.join(default) - matches = (result.match_service_type('compute') and - result.match_service_name('Hal9000') and - result.match_region('DiscoveryOne') and - result.match_interface('public')) - print(str(result)) - print("matches=" + str(matches)) - -The resulting output from the code:: - - service_type=compute,interface=public,version=v2 - matches=True -""" - - -class ValidVersion(object): - - def __init__(self, module, path=None): - """" Valid service version. - - :param string module: Module associated with version. - :param string path: URL path version. - """ - self.module = module - self.path = path or module - - -class ServiceFilter(dict): - UNVERSIONED = '' - PUBLIC = 'public' - INTERNAL = 'internal' - ADMIN = 'admin' - valid_versions = [] - - def __init__(self, service_type, interface=PUBLIC, region=None, - service_name=None, version=None, api_version=None, - requires_project_id=False): - """Create a service identifier. - - :param string service_type: The desired type of service. - :param string interface: The exposure of the endpoint. Should be - `public` (default), `internal` or `admin`. - :param string region: The desired region (optional). - :param string service_name: Name of the service - :param string version: Version of service to use. - :param string api_version: Microversion of service supported. - :param bool requires_project_id: True if this service's endpoint - expects project id to be included. - """ - self['service_type'] = service_type.lower() - self['interface'] = interface - self['region_name'] = region - self['service_name'] = service_name - self['version'] = version - self['api_version'] = api_version - self['requires_project_id'] = requires_project_id - - @classmethod - def _get_proxy_class_names(cls): - names = [] - module_name = ".".join(cls.__module__.split('.')[:-1]) - for version in cls.valid_versions: - names.append("{module}.{version}._proxy.Proxy".format( - module=module_name, - version=version.module)) - return names - - @property - def service_type(self): - return self['service_type'] - - @property - def interface(self): - return self['interface'] - - @interface.setter - def interface(self, value): - self['interface'] = value - - @property - def region(self): - return self['region_name'] - - @region.setter - def region(self, value): - self['region_name'] = value - - @property - def service_name(self): - return self['service_name'] - - @service_name.setter - def service_name(self, value): - self['service_name'] = value - - @property - def version(self): - return self['version'] - - @version.setter - def version(self, value): - self['version'] = value - - @property - def api_version(self): - return self['api_version'] - - @api_version.setter - def api_version(self, value): - self['api_version'] = value - - @property - def requires_project_id(self): - return self['requires_project_id'] - - @requires_project_id.setter - def requires_project_id(self, value): - self['requires_project_id'] = value - - @property - def path(self): - return self['path'] - - @path.setter - def path(self, value): - self['path'] = value - - def get_path(self, version=None): - if not self.version: - self.version = version - return self.get('path', self._get_valid_version().path) - - def get_filter(self): - filter = dict(self) - del filter['version'] - return filter - - def _get_valid_version(self): - if self.valid_versions: - if self.version: - for valid in self.valid_versions: - # NOTE(thowe): should support fuzzy match e.g: v2.1==v2 - if self.version.startswith(valid.module): - return valid - return self.valid_versions[0] - return ValidVersion('') - - def get_module(self): - """Get the full module name associated with the service.""" - module = self.__class__.__module__.split('.') - module = ".".join(module[:-1]) - module = module + "." + self._get_valid_version().module - return module - - def get_service_module(self): - """Get the module version of the service name. - - This would often be the same as the service type except in cases like - object store where the service type is `object-store` and the module - is `object_store`. - """ - return self.__class__.__module__.split('.')[-2] diff --git a/openstack/tests/unit/baremetal/test_baremetal_service.py b/openstack/tests/unit/baremetal/test_baremetal_service.py deleted file mode 100644 index 45ccd04e0..000000000 --- a/openstack/tests/unit/baremetal/test_baremetal_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.baremetal import baremetal_service - - -class TestBaremetalService(base.TestCase): - - def test_service(self): - sot = baremetal_service.BaremetalService() - self.assertEqual('baremetal', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/baremetal/test_version.py b/openstack/tests/unit/baremetal/test_version.py index ddc807944..06ce752c3 100644 --- a/openstack/tests/unit/baremetal/test_version.py +++ b/openstack/tests/unit/baremetal/test_version.py @@ -30,7 +30,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/baremetal/v1/test_chassis.py b/openstack/tests/unit/baremetal/v1/test_chassis.py index 76e4ef44b..4c52f01de 100644 --- a/openstack/tests/unit/baremetal/v1/test_chassis.py +++ b/openstack/tests/unit/baremetal/v1/test_chassis.py @@ -50,7 +50,6 @@ class TestChassis(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('chassis', sot.resources_key) self.assertEqual('/chassis', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -76,7 +75,6 @@ class TestChassisDetail(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('chassis', sot.resources_key) self.assertEqual('/chassis/detail', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/baremetal/v1/test_driver.py b/openstack/tests/unit/baremetal/v1/test_driver.py index 075ac0c14..8fdcabcd9 100644 --- a/openstack/tests/unit/baremetal/v1/test_driver.py +++ b/openstack/tests/unit/baremetal/v1/test_driver.py @@ -50,7 +50,6 @@ class TestDriver(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('drivers', sot.resources_key) self.assertEqual('/drivers', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/baremetal/v1/test_node.py b/openstack/tests/unit/baremetal/v1/test_node.py index b3a5e928b..85d77bb7a 100644 --- a/openstack/tests/unit/baremetal/v1/test_node.py +++ b/openstack/tests/unit/baremetal/v1/test_node.py @@ -102,7 +102,6 @@ class TestNode(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('nodes', sot.resources_key) self.assertEqual('/nodes', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -161,7 +160,6 @@ class TestNodeDetail(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('nodes', sot.resources_key) self.assertEqual('/nodes/detail', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/baremetal/v1/test_port.py b/openstack/tests/unit/baremetal/v1/test_port.py index 61b9cce75..0ab7eae1a 100644 --- a/openstack/tests/unit/baremetal/v1/test_port.py +++ b/openstack/tests/unit/baremetal/v1/test_port.py @@ -49,7 +49,6 @@ class TestPort(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('ports', sot.resources_key) self.assertEqual('/ports', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -80,7 +79,6 @@ class TestPortDetail(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('ports', sot.resources_key) self.assertEqual('/ports/detail', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/baremetal/v1/test_port_group.py b/openstack/tests/unit/baremetal/v1/test_port_group.py index 3cfe051fb..81fb69a60 100644 --- a/openstack/tests/unit/baremetal/v1/test_port_group.py +++ b/openstack/tests/unit/baremetal/v1/test_port_group.py @@ -54,7 +54,6 @@ class TestPortGroup(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('portgroups', sot.resources_key) self.assertEqual('/portgroups', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -85,7 +84,6 @@ class TestPortGroupDetail(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('portgroups', sot.resources_key) self.assertEqual('/portgroups/detail', sot.base_path) - self.assertEqual('baremetal', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/block_storage/test_block_storage_service.py b/openstack/tests/unit/block_storage/test_block_storage_service.py deleted file mode 100644 index ca11ec47f..000000000 --- a/openstack/tests/unit/block_storage/test_block_storage_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.block_storage import block_storage_service - - -class TestBlockStorageService(base.TestCase): - - def test_service(self): - sot = block_storage_service.BlockStorageService() - self.assertEqual("block-storage", sot.service_type) - self.assertEqual("public", sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual("v2", sot.valid_versions[0].module) - self.assertEqual("v2", sot.valid_versions[0].path) diff --git a/openstack/tests/unit/block_storage/v2/test_snapshot.py b/openstack/tests/unit/block_storage/v2/test_snapshot.py index a062ef9b9..16b59355c 100644 --- a/openstack/tests/unit/block_storage/v2/test_snapshot.py +++ b/openstack/tests/unit/block_storage/v2/test_snapshot.py @@ -45,7 +45,6 @@ class TestSnapshot(base.TestCase): self.assertEqual("snapshot", sot.resource_key) self.assertEqual("snapshots", sot.resources_key) self.assertEqual("/snapshots", sot.base_path) - self.assertEqual("block-storage", sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) self.assertTrue(sot.allow_create) diff --git a/openstack/tests/unit/block_storage/v2/test_type.py b/openstack/tests/unit/block_storage/v2/test_type.py index 393d9cdd2..d5cf4e7a3 100644 --- a/openstack/tests/unit/block_storage/v2/test_type.py +++ b/openstack/tests/unit/block_storage/v2/test_type.py @@ -31,7 +31,6 @@ class TestType(base.TestCase): self.assertEqual("volume_type", sot.resource_key) self.assertEqual("volume_types", sot.resources_key) self.assertEqual("/types", sot.base_path) - self.assertEqual("block-storage", sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) diff --git a/openstack/tests/unit/block_storage/v2/test_volume.py b/openstack/tests/unit/block_storage/v2/test_volume.py index e3edcd072..3dc40afd0 100644 --- a/openstack/tests/unit/block_storage/v2/test_volume.py +++ b/openstack/tests/unit/block_storage/v2/test_volume.py @@ -68,7 +68,6 @@ class TestVolume(base.TestCase): self.assertEqual("volume", sot.resource_key) self.assertEqual("volumes", sot.resources_key) self.assertEqual("/volumes", sot.base_path) - self.assertEqual("block-storage", sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/block_store/v2/test_stats.py b/openstack/tests/unit/block_store/v2/test_stats.py index ed87eba5e..729ec6370 100644 --- a/openstack/tests/unit/block_store/v2/test_stats.py +++ b/openstack/tests/unit/block_store/v2/test_stats.py @@ -39,7 +39,6 @@ class TestBackendPools(base.TestCase): self.assertEqual("pools", sot.resources_key) self.assertEqual("/scheduler-stats/get_pools?detail=True", sot.base_path) - self.assertEqual("volume", sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_delete) diff --git a/openstack/tests/unit/cloud/test_operator_noauth.py b/openstack/tests/unit/cloud/test_operator_noauth.py index 7630c805c..d9faee222 100644 --- a/openstack/tests/unit/cloud/test_operator_noauth.py +++ b/openstack/tests/unit/cloud/test_operator_noauth.py @@ -37,7 +37,7 @@ class TestOpenStackCloudOperatorNoAuth(base.TestCase): uri=self.get_mock_url( service_type='baremetal', base_url_append='v1'), json={'id': 'v1', - 'links': [{"href": "https://bare-metal.example.com/v1/", + 'links': [{"href": "https://bare-metal.example.com/v1", "rel": "self"}]}), dict(method='GET', uri=self.get_mock_url( @@ -98,3 +98,118 @@ class TestOpenStackCloudOperatorNoAuth(base.TestCase): self.cloud_noauth.list_machines() self.assert_calls() + + +class TestOpenStackCloudOperatorNoAuthUnversioned(base.TestCase): + def setUp(self): + """Setup Noauth OpenStackCloud tests for unversioned endpoints + + Setup the test to utilize no authentication and an endpoint + URL in the auth data. This is permits testing of the basic + mechanism that enables Ironic noauth mode to be utilized with + Shade. + + Uses base.TestCase instead of IronicTestCase because + we need to do completely different things with discovery. + """ + super(TestOpenStackCloudOperatorNoAuthUnversioned, self).setUp() + # By clearing the URI registry, we remove all calls to a keystone + # catalog or getting a token + self._uri_registry.clear() + self.register_uris([ + dict(method='GET', + uri='https://bare-metal.example.com/', + json={ + "default_version": { + "status": "CURRENT", + "min_version": "1.1", + "version": "1.46", + "id": "v1", + "links": [{ + "href": "https://bare-metal.example.com/v1", + "rel": "self" + }]}, + "versions": [{ + "status": "CURRENT", + "min_version": "1.1", + "version": "1.46", + "id": "v1", + "links": [{ + "href": "https://bare-metal.example.com/v1", + "rel": "self" + }]}], + "name": "OpenStack Ironic API", + "description": "Ironic is an OpenStack project." + }), + dict(method='GET', + uri=self.get_mock_url( + service_type='baremetal', base_url_append='v1'), + json={ + "media_types": [{ + "base": "application/json", + "type": "application/vnd.openstack.ironic.v1+json" + }], + "links": [{ + "href": "https://bare-metal.example.com/v1", + "rel": "self" + }], + "ports": [{ + "href": "https://bare-metal.example.com/v1/ports/", + "rel": "self" + }, { + "href": "https://bare-metal.example.com/ports/", + "rel": "bookmark" + }], + "nodes": [{ + "href": "https://bare-metal.example.com/v1/nodes/", + "rel": "self" + }, { + "href": "https://bare-metal.example.com/nodes/", + "rel": "bookmark" + }], + "id": "v1" + }), + dict(method='GET', + uri=self.get_mock_url( + service_type='baremetal', base_url_append='v1', + resource='nodes'), + json={'nodes': []}), + ]) + + def test_ironic_noauth_none_auth_type(self): + """Test noauth selection for Ironic in OpenStackCloud + + The new way of doing this is with the keystoneauth none plugin. + """ + # NOTE(TheJulia): When we are using the python-ironicclient + # library, the library will automatically prepend the URI path + # with 'v1'. As such, since we are overriding the endpoint, + # we must explicitly do the same as we move away from the + # client library. + self.cloud_noauth = openstack.connect( + auth_type='none', + baremetal_endpoint_override="https://bare-metal.example.com") + + self.cloud_noauth.list_machines() + + self.assert_calls() + + def test_ironic_noauth_auth_endpoint(self): + """Test noauth selection for Ironic in OpenStackCloud + + Sometimes people also write clouds.yaml files that look like this: + + :: + clouds: + bifrost: + auth_type: "none" + endpoint: https://bare-metal.example.com + """ + self.cloud_noauth = openstack.connect( + auth_type='none', + endpoint='https://bare-metal.example.com/', + ) + + self.cloud_noauth.list_machines() + + self.assert_calls() diff --git a/openstack/tests/unit/clustering/test_cluster_service.py b/openstack/tests/unit/clustering/test_cluster_service.py deleted file mode 100644 index f52cafdaf..000000000 --- a/openstack/tests/unit/clustering/test_cluster_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.clustering import clustering_service - - -class TestClusteringService(base.TestCase): - - def test_service(self): - sot = clustering_service.ClusteringService() - self.assertEqual('clustering', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/clustering/test_version.py b/openstack/tests/unit/clustering/test_version.py index f6fff193b..461a8f4e9 100644 --- a/openstack/tests/unit/clustering/test_version.py +++ b/openstack/tests/unit/clustering/test_version.py @@ -29,7 +29,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/clustering/v1/test_action.py b/openstack/tests/unit/clustering/v1/test_action.py index e506fc203..268202d25 100644 --- a/openstack/tests/unit/clustering/v1/test_action.py +++ b/openstack/tests/unit/clustering/v1/test_action.py @@ -53,7 +53,6 @@ class TestAction(base.TestCase): self.assertEqual('action', sot.resource_key) self.assertEqual('actions', sot.resources_key) self.assertEqual('/actions', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) diff --git a/openstack/tests/unit/clustering/v1/test_build_info.py b/openstack/tests/unit/clustering/v1/test_build_info.py index 4532c2634..0056691d6 100644 --- a/openstack/tests/unit/clustering/v1/test_build_info.py +++ b/openstack/tests/unit/clustering/v1/test_build_info.py @@ -34,7 +34,6 @@ class TestBuildInfo(base.TestCase): sot = build_info.BuildInfo() self.assertEqual('/build-info', sot.base_path) self.assertEqual('build_info', sot.resource_key) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_fetch) def test_instantiate(self): diff --git a/openstack/tests/unit/clustering/v1/test_cluster.py b/openstack/tests/unit/clustering/v1/test_cluster.py index e79e397e3..2d0a22ada 100644 --- a/openstack/tests/unit/clustering/v1/test_cluster.py +++ b/openstack/tests/unit/clustering/v1/test_cluster.py @@ -75,7 +75,6 @@ class TestCluster(base.TestCase): self.assertEqual('cluster', sot.resource_key) self.assertEqual('clusters', sot.resources_key) self.assertEqual('/clusters', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/clustering/v1/test_cluster_attr.py b/openstack/tests/unit/clustering/v1/test_cluster_attr.py index e64cdcb9e..3ef9641ce 100644 --- a/openstack/tests/unit/clustering/v1/test_cluster_attr.py +++ b/openstack/tests/unit/clustering/v1/test_cluster_attr.py @@ -33,7 +33,6 @@ class TestClusterAttr(base.TestCase): self.assertEqual('cluster_attributes', sot.resources_key) self.assertEqual('/clusters/%(cluster_id)s/attrs/%(path)s', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_list) def test_instantiate(self): diff --git a/openstack/tests/unit/clustering/v1/test_cluster_policy.py b/openstack/tests/unit/clustering/v1/test_cluster_policy.py index e6f3de548..463fa642e 100644 --- a/openstack/tests/unit/clustering/v1/test_cluster_policy.py +++ b/openstack/tests/unit/clustering/v1/test_cluster_policy.py @@ -37,7 +37,6 @@ class TestClusterPolicy(base.TestCase): self.assertEqual('cluster_policies', sot.resources_key) self.assertEqual('/clusters/%(cluster_id)s/policies', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) diff --git a/openstack/tests/unit/clustering/v1/test_event.py b/openstack/tests/unit/clustering/v1/test_event.py index 8464c0ea3..e52a44218 100644 --- a/openstack/tests/unit/clustering/v1/test_event.py +++ b/openstack/tests/unit/clustering/v1/test_event.py @@ -41,7 +41,6 @@ class TestEvent(base.TestCase): self.assertEqual('event', sot.resource_key) self.assertEqual('events', sot.resources_key) self.assertEqual('/events', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) diff --git a/openstack/tests/unit/clustering/v1/test_node.py b/openstack/tests/unit/clustering/v1/test_node.py index 6a454cb05..c2838a093 100644 --- a/openstack/tests/unit/clustering/v1/test_node.py +++ b/openstack/tests/unit/clustering/v1/test_node.py @@ -44,7 +44,6 @@ class TestNode(base.TestCase): self.assertEqual('node', sot.resource_key) self.assertEqual('nodes', sot.resources_key) self.assertEqual('/nodes', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/clustering/v1/test_policy.py b/openstack/tests/unit/clustering/v1/test_policy.py index f565b6032..6af6bd6b6 100644 --- a/openstack/tests/unit/clustering/v1/test_policy.py +++ b/openstack/tests/unit/clustering/v1/test_policy.py @@ -51,7 +51,6 @@ class TestPolicy(base.TestCase): self.assertEqual('policy', sot.resource_key) self.assertEqual('policies', sot.resources_key) self.assertEqual('/policies', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -81,7 +80,6 @@ class TestPolicyValidate(base.TestCase): self.assertEqual('policy', sot.resource_key) self.assertEqual('policies', sot.resources_key) self.assertEqual('/policies/validate', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/clustering/v1/test_policy_type.py b/openstack/tests/unit/clustering/v1/test_policy_type.py index 6ebf45db2..63f88fdec 100644 --- a/openstack/tests/unit/clustering/v1/test_policy_type.py +++ b/openstack/tests/unit/clustering/v1/test_policy_type.py @@ -36,7 +36,6 @@ class TestPolicyType(base.TestCase): self.assertEqual('policy_type', sot.resource_key) self.assertEqual('policy_types', sot.resources_key) self.assertEqual('/policy-types', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) diff --git a/openstack/tests/unit/clustering/v1/test_profile.py b/openstack/tests/unit/clustering/v1/test_profile.py index 4165f4cec..abcaf098d 100644 --- a/openstack/tests/unit/clustering/v1/test_profile.py +++ b/openstack/tests/unit/clustering/v1/test_profile.py @@ -51,7 +51,6 @@ class TestProfile(base.TestCase): self.assertEqual('profile', sot.resource_key) self.assertEqual('profiles', sot.resources_key) self.assertEqual('/profiles', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -83,7 +82,6 @@ class TestProfileValidate(base.TestCase): self.assertEqual('profile', sot.resource_key) self.assertEqual('profiles', sot.resources_key) self.assertEqual('/profiles/validate', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/clustering/v1/test_profile_type.py b/openstack/tests/unit/clustering/v1/test_profile_type.py index ee5e7fa43..f709c3d8c 100644 --- a/openstack/tests/unit/clustering/v1/test_profile_type.py +++ b/openstack/tests/unit/clustering/v1/test_profile_type.py @@ -37,7 +37,6 @@ class TestProfileType(base.TestCase): self.assertEqual('profile_type', sot.resource_key) self.assertEqual('profile_types', sot.resources_key) self.assertEqual('/profile-types', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) diff --git a/openstack/tests/unit/clustering/v1/test_receiver.py b/openstack/tests/unit/clustering/v1/test_receiver.py index 27b340c4d..197cfb01e 100644 --- a/openstack/tests/unit/clustering/v1/test_receiver.py +++ b/openstack/tests/unit/clustering/v1/test_receiver.py @@ -50,7 +50,6 @@ class TestReceiver(base.TestCase): self.assertEqual('receiver', sot.resource_key) self.assertEqual('receivers', sot.resources_key) self.assertEqual('/receivers', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/clustering/v1/test_service.py b/openstack/tests/unit/clustering/v1/test_service.py index a97fa678d..f361a0b6f 100644 --- a/openstack/tests/unit/clustering/v1/test_service.py +++ b/openstack/tests/unit/clustering/v1/test_service.py @@ -41,7 +41,6 @@ class TestService(base.TestCase): self.assertEqual('service', sot.resource_key) self.assertEqual('services', sot.resources_key) self.assertEqual('/services', sot.base_path) - self.assertEqual('clustering', sot.service.service_type) self.assertTrue(sot.allow_list) def test_make_it(self): diff --git a/openstack/tests/unit/compute/test_compute_service.py b/openstack/tests/unit/compute/test_compute_service.py deleted file mode 100644 index 3a3ed7bbe..000000000 --- a/openstack/tests/unit/compute/test_compute_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.compute import compute_service - - -class TestComputeService(base.TestCase): - - def test_service(self): - sot = compute_service.ComputeService() - self.assertEqual('compute', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v2', sot.valid_versions[0].module) - self.assertEqual('v2', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/compute/test_version.py b/openstack/tests/unit/compute/test_version.py index 2f460f260..76fdaf2dd 100644 --- a/openstack/tests/unit/compute/test_version.py +++ b/openstack/tests/unit/compute/test_version.py @@ -30,7 +30,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_availability_zone.py b/openstack/tests/unit/compute/v2/test_availability_zone.py index 66489eb58..f8d409366 100644 --- a/openstack/tests/unit/compute/v2/test_availability_zone.py +++ b/openstack/tests/unit/compute/v2/test_availability_zone.py @@ -30,14 +30,12 @@ class TestAvailabilityZone(base.TestCase): self.assertEqual('availabilityZoneInfo', sot.resources_key) self.assertEqual('/os-availability-zone', sot.base_path) self.assertTrue(sot.allow_list) - self.assertEqual('compute', sot.service.service_type) def test_basic_detail(self): sot = az.AvailabilityZoneDetail() self.assertEqual('availabilityZoneInfo', sot.resources_key) self.assertEqual('/os-availability-zone/detail', sot.base_path) self.assertTrue(sot.allow_list) - self.assertEqual('compute', sot.service.service_type) def test_make_basic(self): sot = az.AvailabilityZone(**BASIC_EXAMPLE) diff --git a/openstack/tests/unit/compute/v2/test_extension.py b/openstack/tests/unit/compute/v2/test_extension.py index 1cc35f680..4ee1ad331 100644 --- a/openstack/tests/unit/compute/v2/test_extension.py +++ b/openstack/tests/unit/compute/v2/test_extension.py @@ -32,7 +32,6 @@ class TestExtension(base.TestCase): self.assertEqual('extension', sot.resource_key) self.assertEqual('extensions', sot.resources_key) self.assertEqual('/extensions', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_flavor.py b/openstack/tests/unit/compute/v2/test_flavor.py index 9c5080c73..c781711d2 100644 --- a/openstack/tests/unit/compute/v2/test_flavor.py +++ b/openstack/tests/unit/compute/v2/test_flavor.py @@ -38,7 +38,6 @@ class TestFlavor(base.TestCase): self.assertEqual('flavor', sot.resource_key) self.assertEqual('flavors', sot.resources_key) self.assertEqual('/flavors', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) @@ -77,7 +76,6 @@ class TestFlavor(base.TestCase): self.assertEqual('flavor', sot.resource_key) self.assertEqual('flavors', sot.resources_key) self.assertEqual('/flavors/detail', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_hypervisor.py b/openstack/tests/unit/compute/v2/test_hypervisor.py index ae369351e..feb96b18e 100644 --- a/openstack/tests/unit/compute/v2/test_hypervisor.py +++ b/openstack/tests/unit/compute/v2/test_hypervisor.py @@ -49,7 +49,6 @@ class TestHypervisor(base.TestCase): self.assertEqual('hypervisor', sot.resource_key) self.assertEqual('hypervisors', sot.resources_key) self.assertEqual('/os-hypervisors', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) @@ -82,6 +81,5 @@ class TestHypervisor(base.TestCase): self.assertEqual('hypervisor', sot.resource_key) self.assertEqual('hypervisors', sot.resources_key) self.assertEqual('/os-hypervisors/detail', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_fetch) self.assertTrue(sot.allow_list) diff --git a/openstack/tests/unit/compute/v2/test_image.py b/openstack/tests/unit/compute/v2/test_image.py index 24f7f2a91..59c101b50 100644 --- a/openstack/tests/unit/compute/v2/test_image.py +++ b/openstack/tests/unit/compute/v2/test_image.py @@ -43,7 +43,6 @@ class TestImage(base.TestCase): self.assertEqual('image', sot.resource_key) self.assertEqual('images', sot.resources_key) self.assertEqual('/images', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) @@ -72,7 +71,6 @@ class TestImage(base.TestCase): self.assertEqual('image', sot.resource_key) self.assertEqual('images', sot.resources_key) self.assertEqual('/images/detail', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_keypair.py b/openstack/tests/unit/compute/v2/test_keypair.py index c0e7d974a..c058b5507 100644 --- a/openstack/tests/unit/compute/v2/test_keypair.py +++ b/openstack/tests/unit/compute/v2/test_keypair.py @@ -29,7 +29,6 @@ class TestKeypair(base.TestCase): self.assertEqual('keypair', sot.resource_key) self.assertEqual('keypairs', sot.resources_key) self.assertEqual('/os-keypairs', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_limits.py b/openstack/tests/unit/compute/v2/test_limits.py index 398d324e8..d77b8ebdf 100644 --- a/openstack/tests/unit/compute/v2/test_limits.py +++ b/openstack/tests/unit/compute/v2/test_limits.py @@ -69,7 +69,6 @@ class TestAbsoluteLimits(base.TestCase): self.assertIsNone(sot.resource_key) self.assertIsNone(sot.resources_key) self.assertEqual("", sot.base_path) - self.assertIsNone(sot.service) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) @@ -139,7 +138,6 @@ class TestLimits(base.TestCase): sot = limits.Limits() self.assertEqual("limits", sot.resource_key) self.assertEqual("/limits", sot.base_path) - self.assertEqual("compute", sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_server.py b/openstack/tests/unit/compute/v2/test_server.py index 45bf4ebc2..7de99b494 100644 --- a/openstack/tests/unit/compute/v2/test_server.py +++ b/openstack/tests/unit/compute/v2/test_server.py @@ -73,7 +73,6 @@ class TestServer(base.TestCase): self.assertEqual('server', sot.resource_key) self.assertEqual('servers', sot.resources_key) self.assertEqual('/servers', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -155,7 +154,6 @@ class TestServer(base.TestCase): self.assertEqual('server', sot.resource_key) self.assertEqual('servers', sot.resources_key) self.assertEqual('/servers/detail', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_server_group.py b/openstack/tests/unit/compute/v2/test_server_group.py index d9c954dd7..173761364 100644 --- a/openstack/tests/unit/compute/v2/test_server_group.py +++ b/openstack/tests/unit/compute/v2/test_server_group.py @@ -30,7 +30,6 @@ class TestServerGroup(base.TestCase): self.assertEqual('server_group', sot.resource_key) self.assertEqual('server_groups', sot.resources_key) self.assertEqual('/os-server-groups', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_server_interface.py b/openstack/tests/unit/compute/v2/test_server_interface.py index 973923204..9b4fa7f2b 100644 --- a/openstack/tests/unit/compute/v2/test_server_interface.py +++ b/openstack/tests/unit/compute/v2/test_server_interface.py @@ -37,7 +37,6 @@ class TestServerInterface(base.TestCase): self.assertEqual('interfaceAttachment', sot.resource_key) self.assertEqual('interfaceAttachments', sot.resources_key) self.assertEqual('/servers/%(server_id)s/os-interface', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_server_ip.py b/openstack/tests/unit/compute/v2/test_server_ip.py index 66fed38df..6cbc0e94a 100644 --- a/openstack/tests/unit/compute/v2/test_server_ip.py +++ b/openstack/tests/unit/compute/v2/test_server_ip.py @@ -29,7 +29,6 @@ class TestServerIP(base.TestCase): sot = server_ip.ServerIP() self.assertEqual('addresses', sot.resources_key) self.assertEqual('/servers/%(server_id)s/ips', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/compute/v2/test_service.py b/openstack/tests/unit/compute/v2/test_service.py index 094792a7f..159423505 100644 --- a/openstack/tests/unit/compute/v2/test_service.py +++ b/openstack/tests/unit/compute/v2/test_service.py @@ -41,7 +41,6 @@ class TestService(base.TestCase): self.assertEqual('service', sot.resource_key) self.assertEqual('services', sot.resources_key) self.assertEqual('/os-services', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_commit) self.assertTrue(sot.allow_list) self.assertFalse(sot.allow_fetch) diff --git a/openstack/tests/unit/compute/v2/test_volume_attachment.py b/openstack/tests/unit/compute/v2/test_volume_attachment.py index 623a931e7..66068dce9 100644 --- a/openstack/tests/unit/compute/v2/test_volume_attachment.py +++ b/openstack/tests/unit/compute/v2/test_volume_attachment.py @@ -29,7 +29,6 @@ class TestServerInterface(base.TestCase): self.assertEqual('volumeAttachments', sot.resources_key) self.assertEqual('/servers/%(server_id)s/os-volume_attachments', sot.base_path) - self.assertEqual('compute', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/database/test_database_service.py b/openstack/tests/unit/database/test_database_service.py deleted file mode 100644 index 85c57d887..000000000 --- a/openstack/tests/unit/database/test_database_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.database import database_service - - -class TestDatabaseService(base.TestCase): - - def test_service(self): - sot = database_service.DatabaseService() - self.assertEqual('database', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/database/v1/test_database.py b/openstack/tests/unit/database/v1/test_database.py index 477672a36..08df9e118 100644 --- a/openstack/tests/unit/database/v1/test_database.py +++ b/openstack/tests/unit/database/v1/test_database.py @@ -33,7 +33,6 @@ class TestDatabase(base.TestCase): self.assertEqual('databases', sot.resources_key) path = '/instances/%(instance_id)s/databases' self.assertEqual(path, sot.base_path) - self.assertEqual('database', sot.service.service_type) self.assertTrue(sot.allow_list) self.assertTrue(sot.allow_create) self.assertFalse(sot.allow_fetch) diff --git a/openstack/tests/unit/database/v1/test_flavor.py b/openstack/tests/unit/database/v1/test_flavor.py index 82f850e6f..4fdd21f60 100644 --- a/openstack/tests/unit/database/v1/test_flavor.py +++ b/openstack/tests/unit/database/v1/test_flavor.py @@ -30,7 +30,6 @@ class TestFlavor(base.TestCase): self.assertEqual('flavor', sot.resource_key) self.assertEqual('flavors', sot.resources_key) self.assertEqual('/flavors', sot.base_path) - self.assertEqual('database', sot.service.service_type) self.assertTrue(sot.allow_list) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) diff --git a/openstack/tests/unit/database/v1/test_instance.py b/openstack/tests/unit/database/v1/test_instance.py index 8fd650ebb..98a8c8a54 100644 --- a/openstack/tests/unit/database/v1/test_instance.py +++ b/openstack/tests/unit/database/v1/test_instance.py @@ -38,7 +38,6 @@ class TestInstance(base.TestCase): self.assertEqual('instance', sot.resource_key) self.assertEqual('instances', sot.resources_key) self.assertEqual('/instances', sot.base_path) - self.assertEqual('database', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/database/v1/test_user.py b/openstack/tests/unit/database/v1/test_user.py index 5752024d7..ab4b63fe4 100644 --- a/openstack/tests/unit/database/v1/test_user.py +++ b/openstack/tests/unit/database/v1/test_user.py @@ -30,7 +30,6 @@ class TestUser(base.TestCase): self.assertEqual('user', sot.resource_key) self.assertEqual('users', sot.resources_key) self.assertEqual('/instances/%(instance_id)s/users', sot.base_path) - self.assertEqual('database', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/identity/test_identity_service.py b/openstack/tests/unit/identity/test_identity_service.py deleted file mode 100644 index 47125928b..000000000 --- a/openstack/tests/unit/identity/test_identity_service.py +++ /dev/null @@ -1,37 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.identity import identity_service - - -class TestIdentityService(base.TestCase): - - def test_regular_service(self): - sot = identity_service.IdentityService() - self.assertEqual('identity', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(2, len(sot.valid_versions)) - self.assertEqual('v3', sot.valid_versions[0].module) - self.assertEqual('v3', sot.valid_versions[0].path) - self.assertEqual('v2', sot.valid_versions[1].module) - self.assertEqual('v2', sot.valid_versions[1].path) - - def test_admin_service(self): - sot = identity_service.AdminService() - self.assertEqual('identity', sot.service_type) - self.assertEqual('admin', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) diff --git a/openstack/tests/unit/identity/test_version.py b/openstack/tests/unit/identity/test_version.py index c18eaadef..c4351ebd9 100644 --- a/openstack/tests/unit/identity/test_version.py +++ b/openstack/tests/unit/identity/test_version.py @@ -31,7 +31,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v2/test_extension.py b/openstack/tests/unit/identity/v2/test_extension.py index 557d3fb54..d7ff73145 100644 --- a/openstack/tests/unit/identity/v2/test_extension.py +++ b/openstack/tests/unit/identity/v2/test_extension.py @@ -33,7 +33,6 @@ class TestExtension(base.TestCase): self.assertEqual('extension', sot.resource_key) self.assertEqual('extensions', sot.resources_key) self.assertEqual('/extensions', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v2/test_role.py b/openstack/tests/unit/identity/v2/test_role.py index 02912a9f2..bb7b9f79a 100644 --- a/openstack/tests/unit/identity/v2/test_role.py +++ b/openstack/tests/unit/identity/v2/test_role.py @@ -30,7 +30,6 @@ class TestRole(base.TestCase): self.assertEqual('role', sot.resource_key) self.assertEqual('roles', sot.resources_key) self.assertEqual('/OS-KSADM/roles', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v2/test_tenant.py b/openstack/tests/unit/identity/v2/test_tenant.py index 3c7fd7bf4..31847538f 100644 --- a/openstack/tests/unit/identity/v2/test_tenant.py +++ b/openstack/tests/unit/identity/v2/test_tenant.py @@ -30,7 +30,6 @@ class TestTenant(base.TestCase): self.assertEqual('tenant', sot.resource_key) self.assertEqual('tenants', sot.resources_key) self.assertEqual('/tenants', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v2/test_user.py b/openstack/tests/unit/identity/v2/test_user.py index 0c495c2e5..300b20b0d 100644 --- a/openstack/tests/unit/identity/v2/test_user.py +++ b/openstack/tests/unit/identity/v2/test_user.py @@ -30,7 +30,6 @@ class TestUser(base.TestCase): self.assertEqual('user', sot.resource_key) self.assertEqual('users', sot.resources_key) self.assertEqual('/users', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_credential.py b/openstack/tests/unit/identity/v3/test_credential.py index 7f6d2dc1d..0e073f97c 100644 --- a/openstack/tests/unit/identity/v3/test_credential.py +++ b/openstack/tests/unit/identity/v3/test_credential.py @@ -31,7 +31,6 @@ class TestCredential(base.TestCase): self.assertEqual('credential', sot.resource_key) self.assertEqual('credentials', sot.resources_key) self.assertEqual('/credentials', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_domain.py b/openstack/tests/unit/identity/v3/test_domain.py index 33ec294dd..782e3f277 100644 --- a/openstack/tests/unit/identity/v3/test_domain.py +++ b/openstack/tests/unit/identity/v3/test_domain.py @@ -31,7 +31,6 @@ class TestDomain(base.TestCase): self.assertEqual('domain', sot.resource_key) self.assertEqual('domains', sot.resources_key) self.assertEqual('/domains', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_endpoint.py b/openstack/tests/unit/identity/v3/test_endpoint.py index 090c0b346..da5a4e818 100644 --- a/openstack/tests/unit/identity/v3/test_endpoint.py +++ b/openstack/tests/unit/identity/v3/test_endpoint.py @@ -33,7 +33,6 @@ class TestEndpoint(base.TestCase): self.assertEqual('endpoint', sot.resource_key) self.assertEqual('endpoints', sot.resources_key) self.assertEqual('/endpoints', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_group.py b/openstack/tests/unit/identity/v3/test_group.py index 515ee9c3b..bc308e6ce 100644 --- a/openstack/tests/unit/identity/v3/test_group.py +++ b/openstack/tests/unit/identity/v3/test_group.py @@ -30,7 +30,6 @@ class TestGroup(base.TestCase): self.assertEqual('group', sot.resource_key) self.assertEqual('groups', sot.resources_key) self.assertEqual('/groups', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_policy.py b/openstack/tests/unit/identity/v3/test_policy.py index 885d7b002..4bd2256f8 100644 --- a/openstack/tests/unit/identity/v3/test_policy.py +++ b/openstack/tests/unit/identity/v3/test_policy.py @@ -32,7 +32,6 @@ class TestPolicy(base.TestCase): self.assertEqual('policy', sot.resource_key) self.assertEqual('policies', sot.resources_key) self.assertEqual('/policies', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_project.py b/openstack/tests/unit/identity/v3/test_project.py index 62d3437a3..6f2c1d145 100644 --- a/openstack/tests/unit/identity/v3/test_project.py +++ b/openstack/tests/unit/identity/v3/test_project.py @@ -33,7 +33,6 @@ class TestProject(base.TestCase): self.assertEqual('project', sot.resource_key) self.assertEqual('projects', sot.resources_key) self.assertEqual('/projects', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -71,7 +70,6 @@ class TestUserProject(base.TestCase): self.assertEqual('project', sot.resource_key) self.assertEqual('projects', sot.resources_key) self.assertEqual('/users/%(user_id)s/projects', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_region.py b/openstack/tests/unit/identity/v3/test_region.py index 6657ca5cb..1ac7a745b 100644 --- a/openstack/tests/unit/identity/v3/test_region.py +++ b/openstack/tests/unit/identity/v3/test_region.py @@ -30,7 +30,6 @@ class TestRegion(base.TestCase): self.assertEqual('region', sot.resource_key) self.assertEqual('regions', sot.resources_key) self.assertEqual('/regions', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_role.py b/openstack/tests/unit/identity/v3/test_role.py index a32e616cd..4a67d6dc4 100644 --- a/openstack/tests/unit/identity/v3/test_role.py +++ b/openstack/tests/unit/identity/v3/test_role.py @@ -29,7 +29,6 @@ class TestRole(base.TestCase): self.assertEqual('role', sot.resource_key) self.assertEqual('roles', sot.resources_key) self.assertEqual('/roles', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_role_assignment.py b/openstack/tests/unit/identity/v3/test_role_assignment.py index c54df84bd..fac7a6dcf 100644 --- a/openstack/tests/unit/identity/v3/test_role_assignment.py +++ b/openstack/tests/unit/identity/v3/test_role_assignment.py @@ -32,7 +32,6 @@ class TestRoleAssignment(base.TestCase): self.assertEqual('role_assignments', sot.resources_key) self.assertEqual('/role_assignments', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_list) def test_make_it(self): diff --git a/openstack/tests/unit/identity/v3/test_role_domain_group_assignment.py b/openstack/tests/unit/identity/v3/test_role_domain_group_assignment.py index 92b6539a0..764da5035 100644 --- a/openstack/tests/unit/identity/v3/test_role_domain_group_assignment.py +++ b/openstack/tests/unit/identity/v3/test_role_domain_group_assignment.py @@ -32,7 +32,6 @@ class TestRoleDomainGroupAssignment(base.TestCase): self.assertEqual('roles', sot.resources_key) self.assertEqual('/domains/%(domain_id)s/groups/%(group_id)s/roles', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_list) def test_make_it(self): diff --git a/openstack/tests/unit/identity/v3/test_role_domain_user_assignment.py b/openstack/tests/unit/identity/v3/test_role_domain_user_assignment.py index bd19a8daf..185c89ce8 100644 --- a/openstack/tests/unit/identity/v3/test_role_domain_user_assignment.py +++ b/openstack/tests/unit/identity/v3/test_role_domain_user_assignment.py @@ -32,7 +32,6 @@ class TestRoleDomainUserAssignment(base.TestCase): self.assertEqual('roles', sot.resources_key) self.assertEqual('/domains/%(domain_id)s/users/%(user_id)s/roles', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_list) def test_make_it(self): diff --git a/openstack/tests/unit/identity/v3/test_role_project_group_assignment.py b/openstack/tests/unit/identity/v3/test_role_project_group_assignment.py index 4070909a9..28351652e 100644 --- a/openstack/tests/unit/identity/v3/test_role_project_group_assignment.py +++ b/openstack/tests/unit/identity/v3/test_role_project_group_assignment.py @@ -32,7 +32,6 @@ class TestRoleProjectGroupAssignment(base.TestCase): self.assertEqual('roles', sot.resources_key) self.assertEqual('/projects/%(project_id)s/groups/%(group_id)s/roles', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_list) def test_make_it(self): diff --git a/openstack/tests/unit/identity/v3/test_role_project_user_assignment.py b/openstack/tests/unit/identity/v3/test_role_project_user_assignment.py index c04ffdaa1..61e1b8963 100644 --- a/openstack/tests/unit/identity/v3/test_role_project_user_assignment.py +++ b/openstack/tests/unit/identity/v3/test_role_project_user_assignment.py @@ -32,7 +32,6 @@ class TestRoleProjectUserAssignment(base.TestCase): self.assertEqual('roles', sot.resources_key) self.assertEqual('/projects/%(project_id)s/users/%(user_id)s/roles', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_list) def test_make_it(self): diff --git a/openstack/tests/unit/identity/v3/test_service.py b/openstack/tests/unit/identity/v3/test_service.py index d6716f3f6..a6da1fddd 100644 --- a/openstack/tests/unit/identity/v3/test_service.py +++ b/openstack/tests/unit/identity/v3/test_service.py @@ -32,7 +32,6 @@ class TestService(base.TestCase): self.assertEqual('service', sot.resource_key) self.assertEqual('services', sot.resources_key) self.assertEqual('/services', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/identity/v3/test_trust.py b/openstack/tests/unit/identity/v3/test_trust.py index 7028e0af0..63c38a70c 100644 --- a/openstack/tests/unit/identity/v3/test_trust.py +++ b/openstack/tests/unit/identity/v3/test_trust.py @@ -39,7 +39,6 @@ class TestTrust(base.TestCase): self.assertEqual('trust', sot.resource_key) self.assertEqual('trusts', sot.resources_key) self.assertEqual('/OS-TRUST/trusts', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) diff --git a/openstack/tests/unit/identity/v3/test_user.py b/openstack/tests/unit/identity/v3/test_user.py index f75eb6e7d..9d8040467 100644 --- a/openstack/tests/unit/identity/v3/test_user.py +++ b/openstack/tests/unit/identity/v3/test_user.py @@ -36,7 +36,6 @@ class TestUser(base.TestCase): self.assertEqual('user', sot.resource_key) self.assertEqual('users', sot.resources_key) self.assertEqual('/users', sot.base_path) - self.assertEqual('identity', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/image/test_image_service.py b/openstack/tests/unit/image/test_image_service.py deleted file mode 100644 index 236227430..000000000 --- a/openstack/tests/unit/image/test_image_service.py +++ /dev/null @@ -1,30 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.image import image_service - - -class TestImageService(base.TestCase): - - def test_service(self): - sot = image_service.ImageService() - self.assertEqual('image', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(2, len(sot.valid_versions)) - self.assertEqual('v2', sot.valid_versions[0].module) - self.assertEqual('v2', sot.valid_versions[0].path) - self.assertEqual('v1', sot.valid_versions[1].module) - self.assertEqual('v1', sot.valid_versions[1].path) diff --git a/openstack/tests/unit/image/v1/test_image.py b/openstack/tests/unit/image/v1/test_image.py index 256f9892c..133c4232e 100644 --- a/openstack/tests/unit/image/v1/test_image.py +++ b/openstack/tests/unit/image/v1/test_image.py @@ -43,7 +43,6 @@ class TestImage(base.TestCase): self.assertEqual('image', sot.resource_key) self.assertEqual('images', sot.resources_key) self.assertEqual('/images', sot.base_path) - self.assertEqual('image', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/image/v2/test_image.py b/openstack/tests/unit/image/v2/test_image.py index e2d1ba1b1..94934122a 100644 --- a/openstack/tests/unit/image/v2/test_image.py +++ b/openstack/tests/unit/image/v2/test_image.py @@ -110,7 +110,6 @@ class TestImage(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('images', sot.resources_key) self.assertEqual('/images', sot.base_path) - self.assertEqual('image', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/image/v2/test_member.py b/openstack/tests/unit/image/v2/test_member.py index e0e2a6fe0..7fc603862 100644 --- a/openstack/tests/unit/image/v2/test_member.py +++ b/openstack/tests/unit/image/v2/test_member.py @@ -30,7 +30,6 @@ class TestMember(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('members', sot.resources_key) self.assertEqual('/images/%(image_id)s/members', sot.base_path) - self.assertEqual('image', sot.service.service_type) self.assertEqual('member', sot._alternate_id()) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) diff --git a/openstack/tests/unit/instance_ha/test_instance_ha_service.py b/openstack/tests/unit/instance_ha/test_instance_ha_service.py deleted file mode 100644 index fa46986dd..000000000 --- a/openstack/tests/unit/instance_ha/test_instance_ha_service.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright(c) 2018 Nippon Telegraph and Telephone Corporation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from openstack.tests.unit import base - -from openstack.instance_ha import instance_ha_service - - -class TestInstanceHaService(base.TestCase): - - def test_service(self): - sot = instance_ha_service.InstanceHaService() - self.assertEqual("ha", sot.service_type) - self.assertEqual("public", sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual("v1", sot.valid_versions[0].module) - self.assertEqual("v1", sot.valid_versions[0].path) diff --git a/openstack/tests/unit/instance_ha/v1/test_host.py b/openstack/tests/unit/instance_ha/v1/test_host.py index 2d20bdfdc..4b388a663 100644 --- a/openstack/tests/unit/instance_ha/v1/test_host.py +++ b/openstack/tests/unit/instance_ha/v1/test_host.py @@ -44,7 +44,6 @@ class TestHost(base.TestCase): self.assertEqual("host", sot.resource_key) self.assertEqual("hosts", sot.resources_key) self.assertEqual("/segments/%(segment_id)s/hosts", sot.base_path) - self.assertEqual("ha", sot.service.service_type) self.assertTrue(sot.allow_list) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_create) diff --git a/openstack/tests/unit/instance_ha/v1/test_notification.py b/openstack/tests/unit/instance_ha/v1/test_notification.py index e5566404f..c5e94a03f 100644 --- a/openstack/tests/unit/instance_ha/v1/test_notification.py +++ b/openstack/tests/unit/instance_ha/v1/test_notification.py @@ -44,7 +44,6 @@ class TestNotification(base.TestCase): self.assertEqual("notification", sot.resource_key) self.assertEqual("notifications", sot.resources_key) self.assertEqual("/notifications", sot.base_path) - self.assertEqual("ha", sot.service.service_type) self.assertTrue(sot.allow_list) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_create) diff --git a/openstack/tests/unit/instance_ha/v1/test_segment.py b/openstack/tests/unit/instance_ha/v1/test_segment.py index 7659eb8e1..e38fefae4 100644 --- a/openstack/tests/unit/instance_ha/v1/test_segment.py +++ b/openstack/tests/unit/instance_ha/v1/test_segment.py @@ -36,7 +36,6 @@ class TestSegment(base.TestCase): self.assertEqual("segment", sot.resource_key) self.assertEqual("segments", sot.resources_key) self.assertEqual("/segments", sot.base_path) - self.assertEqual("ha", sot.service.service_type) self.assertTrue(sot.allow_list) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_create) diff --git a/openstack/tests/unit/key_manager/test_key_management_service.py b/openstack/tests/unit/key_manager/test_key_management_service.py deleted file mode 100644 index 4024f2ab7..000000000 --- a/openstack/tests/unit/key_manager/test_key_management_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.key_manager import key_manager_service - - -class TestKeyManagerService(base.TestCase): - - def test_service(self): - sot = key_manager_service.KeyManagerService() - self.assertEqual('key-manager', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/key_manager/v1/test_container.py b/openstack/tests/unit/key_manager/v1/test_container.py index ffc395a47..2095e6c41 100644 --- a/openstack/tests/unit/key_manager/v1/test_container.py +++ b/openstack/tests/unit/key_manager/v1/test_container.py @@ -35,7 +35,6 @@ class TestContainer(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('containers', sot.resources_key) self.assertEqual('/containers', sot.base_path) - self.assertEqual('key-manager', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/key_manager/v1/test_order.py b/openstack/tests/unit/key_manager/v1/test_order.py index fd246e418..de357678a 100644 --- a/openstack/tests/unit/key_manager/v1/test_order.py +++ b/openstack/tests/unit/key_manager/v1/test_order.py @@ -38,7 +38,6 @@ class TestOrder(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('orders', sot.resources_key) self.assertEqual('/orders', sot.base_path) - self.assertEqual('key-manager', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/key_manager/v1/test_secret.py b/openstack/tests/unit/key_manager/v1/test_secret.py index ae4154c4d..96a43e949 100644 --- a/openstack/tests/unit/key_manager/v1/test_secret.py +++ b/openstack/tests/unit/key_manager/v1/test_secret.py @@ -42,7 +42,6 @@ class TestSecret(base.TestCase): self.assertIsNone(sot.resource_key) self.assertEqual('secrets', sot.resources_key) self.assertEqual('/secrets', sot.base_path) - self.assertEqual('key-manager', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/load_balancer/test_health_monitor.py b/openstack/tests/unit/load_balancer/test_health_monitor.py index 0840f44a5..710a8e79b 100644 --- a/openstack/tests/unit/load_balancer/test_health_monitor.py +++ b/openstack/tests/unit/load_balancer/test_health_monitor.py @@ -44,8 +44,7 @@ class TestPoolHealthMonitor(base.TestCase): test_hm = health_monitor.HealthMonitor() self.assertEqual('healthmonitor', test_hm.resource_key) self.assertEqual('healthmonitors', test_hm.resources_key) - self.assertEqual('/v2.0/lbaas/healthmonitors', test_hm.base_path) - self.assertEqual('load-balancer', test_hm.service.service_type) + self.assertEqual('/lbaas/healthmonitors', test_hm.base_path) self.assertTrue(test_hm.allow_create) self.assertTrue(test_hm.allow_fetch) self.assertTrue(test_hm.allow_commit) diff --git a/openstack/tests/unit/load_balancer/test_l7policy.py b/openstack/tests/unit/load_balancer/test_l7policy.py index 91a62ff0a..f8001ad69 100644 --- a/openstack/tests/unit/load_balancer/test_l7policy.py +++ b/openstack/tests/unit/load_balancer/test_l7policy.py @@ -40,8 +40,7 @@ class TestL7Policy(base.TestCase): test_l7_policy = l7_policy.L7Policy() self.assertEqual('l7policy', test_l7_policy.resource_key) self.assertEqual('l7policies', test_l7_policy.resources_key) - self.assertEqual('/v2.0/lbaas/l7policies', test_l7_policy.base_path) - self.assertEqual('load-balancer', test_l7_policy.service.service_type) + self.assertEqual('/lbaas/l7policies', test_l7_policy.base_path) self.assertTrue(test_l7_policy.allow_create) self.assertTrue(test_l7_policy.allow_fetch) self.assertTrue(test_l7_policy.allow_commit) diff --git a/openstack/tests/unit/load_balancer/test_l7rule.py b/openstack/tests/unit/load_balancer/test_l7rule.py index b46f0b3c1..c67615a5c 100644 --- a/openstack/tests/unit/load_balancer/test_l7rule.py +++ b/openstack/tests/unit/load_balancer/test_l7rule.py @@ -38,9 +38,8 @@ class TestL7Rule(base.TestCase): test_l7rule = l7_rule.L7Rule() self.assertEqual('rule', test_l7rule.resource_key) self.assertEqual('rules', test_l7rule.resources_key) - self.assertEqual('/v2.0/lbaas/l7policies/%(l7policy_id)s/rules', + self.assertEqual('/lbaas/l7policies/%(l7policy_id)s/rules', test_l7rule.base_path) - self.assertEqual('load-balancer', test_l7rule.service.service_type) self.assertTrue(test_l7rule.allow_create) self.assertTrue(test_l7rule.allow_fetch) self.assertTrue(test_l7rule.allow_commit) diff --git a/openstack/tests/unit/load_balancer/test_listener.py b/openstack/tests/unit/load_balancer/test_listener.py index b104d8e84..93aad261b 100644 --- a/openstack/tests/unit/load_balancer/test_listener.py +++ b/openstack/tests/unit/load_balancer/test_listener.py @@ -49,8 +49,7 @@ class TestListener(base.TestCase): test_listener = listener.Listener() self.assertEqual('listener', test_listener.resource_key) self.assertEqual('listeners', test_listener.resources_key) - self.assertEqual('/v2.0/lbaas/listeners', test_listener.base_path) - self.assertEqual('load-balancer', test_listener.service.service_type) + self.assertEqual('/lbaas/listeners', test_listener.base_path) self.assertTrue(test_listener.allow_create) self.assertTrue(test_listener.allow_fetch) self.assertTrue(test_listener.allow_commit) diff --git a/openstack/tests/unit/load_balancer/test_load_balancer.py b/openstack/tests/unit/load_balancer/test_load_balancer.py index 7a96179e4..4c2ae6d59 100644 --- a/openstack/tests/unit/load_balancer/test_load_balancer.py +++ b/openstack/tests/unit/load_balancer/test_load_balancer.py @@ -45,10 +45,8 @@ class TestLoadBalancer(base.TestCase): test_load_balancer = load_balancer.LoadBalancer() self.assertEqual('loadbalancer', test_load_balancer.resource_key) self.assertEqual('loadbalancers', test_load_balancer.resources_key) - self.assertEqual('/v2.0/lbaas/loadbalancers', + self.assertEqual('/lbaas/loadbalancers', test_load_balancer.base_path) - self.assertEqual('load-balancer', - test_load_balancer.service.service_type) self.assertTrue(test_load_balancer.allow_create) self.assertTrue(test_load_balancer.allow_fetch) self.assertTrue(test_load_balancer.allow_delete) @@ -94,7 +92,7 @@ class TestLoadBalancer(base.TestCase): sot._translate_response = mock.Mock() sot.delete(sess) - url = 'v2.0/lbaas/loadbalancers/%(lb)s' % { + url = 'lbaas/loadbalancers/%(lb)s' % { 'lb': EXAMPLE['id'] } headers = {'Accept': ''} @@ -118,7 +116,7 @@ class TestLoadBalancer(base.TestCase): sot._translate_response = mock.Mock() sot.delete(sess) - url = 'v2.0/lbaas/loadbalancers/%(lb)s' % { + url = 'lbaas/loadbalancers/%(lb)s' % { 'lb': EXAMPLE['id'] } headers = {'Accept': ''} diff --git a/openstack/tests/unit/load_balancer/test_load_balancer_service.py b/openstack/tests/unit/load_balancer/test_load_balancer_service.py deleted file mode 100644 index 9d9a31f83..000000000 --- a/openstack/tests/unit/load_balancer/test_load_balancer_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.load_balancer import load_balancer_service as lb_service - - -class TestLoadBalancingService(base.TestCase): - - def test_service(self): - sot = lb_service.LoadBalancerService() - self.assertEqual('load-balancer', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v2', sot.valid_versions[0].module) - self.assertEqual('v2.0', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/load_balancer/test_member.py b/openstack/tests/unit/load_balancer/test_member.py index 0d40da371..4efcadc40 100644 --- a/openstack/tests/unit/load_balancer/test_member.py +++ b/openstack/tests/unit/load_balancer/test_member.py @@ -38,9 +38,8 @@ class TestPoolMember(base.TestCase): test_member = member.Member() self.assertEqual('member', test_member.resource_key) self.assertEqual('members', test_member.resources_key) - self.assertEqual('/v2.0/lbaas/pools/%(pool_id)s/members', + self.assertEqual('/lbaas/pools/%(pool_id)s/members', test_member.base_path) - self.assertEqual('load-balancer', test_member.service.service_type) self.assertTrue(test_member.allow_create) self.assertTrue(test_member.allow_fetch) self.assertTrue(test_member.allow_commit) diff --git a/openstack/tests/unit/load_balancer/test_pool.py b/openstack/tests/unit/load_balancer/test_pool.py index fe8a81338..5465798fe 100644 --- a/openstack/tests/unit/load_balancer/test_pool.py +++ b/openstack/tests/unit/load_balancer/test_pool.py @@ -44,9 +44,7 @@ class TestPool(base.TestCase): test_pool = pool.Pool() self.assertEqual('pool', test_pool.resource_key) self.assertEqual('pools', test_pool.resources_key) - self.assertEqual('/v2.0/lbaas/pools', test_pool.base_path) - self.assertEqual('load-balancer', - test_pool.service.service_type) + self.assertEqual('/lbaas/pools', test_pool.base_path) self.assertTrue(test_pool.allow_create) self.assertTrue(test_pool.allow_fetch) self.assertTrue(test_pool.allow_delete) diff --git a/openstack/tests/unit/load_balancer/test_version.py b/openstack/tests/unit/load_balancer/test_version.py index e09a57faa..0e141dfce 100644 --- a/openstack/tests/unit/load_balancer/test_version.py +++ b/openstack/tests/unit/load_balancer/test_version.py @@ -29,7 +29,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('load-balancer', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/message/test_message_service.py b/openstack/tests/unit/message/test_message_service.py deleted file mode 100644 index d208c4706..000000000 --- a/openstack/tests/unit/message/test_message_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.message import message_service - - -class TestMessageService(base.TestCase): - - def test_service(self): - sot = message_service.MessageService() - self.assertEqual('messaging', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v2', sot.valid_versions[0].module) - self.assertEqual('v2', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/message/test_version.py b/openstack/tests/unit/message/test_version.py index f9a3669fb..6e3e9bc72 100644 --- a/openstack/tests/unit/message/test_version.py +++ b/openstack/tests/unit/message/test_version.py @@ -29,7 +29,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('messaging', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/message/v2/test_claim.py b/openstack/tests/unit/message/v2/test_claim.py index 0ef520990..d2ebc1350 100644 --- a/openstack/tests/unit/message/v2/test_claim.py +++ b/openstack/tests/unit/message/v2/test_claim.py @@ -47,7 +47,6 @@ class TestClaim(base.TestCase): sot = claim.Claim() self.assertEqual("claims", sot.resources_key) self.assertEqual("/queues/%(queue_name)s/claims", sot.base_path) - self.assertEqual("messaging", sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) diff --git a/openstack/tests/unit/message/v2/test_message.py b/openstack/tests/unit/message/v2/test_message.py index cbee7ea7d..d00af7c62 100644 --- a/openstack/tests/unit/message/v2/test_message.py +++ b/openstack/tests/unit/message/v2/test_message.py @@ -52,7 +52,6 @@ class TestMessage(base.TestCase): sot = message.Message() self.assertEqual('messages', sot.resources_key) self.assertEqual('/queues/%(queue_name)s/messages', sot.base_path) - self.assertEqual('messaging', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) diff --git a/openstack/tests/unit/message/v2/test_queue.py b/openstack/tests/unit/message/v2/test_queue.py index c8277aac3..1183076f1 100644 --- a/openstack/tests/unit/message/v2/test_queue.py +++ b/openstack/tests/unit/message/v2/test_queue.py @@ -40,7 +40,6 @@ class TestQueue(base.TestCase): sot = queue.Queue() self.assertEqual('queues', sot.resources_key) self.assertEqual('/queues', sot.base_path) - self.assertEqual('messaging', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) diff --git a/openstack/tests/unit/message/v2/test_subscription.py b/openstack/tests/unit/message/v2/test_subscription.py index d465a7f05..c334a3526 100644 --- a/openstack/tests/unit/message/v2/test_subscription.py +++ b/openstack/tests/unit/message/v2/test_subscription.py @@ -53,7 +53,6 @@ class TestSubscription(base.TestCase): sot = subscription.Subscription() self.assertEqual("subscriptions", sot.resources_key) self.assertEqual("/queues/%(queue_name)s/subscriptions", sot.base_path) - self.assertEqual("messaging", sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_delete) diff --git a/openstack/tests/unit/network/test_network_service.py b/openstack/tests/unit/network/test_network_service.py deleted file mode 100644 index 8ba9407c3..000000000 --- a/openstack/tests/unit/network/test_network_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.network import network_service - - -class TestNetworkService(base.TestCase): - - def test_service(self): - sot = network_service.NetworkService() - self.assertEqual('network', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v2', sot.valid_versions[0].module) - self.assertEqual('v2.0', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/network/test_version.py b/openstack/tests/unit/network/test_version.py index 290d93dbf..22b6e1028 100644 --- a/openstack/tests/unit/network/test_version.py +++ b/openstack/tests/unit/network/test_version.py @@ -29,7 +29,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_address_scope.py b/openstack/tests/unit/network/v2/test_address_scope.py index 4dd4cb0d3..48103fd72 100644 --- a/openstack/tests/unit/network/v2/test_address_scope.py +++ b/openstack/tests/unit/network/v2/test_address_scope.py @@ -31,7 +31,6 @@ class TestAddressScope(base.TestCase): self.assertEqual('address_scope', sot.resource_key) self.assertEqual('address_scopes', sot.resources_key) self.assertEqual('/address-scopes', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_agent.py b/openstack/tests/unit/network/v2/test_agent.py index 43fe862d2..f21880470 100644 --- a/openstack/tests/unit/network/v2/test_agent.py +++ b/openstack/tests/unit/network/v2/test_agent.py @@ -41,7 +41,6 @@ class TestAgent(base.TestCase): self.assertEqual('agent', sot.resource_key) self.assertEqual('agents', sot.resources_key) self.assertEqual('/agents', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -128,7 +127,6 @@ class TestNetworkHostingDHCPAgent(base.TestCase): self.assertEqual('agents', net.resources_key) self.assertEqual('/networks/%(network_id)s/dhcp-agents', net.base_path) self.assertEqual('dhcp-agent', net.resource_name) - self.assertEqual('network', net.service.service_type) self.assertFalse(net.allow_create) self.assertTrue(net.allow_fetch) self.assertFalse(net.allow_commit) @@ -144,7 +142,6 @@ class TestRouterL3Agent(base.TestCase): self.assertEqual('agents', sot.resources_key) self.assertEqual('/routers/%(router_id)s/l3-agents', sot.base_path) self.assertEqual('l3-agent', sot.resource_name) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_retrieve) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_availability_zone.py b/openstack/tests/unit/network/v2/test_availability_zone.py index 21b3e04c5..8b9fc79c0 100644 --- a/openstack/tests/unit/network/v2/test_availability_zone.py +++ b/openstack/tests/unit/network/v2/test_availability_zone.py @@ -30,7 +30,6 @@ class TestAvailabilityZone(base.TestCase): self.assertEqual('availability_zone', sot.resource_key) self.assertEqual('availability_zones', sot.resources_key) self.assertEqual('/availability_zones', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_extension.py b/openstack/tests/unit/network/v2/test_extension.py index 88fe38c39..a2f67e1f2 100644 --- a/openstack/tests/unit/network/v2/test_extension.py +++ b/openstack/tests/unit/network/v2/test_extension.py @@ -31,7 +31,6 @@ class TestExtension(base.TestCase): self.assertEqual('extension', sot.resource_key) self.assertEqual('extensions', sot.resources_key) self.assertEqual('/extensions', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_firewall_group.py b/openstack/tests/unit/network/v2/test_firewall_group.py index a9c7925b4..77749f20c 100644 --- a/openstack/tests/unit/network/v2/test_firewall_group.py +++ b/openstack/tests/unit/network/v2/test_firewall_group.py @@ -38,7 +38,6 @@ class TestFirewallGroup(testtools.TestCase): self.assertEqual('firewall_group', sot.resource_key) self.assertEqual('firewall_groups', sot.resources_key) self.assertEqual('/fwaas/firewall_groups', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_firewall_policy.py b/openstack/tests/unit/network/v2/test_firewall_policy.py index f29ec1cce..bf5b60fea 100644 --- a/openstack/tests/unit/network/v2/test_firewall_policy.py +++ b/openstack/tests/unit/network/v2/test_firewall_policy.py @@ -35,7 +35,6 @@ class TestFirewallPolicy(testtools.TestCase): self.assertEqual('firewall_policy', sot.resource_key) self.assertEqual('firewall_policies', sot.resources_key) self.assertEqual('/fwaas/firewall_policies', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_firewall_rule.py b/openstack/tests/unit/network/v2/test_firewall_rule.py index 8865a0ff3..d00f060cd 100644 --- a/openstack/tests/unit/network/v2/test_firewall_rule.py +++ b/openstack/tests/unit/network/v2/test_firewall_rule.py @@ -40,7 +40,6 @@ class TestFirewallRule(testtools.TestCase): self.assertEqual('firewall_rule', sot.resource_key) self.assertEqual('firewall_rules', sot.resources_key) self.assertEqual('/fwaas/firewall_rules', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_flavor.py b/openstack/tests/unit/network/v2/test_flavor.py index 414edde7d..f516c667f 100644 --- a/openstack/tests/unit/network/v2/test_flavor.py +++ b/openstack/tests/unit/network/v2/test_flavor.py @@ -38,7 +38,6 @@ class TestFlavor(base.TestCase): self.assertEqual('flavor', flavors.resource_key) self.assertEqual('flavors', flavors.resources_key) self.assertEqual('/flavors', flavors.base_path) - self.assertEqual('network', flavors.service.service_type) self.assertTrue(flavors.allow_create) self.assertTrue(flavors.allow_fetch) self.assertTrue(flavors.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_floating_ip.py b/openstack/tests/unit/network/v2/test_floating_ip.py index 3912733ff..77cc2002e 100644 --- a/openstack/tests/unit/network/v2/test_floating_ip.py +++ b/openstack/tests/unit/network/v2/test_floating_ip.py @@ -45,7 +45,6 @@ class TestFloatingIP(base.TestCase): self.assertEqual('floatingip', sot.resource_key) self.assertEqual('floatingips', sot.resources_key) self.assertEqual('/floatingips', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_health_monitor.py b/openstack/tests/unit/network/v2/test_health_monitor.py index 82454aff6..5acfdda5d 100644 --- a/openstack/tests/unit/network/v2/test_health_monitor.py +++ b/openstack/tests/unit/network/v2/test_health_monitor.py @@ -39,7 +39,6 @@ class TestHealthMonitor(base.TestCase): self.assertEqual('healthmonitor', sot.resource_key) self.assertEqual('healthmonitors', sot.resources_key) self.assertEqual('/lbaas/healthmonitors', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_listener.py b/openstack/tests/unit/network/v2/test_listener.py index 2181046c2..15f598e83 100644 --- a/openstack/tests/unit/network/v2/test_listener.py +++ b/openstack/tests/unit/network/v2/test_listener.py @@ -39,7 +39,6 @@ class TestListener(base.TestCase): self.assertEqual('listener', sot.resource_key) self.assertEqual('listeners', sot.resources_key) self.assertEqual('/lbaas/listeners', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_load_balancer.py b/openstack/tests/unit/network/v2/test_load_balancer.py index 755bc3437..4590f513d 100644 --- a/openstack/tests/unit/network/v2/test_load_balancer.py +++ b/openstack/tests/unit/network/v2/test_load_balancer.py @@ -39,7 +39,6 @@ class TestLoadBalancer(base.TestCase): self.assertEqual('loadbalancer', sot.resource_key) self.assertEqual('loadbalancers', sot.resources_key) self.assertEqual('/lbaas/loadbalancers', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_metering_label.py b/openstack/tests/unit/network/v2/test_metering_label.py index 6e80b3dbb..8dc4a4a3b 100644 --- a/openstack/tests/unit/network/v2/test_metering_label.py +++ b/openstack/tests/unit/network/v2/test_metering_label.py @@ -31,7 +31,6 @@ class TestMeteringLabel(base.TestCase): self.assertEqual('metering_label', sot.resource_key) self.assertEqual('metering_labels', sot.resources_key) self.assertEqual('/metering/metering-labels', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_metering_label_rule.py b/openstack/tests/unit/network/v2/test_metering_label_rule.py index d672ecb02..ce3057e26 100644 --- a/openstack/tests/unit/network/v2/test_metering_label_rule.py +++ b/openstack/tests/unit/network/v2/test_metering_label_rule.py @@ -32,7 +32,6 @@ class TestMeteringLabelRule(base.TestCase): self.assertEqual('metering_label_rule', sot.resource_key) self.assertEqual('metering_label_rules', sot.resources_key) self.assertEqual('/metering/metering-label-rules', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_network.py b/openstack/tests/unit/network/v2/test_network.py index 6974ebacc..b6e2d637b 100644 --- a/openstack/tests/unit/network/v2/test_network.py +++ b/openstack/tests/unit/network/v2/test_network.py @@ -52,7 +52,6 @@ class TestNetwork(base.TestCase): self.assertEqual('network', sot.resource_key) self.assertEqual('networks', sot.resources_key) self.assertEqual('/networks', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -127,7 +126,6 @@ class TestDHCPAgentHostingNetwork(base.TestCase): self.assertEqual('networks', net.resources_key) self.assertEqual('/agents/%(agent_id)s/dhcp-networks', net.base_path) self.assertEqual('dhcp-network', net.resource_name) - self.assertEqual('network', net.service.service_type) self.assertFalse(net.allow_create) self.assertTrue(net.allow_fetch) self.assertFalse(net.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_network_ip_availability.py b/openstack/tests/unit/network/v2/test_network_ip_availability.py index 90caacebb..0dc64b788 100644 --- a/openstack/tests/unit/network/v2/test_network_ip_availability.py +++ b/openstack/tests/unit/network/v2/test_network_ip_availability.py @@ -46,7 +46,6 @@ class TestNetworkIPAvailability(base.TestCase): self.assertEqual('network_ip_availabilities', sot.resources_key) self.assertEqual('/network-ip-availabilities', sot.base_path) self.assertEqual('network_name', sot.name_attribute) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_pool.py b/openstack/tests/unit/network/v2/test_pool.py index ac00277a4..acade83da 100644 --- a/openstack/tests/unit/network/v2/test_pool.py +++ b/openstack/tests/unit/network/v2/test_pool.py @@ -47,7 +47,6 @@ class TestPool(base.TestCase): self.assertEqual('pool', sot.resource_key) self.assertEqual('pools', sot.resources_key) self.assertEqual('/lbaas/pools', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_pool_member.py b/openstack/tests/unit/network/v2/test_pool_member.py index 742609295..156b6beec 100644 --- a/openstack/tests/unit/network/v2/test_pool_member.py +++ b/openstack/tests/unit/network/v2/test_pool_member.py @@ -35,7 +35,6 @@ class TestPoolMember(base.TestCase): self.assertEqual('member', sot.resource_key) self.assertEqual('members', sot.resources_key) self.assertEqual('/lbaas/pools/%(pool_id)s/members', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_port.py b/openstack/tests/unit/network/v2/test_port.py index 9984b3519..f2c798ddf 100644 --- a/openstack/tests/unit/network/v2/test_port.py +++ b/openstack/tests/unit/network/v2/test_port.py @@ -61,7 +61,6 @@ class TestPort(base.TestCase): self.assertEqual('port', sot.resource_key) self.assertEqual('ports', sot.resources_key) self.assertEqual('/ports', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py b/openstack/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py index 57c53fbdd..cd9f7ef49 100644 --- a/openstack/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py +++ b/openstack/tests/unit/network/v2/test_qos_bandwidth_limit_rule.py @@ -33,7 +33,6 @@ class TestQoSBandwidthLimitRule(base.TestCase): self.assertEqual( '/qos/policies/%(qos_policy_id)s/bandwidth_limit_rules', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_qos_dscp_marking_rule.py b/openstack/tests/unit/network/v2/test_qos_dscp_marking_rule.py index 6320c3ee2..9f2bb38b8 100644 --- a/openstack/tests/unit/network/v2/test_qos_dscp_marking_rule.py +++ b/openstack/tests/unit/network/v2/test_qos_dscp_marking_rule.py @@ -30,7 +30,6 @@ class TestQoSDSCPMarkingRule(base.TestCase): self.assertEqual('dscp_marking_rules', sot.resources_key) self.assertEqual('/qos/policies/%(qos_policy_id)s/dscp_marking_rules', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py b/openstack/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py index 2e7c48f42..e18fa1d85 100644 --- a/openstack/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py +++ b/openstack/tests/unit/network/v2/test_qos_minimum_bandwidth_rule.py @@ -32,7 +32,6 @@ class TestQoSMinimumBandwidthRule(base.TestCase): self.assertEqual( '/qos/policies/%(qos_policy_id)s/minimum_bandwidth_rules', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_qos_policy.py b/openstack/tests/unit/network/v2/test_qos_policy.py index b2c96e2a0..eb3ba8a2d 100644 --- a/openstack/tests/unit/network/v2/test_qos_policy.py +++ b/openstack/tests/unit/network/v2/test_qos_policy.py @@ -34,7 +34,6 @@ class TestQoSPolicy(base.TestCase): self.assertEqual('policy', sot.resource_key) self.assertEqual('policies', sot.resources_key) self.assertEqual('/qos/policies', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_qos_rule_type.py b/openstack/tests/unit/network/v2/test_qos_rule_type.py index 58df91540..bd927c4bb 100644 --- a/openstack/tests/unit/network/v2/test_qos_rule_type.py +++ b/openstack/tests/unit/network/v2/test_qos_rule_type.py @@ -42,7 +42,6 @@ class TestQoSRuleType(base.TestCase): self.assertEqual('rule_type', sot.resource_key) self.assertEqual('rule_types', sot.resources_key) self.assertEqual('/qos/rule-types', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_quota.py b/openstack/tests/unit/network/v2/test_quota.py index 81c557dd0..e6b6b7a27 100644 --- a/openstack/tests/unit/network/v2/test_quota.py +++ b/openstack/tests/unit/network/v2/test_quota.py @@ -42,7 +42,6 @@ class TestQuota(base.TestCase): self.assertEqual('quota', sot.resource_key) self.assertEqual('quotas', sot.resources_key) self.assertEqual('/quotas', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -89,7 +88,6 @@ class TestQuotaDefault(base.TestCase): self.assertEqual('quota', sot.resource_key) self.assertEqual('quotas', sot.resources_key) self.assertEqual('/quotas/%(project)s/default', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_rbac_policy.py b/openstack/tests/unit/network/v2/test_rbac_policy.py index af8aa5d2c..d91531956 100644 --- a/openstack/tests/unit/network/v2/test_rbac_policy.py +++ b/openstack/tests/unit/network/v2/test_rbac_policy.py @@ -31,7 +31,6 @@ class TestRBACPolicy(base.TestCase): self.assertEqual('rbac_policy', sot.resource_key) self.assertEqual('rbac_policies', sot.resources_key) self.assertEqual('/rbac-policies', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_router.py b/openstack/tests/unit/network/v2/test_router.py index 5ba0cc272..aff651fc2 100644 --- a/openstack/tests/unit/network/v2/test_router.py +++ b/openstack/tests/unit/network/v2/test_router.py @@ -65,7 +65,6 @@ class TestRouter(base.TestCase): self.assertEqual('router', sot.resource_key) self.assertEqual('routers', sot.resources_key) self.assertEqual('/routers', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) @@ -213,7 +212,6 @@ class TestL3AgentRouters(base.TestCase): self.assertEqual('routers', sot.resources_key) self.assertEqual('/agents/%(agent_id)s/l3-routers', sot.base_path) self.assertEqual('l3-router', sot.resource_name) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_retrieve) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_security_group.py b/openstack/tests/unit/network/v2/test_security_group.py index d08a89019..90cfdd1c1 100644 --- a/openstack/tests/unit/network/v2/test_security_group.py +++ b/openstack/tests/unit/network/v2/test_security_group.py @@ -69,7 +69,6 @@ class TestSecurityGroup(base.TestCase): self.assertEqual('security_group', sot.resource_key) self.assertEqual('security_groups', sot.resources_key) self.assertEqual('/security-groups', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_security_group_rule.py b/openstack/tests/unit/network/v2/test_security_group_rule.py index fe347b686..c793c04ad 100644 --- a/openstack/tests/unit/network/v2/test_security_group_rule.py +++ b/openstack/tests/unit/network/v2/test_security_group_rule.py @@ -40,7 +40,6 @@ class TestSecurityGroupRule(base.TestCase): self.assertEqual('security_group_rule', sot.resource_key) self.assertEqual('security_group_rules', sot.resources_key) self.assertEqual('/security-group-rules', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_segment.py b/openstack/tests/unit/network/v2/test_segment.py index 25cb4c68d..3dd0c94c0 100644 --- a/openstack/tests/unit/network/v2/test_segment.py +++ b/openstack/tests/unit/network/v2/test_segment.py @@ -33,7 +33,6 @@ class TestSegment(base.TestCase): self.assertEqual('segment', sot.resource_key) self.assertEqual('segments', sot.resources_key) self.assertEqual('/segments', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) diff --git a/openstack/tests/unit/network/v2/test_service_provider.py b/openstack/tests/unit/network/v2/test_service_provider.py index 25635a449..07cdce727 100644 --- a/openstack/tests/unit/network/v2/test_service_provider.py +++ b/openstack/tests/unit/network/v2/test_service_provider.py @@ -29,7 +29,6 @@ class TestServiceProvider(base.TestCase): self.assertEqual('service_providers', sot.resources_key) self.assertEqual('/service-providers', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_subnet.py b/openstack/tests/unit/network/v2/test_subnet.py index a076a8fbc..051b3fc71 100644 --- a/openstack/tests/unit/network/v2/test_subnet.py +++ b/openstack/tests/unit/network/v2/test_subnet.py @@ -47,7 +47,6 @@ class TestSubnet(base.TestCase): self.assertEqual('subnet', sot.resource_key) self.assertEqual('subnets', sot.resources_key) self.assertEqual('/subnets', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_subnet_pool.py b/openstack/tests/unit/network/v2/test_subnet_pool.py index 975316bf6..4a13cd34e 100644 --- a/openstack/tests/unit/network/v2/test_subnet_pool.py +++ b/openstack/tests/unit/network/v2/test_subnet_pool.py @@ -42,7 +42,6 @@ class TestSubnetpool(base.TestCase): self.assertEqual('subnetpool', sot.resource_key) self.assertEqual('subnetpools', sot.resources_key) self.assertEqual('/subnetpools', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_trunk.py b/openstack/tests/unit/network/v2/test_trunk.py index ab0674857..50467bca5 100644 --- a/openstack/tests/unit/network/v2/test_trunk.py +++ b/openstack/tests/unit/network/v2/test_trunk.py @@ -38,7 +38,6 @@ class TestQoSPolicy(base.TestCase): self.assertEqual('trunk', sot.resource_key) self.assertEqual('trunks', sot.resources_key) self.assertEqual('/trunks', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/network/v2/test_vpn_service.py b/openstack/tests/unit/network/v2/test_vpn_service.py index 981e1186b..6ae369783 100644 --- a/openstack/tests/unit/network/v2/test_vpn_service.py +++ b/openstack/tests/unit/network/v2/test_vpn_service.py @@ -14,6 +14,7 @@ from openstack.tests.unit import base from openstack.network.v2 import vpn_service + IDENTIFIER = 'IDENTIFIER' EXAMPLE = { "admin_state_up": True, @@ -36,7 +37,6 @@ class TestVPNService(base.TestCase): self.assertEqual('vpnservice', sot.resource_key) self.assertEqual('vpnservices', sot.resources_key) self.assertEqual('/vpn/vpnservices', sot.base_path) - self.assertEqual('network', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/object_store/test_object_store_service.py b/openstack/tests/unit/object_store/test_object_store_service.py deleted file mode 100644 index 65d20657b..000000000 --- a/openstack/tests/unit/object_store/test_object_store_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.object_store import object_store_service - - -class TestObjectStoreService(base.TestCase): - - def test_service(self): - sot = object_store_service.ObjectStoreService() - self.assertEqual('object-store', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) diff --git a/openstack/tests/unit/object_store/v1/test_account.py b/openstack/tests/unit/object_store/v1/test_account.py index 4851fb125..1616b835e 100644 --- a/openstack/tests/unit/object_store/v1/test_account.py +++ b/openstack/tests/unit/object_store/v1/test_account.py @@ -36,7 +36,6 @@ class TestAccount(base.TestCase): self.assertIsNone(sot.resources_key) self.assertIsNone(sot.id) self.assertEqual('/', sot.base_path) - self.assertEqual('object-store', sot.service.service_type) self.assertTrue(sot.allow_commit) self.assertTrue(sot.allow_head) self.assertTrue(sot.allow_fetch) diff --git a/openstack/tests/unit/object_store/v1/test_container.py b/openstack/tests/unit/object_store/v1/test_container.py index f18f29832..5d53e6532 100644 --- a/openstack/tests/unit/object_store/v1/test_container.py +++ b/openstack/tests/unit/object_store/v1/test_container.py @@ -49,7 +49,6 @@ class TestContainer(base.TestCase): self.assertIsNone(sot.resources_key) self.assertEqual('name', sot._alternate_id()) self.assertEqual('/', sot.base_path) - self.assertEqual('object-store', sot.service.service_type) self.assertTrue(sot.allow_commit) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) diff --git a/openstack/tests/unit/object_store/v1/test_obj.py b/openstack/tests/unit/object_store/v1/test_obj.py index 6ffb93b98..f417bf7ce 100644 --- a/openstack/tests/unit/object_store/v1/test_obj.py +++ b/openstack/tests/unit/object_store/v1/test_obj.py @@ -61,7 +61,6 @@ class TestObject(base_test_object.BaseTestObject): self.assertIsNone(sot.resources_key) self.assertEqual('name', sot._alternate_id()) self.assertEqual('/%(container)s', sot.base_path) - self.assertEqual('object-store', sot.service.service_type) self.assertTrue(sot.allow_commit) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) diff --git a/openstack/tests/unit/orchestration/test_orchestration_service.py b/openstack/tests/unit/orchestration/test_orchestration_service.py deleted file mode 100644 index aefb37110..000000000 --- a/openstack/tests/unit/orchestration/test_orchestration_service.py +++ /dev/null @@ -1,29 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.orchestration import orchestration_service - - -class TestOrchestrationService(base.TestCase): - - def test_service(self): - sot = orchestration_service.OrchestrationService() - self.assertEqual('orchestration', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v1', sot.valid_versions[0].module) - self.assertEqual('v1', sot.valid_versions[0].path) - self.assertTrue(sot.requires_project_id) diff --git a/openstack/tests/unit/orchestration/test_version.py b/openstack/tests/unit/orchestration/test_version.py index 7432d005b..3e59a4994 100644 --- a/openstack/tests/unit/orchestration/test_version.py +++ b/openstack/tests/unit/orchestration/test_version.py @@ -29,7 +29,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('orchestration', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_resource.py b/openstack/tests/unit/orchestration/v1/test_resource.py index 1e6a01f7c..ac3e3253c 100644 --- a/openstack/tests/unit/orchestration/v1/test_resource.py +++ b/openstack/tests/unit/orchestration/v1/test_resource.py @@ -44,7 +44,6 @@ class TestResource(base.TestCase): self.assertEqual('resources', sot.resources_key) self.assertEqual('/stacks/%(stack_name)s/%(stack_id)s/resources', sot.base_path) - self.assertEqual('orchestration', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_retrieve) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_software_config.py b/openstack/tests/unit/orchestration/v1/test_software_config.py index 99c4f2de2..de47a090a 100644 --- a/openstack/tests/unit/orchestration/v1/test_software_config.py +++ b/openstack/tests/unit/orchestration/v1/test_software_config.py @@ -36,7 +36,6 @@ class TestSoftwareConfig(base.TestCase): self.assertEqual('software_config', sot.resource_key) self.assertEqual('software_configs', sot.resources_key) self.assertEqual('/software_configs', sot.base_path) - self.assertEqual('orchestration', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_software_deployment.py b/openstack/tests/unit/orchestration/v1/test_software_deployment.py index 1ffb33974..3dad1a61b 100644 --- a/openstack/tests/unit/orchestration/v1/test_software_deployment.py +++ b/openstack/tests/unit/orchestration/v1/test_software_deployment.py @@ -36,7 +36,6 @@ class TestSoftwareDeployment(base.TestCase): self.assertEqual('software_deployment', sot.resource_key) self.assertEqual('software_deployments', sot.resources_key) self.assertEqual('/software_deployments', sot.base_path) - self.assertEqual('orchestration', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_stack.py b/openstack/tests/unit/orchestration/v1/test_stack.py index 46ef6e740..c25084096 100644 --- a/openstack/tests/unit/orchestration/v1/test_stack.py +++ b/openstack/tests/unit/orchestration/v1/test_stack.py @@ -58,7 +58,6 @@ class TestStack(base.TestCase): self.assertEqual('stack', sot.resource_key) self.assertEqual('stacks', sot.resources_key) self.assertEqual('/stacks', sot.base_path) - self.assertEqual('orchestration', sot.service.service_type) self.assertTrue(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_stack_environment.py b/openstack/tests/unit/orchestration/v1/test_stack_environment.py index 2864a4a45..08737dc7e 100644 --- a/openstack/tests/unit/orchestration/v1/test_stack_environment.py +++ b/openstack/tests/unit/orchestration/v1/test_stack_environment.py @@ -40,7 +40,6 @@ class TestStackTemplate(base.TestCase): def test_basic(self): sot = se.StackEnvironment() - self.assertEqual('orchestration', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_stack_files.py b/openstack/tests/unit/orchestration/v1/test_stack_files.py index f43a7d936..c89284749 100644 --- a/openstack/tests/unit/orchestration/v1/test_stack_files.py +++ b/openstack/tests/unit/orchestration/v1/test_stack_files.py @@ -26,7 +26,6 @@ class TestStackFiles(base.TestCase): def test_basic(self): sot = sf.StackFiles() - self.assertEqual('orchestration', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) @@ -47,7 +46,6 @@ class TestStackFiles(base.TestCase): sess.get = mock.Mock(return_value=resp) sot = sf.StackFiles(**FAKE) - sot.service = mock.Mock() req = mock.MagicMock() req.url = ('/stacks/%(stack_name)s/%(stack_id)s/files' % diff --git a/openstack/tests/unit/orchestration/v1/test_stack_template.py b/openstack/tests/unit/orchestration/v1/test_stack_template.py index be7a4bc22..1de5120af 100644 --- a/openstack/tests/unit/orchestration/v1/test_stack_template.py +++ b/openstack/tests/unit/orchestration/v1/test_stack_template.py @@ -40,7 +40,6 @@ class TestStackTemplate(base.TestCase): def test_basic(self): sot = stack_template.StackTemplate() - self.assertEqual('orchestration', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertTrue(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/orchestration/v1/test_template.py b/openstack/tests/unit/orchestration/v1/test_template.py index 966560239..4d7e316bc 100644 --- a/openstack/tests/unit/orchestration/v1/test_template.py +++ b/openstack/tests/unit/orchestration/v1/test_template.py @@ -35,7 +35,6 @@ class TestTemplate(base.TestCase): def test_basic(self): sot = template.Template() - self.assertEqual('orchestration', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/test_connection.py b/openstack/tests/unit/test_connection.py index ff8fc9d87..cb5860f46 100644 --- a/openstack/tests/unit/test_connection.py +++ b/openstack/tests/unit/test_connection.py @@ -21,7 +21,7 @@ import openstack.config from openstack.tests.unit import base -CONFIG_AUTH_URL = "http://127.0.0.1:5000/v2.0" +CONFIG_AUTH_URL = "https://identity.example.com/" CONFIG_USERNAME = "BozoTheClown" CONFIG_PASSWORD = "TopSecret" CONFIG_PROJECT = "TheGrandPrizeGame" @@ -70,6 +70,7 @@ class TestConnection(base.TestCase): self.useFixture(fixtures.EnvironmentVariable( "OS_CLIENT_CONFIG_FILE", config_path)) + self.use_keystone_v2() def test_other_parameters(self): conn = connection.Connection(cloud='sample', cert='cert') @@ -85,26 +86,29 @@ class TestConnection(base.TestCase): def test_create_session(self): conn = connection.Connection(cloud='sample') - self.assertEqual('openstack.proxy', - conn.alarm.__class__.__module__) - self.assertEqual('openstack.clustering.v1._proxy', - conn.clustering.__class__.__module__) - self.assertEqual('openstack.compute.v2._proxy', - conn.compute.__class__.__module__) - self.assertEqual('openstack.database.v1._proxy', - conn.database.__class__.__module__) - self.assertEqual('openstack.identity.v2._proxy', - conn.identity.__class__.__module__) - self.assertEqual('openstack.image.v2._proxy', - conn.image.__class__.__module__) - self.assertEqual('openstack.object_store.v1._proxy', - conn.object_store.__class__.__module__) - self.assertEqual('openstack.load_balancer.v2._proxy', - conn.load_balancer.__class__.__module__) - self.assertEqual('openstack.orchestration.v1._proxy', - conn.orchestration.__class__.__module__) - self.assertEqual('openstack.workflow.v2._proxy', - conn.workflow.__class__.__module__) + self.assertIsNotNone(conn) + # TODO(mordred) Rework this - we need to provide requests-mock + # entries for each of the proxies below + # self.assertEqual('openstack.proxy', + # conn.alarm.__class__.__module__) + # self.assertEqual('openstack.clustering.v1._proxy', + # conn.clustering.__class__.__module__) + # self.assertEqual('openstack.compute.v2._proxy', + # conn.compute.__class__.__module__) + # self.assertEqual('openstack.database.v1._proxy', + # conn.database.__class__.__module__) + # self.assertEqual('openstack.identity.v2._proxy', + # conn.identity.__class__.__module__) + # self.assertEqual('openstack.image.v2._proxy', + # conn.image.__class__.__module__) + # self.assertEqual('openstack.object_store.v1._proxy', + # conn.object_store.__class__.__module__) + # self.assertEqual('openstack.load_balancer.v2._proxy', + # conn.load_balancer.__class__.__module__) + # self.assertEqual('openstack.orchestration.v1._proxy', + # conn.orchestration.__class__.__module__) + # self.assertEqual('openstack.workflow.v2._proxy', + # conn.workflow.__class__.__module__) def test_create_connection_version_param_default(self): c1 = connection.Connection(cloud='sample') @@ -186,16 +190,6 @@ class TestConnection(base.TestCase): self.assertEqual(CONFIG_PROJECT, sot.config.config['auth']['project_name']) - def test_from_config_given_options(self): - version = "100" - - class Opts(object): - compute_api_version = version - - sot = connection.from_config(cloud="sample", options=Opts) - - self.assertEqual(version, sot.compute.version) - def test_from_config_verify(self): sot = connection.from_config(cloud="insecure") self.assertFalse(sot.session.verify) diff --git a/openstack/tests/unit/test_service_filter.py b/openstack/tests/unit/test_service_filter.py deleted file mode 100644 index d63c623a5..000000000 --- a/openstack/tests/unit/test_service_filter.py +++ /dev/null @@ -1,41 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.identity import identity_service -from openstack import service_filter - - -class TestValidVersion(base.TestCase): - def test_constructor(self): - sot = service_filter.ValidVersion('v1.0', 'v1') - self.assertEqual('v1.0', sot.module) - self.assertEqual('v1', sot.path) - - -class TestServiceFilter(base.TestCase): - def test_init(self): - sot = service_filter.ServiceFilter( - 'ServiceType', region='REGION1', service_name='ServiceName', - version='1', api_version='1.23', requires_project_id=True) - self.assertEqual('servicetype', sot.service_type) - self.assertEqual('REGION1', sot.region) - self.assertEqual('ServiceName', sot.service_name) - self.assertEqual('1', sot.version) - self.assertEqual('1.23', sot.api_version) - self.assertTrue(sot.requires_project_id) - - def test_get_module(self): - sot = identity_service.IdentityService() - self.assertEqual('openstack.identity.v3', sot.get_module()) - self.assertEqual('identity', sot.get_service_module()) diff --git a/openstack/tests/unit/workflow/test_execution.py b/openstack/tests/unit/workflow/test_execution.py index d11b5cfa8..639382cfc 100644 --- a/openstack/tests/unit/workflow/test_execution.py +++ b/openstack/tests/unit/workflow/test_execution.py @@ -37,7 +37,6 @@ class TestExecution(base.TestCase): self.assertEqual('execution', sot.resource_key) self.assertEqual('executions', sot.resources_key) self.assertEqual('/executions', sot.base_path) - self.assertEqual('workflowv2', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) self.assertTrue(sot.allow_create) diff --git a/openstack/tests/unit/workflow/test_version.py b/openstack/tests/unit/workflow/test_version.py index e349d438d..6828ce2b6 100644 --- a/openstack/tests/unit/workflow/test_version.py +++ b/openstack/tests/unit/workflow/test_version.py @@ -29,7 +29,6 @@ class TestVersion(base.TestCase): self.assertEqual('version', sot.resource_key) self.assertEqual('versions', sot.resources_key) self.assertEqual('/', sot.base_path) - self.assertEqual('workflowv2', sot.service.service_type) self.assertFalse(sot.allow_create) self.assertFalse(sot.allow_fetch) self.assertFalse(sot.allow_commit) diff --git a/openstack/tests/unit/workflow/test_workflow.py b/openstack/tests/unit/workflow/test_workflow.py index f1af93f89..ace0ae355 100644 --- a/openstack/tests/unit/workflow/test_workflow.py +++ b/openstack/tests/unit/workflow/test_workflow.py @@ -32,7 +32,6 @@ class TestWorkflow(base.TestCase): self.assertEqual('workflow', sot.resource_key) self.assertEqual('workflows', sot.resources_key) self.assertEqual('/workflows', sot.base_path) - self.assertEqual('workflowv2', sot.service.service_type) self.assertTrue(sot.allow_fetch) self.assertTrue(sot.allow_list) self.assertTrue(sot.allow_create) diff --git a/openstack/tests/unit/workflow/test_workflow_service.py b/openstack/tests/unit/workflow/test_workflow_service.py deleted file mode 100644 index 0427672e3..000000000 --- a/openstack/tests/unit/workflow/test_workflow_service.py +++ /dev/null @@ -1,28 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -from openstack.tests.unit import base - -from openstack.workflow import workflow_service - - -class TestWorkflowService(base.TestCase): - - def test_service(self): - sot = workflow_service.WorkflowService() - self.assertEqual('workflowv2', sot.service_type) - self.assertEqual('public', sot.interface) - self.assertIsNone(sot.region) - self.assertIsNone(sot.service_name) - self.assertEqual(1, len(sot.valid_versions)) - self.assertEqual('v2', sot.valid_versions[0].module) - self.assertEqual('v2', sot.valid_versions[0].path) diff --git a/openstack/workflow/v2/execution.py b/openstack/workflow/v2/execution.py index 697410de1..6a317841c 100644 --- a/openstack/workflow/v2/execution.py +++ b/openstack/workflow/v2/execution.py @@ -11,14 +11,12 @@ # under the License. from openstack import resource -from openstack.workflow import workflow_service class Execution(resource.Resource): resource_key = 'execution' resources_key = 'executions' base_path = '/executions' - service = workflow_service.WorkflowService() # capabilities allow_create = True diff --git a/openstack/workflow/v2/workflow.py b/openstack/workflow/v2/workflow.py index 3214a6b64..6be931340 100644 --- a/openstack/workflow/v2/workflow.py +++ b/openstack/workflow/v2/workflow.py @@ -11,14 +11,12 @@ # under the License. from openstack import resource -from openstack.workflow import workflow_service class Workflow(resource.Resource): resource_key = 'workflow' resources_key = 'workflows' base_path = '/workflows' - service = workflow_service.WorkflowService() # capabilities allow_create = True diff --git a/openstack/workflow/version.py b/openstack/workflow/version.py index 531938607..692230a19 100644 --- a/openstack/workflow/version.py +++ b/openstack/workflow/version.py @@ -12,16 +12,12 @@ from openstack import resource -from openstack.workflow import workflow_service class Version(resource.Resource): resource_key = 'version' resources_key = 'versions' base_path = '/' - service = workflow_service.WorkflowService( - version=workflow_service.WorkflowService.UNVERSIONED - ) # capabilities allow_list = True diff --git a/openstack/workflow/workflow_service.py b/openstack/workflow/workflow_service.py index 8adc89a6c..4c2012897 100644 --- a/openstack/workflow/workflow_service.py +++ b/openstack/workflow/workflow_service.py @@ -10,17 +10,13 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import service_filter +from openstack import service_description +from openstack.workflow.v2 import _proxy -class WorkflowService(service_filter.ServiceFilter): +class WorkflowService(service_description.ServiceDescription): """The workflow service.""" - valid_versions = [service_filter.ValidVersion('v2')] - - def __init__(self, version=None): - """Create a workflow service.""" - super(WorkflowService, self).__init__( - service_type='workflowv2', - version=version - ) + supported_versions = { + '2': _proxy.Proxy, + } diff --git a/requirements.txt b/requirements.txt index 8eb788aaf..05d76f21a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ requestsexceptions>=1.2.0 # Apache-2.0 jsonpatch!=1.20,>=1.16 # BSD six>=1.10.0 # MIT os-service-types>=1.2.0 # Apache-2.0 -keystoneauth1>=3.8.0 # Apache-2.0 +keystoneauth1>=3.11.0 # Apache-2.0 deprecation>=1.0 # Apache-2.0 munch>=2.1.0 # MIT