misty 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +222 -1
  3. data/lib/misty.rb +8 -0
  4. data/lib/misty/auth.rb +60 -0
  5. data/lib/misty/auth/auth_v2.rb +46 -0
  6. data/lib/misty/auth/auth_v3.rb +58 -0
  7. data/lib/misty/autoload.rb +82 -0
  8. data/lib/misty/cloud.rb +133 -0
  9. data/lib/misty/http/client.rb +115 -0
  10. data/lib/misty/http/direct.rb +26 -0
  11. data/lib/misty/http/method_builder.rb +96 -0
  12. data/lib/misty/http/request.rb +75 -0
  13. data/lib/misty/misty.rb +51 -0
  14. data/lib/misty/openstack/aodh/aodh_v2.rb +12 -0
  15. data/lib/misty/openstack/aodh/v2.rb +20 -0
  16. data/lib/misty/openstack/ceilometer/ceilometer_v2.rb +13 -0
  17. data/lib/misty/openstack/ceilometer/v2.rb +20 -0
  18. data/lib/misty/openstack/cinder/cinder_v1.rb +35 -0
  19. data/lib/misty/openstack/cinder/cinder_v3.rb +148 -0
  20. data/lib/misty/openstack/cinder/v1.rb +24 -0
  21. data/lib/misty/openstack/cinder/v3.rb +24 -0
  22. data/lib/misty/openstack/designate/designate_v2.rb +69 -0
  23. data/lib/misty/openstack/designate/v2.rb +20 -0
  24. data/lib/misty/openstack/glance/glance_v1.rb +16 -0
  25. data/lib/misty/openstack/glance/glance_v2.rb +29 -0
  26. data/lib/misty/openstack/glance/v1.rb +20 -0
  27. data/lib/misty/openstack/glance/v2.rb +20 -0
  28. data/lib/misty/openstack/heat/heat_v1.rb +85 -0
  29. data/lib/misty/openstack/heat/v1.rb +24 -0
  30. data/lib/misty/openstack/ironic/ironic_v1.rb +71 -0
  31. data/lib/misty/openstack/ironic/v1.rb +26 -0
  32. data/lib/misty/openstack/karbor/karbor_v1.rb +32 -0
  33. data/lib/misty/openstack/karbor/v1.rb +20 -0
  34. data/lib/misty/openstack/keystone/keystone_v2_0.rb +11 -0
  35. data/lib/misty/openstack/keystone/keystone_v2_0_ext.rb +32 -0
  36. data/lib/misty/openstack/keystone/keystone_v3.rb +147 -0
  37. data/lib/misty/openstack/keystone/keystone_v3_ext.rb +124 -0
  38. data/lib/misty/openstack/keystone/v2_0.rb +23 -0
  39. data/lib/misty/openstack/keystone/v3.rb +23 -0
  40. data/lib/misty/openstack/magnum/magnum_v1.rb +41 -0
  41. data/lib/misty/openstack/magnum/v1.rb +26 -0
  42. data/lib/misty/openstack/manila/manila_v2.rb +143 -0
  43. data/lib/misty/openstack/manila/v2.rb +26 -0
  44. data/lib/misty/openstack/microversion.rb +62 -0
  45. data/lib/misty/openstack/neutron/neutron_v2_0.rb +205 -0
  46. data/lib/misty/openstack/neutron/v2_0.rb +20 -0
  47. data/lib/misty/openstack/nova/nova_v2_1.rb +269 -0
  48. data/lib/misty/openstack/nova/v2_1.rb +40 -0
  49. data/lib/misty/openstack/sahara/sahara_v1_1.rb +77 -0
  50. data/lib/misty/openstack/sahara/v1_1.rb +20 -0
  51. data/lib/misty/openstack/searchlight/searchlight_v1.rb +15 -0
  52. data/lib/misty/openstack/searchlight/v1.rb +20 -0
  53. data/lib/misty/openstack/senlin/senlin_v1.rb +66 -0
  54. data/lib/misty/openstack/senlin/v1.rb +20 -0
  55. data/lib/misty/openstack/swift/swift_v1.rb +23 -0
  56. data/lib/misty/openstack/swift/v1.rb +20 -0
  57. data/lib/misty/openstack/trove/trove_v1_0.rb +51 -0
  58. data/lib/misty/openstack/trove/v1_0.rb +20 -0
  59. data/lib/misty/openstack/zaqar/v2.rb +20 -0
  60. data/lib/misty/openstack/zaqar/zaqar_v2.rb +46 -0
  61. data/lib/misty/version.rb +2 -2
  62. data/test/integration/compute_test.rb +35 -0
  63. data/test/integration/network_test.rb +34 -0
  64. data/test/integration/orchestration_test.rb +92 -0
  65. data/test/integration/test_helper.rb +19 -0
  66. data/test/integration/vcr/compute_using_nova_v2_1.yml +1107 -0
  67. data/test/integration/vcr/network_using_neutron_v2_0.yml +1029 -0
  68. data/test/integration/vcr/orchestration_using_heat_v1.yml +1457 -0
  69. data/test/unit/auth_helper.rb +52 -0
  70. data/test/unit/auth_test.rb +99 -0
  71. data/test/unit/cloud/requests_test.rb +113 -0
  72. data/test/unit/cloud/services_test.rb +171 -0
  73. data/test/unit/cloud_test.rb +145 -0
  74. data/test/unit/http/client_test.rb +74 -0
  75. data/test/unit/http/direct_test.rb +103 -0
  76. data/test/unit/http/method_builder_test.rb +133 -0
  77. data/test/unit/http/request_test.rb +123 -0
  78. data/test/unit/misty_test.rb +36 -0
  79. data/test/unit/openstack/APIs_test.rb +40 -0
  80. data/test/unit/openstack/microversion_test.rb +70 -0
  81. data/test/unit/service_helper.rb +25 -0
  82. data/test/unit/test_helper.rb +8 -0
  83. metadata +170 -5
