python-openstackclient 8.2.0__py3-none-any.whl → 8.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. openstackclient/api/object_store_v1.py +4 -1
  2. openstackclient/command.py +27 -0
  3. openstackclient/common/availability_zone.py +1 -1
  4. openstackclient/common/clientmanager.py +59 -21
  5. openstackclient/common/configuration.py +1 -1
  6. openstackclient/common/extension.py +1 -1
  7. openstackclient/common/limits.py +1 -1
  8. openstackclient/common/module.py +4 -2
  9. openstackclient/common/project_cleanup.py +10 -8
  10. openstackclient/common/quota.py +23 -6
  11. openstackclient/common/versions.py +1 -2
  12. openstackclient/compute/v2/agent.py +1 -1
  13. openstackclient/compute/v2/aggregate.py +6 -5
  14. openstackclient/compute/v2/console.py +5 -3
  15. openstackclient/compute/v2/console_connection.py +1 -1
  16. openstackclient/compute/v2/flavor.py +1 -1
  17. openstackclient/compute/v2/host.py +1 -1
  18. openstackclient/compute/v2/hypervisor.py +1 -1
  19. openstackclient/compute/v2/hypervisor_stats.py +1 -1
  20. openstackclient/compute/v2/keypair.py +1 -1
  21. openstackclient/compute/v2/server.py +76 -27
  22. openstackclient/compute/v2/server_backup.py +1 -1
  23. openstackclient/compute/v2/server_event.py +1 -1
  24. openstackclient/compute/v2/server_group.py +4 -2
  25. openstackclient/compute/v2/server_image.py +1 -1
  26. openstackclient/compute/v2/server_migration.py +1 -1
  27. openstackclient/compute/v2/server_volume.py +1 -1
  28. openstackclient/compute/v2/service.py +1 -1
  29. openstackclient/compute/v2/usage.py +6 -4
  30. openstackclient/identity/common.py +2 -1
  31. openstackclient/identity/v2_0/catalog.py +3 -2
  32. openstackclient/identity/v2_0/ec2creds.py +1 -1
  33. openstackclient/identity/v2_0/endpoint.py +1 -1
  34. openstackclient/identity/v2_0/project.py +17 -7
  35. openstackclient/identity/v2_0/role.py +1 -1
  36. openstackclient/identity/v2_0/role_assignment.py +3 -3
  37. openstackclient/identity/v2_0/service.py +1 -1
  38. openstackclient/identity/v2_0/token.py +1 -1
  39. openstackclient/identity/v2_0/user.py +2 -2
  40. openstackclient/identity/v3/access_rule.py +16 -4
  41. openstackclient/identity/v3/application_credential.py +30 -10
  42. openstackclient/identity/v3/catalog.py +3 -3
  43. openstackclient/identity/v3/consumer.py +1 -1
  44. openstackclient/identity/v3/credential.py +1 -1
  45. openstackclient/identity/v3/domain.py +10 -4
  46. openstackclient/identity/v3/ec2creds.py +1 -1
  47. openstackclient/identity/v3/endpoint.py +33 -12
  48. openstackclient/identity/v3/endpoint_group.py +1 -1
  49. openstackclient/identity/v3/federation_protocol.py +1 -1
  50. openstackclient/identity/v3/group.py +11 -5
  51. openstackclient/identity/v3/identity_provider.py +12 -10
  52. openstackclient/identity/v3/implied_role.py +1 -1
  53. openstackclient/identity/v3/limit.py +1 -1
  54. openstackclient/identity/v3/mapping.py +1 -1
  55. openstackclient/identity/v3/policy.py +1 -1
  56. openstackclient/identity/v3/project.py +10 -3
  57. openstackclient/identity/v3/region.py +1 -1
  58. openstackclient/identity/v3/registered_limit.py +16 -11
  59. openstackclient/identity/v3/role.py +20 -39
  60. openstackclient/identity/v3/role_assignment.py +12 -23
  61. openstackclient/identity/v3/service.py +1 -1
  62. openstackclient/identity/v3/service_provider.py +1 -1
  63. openstackclient/identity/v3/tag.py +3 -2
  64. openstackclient/identity/v3/token.py +3 -2
  65. openstackclient/identity/v3/trust.py +4 -2
  66. openstackclient/identity/v3/unscoped_saml.py +1 -1
  67. openstackclient/identity/v3/user.py +22 -13
  68. openstackclient/image/v1/image.py +19 -16
  69. openstackclient/image/v2/cache.py +1 -1
  70. openstackclient/image/v2/image.py +14 -11
  71. openstackclient/image/v2/info.py +1 -1
  72. openstackclient/image/v2/metadef_namespaces.py +1 -1
  73. openstackclient/image/v2/metadef_objects.py +1 -1
  74. openstackclient/image/v2/metadef_properties.py +3 -2
  75. openstackclient/image/v2/metadef_resource_type_association.py +1 -1
  76. openstackclient/image/v2/metadef_resource_types.py +1 -1
  77. openstackclient/image/v2/task.py +1 -1
  78. openstackclient/network/common.py +10 -9
  79. openstackclient/network/v2/address_group.py +4 -3
  80. openstackclient/network/v2/address_scope.py +8 -6
  81. openstackclient/network/v2/default_security_group_rule.py +9 -8
  82. openstackclient/network/v2/floating_ip.py +16 -9
  83. openstackclient/network/v2/floating_ip_port_forwarding.py +9 -6
  84. openstackclient/network/v2/ip_availability.py +7 -4
  85. openstackclient/network/v2/l3_conntrack_helper.py +11 -4
  86. openstackclient/network/v2/local_ip.py +13 -7
  87. openstackclient/network/v2/local_ip_association.py +7 -4
  88. openstackclient/network/v2/ndp_proxy.py +13 -6
  89. openstackclient/network/v2/network.py +33 -16
  90. openstackclient/network/v2/network_agent.py +5 -5
  91. openstackclient/network/v2/network_auto_allocated_topology.py +1 -1
  92. openstackclient/network/v2/network_flavor.py +1 -1
  93. openstackclient/network/v2/network_flavor_profile.py +1 -1
  94. openstackclient/network/v2/network_meter.py +1 -1
  95. openstackclient/network/v2/network_meter_rule.py +1 -1
  96. openstackclient/network/v2/network_qos_policy.py +7 -5
  97. openstackclient/network/v2/network_qos_rule.py +1 -1
  98. openstackclient/network/v2/network_qos_rule_type.py +1 -1
  99. openstackclient/network/v2/network_rbac.py +8 -5
  100. openstackclient/network/v2/network_segment.py +2 -2
  101. openstackclient/network/v2/network_segment_range.py +13 -6
  102. openstackclient/network/v2/network_service_provider.py +1 -1
  103. openstackclient/network/v2/network_trunk.py +65 -42
  104. openstackclient/network/v2/port.py +22 -20
  105. openstackclient/network/v2/router.py +19 -8
  106. openstackclient/network/v2/security_group.py +10 -6
  107. openstackclient/network/v2/security_group_rule.py +11 -5
  108. openstackclient/network/v2/subnet.py +17 -18
  109. openstackclient/network/v2/subnet_pool.py +11 -9
  110. openstackclient/network/v2/taas/__init__.py +0 -0
  111. openstackclient/network/v2/taas/tap_flow.py +245 -0
  112. openstackclient/network/v2/taas/tap_mirror.py +237 -0
  113. openstackclient/network/v2/taas/tap_service.py +211 -0
  114. openstackclient/object/v1/account.py +1 -1
  115. openstackclient/object/v1/container.py +1 -1
  116. openstackclient/object/v1/object.py +1 -1
  117. openstackclient/shell.py +18 -8
  118. openstackclient/tests/functional/identity/v3/test_catalog.py +42 -23
  119. openstackclient/tests/functional/identity/v3/test_role_assignment.py +174 -0
  120. openstackclient/tests/functional/image/v2/test_cache.py +54 -0
  121. openstackclient/tests/functional/image/v2/test_metadef_resource_type.py +55 -0
  122. openstackclient/tests/unit/common/test_command.py +1 -1
  123. openstackclient/tests/unit/common/test_extension.py +2 -3
  124. openstackclient/tests/unit/common/test_module.py +14 -7
  125. openstackclient/tests/unit/common/test_quota.py +20 -0
  126. openstackclient/tests/unit/compute/v2/test_aggregate.py +5 -3
  127. openstackclient/tests/unit/compute/v2/test_console.py +1 -4
  128. openstackclient/tests/unit/compute/v2/test_flavor.py +1 -3
  129. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -9
  130. openstackclient/tests/unit/compute/v2/test_server.py +364 -30
  131. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -3
  132. openstackclient/tests/unit/compute/v2/test_service.py +1 -3
  133. openstackclient/tests/unit/fakes.py +35 -134
  134. openstackclient/tests/unit/identity/test_common.py +100 -0
  135. openstackclient/tests/unit/identity/v2_0/test_project.py +4 -4
  136. openstackclient/tests/unit/identity/v3/fakes.py +10 -2
  137. openstackclient/tests/unit/identity/v3/test_application_credential.py +3 -3
  138. openstackclient/tests/unit/identity/v3/test_domain.py +1 -1
  139. openstackclient/tests/unit/identity/v3/test_endpoint.py +1 -1
  140. openstackclient/tests/unit/identity/v3/test_group.py +4 -2
  141. openstackclient/tests/unit/identity/v3/test_identity_provider.py +10 -10
  142. openstackclient/tests/unit/identity/v3/test_oauth.py +1 -1
  143. openstackclient/tests/unit/identity/v3/test_project.py +1 -1
  144. openstackclient/tests/unit/identity/v3/test_registered_limit.py +2 -2
  145. openstackclient/tests/unit/identity/v3/test_role.py +1 -82
  146. openstackclient/tests/unit/identity/v3/test_user.py +7 -51
  147. openstackclient/tests/unit/image/v2/test_image.py +111 -0
  148. openstackclient/tests/unit/network/test_common.py +9 -13
  149. openstackclient/tests/unit/network/v2/taas/__init__.py +0 -0
  150. openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py +276 -0
  151. openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py +288 -0
  152. openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py +271 -0
  153. openstackclient/tests/unit/network/v2/test_address_group.py +19 -22
  154. openstackclient/tests/unit/network/v2/test_address_scope.py +10 -15
  155. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +38 -49
  156. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +21 -27
  157. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +21 -18
  158. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -8
  159. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +6 -15
  160. openstackclient/tests/unit/network/v2/test_local_ip.py +12 -23
  161. openstackclient/tests/unit/network/v2/test_local_ip_association.py +13 -18
  162. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +11 -21
  163. openstackclient/tests/unit/network/v2/test_network.py +41 -37
  164. openstackclient/tests/unit/network/v2/test_network_agent.py +13 -20
  165. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +5 -8
  166. openstackclient/tests/unit/network/v2/test_network_flavor.py +14 -26
  167. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +14 -17
  168. openstackclient/tests/unit/network/v2/test_network_meter.py +7 -17
  169. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +10 -20
  170. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +7 -13
  171. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +44 -54
  172. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +2 -7
  173. openstackclient/tests/unit/network/v2/test_network_rbac.py +21 -36
  174. openstackclient/tests/unit/network/v2/test_network_segment.py +13 -29
  175. openstackclient/tests/unit/network/v2/test_network_segment_range.py +20 -19
  176. openstackclient/tests/unit/network/v2/test_network_service_provider.py +1 -4
  177. openstackclient/tests/unit/network/v2/test_network_trunk.py +52 -47
  178. openstackclient/tests/unit/network/v2/test_port.py +75 -86
  179. openstackclient/tests/unit/network/v2/test_router.py +104 -126
  180. openstackclient/tests/unit/network/v2/test_security_group_network.py +19 -26
  181. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +17 -18
  182. openstackclient/tests/unit/network/v2/test_subnet.py +35 -46
  183. openstackclient/tests/unit/network/v2/test_subnet_pool.py +21 -33
  184. openstackclient/tests/unit/volume/test_find_resource.py +4 -13
  185. openstackclient/tests/unit/volume/v2/test_volume_backup.py +3 -1
  186. openstackclient/tests/unit/volume/v3/test_volume.py +4 -0
  187. openstackclient/tests/unit/volume/v3/test_volume_backup.py +9 -0
  188. openstackclient/volume/client.py +7 -17
  189. openstackclient/volume/v2/backup_record.py +1 -1
  190. openstackclient/volume/v2/consistency_group.py +1 -1
  191. openstackclient/volume/v2/consistency_group_snapshot.py +1 -1
  192. openstackclient/volume/v2/qos_specs.py +1 -1
  193. openstackclient/volume/v2/service.py +1 -1
  194. openstackclient/volume/v2/volume.py +2 -2
  195. openstackclient/volume/v2/volume_backend.py +1 -1
  196. openstackclient/volume/v2/volume_backup.py +5 -3
  197. openstackclient/volume/v2/volume_host.py +1 -2
  198. openstackclient/volume/v2/volume_snapshot.py +2 -2
  199. openstackclient/volume/v2/volume_transfer_request.py +1 -1
  200. openstackclient/volume/v2/volume_type.py +11 -6
  201. openstackclient/volume/v3/block_storage_cleanup.py +1 -1
  202. openstackclient/volume/v3/block_storage_cluster.py +1 -1
  203. openstackclient/volume/v3/block_storage_log_level.py +1 -1
  204. openstackclient/volume/v3/block_storage_manage.py +1 -1
  205. openstackclient/volume/v3/block_storage_resource_filter.py +1 -1
  206. openstackclient/volume/v3/service.py +1 -1
  207. openstackclient/volume/v3/volume.py +2 -2
  208. openstackclient/volume/v3/volume_attachment.py +6 -5
  209. openstackclient/volume/v3/volume_backup.py +18 -3
  210. openstackclient/volume/v3/volume_group.py +1 -1
  211. openstackclient/volume/v3/volume_group_snapshot.py +1 -1
  212. openstackclient/volume/v3/volume_group_type.py +1 -1
  213. openstackclient/volume/v3/volume_message.py +1 -1
  214. openstackclient/volume/v3/volume_snapshot.py +2 -2
  215. openstackclient/volume/v3/volume_transfer_request.py +1 -1
  216. openstackclient/volume/v3/volume_type.py +15 -9
  217. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/METADATA +15 -13
  218. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/RECORD +224 -213
  219. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/WHEEL +1 -1
  220. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/entry_points.txt +15 -0
  221. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info/licenses}/AUTHORS +10 -0
  222. python_openstackclient-8.3.0.dist-info/pbr.json +1 -0
  223. openstackclient/tests/unit/common/test_logs.py +0 -221
  224. python_openstackclient-8.2.0.dist-info/pbr.json +0 -1
  225. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info/licenses}/LICENSE +0 -0
  226. {python_openstackclient-8.2.0.dist-info → python_openstackclient-8.3.0.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.2)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -502,6 +502,21 @@ subnet_pool_unset = openstackclient.network.v2.subnet_pool:UnsetSubnetPool
502
502
  subnet_set = openstackclient.network.v2.subnet:SetSubnet
503
503
  subnet_show = openstackclient.network.v2.subnet:ShowSubnet
504
504
  subnet_unset = openstackclient.network.v2.subnet:UnsetSubnet
505
+ tap_flow_create = openstackclient.network.v2.taas.tap_flow:CreateTapFlow
506
+ tap_flow_delete = openstackclient.network.v2.taas.tap_flow:DeleteTapFlow
507
+ tap_flow_list = openstackclient.network.v2.taas.tap_flow:ListTapFlow
508
+ tap_flow_show = openstackclient.network.v2.taas.tap_flow:ShowTapFlow
509
+ tap_flow_update = openstackclient.network.v2.taas.tap_flow:UpdateTapFlow
510
+ tap_mirror_create = openstackclient.network.v2.taas.tap_mirror:CreateTapMirror
511
+ tap_mirror_delete = openstackclient.network.v2.taas.tap_mirror:DeleteTapMirror
512
+ tap_mirror_list = openstackclient.network.v2.taas.tap_mirror:ListTapMirror
513
+ tap_mirror_show = openstackclient.network.v2.taas.tap_mirror:ShowTapMirror
514
+ tap_mirror_update = openstackclient.network.v2.taas.tap_mirror:UpdateTapMirror
515
+ tap_service_create = openstackclient.network.v2.taas.tap_service:CreateTapService
516
+ tap_service_delete = openstackclient.network.v2.taas.tap_service:DeleteTapService
517
+ tap_service_list = openstackclient.network.v2.taas.tap_service:ListTapService
518
+ tap_service_show = openstackclient.network.v2.taas.tap_service:ShowTapService
519
+ tap_service_update = openstackclient.network.v2.taas.tap_service:UpdateTapService
505
520
 