@@ -0,0 +1,205 @@
1
+ module Misty::Openstack::NeutronV2_0
2
+ def v2_0
3
+ {"/"=>{:GET=>[:list_api_versions]},
4
+ "/v2.0/"=>{:GET=>[:show_api_v2_details]},
5
+ "/v2.0/extensions"=>{:GET=>[:list_extensions]},
6
+ "/v2.0/extensions/{alias}"=>{:GET=>[:show_extension_details]},
7
+ "/v2.0/networks/{network_id}"=>
8
+ {:GET=>[:show_network_details],
9
+ :PUT=>[:update_network],
10
+ :DELETE=>[:delete_network]},
11
+ "/v2.0/networks"=>
12
+ {:GET=>[:list_networks], :POST=>[:create_network, :bulk_create_networks]},
13
+ "/v2.0/ports/{port_id}"=>
14
+ {:GET=>[:show_port_details, :show_trunk_details],
15
+ :PUT=>[:update_port],
16
+ :DELETE=>[:delete_port]},
17
+ "/v2.0/ports"=>
18
+ {:GET=>[:list_ports], :POST=>[:create_port, :bulk_create_ports]},
19
+ "/v2.0/segments/{segment_id}"=>
20
+ {:GET=>[:show_segment_details],
21
+ :PUT=>[:update_segment],
22
+ :DELETE=>[:delete_segment]},
23
+ "/v2.0/segments"=>{:GET=>[:list_segments], :POST=>[:create_segment]},
24
+ "/v2.0/trunks"=>{:GET=>[:list_trunks], :POST=>[:create_trunk]},
25
+ "/v2.0/trunks/{trunk_id}/add_subports"=>{:PUT=>[:add_subports_to_trunk]},
26
+ "/v2.0/trunks/{trunk_id}/remove_subports"=>
27
+ {:PUT=>[:delete_subports_from_trunk]},
28
+ "/v2.0/trunks/{trunk_id}/get_subports"=>{:GET=>[:list_subports_for_trunk]},
29
+ "/v2.0/trunks/{trunk_id}"=>
30
+ {:PUT=>[:update_trunk], :GET=>[:show_trunk], :DELETE=>[:delete_trunk]},
31
+ "/v2.0/floatingips"=>
32
+ {:GET=>[:list_floating_ips], :POST=>[:create_floating_ip]},
33
+ "/v2.0/floatingips/{floatingip_id}"=>
34
+ {:GET=>[:show_floating_ip_details],
35
+ :PUT=>[:update_floating_ip],
36
+ :DELETE=>[:delete_floating_ip]},
37
+ "/v2.0/routers"=>{:GET=>[:list_routers], :POST=>[:create_router]},
38
+ "/v2.0/routers/{router_id}"=>
39
+ {:GET=>[:show_router_details],
40
+ :PUT=>[:update_router],
41
+ :DELETE=>[:delete_router]},
42
+ "/v2.0/routers/{router_id}/add_router_interface"=>
43
+ {:PUT=>[:add_interface_to_router]},
44
+ "/v2.0/routers/{router_id}/remove_router_interface"=>
45
+ {:PUT=>[:remove_interface_from_router]},
46
+ "/v2.0/subnetpools/{subnetpool_id}"=>
47
+ {:GET=>[:show_subnet_pool],
48
+ :PUT=>[:update_subnet_pool],
49
+ :DELETE=>[:delete_subnet_pool]},
50
+ "/v2.0/subnetpools"=>
51
+ {:GET=>[:list_subnet_pools], :POST=>[:create_subnet_pool]},
52
+ "/v2.0/subnets"=>
53
+ {:GET=>[:list_subnets], :POST=>[:create_subnet, :bulk_create_subnet]},
54
+ "/v2.0/subnets/{subnet_id}"=>
55
+ {:GET=>[:show_subnet_details],
56
+ :PUT=>[:update_subnet],
57
+ :DELETE=>[:delete_subnet]},
58
+ "/v2.0/fwaas/firewall_groups"=>
59
+ {:GET=>[:list_firewall_groups], :POST=>[:create_firewall_group]},
60
+ "/v2.0/fwaas/firewall_groups/{firewall_group_id}"=>
61
+ {:GET=>[:show_firewall_group_details],
62
+ :PUT=>[:update_firewall_group],
63
+ :DELETE=>[:delete_firewall_group]},
64
+ "/v2.0/fwaas/firewall_policies"=>{:GET=>[:list_firewall_policies], :POST=>[:create_firewall_policy]},
65
+ "/v2.0/fwaas/firewall_policies/{firewall_policy_id}"=>
66
+ {:GET=>[:show_firewall_policy_details], :PUT=>[:update_firewall_policy], :DELETE=>[:delete_firewall_policy]},
67
+ "/v2.0/fwaas/firewall_rules"=>{:GET=>[:list_firewall_rules], :POST=>[:create_firewall_rule]},
68
+ "/v2.0/fwaas/firewall_rules/{firewall_rule_id}"=>
69
+ {:GET=>[:show_firewall_rule_details], :PUT=>[:update_firewall_rule], :DELETE=>[:delete_firewall_rule]},
70
+ "/v2.0/fwaas/firewall_policies/{firewall_policy_id}/insert_rule"=>
71
+ {:PUT=>[:insert_rule_into_a_firewall_policy]},
72
+ "/v2.0/fwaas/firewall_policies/{firewall_policy_id}/remove_rule"=>
73
+ {:PUT=>[:remove_rule_from_firewall_policy]},
74
+ "/v2.0/security-group-rules"=>
75
+ {:GET=>[:list_security_group_rules], :POST=>[:create_security_group_rule]},
76
+ "/v2.0/security-group-rules/{security_group_rule_id}"=>
77
+ {:GET=>[:show_security_group_rule], :DELETE=>[:delete_security_group_rule]},
78
+ "/v2.0/security-groups"=>
79
+ {:GET=>[:list_security_groups], :POST=>[:create_security_group]},
80
+ "/v2.0/security-groups/{security_group_id}"=>
81
+ {:GET=>[:show_security_group],
82
+ :PUT=>[:update_security_group],
83
+ :DELETE=>[:delete_security_group]},
84
+ "/v2.0/vpn/ikepolicies"=>
85
+ {:GET=>[:list_ike_policies], :POST=>[:create_ike_policy]},
86
+ "/v2.0/vpn/ikepolicies/{ikepolicy_id}"=>
87
+ {:GET=>[:show_ike_policy_details],
88
+ :PUT=>[:update_ike_policy],
89
+ :DELETE=>[:remove_ike_policy]},
90
+ "/v2.0/vpn/ipsecpolicies"=>
91
+ {:GET=>[:list_ipsec_policies], :POST=>[:create_ipsec_policy]},
92
+ "/v2.0/vpn/ipsecpolicies/{ipsecpolicy_id}"=>
93
+ {:GET=>[:show_ipsec_policy],
94
+ :PUT=>[:update_ipsec_policy],
95
+ :DELETE=>[:remove_ipsec_policy]},
96
+ "/v2.0/vpn/ipsec-site-connections"=>
97
+ {:GET=>[:list_ipsec_connections], :POST=>[:create_ipsec_connection]},
98
+ "/v2.0/vpn/ipsec-site-connections/{connection_id}"=>
99
+ {:GET=>[:show_ipsec_connection],
100
+ :PUT=>[:update_ipsec_connection],
101
+ :DELETE=>[:remove_ipsec_connection]},
102
+ "/v2.0/vpn/endpoint-groups"=>
103
+ {:GET=>[:list_vpn_endpoint_groups], :POST=>[:create_vpn_endpoint_group]},
104
+ "/v2.0/vpn/endpoint-groups/{endpoint_group_id}"=>
105
+ {:GET=>[:show_vpn_endpoint_group],
106
+ :PUT=>[:update_vpn_endpoint_group],
107
+ :DELETE=>[:remove_vpn_endpoint_group]},
108
+ "/v2.0/vpn/vpnservices"=>
109
+ {:GET=>[:list_vpn_services], :POST=>[:create_vpn_service]},
110
+ "/v2.0/vpn/vpnservices/{service_id}"=>
111
+ {:GET=>[:show_vpn_service_details],
112
+ :PUT=>[:update_vpn_service],
113
+ :DELETE=>[:remove_vpn_service]},
114
+ "/v2.0/flavors"=>{:GET=>[:list_flavors], :POST=>[:create_flavor]},
115
+ "/v2.0/flavors/{flavor_id}"=>
116
+ {:GET=>[:show_flavor_details],
117
+ :PUT=>[:update_flavor],
118
+ :DELETE=>[:delete_flavor]},
119
+ "/v2.0/flavors/{flavor_id}/service_profiles"=>
120
+ {:POST=>[:associate_flavor_with_a_service_profile]},
121
+ "/v2.0/flavors/{flavor_id}/service_profiles/{profile_id}"=>
122
+ {:DELETE=>[:disassociate_a_flavor]},
123
+ "/v2.0/service_profiles"=>
124
+ {:GET=>[:list_service_profiles], :POST=>[:create_service_profile]},
125
+ "/v2.0/service_profiles/{profile_id}"=>
126
+ {:GET=>[:show_service_profile_details],
127
+ :PUT=>[:update_service_profile],
128
+ :DELETE=>[:delete_service_profile]},
129
+ "/v2.0/metering/metering-labels"=>
130
+ {:GET=>[:list_metering_labels], :POST=>[:create_metering_label]},
131
+ "/v2.0/metering/metering-labels/{metering_label_id}"=>
132
+ {:GET=>[:show_metering_label_details], :DELETE=>[:delete_metering_label]},
133
+ "/v2.0/metering/metering-label-rules"=>
134
+ {:GET=>[:list_metering_label_rules], :POST=>[:create_metering_label_rule]},
135
+ "/v2.0/metering/metering-label-rules/{metering_label_rule_id}"=>
136
+ {:GET=>[:show_metering_label_rule_details],
137
+ :DELETE=>[:delete_metering_label_rule]},
138
+ "/v2.0/network-ip-availabilities/{network_id}"=>
139
+ {:GET=>[:show_network_ip_availability]},
140
+ "/v2.0/network-ip-availabilities"=>{:GET=>[:list_network_ip_availability]},
141
+ "/v2.0/quotas"=>
142
+ {:GET=>[:list_quotas_for_projects_with_non_default_quota_values]},
143
+ "/v2.0/quotas/{project_id}"=>
144
+ {:GET=>[:list_quotas_for_a_project],
145
+ :PUT=>[:update_quota_for_a_project],
146
+ :DELETE=>[:reset_quota_for_a_project]},
147
+ "/v2.0/quotas/{project_id}/default"=>
148
+ {:GET=>[:list_default_quotas_for_a_project]},
149
+ "/v2.0/service-providers"=>{:GET=>[:list_service_providers]},
150
+ "/v2.0/{resource_type}/{resource_id}/tags"=>
151
+ {:PUT=>[:replace_all_tags],
152
+ :DELETE=>[:remove_all_tags],
153
+ :GET=>[:obtain_tag_list]},
154
+ "/v2.0/{resource_type}/{resource_id}/tags/{tag}"=>
155
+ {:GET=>[:confirm_a_tag], :PUT=>[:add_a_tag], :DELETE=>[:remove_a_tag]},
156
+ "/v2.0/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id}"=>
157
+ {:GET=>[:show_bandwidth_limit_rule_details],
158
+ :PUT=>[:update_bandwidth_limit_rule],
159
+ :DELETE=>[:delete_bandwidth_limit_rule]},
160
+ "/v2.0/qos/policies"=>
161
+ {:GET=>[:list_qos_policies], :POST=>[:create_qos_policy]},
162
+ "/v2.0/qos/policies/{policy_id}/dscp_marking_rules/{dscp_rule_id}"=>
163
+ {:GET=>[:show_dscp_marking_rule_details],
164
+ :PUT=>[:update_dscp_marking_rule],
165
+ :DELETE=>[:delete_dscp_marking_rule]},
166
+ "/v2.0/qos/policies/{policy_id}/dscp_marking_rules"=>
167
+ {:GET=>[:list_dscp_marking_rules_for_qos_policy],
168
+ :POST=>[:create_dscp_marking_rule]},
169
+ "/v2.0/qos/policies/{policy_id}"=>
170
+ {:GET=>[:show_qos_policy_details],
171
+ :PUT=>[:update_qos_policy],
172
+ :DELETE=>[:delete_qos_policy]},
173
+ "/v2.0/qos/policies/{policy_id}/bandwidth_limit_rules"=>
174
+ {:GET=>[:list_bandwidth_limit_rules_for_qos_policy],
175
+ :POST=>[:create_bandwidth_limit_rule]},
176
+ "/v2.0/lbaas/loadbalancers"=>
177
+ {:GET=>[:list_load_balancers], :POST=>[:create_a_load_balancer]},
178
+ "/v2.0/lbaas/loadbalancers/{loadbalancer_id}"=>
179
+ {:GET=>[:show_load_balancer_details],
180
+ :PUT=>[:update_load_balancer],
181
+ :DELETE=>[:remove_load_balancer]},
182
+ "/v2.0/lbaas/loadbalancers/{loadbalancer_id}/statuses"=>
183
+ {:GET=>[:show_load_balancer_status_tree]},
184
+ "/v2.0/lbaas/listeners"=>{:GET=>[:list_listeners], :POST=>[:create_listener]},
185
+ "/v2.0/lbaas/listeners/{listener_id}"=>
186
+ {:GET=>[:show_listener_details],
187
+ :PUT=>[:update_listener],
188
+ :DELETE=>[:remove_listener]},
189
+ "/v2.0/lbaas/pools"=>{:GET=>[:list_pools], :POST=>[:create_pool]},
190
+ "/v2.0/lbaas/pools/{pool_id}"=>
191
+ {:GET=>[:show_pool_details], :PUT=>[:update_pool], :DELETE=>[:remove_pool]},
192
+ "/v2.0/lbaas/pools/{pool_id}/members"=>
193
+ {:GET=>[:list_pool_members], :POST=>[:add_member_to_pool]},
194
+ "/v2.0/lbaas/pools/{pool_id}/members/{member_id}"=>
195
+ {:GET=>[:show_pool_member_details],
196
+ :PUT=>[:update_pool_member],
197
+ :DELETE=>[:remove_member_from_pool]},
198
+ "/v2.0/lbaas/healthmonitors"=>{:GET=>[:list_health_monitors]},
199
+ "/v2.0/lbaas/health_monitors"=>{:POST=>[:create_health_monitor]},
200
+ "/v2.0/lbaas/health_monitors/{health_monitor_id}"=>
201
+ {:GET=>[:show_health_monitor_details],
202
+ :PUT=>[:update_health_monitor],
203
+ :DELETE=>[:remove_health_monitor]}}
204
+ end
205
+ end
@@ -0,0 +1,20 @@
1
+ require 'misty/http/client'
2
+ require "misty/openstack/neutron/neutron_v2_0"
3
+
4
+ module Misty
5
+ module Openstack
6
+ module Neutron
7
+ class V2_0 < Misty::HTTP::Client
8
+ extend Misty::Openstack::NeutronV2_0
9
+
10
+ def self.api
11
+ v2_0
12
+ end
13
+
14
+ def self.service_names
15
+ %w{network networking}
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,269 @@
1
+ module Misty::Openstack::NovaV2_1
2
+ def v2_1
3
+ {"/"=>{:GET=>[:list_all_major_versions]},
4
+ "/{api_version}"=>{:GET=>[:show_details_of_specific_api_version]},
5
+ "/servers"=>
6
+ {:GET=>[:list_servers], :POST=>[:create_server, :create_multiple_servers]},
7
+ "/servers/detail"=>{:GET=>[:list_servers_detailed]},
8
+ "/servers/{server_id}"=>
9
+ {:GET=>[:show_server_details],
10
+ :PUT=>[:update_server],
11
+ :DELETE=>[:delete_server]},
12
+ "/servers/{server_id}/action"=>
13
+ {:POST=>
14
+ [:add_associate_floating_ip_addfloatingip_action,
15
+ :add_security_group_to_a_server_addsecuritygroup_action,
16
+ :change_administrative_password_changepassword_action,
17
+ :confirm_resized_server_confirmresize_action,
18
+ :create_image_createimage_action,
19
+ :lock_server_lock_action,
20
+ :pause_server_pause_action,
21
+ :reboot_server_reboot_action,
22
+ :rebuild_server_rebuild_action,
23
+ :remove_disassociate_floating_ip_removefloatingip_action,
24
+ :remove_security_group_from_a_server_removesecuritygroup_action,
25
+ :rescue_server_rescue_action,
26
+ :resize_server_resize_action,
27
+ :resume_suspended_server_resume_action,
28
+ :revert_resized_server_revertresize_action,
29
+ :start_server_os_start_action,
30
+ :stop_server_os_stop_action,
31
+ :suspend_server_suspend_action,
32
+ :unlock_server_unlock_action,
33
+ :unpause_server_unpause_action,
34
+ :unrescue_server_unrescue_action,
35
+ :add_associate_fixed_ip_addfixedip_action,
36
+ :remove_disassociate_fixed_ip_removefixedip_action,
37
+ :evacuate_server_evacuate_action,
38
+ :force_delete_server_forcedelete_action,
39
+ :restore_soft_deleted_instance_restore_action,
40
+ :show_console_output_os_getconsoleoutput_action,
41
+ :get_rdp_console_os_getrdpconsole_action,
42
+ :get_serial_console_os_getserialconsole_action,
43
+ :get_spice_console_os_getspiceconsole_action,
44
+ :get_vnc_console_os_getvncconsole_action,
45
+ :shelve_server_shelve_action,
46
+ :shelf_offload_remove_server_shelveoffload_action,
47
+ :unshelve_restore_shelved_server_unshelve_action,
48
+ :trigger_crash_dump_in_server,
49
+ :create_server_back_up_createbackup_action,
50
+ :inject_network_information_injectnetworkinfo_action,
51
+ :migrate_server_migrate_action,
52
+ :live_migrate_server_os_migratelive_action,
53
+ :reset_networking_on_a_server_resetnetwork_action,
54
+ :reset_server_state_os_resetstate_action]},
55
+ "/servers/{server_id}/os-security-groups"=>
56
+ {:GET=>[:list_security_groups_by_server]},
57
+ "/servers/{server_id}/diagnostics"=>{:GET=>[:show_server_diagnostics]},
58
+ "/servers/{server_id}/ips"=>{:GET=>[:list_ips]},
59
+ "/servers/{server_id}/ips/{network_label}"=>{:GET=>[:show_ip_details]},
60
+ "/servers/{server_id}/metadata"=>
61
+ {:GET=>[:list_all_metadata],
62
+ :POST=>[:update_metadata_items],
63
+ :PUT=>[:create_or_replace_metadata_items]},
64
+ "/servers/{server_id}/metadata/{key}"=>
65
+ {:GET=>[:show_metadata_item_details],
66
+ :PUT=>[:create_or_update_metadata_item],
67
+ :DELETE=>[:delete_metadata_item]},
68
+ "/servers/{server_id}/os-instance-actions"=>
69
+ {:GET=>[:list_actions_for_server]},
70
+ "/servers/{server_id}/os-instance-actions/{request_id}"=>
71
+ {:GET=>[:show_server_action_details]},
72
+ "/servers/{server_id}/os-interface"=>
73
+ {:GET=>[:list_port_interfaces], :POST=>[:create_interface]},
74
+ "/servers/{server_id}/os-interface/{port_id}"=>
75
+ {:GET=>[:show_port_interface_details], :DELETE=>[:detach_interface]},
76
+ "/servers/{server_id}/os-server-password"=>
77
+ {:GET=>[:show_server_password], :DELETE=>[:clear_admin_password]},
78
+ "/servers/{server_id}/os-virtual-interfaces"=>
79
+ {:GET=>[:list_virtual_interfaces]},
80
+ "/servers/{server_id}/os-volume_attachments"=>
81
+ {:GET=>[:list_volume_attachments_for_an_instance],
82
+ :POST=>[:attach_a_volume_to_an_instance]},
83
+ "/servers/{server_id}/os-volume_attachments/{attachment_id}"=>
84
+ {:GET=>[:show_a_detail_of_a_volume_attachment],
85
+ :PUT=>[:update_a_volume_attachment],
86
+ :DELETE=>[:detach_a_volume_from_an_instance]},
87
+ "/flavors"=>{:GET=>[:list_flavors], :POST=>[:create_flavor]},
88
+ "/flavors/detail"=>{:GET=>[:list_flavors_with_details]},
89
+ "/flavors/{flavor_id}"=>
90
+ {:GET=>[:show_flavor_details], :DELETE=>[:delete_flavor]},
91
+ "/flavors/{flavor_id}/os-flavor-access"=>
92
+ {:GET=>[:list_flavor_access_information_for_given_flavor]},
93
+ "/flavors/{flavor_id}/action"=>
94
+ {:POST=>
95
+ [:add_flavor_access_to_tenant_addtenantaccess_action,
96
+ :remove_flavor_access_from_tenant_removetenantaccess_action]},
97
+ "/flavors/{flavor_id}/os-extra_specs"=>
98
+ {:GET=>[:list_extra_specs_for_a_flavor],
99
+ :POST=>[:create_extra_specs_for_a_flavor]},
100
+ "/flavors/{flavor_id}/os-extra_specs/{flavor_extra_spec_key}"=>
101
+ {:GET=>[:show_an_extra_spec_for_a_flavor],
102
+ :PUT=>[:update_an_extra_spec_for_a_flavor],
103
+ :DELETE=>[:delete_an_extra_spec_for_a_flavor]},
104
+ "/os-keypairs"=>{:GET=>[:list_keypairs], :POST=>[:create_or_import_keypair]},
105
+ "/os-keypairs/{keypair_name}"=>
106
+ {:GET=>[:show_keypair_details], :DELETE=>[:delete_keypair]},
107
+ "/limits"=>{:GET=>[:show_rate_and_absolute_limits]},
108
+ "/os-agents"=>{:GET=>[:list_agent_builds], :POST=>[:create_agent_build]},
109
+ "/os-agents/{agent_build_id}"=>
110
+ {:PUT=>[:update_agent_build], :DELETE=>[:delete_agent_build]},
111
+ "/os-aggregates"=>{:GET=>[:list_aggregates], :POST=>[:create_aggregate]},
112
+ "/os-aggregates/{aggregate_id}"=>
113
+ {:GET=>[:show_aggregate_details],
114
+ :PUT=>[:update_aggregate],
115
+ :DELETE=>[:delete_aggregate]},
116
+ "/os-aggregates/{aggregate_id}/action"=>
117
+ {:POST=>[:add_host, :remove_host, :create_or_update_aggregate_metadata]},
118
+ "/os-assisted-volume-snapshots"=>{:POST=>[:create_assisted_volume_snapshots]},
119
+ "/os-assisted-volume-snapshots/{snapshot_id}"=>
120
+ {:DELETE=>[:delete_assisted_volume_snapshot]},
121
+ "/os-availability-zone"=>{:GET=>[:get_availability_zone_information]},
122
+ "/os-availability-zone/detail"=>
123
+ {:GET=>[:get_detailed_availability_zone_information]},
124
+ "/os-cells"=>{:GET=>[:list_cells], :POST=>[:create_cell]},
125
+ "/os-cells/capacities"=>{:GET=>[:capacities]},
126
+ "/os-cells/detail"=>{:GET=>[:list_cells_with_details]},
127
+ "/os-cells/info"=>{:GET=>[:info_for_this_cell]},
128
+ "/os-cells/{cell_id}"=>{:GET=>[:show_cell_data], :DELETE=>[:delete_a_cell]},
129
+ "/os-cells/{cell_od}"=>{:PUT=>[:update_a_cell]},
130
+ "/os-cells/{cell_id}/capacities"=>{:GET=>[:show_cell_capacities]},
131
+ "/servers/{server_id}/consoles"=>
132
+ {:GET=>[:lists_consoles], :POST=>[:create_console]},
133
+ "/servers/{server_id}/consoles/{console_id}"=>
134
+ {:GET=>[:show_console_details], :DELETE=>[:delete_console]},
135
+ "/os-console-auth-tokens/{console_token}"=>
136
+ {:GET=>[:show_console_connection_information]},
137
+ "/os-hosts"=>{:GET=>[:list_hosts]},
138
+ "/os-hosts/{host_name}"=>
139
+ {:GET=>[:show_host_details], :PUT=>[:update_host_status]},
140
+ "/os-hosts/{host_name}/reboot"=>{:GET=>[:reboot_host]},
141
+ "/os-hosts/{host_name}/shutdown"=>{:GET=>[:shut_down_host]},
142
+ "/os-hosts/{host_name}/startup"=>{:GET=>[:start_host]},
143
+ "/os-hypervisors"=>{:GET=>[:list_hypervisors]},
144
+ "/os-hypervisors/detail"=>{:GET=>[:list_hypervisors_details]},
145
+ "/os-hypervisors/statistics"=>{:GET=>[:show_hypervisor_statistics]},
146
+ "/os-hypervisors/{hypervisor_id}"=>{:GET=>[:show_hypervisor_details]},
147
+ "/os-hypervisors/{hypervisor_id}/uptime"=>{:GET=>[:show_hypervisor_uptime]},
148
+ "/os-hypervisors/{hypervisor_hostname_pattern}/search"=>
149
+ {:GET=>[:search_hypervisor]},
150
+ "/os-hypervisors/{hypervisor_hostname_pattern}/servers"=>
151
+ {:GET=>[:list_hypervisor_servers]},
152
+ "/os-instance_usage_audit_log"=>{:GET=>[:list_server_usage_audits]},
153
+ "/os-instance_usage_audit_log/{before_timestamp}"=>
154
+ {:GET=>[:list_usage_audits_before_specified_time]},
155
+ "/servers/{server_id}/migrations"=>{:GET=>[:list_migrations]},
156
+ "/servers/{server_id}/migrations/{migration_id}"=>
157
+ {:GET=>[:show_migration_details], :DELETE=>[:delete_abort_migration]},
158
+ "/servers/{server_id}/migrations/{migration_id}/action"=>
159
+ {:POST=>[:force_migration_complete_action_force_complete_action]},
160
+ "/os-quota-sets/{tenant_id}"=>
161
+ {:GET=>[:show_a_quota],
162
+ :PUT=>[:update_quotas],
163
+ :DELETE=>[:revert_quotas_to_defaults]},
164
+ "/os-quota-sets/{tenant_id}/defaults"=>
165
+ {:GET=>[:list_default_quotas_for_tenant]},
166
+ "/os-quota-sets/{tenant_id}/detail"=>{:GET=>[:show_the_detail_of_quota]},
167
+ "/os-server-groups"=>
168
+ {:GET=>[:list_server_groups], :POST=>[:create_server_group]},
169
+ "/os-server-groups/{server_group_id}"=>
170
+ {:GET=>[:show_server_group_details], :DELETE=>[:delete_server_group]},
171
+ "/servers/{server_id}/tags"=>
172
+ {:GET=>[:list_tags], :PUT=>[:replace_tags], :DELETE=>[:delete_all_tags]},
173
+ "/servers/{server_id}/tags/{tag}"=>
174
+ {:GET=>[:check_tag_existence],
175
+ :PUT=>[:add_a_single_tag],
176
+ :DELETE=>[:delete_a_single_tag]},
177
+ "/os-services"=>{:GET=>[:list_compute_services]},
178
+ "/os-services/disable"=>{:PUT=>[:disable_scheduling_for_a_compute_service]},
179
+ "/os-services/disable-log-reason"=>
180
+ {:PUT=>[:log_disabled_compute_service_information]},
181
+ "/os-services/enable"=>{:PUT=>[:enable_scheduling_for_a_compute_service]},
182
+ "/os-services/force-down"=>{:PUT=>[:update_forced_down]},
183
+ "/os-services/{service_id}"=>{:DELETE=>[:delete_compute_service]},
184
+ "/os-simple-tenant-usage"=>
185
+ {:GET=>[:list_tenant_usage_statistics_for_all_tenants]},
186
+ "/os-simple-tenant-usage/{tenant_id}"=>
187
+ {:GET=>[:show_usage_statistics_for_tenant]},
188
+ "/os-server-external-events"=>{:POST=>[:run_events]},
189
+ "/os-cloudpipe"=>{:GET=>[:list_cloudpipes], :POST=>[:create_cloudpipe]},
190
+ "/os-cloudpipe/configure-project"=>{:PUT=>[:update_cloudpipe]},
191
+ "/extensions"=>{:GET=>[:list_extensions]},
192
+ "/extensions/{alias}"=>{:GET=>[:show_extension_details]},
193
+ "/os-certificates"=>{:POST=>[:create_root_certificate]},
194
+ "/os-certificates/root"=>{:GET=>[:show_root_certificate_details]},
195
+ "/os-networks"=>{:GET=>[:list_networks], :POST=>[:create_network]},
196
+ "/os-networks/add"=>{:POST=>[:add_network]},
197
+ "/os-networks/{network_id}"=>
198
+ {:GET=>[:show_network_details], :DELETE=>[:delete_network]},
199
+ "/os-networks/{network_id}/action"=>
200
+ {:POST=>
201
+ [:associate_host_deprecated,
202
+ :disassociate_network_deprecated,
203
+ :disassociate_host_deprecated,
204
+ :disassociate_project_deprecated]},
205
+ "/os-volumes"=>{:GET=>[:list_volumes], :POST=>[:create_volume]},
206
+ "/os-volumes/detail"=>{:GET=>[:list_volumes_with_details]},
207
+ "/os-volumes/{volume_id}"=>
208
+ {:GET=>[:show_volume_details], :DELETE=>[:delete_volume]},
209
+ "/os-snapshots"=>{:GET=>[:list_snapshots], :POST=>[:create_snapshot]},
210
+ "/os-snapshots/detail"=>{:GET=>[:list_snapshots_with_details]},
211
+ "/os-snapshots/{snapshot_id}"=>
212
+ {:GET=>[:show_snapshot_details], :DELETE=>[:delete_snapshot]},
213
+ "/images"=>{:GET=>[:list_images]},
214
+ "/images/detail"=>{:GET=>[:list_images_with_details]},
215
+ "/images/{image_id}"=>{:GET=>[:show_image_details], :DELETE=>[:delete_image]},
216
+ "/images/{image_id}/metadata"=>
217
+ {:GET=>[:list_image_metadata],
218
+ :POST=>[:create_image_metadata],
219
+ :PUT=>[:update_image_metadata]},
220
+ "/images/{image_id}/metadata/{key}"=>
221
+ {:GET=>[:show_image_metadata_item],
222
+ :PUT=>[:create_or_update_image_metadata_item],
223
+ :DELETE=>[:delete_image_metadata_item]},
224
+ "/os-baremetal-nodes"=>{:GET=>[:list_bare_metal_nodes]},
225
+ "/os-baremetal-nodes/{node_id}"=>{:GET=>[:show_bare_metal_node_details]},
226
+ "/os-tenant-networks"=>
227
+ {:GET=>[:list_project_networks], :POST=>[:create_project_network]},
228
+ "/os-tenant-networks/{network_id}"=>
229
+ {:GET=>[:show_project_network_details], :DELETE=>[:delete_project_network]},
230
+ "/os-fixed-ips/{fixed_ip}"=>{:GET=>[:show_fixed_ip_details]},
231
+ "/os-fixed-ips/{fixed_ip}/action"=>{:POST=>[:reserve_or_release_a_fixed_ip]},
232
+ "/os-floating-ip-dns"=>{:GET=>[:list_dns_domains]},
233
+ "/os-floating-ip-dns/{domain}"=>
234
+ {:PUT=>[:create_or_update_dns_domain], :DELETE=>[:delete_dns_domain]},
235
+ "/os-floating-ip-dns/{domain}/entries/{ip}"=>{:GET=>[:list_dns_entries]},
236
+ "/os-floating-ip-dns/{domain}/entries/{name}"=>
237
+ {:GET=>[:find_unique_dns_entry],
238
+ :PUT=>[:create_or_update_dns_entry],
239
+ :DELETE=>[:delete_dns_entry]},
240
+ "/os-floating-ip-pools"=>{:GET=>[:list_floating_ip_pools]},
241
+ "/os-floating-ips"=>
242
+ {:GET=>[:list_floating_ip_addresses],
243
+ :POST=>[:create_allocate_floating_ip_address]},
244
+ "/os-floating-ips/{floating_ip_id}"=>
245
+ {:GET=>[:show_floating_ip_address_details],
246
+ :DELETE=>[:delete_deallocate_floating_ip_address]},
247
+ "/os-floating-ips-bulk"=>
248
+ {:GET=>[:list_floating_ips], :POST=>[:create_floating_ips]},
249
+ "/os-floating-ips-bulk/delete"=>{:PUT=>[:bulk_delete_floating_ips]},
250
+ "/os-floating-ips-bulk/{host_name}"=>{:GET=>[:list_floating_ips_by_host]},
251
+ "/os-fping"=>{:GET=>[:ping_instances]},
252
+ "/os-fping/{instance_id}"=>{:GET=>[:ping_an_instance]},
253
+ "/os-security-groups"=>
254
+ {:GET=>[:list_security_groups], :POST=>[:create_security_group]},
255
+ "/os-security-groups/{security_group_id}"=>
256
+ {:GET=>[:show_security_group_details],
257
+ :PUT=>[:update_security_group],
258
+ :DELETE=>[:delete_security_group]},
259
+ "/os-security-group-default-rules"=>
260
+ {:GET=>[:list_default_security_group_rules],
261
+ :POST=>[:create_default_security_group_rule]},
262
+ "/os-security-group-default-rules/{security_group_default_rule_id}"=>
263
+ {:GET=>[:show_default_security_group_rule_details],
264
+ :DELETE=>[:delete_default_security_group_rule]},
265
+ "/os-security-group-rules"=>{:POST=>[:create_security_group_rule]},
266
+ "/os-security-group-rules/{security_group_rule_id}"=>
267
+ {:DELETE=>[:delete_security_group_rule]}}
268
+ end
269
+ end