506
521
  [openstack.object_store.v1]
507
522
  container_create = openstackclient.object.v1.container:CreateContainer
@@ -1,6 +1,7 @@
1
1
  0weng <oweng@osuosl.org>
2
2
  Aaron Rosen <aaronorosen@gmail.com>
3
3
  Abhishek Chanda <abhishek@cloudscaling.com>
4
+ Abhishek Kekane <akekane@redhat.com>
4
5
  Abhishek Raut <rauta@vmware.com>
5
6
  Adam Harwell <flux.adam@gmail.com>
6
7
  Adam Spiers <aspiers@suse.com>
@@ -244,6 +245,7 @@ Kendall Nelson <kennelson11@gmail.com>
244
245
  Kenneth Chu <chukenne@ca.ibm.com>
245
246
  Kevin_Zheng <zhengzhenyu@huawei.com>
246
247
  Khomesh Thakre <khomeshthakre24@gmail.com>
248
+ Koya Watanabe <koywatan@lycorp.co.jp>
247
249
  Kristi Nikolla <knikolla@bu.edu>
248
250
  Kyrylo Romanenko <kromanenko@mirantis.com>
249
251
  LEE JAE YONG <jaeljy135@gmail.com>
@@ -257,6 +259,7 @@ Lingxian Kong <anlin.kong@gmail.com>
257
259
  LiuNanke <nanke.liu@easystack.cn>
258
260
  Lorin Hochstein <lorin@nimbisservices.com>
259
261
  Lu lei <lei.lu@easystack.cn>
262
+ Luan Utimura <luan.utimura@luizalabs.com>
260
263
  Léo GEORGEL <leo.georgel@osones.com>
261
264
  M V P Nitesh <m.nitesh@nectechnologies.in>
262
265
  Maari Tamm <tamm.maari@gmail.com>
@@ -275,6 +278,7 @@ Martin Chlumsky <martin.chlumsky@gmail.com>
275
278
  Martin Schuppert <mschuppert@redhat.com>
276
279
  Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
277
280
  Masayuki Igawa <masayuki@igawa.io>
281
+ Matt Anson <matta@stackhpc.com>
278
282
  Matt Fischer <matt@mattfischer.com>
279
283
  Matt Joyce <matt.joyce@cloudscaling.com>
280
284
  Matt Riedemann <mriedem.os@gmail.com>
@@ -290,6 +294,7 @@ Miguel Lavalle <mlavalle@redhat.com>
290
294
  Mike Fedosin <mfedosin@redhat.com>
291
295
  Mikhail Feoktistov <mfeoktistov@virtuozzo.com>
292
296
  Min Min Ren <rminmin@cn.ibm.com>
297
+ Miro Tomaska <mtomaska@redhat.com>
293
298
  Mohammed Al-Dokimi <maldokim@redhat.com>
294
299
  Mohammed Naser <mnaser@vexxhost.com>
295
300
  Mohan Muppidi <mkumar2301@gmail.com>
@@ -472,7 +477,9 @@ cw0306-lee <us0310306@gmail.com>
472
477
  daizhiyong <zhiyong.dai@easystack.cn>
473
478
  devMuscle <hongsbien@naver.com>
474
479
  djp <dimsss0607@gmail.com>
480
+ dlawton <dlawton@redhat.com>
475
481
  dna <la18byeol@gmail.com>
482
+ doburn <kwon2852@gmail.com>
476
483
  dongwenshuai <dong.wenshuai@zte.com.cn>
477
484
  elajkat <lajos.katona@est.tech>
478
485
  gecong1973 <ge.cong@zte.com.cn>
@@ -497,6 +504,7 @@ jiahui.qiang <jiahui.qiang@easystack.cn>
497
504
  jiangpch <jiangpengcheng@navercorp.com>
498
505
  jiaxi <jiaxi@unitedstack.com>
499
506
  jichenjc <jichenjc@cn.ibm.com>
507
+ jiwonjang <kooriangman@gmail.com>
500
508
  jqjiang.1@gmail.com <jqjiang.1@gmail.com>
501
509
  judy-yu <yujie@cmss.chinamobile.com>
502
510
  kafka <guowang@unitedstack.com>
@@ -519,6 +527,7 @@ matbu <mat.bultel@gmail.com>
519
527
  mb711d <mb711d@att.com>
520
528
  melanie witt <melwittt@gmail.com>
521
529
  melissaml <ma.lei@99cloud.net>
530
+ minkyukim <mj110602@gmail.com>
522
531
  mpicea <jjh77745997@gmail.com>
523
532
  nidhimittalhada <nidhimittal19@gmail.com>
524
533
  niuke <niuke19970315@163.com>
@@ -561,6 +570,7 @@ wangxiyuan <wangxiyuan@huawei.com>
561
570
  wangzihao <wangzihao@yovole.com>
562
571
  whoami-rajat <rajatdhasmana@gmail.com>
563
572
  wingwj <wingwj@gmail.com>
573
+ wonjun0120 <wonjundero@gmail.com>
564
574
  wu.chunyang <wu.chunyang@99cloud.net>
565
575
  wu.chunyang <wuchunyang@yovole.com>
566
576
  wu.shiming <wushiming@yovole.com>
@@ -0,0 +1 @@
1
+ {"git_version": "d1a0ede7", "is_release": true}
@@ -1,221 +0,0 @@
1
- # Licensed under the Apache License, Version 2.0 (the "License"); you may
2
- # not use this file except in compliance with the License. You may obtain
3
- # a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
- # License for the specific language governing permissions and limitations
11
- # under the License.
12
- #
13
-
14
- # NOTE(dtroyer): This file is deprecated in Jun 2016, remove after 4.x release
15
- # or Jun 2017.
16
-
17
- import logging
18
- from unittest import mock
19
-
20
- from osc_lib import logs
21
-
22
- from openstackclient.tests.unit import utils
23
-
24
-
25
- class TestContext(utils.TestCase):
26
- def test_log_level_from_options(self):
27
- opts = mock.Mock()
28
- opts.verbose_level = 0
29
- self.assertEqual(logging.ERROR, logs.log_level_from_options(opts))
30
- opts.verbose_level = 1
31
- self.assertEqual(logging.WARNING, logs.log_level_from_options(opts))
32
- opts.verbose_level = 2
33
- self.assertEqual(logging.INFO, logs.log_level_from_options(opts))
34
- opts.verbose_level = 3
35
- self.assertEqual(logging.DEBUG, logs.log_level_from_options(opts))
36
-
37
- def test_log_level_from_config(self):
38
- cfg = {'verbose_level': 0}
39
- self.assertEqual(logging.ERROR, logs.log_level_from_config(cfg))
40
- cfg = {'verbose_level': 1}
41
- self.assertEqual(logging.WARNING, logs.log_level_from_config(cfg))
42
- cfg = {'verbose_level': 2}
43
- self.assertEqual(logging.INFO, logs.log_level_from_config(cfg))
44
- cfg = {'verbose_level': 3}
45
- self.assertEqual(logging.DEBUG, logs.log_level_from_config(cfg))
46
- cfg = {'verbose_level': 1, 'log_level': 'critical'}
47
- self.assertEqual(logging.CRITICAL, logs.log_level_from_config(cfg))
48
- cfg = {'verbose_level': 1, 'log_level': 'error'}
49
- self.assertEqual(logging.ERROR, logs.log_level_from_config(cfg))
50
- cfg = {'verbose_level': 1, 'log_level': 'warning'}
51
- self.assertEqual(logging.WARNING, logs.log_level_from_config(cfg))
52
- cfg = {'verbose_level': 1, 'log_level': 'info'}
53
- self.assertEqual(logging.INFO, logs.log_level_from_config(cfg))
54
- cfg = {'verbose_level': 1, 'log_level': 'debug'}
55
- self.assertEqual(logging.DEBUG, logs.log_level_from_config(cfg))
56
- cfg = {'verbose_level': 1, 'log_level': 'bogus'}
57
- self.assertEqual(logging.WARNING, logs.log_level_from_config(cfg))
58
- cfg = {'verbose_level': 1, 'log_level': 'info', 'debug': True}
59
- self.assertEqual(logging.DEBUG, logs.log_level_from_config(cfg))
60
-
61
- @mock.patch('warnings.simplefilter')
62
- def test_set_warning_filter(self, simplefilter):
63
- logs.set_warning_filter(logging.ERROR)
64
- simplefilter.assert_called_with("ignore")
65
- logs.set_warning_filter(logging.WARNING)
66
- simplefilter.assert_called_with("ignore")
67
- logs.set_warning_filter(logging.INFO)
68
- simplefilter.assert_called_with("once")
69
-
70
-
71
- class TestFileFormatter(utils.TestCase):
72
- def test_nothing(self):
73
- formatter = logs._FileFormatter()
74
- self.assertEqual(
75
- (
76
- '%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
77
- '%(name)s %(message)s'
78
- ),
79
- formatter.fmt,
80
- )
81
-
82
- def test_options(self):
83
- class Opts:
84
- cloud = 'cloudy'
85
- os_project_name = 'projecty'
86
- username = 'usernamey'
87
-
88
- options = Opts()
89
- formatter = logs._FileFormatter(options=options)
90
- self.assertEqual(
91
- (
92
- '%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
93
- '%(name)s [cloudy usernamey projecty] %(message)s'
94
- ),
95
- formatter.fmt,
96
- )
97
-
98
- def test_config(self):
99
- config = mock.Mock()
100
- config.config = {'cloud': 'cloudy'}
101
- config.auth = {'project_name': 'projecty', 'username': 'usernamey'}
102
- formatter = logs._FileFormatter(config=config)
103
- self.assertEqual(
104
- (
105
- '%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
106
- '%(name)s [cloudy usernamey projecty] %(message)s'
107
- ),
108
- formatter.fmt,
109
- )
110
-
111
-
112
- class TestLogConfigurator(utils.TestCase):
113
- def setUp(self):
114
- super().setUp()
115
- self.options = mock.Mock()
116
- self.options.verbose_level = 1
117
- self.options.log_file = None
118
- self.options.debug = False
119
- self.root_logger = mock.Mock()
120
- self.root_logger.setLevel = mock.Mock()
121
- self.root_logger.addHandler = mock.Mock()
122
- self.requests_log = mock.Mock()
123
- self.requests_log.setLevel = mock.Mock()
124
- self.cliff_log = mock.Mock()
125
- self.cliff_log.setLevel = mock.Mock()
126
- self.stevedore_log = mock.Mock()
127
- self.stevedore_log.setLevel = mock.Mock()
128
- self.iso8601_log = mock.Mock()
129
- self.iso8601_log.setLevel = mock.Mock()
130
- self.loggers = [
131
- self.root_logger,
132
- self.requests_log,
133
- self.cliff_log,
134
- self.stevedore_log,
135
- self.iso8601_log,
136
- ]
137
-
138
- @mock.patch('logging.StreamHandler')
139
- @mock.patch('logging.getLogger')
140
- @mock.patch('osc_lib.logs.set_warning_filter')
141
- def test_init(self, warning_filter, getLogger, handle):
142
- getLogger.side_effect = self.loggers
143
- console_logger = mock.Mock()
144
- console_logger.setFormatter = mock.Mock()
145
- console_logger.setLevel = mock.Mock()
146
- handle.return_value = console_logger
147
-
148
- configurator = logs.LogConfigurator(self.options)
149
-
150
- getLogger.assert_called_with('iso8601') # last call
151
- warning_filter.assert_called_with(logging.WARNING)
152
- self.root_logger.setLevel.assert_called_with(logging.DEBUG)
153
- self.root_logger.addHandler.assert_called_with(console_logger)
154
- self.requests_log.setLevel.assert_called_with(logging.ERROR)
155
- self.cliff_log.setLevel.assert_called_with(logging.ERROR)
156
- self.stevedore_log.setLevel.assert_called_with(logging.ERROR)
157
- self.iso8601_log.setLevel.assert_called_with(logging.ERROR)
158
- self.assertFalse(configurator.dump_trace)
159
-
160
- @mock.patch('logging.getLogger')
161
- @mock.patch('osc_lib.logs.set_warning_filter')
162
- def test_init_no_debug(self, warning_filter, getLogger):
163
- getLogger.side_effect = self.loggers
164
- self.options.debug = True
165
-
166
- configurator = logs.LogConfigurator(self.options)
167
-
168
- warning_filter.assert_called_with(logging.DEBUG)
169
- self.requests_log.setLevel.assert_called_with(logging.DEBUG)
170
- self.assertTrue(configurator.dump_trace)
171
-
172
- @mock.patch('logging.FileHandler')
173
- @mock.patch('logging.getLogger')
174
- @mock.patch('osc_lib.logs.set_warning_filter')
175
- @mock.patch('osc_lib.logs._FileFormatter')
176
- def test_init_log_file(self, formatter, warning_filter, getLogger, handle):
177
- getLogger.side_effect = self.loggers
178
- self.options.log_file = '/tmp/log_file'
179
- file_logger = mock.Mock()
180
- file_logger.setFormatter = mock.Mock()
181
- file_logger.setLevel = mock.Mock()
182
- handle.return_value = file_logger
183
- mock_formatter = mock.Mock()
184
- formatter.return_value = mock_formatter
185
-
186
- logs.LogConfigurator(self.options)
187
-
188
- handle.assert_called_with(filename=self.options.log_file)
189
- self.root_logger.addHandler.assert_called_with(file_logger)
190
- file_logger.setFormatter.assert_called_with(mock_formatter)
191
- file_logger.setLevel.assert_called_with(logging.WARNING)
192
-
193
- @mock.patch('logging.FileHandler')
194
- @mock.patch('logging.getLogger')
195
- @mock.patch('osc_lib.logs.set_warning_filter')
196
- @mock.patch('osc_lib.logs._FileFormatter')
197
- def test_configure(self, formatter, warning_filter, getLogger, handle):
198
- getLogger.side_effect = self.loggers
199
- configurator = logs.LogConfigurator(self.options)
200
- cloud_config = mock.Mock()
201
- config_log = '/tmp/config_log'
202
- cloud_config.config = {
203
- 'log_file': config_log,
204
- 'verbose_level': 1,
205
- 'log_level': 'info',
206
- }
207
- file_logger = mock.Mock()
208
- file_logger.setFormatter = mock.Mock()
209
- file_logger.setLevel = mock.Mock()
210
- handle.return_value = file_logger
211
- mock_formatter = mock.Mock()
212
- formatter.return_value = mock_formatter
213
-
214
- configurator.configure(cloud_config)
215
-
216
- warning_filter.assert_called_with(logging.INFO)
217
- handle.assert_called_with(filename=config_log)
218
- self.root_logger.addHandler.assert_called_with(file_logger)
219
- file_logger.setFormatter.assert_called_with(mock_formatter)
220
- file_logger.setLevel.assert_called_with(logging.INFO)
221
- self.assertFalse(configurator.dump_trace)
@@ -1 +0,0 @@
1
- {"git_version": "34f431ba", "is_release": true}