python-openstackclient 6.6.0__py3-none-any.whl → 7.0.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 (337) hide show
  1. openstackclient/api/api.py +7 -8
  2. openstackclient/api/compute_v2.py +352 -638
  3. openstackclient/api/image_v1.py +1 -1
  4. openstackclient/api/object_store_v1.py +3 -4
  5. openstackclient/common/availability_zone.py +1 -1
  6. openstackclient/common/clientmanager.py +16 -4
  7. openstackclient/common/configuration.py +1 -1
  8. openstackclient/common/extension.py +1 -1
  9. openstackclient/common/limits.py +66 -32
  10. openstackclient/common/module.py +3 -3
  11. openstackclient/common/progressbar.py +2 -2
  12. openstackclient/common/project_cleanup.py +5 -2
  13. openstackclient/common/quota.py +281 -410
  14. openstackclient/common/versions.py +1 -1
  15. openstackclient/compute/client.py +7 -116
  16. openstackclient/compute/v2/agent.py +75 -49
  17. openstackclient/compute/v2/aggregate.py +9 -9
  18. openstackclient/compute/v2/console.py +2 -2
  19. openstackclient/compute/v2/flavor.py +6 -6
  20. openstackclient/compute/v2/host.py +38 -33
  21. openstackclient/compute/v2/hypervisor.py +4 -3
  22. openstackclient/compute/v2/keypair.py +7 -8
  23. openstackclient/compute/v2/server.py +478 -396
  24. openstackclient/compute/v2/server_backup.py +1 -1
  25. openstackclient/compute/v2/server_group.py +4 -4
  26. openstackclient/compute/v2/server_image.py +1 -1
  27. openstackclient/compute/v2/server_migration.py +3 -4
  28. openstackclient/compute/v2/service.py +4 -4
  29. openstackclient/compute/v2/usage.py +3 -3
  30. openstackclient/identity/common.py +34 -0
  31. openstackclient/identity/v2_0/catalog.py +2 -2
  32. openstackclient/identity/v2_0/ec2creds.py +4 -4
  33. openstackclient/identity/v2_0/endpoint.py +4 -4
  34. openstackclient/identity/v2_0/project.py +6 -6
  35. openstackclient/identity/v2_0/role.py +5 -5
  36. openstackclient/identity/v2_0/role_assignment.py +1 -1
  37. openstackclient/identity/v2_0/service.py +4 -4
  38. openstackclient/identity/v2_0/token.py +2 -2
  39. openstackclient/identity/v2_0/user.py +7 -7
  40. openstackclient/identity/v3/access_rule.py +3 -3
  41. openstackclient/identity/v3/application_credential.py +127 -45
  42. openstackclient/identity/v3/catalog.py +2 -2
  43. openstackclient/identity/v3/consumer.py +4 -4
  44. openstackclient/identity/v3/credential.py +5 -5
  45. openstackclient/identity/v3/domain.py +5 -5
  46. openstackclient/identity/v3/ec2creds.py +4 -4
  47. openstackclient/identity/v3/endpoint.py +7 -7
  48. openstackclient/identity/v3/endpoint_group.py +8 -10
  49. openstackclient/identity/v3/federation_protocol.py +5 -5
  50. openstackclient/identity/v3/group.py +8 -8
  51. openstackclient/identity/v3/identity_provider.py +5 -5
  52. openstackclient/identity/v3/implied_role.py +3 -3
  53. openstackclient/identity/v3/limit.py +5 -5
  54. openstackclient/identity/v3/mapping.py +5 -5
  55. openstackclient/identity/v3/policy.py +5 -5
  56. openstackclient/identity/v3/project.py +5 -5
  57. openstackclient/identity/v3/region.py +5 -5
  58. openstackclient/identity/v3/registered_limit.py +5 -5
  59. openstackclient/identity/v3/role.py +7 -7
  60. openstackclient/identity/v3/role_assignment.py +92 -140
  61. openstackclient/identity/v3/service.py +64 -34
  62. openstackclient/identity/v3/service_provider.py +4 -4
  63. openstackclient/identity/v3/tag.py +2 -2
  64. openstackclient/identity/v3/token.py +5 -5
  65. openstackclient/identity/v3/trust.py +3 -3
  66. openstackclient/identity/v3/user.py +144 -80
  67. openstackclient/image/client.py +4 -4
  68. openstackclient/image/v1/image.py +8 -9
  69. openstackclient/image/v2/cache.py +12 -10
  70. openstackclient/image/v2/metadef_objects.py +44 -0
  71. openstackclient/image/v2/metadef_resource_type_association.py +189 -0
  72. openstackclient/image/v2/task.py +1 -1
  73. openstackclient/network/common.py +6 -5
  74. openstackclient/network/utils.py +2 -2
  75. openstackclient/network/v2/address_group.py +6 -6
  76. openstackclient/network/v2/address_scope.py +5 -5
  77. openstackclient/network/v2/default_security_group_rule.py +1 -1
  78. openstackclient/network/v2/floating_ip.py +8 -10
  79. openstackclient/network/v2/floating_ip_pool.py +6 -15
  80. openstackclient/network/v2/floating_ip_port_forwarding.py +5 -13
  81. openstackclient/network/v2/ip_availability.py +2 -2
  82. openstackclient/network/v2/l3_conntrack_helper.py +5 -5
  83. openstackclient/network/v2/network.py +8 -8
  84. openstackclient/network/v2/network_agent.py +8 -8
  85. openstackclient/network/v2/network_auto_allocated_topology.py +2 -2
  86. openstackclient/network/v2/network_flavor.py +6 -8
  87. openstackclient/network/v2/network_flavor_profile.py +4 -4
  88. openstackclient/network/v2/network_meter.py +3 -3
  89. openstackclient/network/v2/network_meter_rule.py +3 -3
  90. openstackclient/network/v2/network_qos_policy.py +5 -5
  91. openstackclient/network/v2/network_qos_rule.py +9 -9
  92. openstackclient/network/v2/network_qos_rule_type.py +1 -1
  93. openstackclient/network/v2/network_rbac.py +5 -5
  94. openstackclient/network/v2/network_segment.py +5 -5
  95. openstackclient/network/v2/network_segment_range.py +7 -7
  96. openstackclient/network/v2/network_trunk.py +7 -7
  97. openstackclient/network/v2/port.py +26 -12
  98. openstackclient/network/v2/router.py +403 -54
  99. openstackclient/network/v2/security_group.py +18 -14
  100. openstackclient/network/v2/security_group_rule.py +18 -15
  101. openstackclient/network/v2/subnet.py +15 -8
  102. openstackclient/network/v2/subnet_pool.py +6 -6
  103. openstackclient/object/v1/account.py +2 -2
  104. openstackclient/object/v1/container.py +7 -7
  105. openstackclient/object/v1/object.py +7 -7
  106. openstackclient/shell.py +4 -6
  107. openstackclient/tests/functional/base.py +1 -1
  108. openstackclient/tests/functional/common/test_extension.py +1 -1
  109. openstackclient/tests/functional/common/test_help.py +2 -2
  110. openstackclient/tests/functional/common/test_module.py +1 -1
  111. openstackclient/tests/functional/common/test_quota.py +43 -61
  112. openstackclient/tests/functional/compute/v2/common.py +2 -2
  113. openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
  114. openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
  115. openstackclient/tests/functional/compute/v2/test_server.py +5 -5
  116. openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
  117. openstackclient/tests/functional/identity/v2/common.py +3 -3
  118. openstackclient/tests/functional/identity/v3/common.py +14 -6
  119. openstackclient/tests/functional/identity/v3/test_application_credential.py +13 -19
  120. openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
  121. openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
  122. openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
  123. openstackclient/tests/functional/identity/v3/test_limit.py +2 -2
  124. openstackclient/tests/functional/identity/v3/test_region.py +1 -3
  125. openstackclient/tests/functional/identity/v3/test_registered_limit.py +1 -1
  126. openstackclient/tests/functional/identity/v3/test_role.py +2 -2
  127. openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
  128. openstackclient/tests/functional/identity/v3/test_service.py +4 -6
  129. openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
  130. openstackclient/tests/functional/image/base.py +1 -1
  131. openstackclient/tests/functional/image/v2/test_image.py +1 -1
  132. openstackclient/tests/functional/image/v2/test_info.py +1 -1
  133. openstackclient/tests/functional/network/v2/common.py +4 -6
  134. openstackclient/tests/functional/network/v2/test_network.py +5 -3
  135. openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
  136. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
  137. openstackclient/tests/functional/network/v2/test_port.py +11 -7
  138. openstackclient/tests/functional/network/v2/test_router.py +2 -2
  139. openstackclient/tests/functional/object/v1/common.py +1 -1
  140. openstackclient/tests/functional/object/v1/test_container.py +3 -3
  141. openstackclient/tests/functional/object/v1/test_object.py +9 -13
  142. openstackclient/tests/functional/volume/base.py +1 -1
  143. openstackclient/tests/functional/volume/v1/test_service.py +1 -1
  144. openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
  145. openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
  146. openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
  147. openstackclient/tests/functional/volume/v2/test_service.py +2 -2
  148. openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
  149. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
  150. openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
  151. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
  152. openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
  153. openstackclient/tests/unit/api/fakes.py +1 -1
  154. openstackclient/tests/unit/api/test_api.py +2 -2
  155. openstackclient/tests/unit/api/test_compute_v2.py +522 -707
  156. openstackclient/tests/unit/api/test_image_v1.py +1 -1
  157. openstackclient/tests/unit/api/test_image_v2.py +1 -1
  158. openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
  159. openstackclient/tests/unit/common/test_limits.py +73 -35
  160. openstackclient/tests/unit/common/test_logs.py +2 -2
  161. openstackclient/tests/unit/common/test_module.py +4 -2
  162. openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
  163. openstackclient/tests/unit/common/test_quota.py +490 -630
  164. openstackclient/tests/unit/compute/v2/fakes.py +37 -286
  165. openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
  166. openstackclient/tests/unit/compute/v2/test_aggregate.py +18 -16
  167. openstackclient/tests/unit/compute/v2/test_console.py +4 -5
  168. openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
  169. openstackclient/tests/unit/compute/v2/test_host.py +83 -54
  170. openstackclient/tests/unit/compute/v2/test_hypervisor.py +28 -31
  171. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
  172. openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
  173. openstackclient/tests/unit/compute/v2/test_server.py +2895 -2459
  174. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
  175. openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
  176. openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
  177. openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
  178. openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
  179. openstackclient/tests/unit/compute/v2/test_service.py +34 -52
  180. openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
  181. openstackclient/tests/unit/fakes.py +11 -11
  182. openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
  183. openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
  184. openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
  185. openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
  186. openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
  187. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
  188. openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
  189. openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
  190. openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
  191. openstackclient/tests/unit/identity/v3/fakes.py +59 -20
  192. openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
  193. openstackclient/tests/unit/identity/v3/test_application_credential.py +212 -235
  194. openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
  195. openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
  196. openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
  197. openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
  198. openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
  199. openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
  200. openstackclient/tests/unit/identity/v3/test_group.py +12 -12
  201. openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
  202. openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
  203. openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
  204. openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
  205. openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
  206. openstackclient/tests/unit/identity/v3/test_project.py +16 -16
  207. openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
  208. openstackclient/tests/unit/identity/v3/test_region.py +7 -7
  209. openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
  210. openstackclient/tests/unit/identity/v3/test_role.py +13 -13
  211. openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
  212. openstackclient/tests/unit/identity/v3/test_service.py +93 -97
  213. openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
  214. openstackclient/tests/unit/identity/v3/test_token.py +4 -4
  215. openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
  216. openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
  217. openstackclient/tests/unit/identity/v3/test_user.py +299 -327
  218. openstackclient/tests/unit/image/v1/test_image.py +6 -6
  219. openstackclient/tests/unit/image/v2/fakes.py +46 -9
  220. openstackclient/tests/unit/image/v2/test_cache.py +2 -2
  221. openstackclient/tests/unit/image/v2/test_image.py +3 -3
  222. openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
  223. openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
  224. openstackclient/tests/unit/integ/base.py +1 -1
  225. openstackclient/tests/unit/integ/cli/test_project.py +4 -4
  226. openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
  227. openstackclient/tests/unit/network/test_common.py +12 -21
  228. openstackclient/tests/unit/network/v2/fakes.py +64 -130
  229. openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
  230. openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
  231. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
  232. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
  233. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
  234. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
  235. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
  236. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
  237. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
  238. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
  239. openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
  240. openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
  241. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
  242. openstackclient/tests/unit/network/v2/test_network.py +23 -28
  243. openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
  244. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
  245. openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
  246. openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
  247. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
  248. openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
  249. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
  250. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
  251. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
  252. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
  253. openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
  254. openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
  255. openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
  256. openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
  257. openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
  258. openstackclient/tests/unit/network/v2/test_port.py +22 -25
  259. openstackclient/tests/unit/network/v2/test_router.py +721 -51
  260. openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
  261. openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
  262. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
  263. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
  264. openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
  265. openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
  266. openstackclient/tests/unit/object/v1/fakes.py +1 -1
  267. openstackclient/tests/unit/object/v1/test_container.py +5 -5
  268. openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
  269. openstackclient/tests/unit/object/v1/test_object.py +3 -3
  270. openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
  271. openstackclient/tests/unit/test_shell.py +5 -5
  272. openstackclient/tests/unit/utils.py +4 -1
  273. openstackclient/tests/unit/volume/test_find_resource.py +2 -2
  274. openstackclient/tests/unit/volume/v1/fakes.py +5 -6
  275. openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
  276. openstackclient/tests/unit/volume/v2/fakes.py +39 -259
  277. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
  278. openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
  279. openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
  280. openstackclient/tests/unit/volume/v2/test_volume_backup.py +7 -368
  281. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
  282. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
  283. openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
  284. openstackclient/tests/unit/volume/v3/fakes.py +505 -22
  285. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
  286. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
  287. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
  288. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
  289. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
  290. openstackclient/tests/unit/volume/v3/test_service.py +271 -0
  291. openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
  292. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
  293. openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
  294. openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
  295. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
  296. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
  297. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
  298. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
  299. openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
  300. openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
  301. openstackclient/volume/v1/qos_specs.py +7 -7
  302. openstackclient/volume/v1/service.py +2 -2
  303. openstackclient/volume/v1/volume.py +12 -12
  304. openstackclient/volume/v1/volume_backup.py +7 -7
  305. openstackclient/volume/v1/volume_snapshot.py +8 -8
  306. openstackclient/volume/v1/volume_transfer_request.py +5 -5
  307. openstackclient/volume/v1/volume_type.py +7 -7
  308. openstackclient/volume/v2/backup_record.py +2 -2
  309. openstackclient/volume/v2/consistency_group.py +7 -9
  310. openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
  311. openstackclient/volume/v2/qos_specs.py +7 -7
  312. openstackclient/volume/v2/service.py +2 -2
  313. openstackclient/volume/v2/volume.py +80 -80
  314. openstackclient/volume/v2/volume_backend.py +2 -2
  315. openstackclient/volume/v2/volume_backup.py +7 -217
  316. openstackclient/volume/v2/volume_host.py +2 -2
  317. openstackclient/volume/v2/volume_snapshot.py +8 -8
  318. openstackclient/volume/v2/volume_transfer_request.py +5 -37
  319. openstackclient/volume/v2/volume_type.py +7 -89
  320. openstackclient/volume/v3/service.py +56 -0
  321. openstackclient/volume/v3/volume.py +971 -0
  322. openstackclient/volume/v3/volume_attachment.py +31 -29
  323. openstackclient/volume/v3/volume_backup.py +670 -0
  324. openstackclient/volume/v3/volume_message.py +1 -1
  325. openstackclient/volume/v3/volume_snapshot.py +97 -0
  326. openstackclient/volume/v3/volume_transfer_request.py +233 -0
  327. openstackclient/volume/v3/volume_type.py +967 -0
  328. {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/AUTHORS +4 -0
  329. {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/METADATA +3 -3
  330. python_openstackclient-7.0.0.dist-info/RECORD +502 -0
  331. {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/entry_points.txt +33 -27
  332. python_openstackclient-7.0.0.dist-info/pbr.json +1 -0
  333. python_openstackclient-6.6.0.dist-info/RECORD +0 -489
  334. python_openstackclient-6.6.0.dist-info/pbr.json +0 -1
  335. {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/LICENSE +0 -0
  336. {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/WHEEL +0 -0
  337. {python_openstackclient-6.6.0.dist-info → python_openstackclient-7.0.0.dist-info}/top_level.txt +0 -0
@@ -52,7 +52,7 @@ class TestImageCreate(image_fakes.TestImagev1):
52
52
  )
53
53
 
54
54
  def setUp(self):
55
- super(TestImageCreate, self).setUp()
55
+ super().setUp()
56
56
 
57
57
  self.image_client.create_image = mock.Mock(return_value=self.new_image)
58
58
  self.image_client.find_image = mock.Mock(return_value=self.new_image)
@@ -145,7 +145,7 @@ class TestImageCreate(image_fakes.TestImagev1):
145
145
  self.assertEqual(self.columns, columns)
146
146
  self.assertCountEqual(self.data, data)
147
147
 
148
- @mock.patch('openstackclient.image.v1.image.io.open', name='Open')
148
+ @mock.patch('openstackclient.image.v1.image.open', name='Open')
149
149
  def test_image_create_file(self, mock_open):
150
150
  mock_file = mock.Mock(name='File')
151
151
  mock_open.return_value = mock_file
@@ -209,7 +209,7 @@ class TestImageDelete(image_fakes.TestImagev1):
209
209
  _image = image_fakes.create_one_image()
210
210
 
211
211
  def setUp(self):
212
- super(TestImageDelete, self).setUp()
212
+ super().setUp()
213
213
 
214
214
  # This is the return value for utils.find_resource()
215
215
  self.image_client.find_image = mock.Mock(return_value=self._image)
@@ -259,7 +259,7 @@ class TestImageList(image_fakes.TestImagev1):
259
259
  image_info = copy.deepcopy(info)
260
260
 
261
261
  def setUp(self):
262
- super(TestImageList, self).setUp()
262
+ super().setUp()
263
263
 
264
264
  self.image_client.images = mock.Mock()
265
265
  self.image_client.images.side_effect = [
@@ -438,7 +438,7 @@ class TestImageSet(image_fakes.TestImagev1):
438
438
  _image = image_fakes.create_one_image()
439
439
 
440
440
  def setUp(self):
441
- super(TestImageSet, self).setUp()
441
+ super().setUp()
442
442
 
443
443
  # This is the return value for utils.find_resource()
444
444
  self.image_client.find_image = mock.Mock(return_value=self._image)
@@ -710,7 +710,7 @@ class TestImageShow(image_fakes.TestImagev1):
710
710
  )
711
711
 
712
712
  def setUp(self):
713
- super(TestImageShow, self).setUp()
713
+ super().setUp()
714
714
 
715
715
  self.image_client.find_image = mock.Mock(return_value=self._image)
716
716
 
@@ -27,7 +27,6 @@ from openstack.image.v2 import metadef_resource_type
27
27
  from openstack.image.v2 import service_info as _service_info
28
28
  from openstack.image.v2 import task
29
29
 
30
- from openstackclient.tests.unit import fakes
31
30
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
32
31
  from openstackclient.tests.unit import utils
33
32
 
@@ -40,14 +39,11 @@ class FakeClientMixin:
40
39
  self.image_client = self.app.client_manager.image
41
40
 
42
41
 
43
- class TestImagev2(FakeClientMixin, utils.TestCommand):
44
- def setUp(self):
45
- super().setUp()
46
-
47
- self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client(
48
- endpoint=fakes.AUTH_URL,
49
- token=fakes.AUTH_TOKEN,
50
- )
42
+ class TestImagev2(
43
+ identity_fakes.FakeClientMixin,
44
+ FakeClientMixin,
45
+ utils.TestCommand,
46
+ ): ...
51
47
 
52
48
 
53
49
  def create_one_image(attrs=None):
@@ -381,3 +377,44 @@ def create_one_metadef_object(attrs=None):
381
377
  # Overwrite default attributes if there are some attributes set
382
378
  metadef_objects_list.update(attrs)
383
379
  return metadef_object.MetadefObject(**metadef_objects_list)
380
+
381
+
382
+ def create_one_resource_type_association(attrs=None):
383
+ """Create a fake MetadefResourceTypeAssociation.
384
+
385
+ :param attrs: A dictionary with all attributes of
386
+ metadef_resource_type_association member
387
+ :type attrs: dict
388
+ :return: A fake MetadefResourceTypeAssociation object
389
+ :rtype: A `metadef_resource_type_association.
390
+ MetadefResourceTypeAssociation`
391
+ """
392
+ attrs = attrs or {}
393
+
394
+ metadef_resource_type_association_info = {
395
+ 'namespace_name': 'OS::Compute::Quota',
396
+ 'name': 'OS::Nova::Flavor',
397
+ }
398
+
399
+ metadef_resource_type_association_info.update(attrs)
400
+ return metadef_resource_type.MetadefResourceTypeAssociation(
401
+ **metadef_resource_type_association_info
402
+ )
403
+
404
+
405
+ def create_resource_type_associations(attrs=None, count=2):
406
+ """Create mutiple fake resource type associations/
407
+
408
+ :param attrs: A dictionary with all attributes of
409
+ metadef_resource_type_association member
410
+ :type attrs: dict
411
+ :return: A list of fake MetadefResourceTypeAssociation objects
412
+ :rtype: list
413
+ """
414
+ resource_type_associations = []
415
+ for n in range(0, count):
416
+ resource_type_associations.append(
417
+ create_one_resource_type_association(attrs)
418
+ )
419
+
420
+ return resource_type_associations
@@ -184,13 +184,13 @@ class TestCacheClear(fakes.TestImagev2):
184
184
  def test_cache_clear_no_option(self):
185
185
  arglist = []
186
186
 
187
- verifylist = [('target', None)]
187
+ verifylist = [('target', 'both')]
188
188
 
189
189
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
190
190
  self.cmd.take_action(parsed_args)
191
191
 
192
192
  self.assertIsNone(
193
- self.image_client.clear_cache.assert_called_with(None)
193
+ self.image_client.clear_cache.assert_called_with('both')
194
194
  )
195
195
 
196
196
  def test_cache_clear_queue_option(self):
@@ -33,9 +33,9 @@ class TestImage(image_fakes.TestImagev2, volume_fakes.TestVolume):
33
33
  super().setUp()
34
34
 
35
35
  # Get shortcut to the Mocks in identity client
36
- self.project_mock = self.app.client_manager.identity.projects
36
+ self.project_mock = self.identity_client.projects
37
37
  self.project_mock.reset_mock()
38
- self.domain_mock = self.app.client_manager.identity.domains
38
+ self.domain_mock = self.identity_client.domains
39
39
  self.domain_mock.reset_mock()
40
40
  self.volumes_mock = self.volume_client.volumes
41
41
  fake_body = {
@@ -894,7 +894,7 @@ class TestImageList(TestImage):
894
894
  columns, data = self.cmd.take_action(parsed_args)
895
895
  self.image_client.images.assert_called_with(
896
896
  limit=ret_limit,
897
- paginated=False
897
+ paginated=False,
898
898
  # marker=None
899
899
  )
900
900
 
@@ -12,6 +12,8 @@
12
12
  # License for the specific language governing permissions and limitations
13
13
  # under the License.
14
14
 
15
+ from osc_lib import exceptions
16
+
15
17
  from openstackclient.image.v2 import metadef_objects
16
18
  from openstackclient.tests.unit.image.v2 import fakes
17
19
 
@@ -198,3 +200,63 @@ class TestMetadefObjectSet(fakes.TestImagev2):
198
200
  result = self.cmd.take_action(parsed_args)
199
201
 
200
202
  self.assertIsNone(result)
203
+
204
+
205
+ class TestMetadefObjectPropertyShow(fakes.TestImagev2):
206
+ _metadef_namespace = fakes.create_one_metadef_namespace()
207
+ _metadef_objects = fakes.create_one_metadef_object()
208
+ md_property = _metadef_objects['properties']['quota:cpu_quota']
209
+ md_property['name'] = 'quota:cpu_quota'
210
+
211
+ expected_columns = (
212
+ 'description',
213
+ 'name',
214
+ 'title',
215
+ 'type',
216
+ )
217
+ expected_data = (
218
+ md_property['description'],
219
+ md_property['name'],
220
+ md_property['title'],
221
+ md_property['type'],
222
+ )
223
+
224
+ def setUp(self):
225
+ super().setUp()
226
+
227
+ self.image_client.get_metadef_object.return_value = (
228
+ self._metadef_objects
229
+ )
230
+ self.cmd = metadef_objects.ShowMetadefObjectProperty(self.app, None)
231
+
232
+ def test_object_property_show(self):
233
+ arglist = [
234
+ self._metadef_namespace.namespace,
235
+ self._metadef_objects.name,
236
+ 'quota:cpu_quota',
237
+ ]
238
+ verifylist = []
239
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
240
+ columns, data = self.cmd.take_action(parsed_args)
241
+
242
+ self.assertEqual(self.expected_columns, columns)
243
+ self.assertEqual(self.expected_data, data)
244
+
245
+ def test_neg_object_property_show(self):
246
+ arglist = [
247
+ self._metadef_namespace.namespace,
248
+ self._metadef_objects.name,
249
+ 'prop1',
250
+ ]
251
+ verifylist = []
252
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
253
+ exc = self.assertRaises(
254
+ exceptions.CommandError,
255
+ self.cmd.take_action,
256
+ parsed_args,
257
+ )
258
+ self.assertIn(
259
+ 'Property %s not found in object %s.'
260
+ % (parsed_args.property, parsed_args.object),
261
+ str(exc),
262
+ )
@@ -0,0 +1,131 @@
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
+ from openstackclient.image.v2 import metadef_resource_type_association
14
+ from openstackclient.tests.unit.image.v2 import fakes as resource_type_fakes
15
+
16
+
17
+ class TestMetadefResourceTypeAssociationCreate(
18
+ resource_type_fakes.TestImagev2
19
+ ):
20
+ resource_type_association = (
21
+ resource_type_fakes.create_one_resource_type_association()
22
+ )
23
+
24
+ columns = (
25
+ 'created_at',
26
+ 'id',
27
+ 'name',
28
+ 'prefix',
29
+ 'properties_target',
30
+ 'updated_at',
31
+ )
32
+
33
+ data = (
34
+ resource_type_association.created_at,
35
+ resource_type_association.id,
36
+ resource_type_association.name,
37
+ resource_type_association.prefix,
38
+ resource_type_association.properties_target,
39
+ resource_type_association.updated_at,
40
+ )
41
+
42
+ def setUp(self):
43
+ super().setUp()
44
+
45
+ self.image_client.create_metadef_resource_type_association.return_value = (
46
+ self.resource_type_association
47
+ )
48
+ self.cmd = metadef_resource_type_association.CreateMetadefResourceTypeAssociation(
49
+ self.app, None
50
+ )
51
+
52
+ def test_resource_type_association_create(self):
53
+ arglist = [
54
+ self.resource_type_association.namespace_name,
55
+ self.resource_type_association.name,
56
+ ]
57
+
58
+ verifylist = []
59
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
60
+
61
+ columns, data = self.cmd.take_action(parsed_args)
62
+
63
+ self.assertEqual(self.columns, columns)
64
+ self.assertEqual(self.data, data)
65
+
66
+
67
+ class TestMetadefResourceTypeAssociationDelete(
68
+ resource_type_fakes.TestImagev2
69
+ ):
70
+ resource_type_association = (
71
+ resource_type_fakes.create_one_resource_type_association()
72
+ )
73
+
74
+ def setUp(self):
75
+ super().setUp()
76
+
77
+ self.image_client.delete_metadef_resource_type_association.return_value = (
78
+ self.resource_type_association
79
+ )
80
+ self.cmd = metadef_resource_type_association.DeleteMetadefResourceTypeAssociation(
81
+ self.app, None
82
+ )
83
+
84
+ def test_resource_type_association_delete(self):
85
+ arglist = [
86
+ self.resource_type_association.namespace_name,
87
+ self.resource_type_association.name,
88
+ ]
89
+
90
+ verifylist = []
91
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
92
+
93
+ result = self.cmd.take_action(parsed_args)
94
+
95
+ self.assertIsNone(result)
96
+
97
+
98
+ class TestMetadefResourceTypeAssociationList(resource_type_fakes.TestImagev2):
99
+ resource_type_associations = (
100
+ resource_type_fakes.create_resource_type_associations()
101
+ )
102
+
103
+ columns = ['Name']
104
+
105
+ datalist = [
106
+ (resource_type_association.name,)
107
+ for resource_type_association in resource_type_associations
108
+ ]
109
+
110
+ def setUp(self):
111
+ super().setUp()
112
+
113
+ self.image_client.metadef_resource_type_associations.side_effect = [
114
+ self.resource_type_associations,
115
+ [],
116
+ ]
117
+
118
+ self.cmd = metadef_resource_type_association.ListMetadefResourceTypeAssociations(
119
+ self.app, None
120
+ )
121
+
122
+ def test_resource_type_association_list(self):
123
+ arglist = [
124
+ self.resource_type_associations[0].namespace_name,
125
+ ]
126
+ parsed_args = self.check_parser(self.cmd, arglist, [])
127
+
128
+ columns, data = self.cmd.take_action(parsed_args)
129
+
130
+ self.assertEqual(self.columns, columns)
131
+ self.assertCountEqual(self.datalist, data)
@@ -119,6 +119,6 @@ def make_v3_token(req_mock):
119
119
 
120
120
  class TestInteg(utils.TestCase):
121
121
  def setUp(self):
122
- super(TestInteg, self).setUp()
122
+ super().setUp()
123
123
 
124
124
  self.requests_mock = self.useFixture(fixture.Fixture())
@@ -21,7 +21,7 @@ from openstackclient.tests.unit import test_shell
21
21
 
22
22
  class TestIntegV2ProjectID(test_base.TestInteg):
23
23
  def setUp(self):
24
- super(TestIntegV2ProjectID, self).setUp()
24
+ super().setUp()
25
25
  env = {
26
26
  "OS_AUTH_URL": test_base.V2_AUTH_URL,
27
27
  "OS_PROJECT_ID": test_shell.DEFAULT_PROJECT_ID,
@@ -78,7 +78,7 @@ class TestIntegV2ProjectID(test_base.TestInteg):
78
78
 
79
79
  class TestIntegV2ProjectName(test_base.TestInteg):
80
80
  def setUp(self):
81
- super(TestIntegV2ProjectName, self).setUp()
81
+ super().setUp()
82
82
  env = {
83
83
  "OS_AUTH_URL": test_base.V2_AUTH_URL,
84
84
  "OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
@@ -135,7 +135,7 @@ class TestIntegV2ProjectName(test_base.TestInteg):
135
135
 
136
136
  class TestIntegV3ProjectID(test_base.TestInteg):
137
137
  def setUp(self):
138
- super(TestIntegV3ProjectID, self).setUp()
138
+ super().setUp()
139
139
  env = {
140
140
  "OS_AUTH_URL": test_base.V3_AUTH_URL,
141
141
  "OS_PROJECT_ID": test_shell.DEFAULT_PROJECT_NAME,
@@ -190,7 +190,7 @@ class TestIntegV3ProjectID(test_base.TestInteg):
190
190
 
191
191
  class TestIntegV3ProjectName(test_base.TestInteg):
192
192
  def setUp(self):
193
- super(TestIntegV3ProjectName, self).setUp()
193
+ super().setUp()
194
194
  env = {
195
195
  "OS_AUTH_URL": test_base.V3_AUTH_URL,
196
196
  "OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
@@ -23,7 +23,7 @@ from openstackclient.tests.unit import test_shell
23
23
 
24
24
  class TestIntegShellCliNoAuth(test_base.TestInteg):
25
25
  def setUp(self):
26
- super(TestIntegShellCliNoAuth, self).setUp()
26
+ super().setUp()
27
27
  env = {}
28
28
  self.useFixture(osc_lib_utils.EnvFixture(copy.deepcopy(env)))
29
29
 
@@ -67,7 +67,7 @@ class TestIntegShellCliNoAuth(test_base.TestInteg):
67
67
 
68
68
  class TestIntegShellCliV2(test_base.TestInteg):
69
69
  def setUp(self):
70
- super(TestIntegShellCliV2, self).setUp()
70
+ super().setUp()
71
71
  env = {
72
72
  "OS_AUTH_URL": test_base.V2_AUTH_URL,
73
73
  "OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
@@ -154,7 +154,7 @@ class TestIntegShellCliV2(test_base.TestInteg):
154
154
 
155
155
  class TestIntegShellCliV2Ignore(test_base.TestInteg):
156
156
  def setUp(self):
157
- super(TestIntegShellCliV2Ignore, self).setUp()
157
+ super().setUp()
158
158
  env = {
159
159
  "OS_AUTH_URL": test_base.V2_AUTH_URL,
160
160
  "OS_PROJECT_NAME": test_shell.DEFAULT_PROJECT_NAME,
@@ -200,7 +200,7 @@ class TestIntegShellCliV2Ignore(test_base.TestInteg):
200
200
 
201
201
  class TestIntegShellCliV3(test_base.TestInteg):
202
202
  def setUp(self):
203
- super(TestIntegShellCliV3, self).setUp()
203
+ super().setUp()
204
204
  env = {
205
205
  "OS_AUTH_URL": test_base.V3_AUTH_URL,
206
206
  "OS_PROJECT_DOMAIN_ID": test_shell.DEFAULT_PROJECT_DOMAIN_ID,
@@ -290,7 +290,7 @@ class TestIntegShellCliV3(test_base.TestInteg):
290
290
 
291
291
  class TestIntegShellCliV3Prompt(test_base.TestInteg):
292
292
  def setUp(self):
293
- super(TestIntegShellCliV3Prompt, self).setUp()
293
+ super().setUp()
294
294
  env = {
295
295
  "OS_AUTH_URL": test_base.V3_AUTH_URL,
296
296
  "OS_PROJECT_DOMAIN_ID": test_shell.DEFAULT_PROJECT_DOMAIN_ID,
@@ -339,7 +339,7 @@ class TestIntegShellCliPrecedence(test_base.TestInteg):
339
339
  """
340
340
 
341
341
  def setUp(self):
342
- super(TestIntegShellCliPrecedence, self).setUp()
342
+ super().setUp()
343
343
  env = {
344
344
  "OS_AUTH_URL": test_base.V3_AUTH_URL,
345
345
  "OS_PROJECT_DOMAIN_ID": test_shell.DEFAULT_PROJECT_DOMAIN_ID,
@@ -412,7 +412,7 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg):
412
412
  """
413
413
 
414
414
  def setUp(self):
415
- super(TestIntegShellCliPrecedenceOCC, self).setUp()
415
+ super().setUp()
416
416
  env = {
417
417
  "OS_CLOUD": "megacloud",
418
418
  "OS_AUTH_URL": test_base.V3_AUTH_URL,
@@ -11,7 +11,6 @@
11
11
  # under the License.
12
12
  #
13
13
 
14
- import argparse
15
14
  from unittest import mock
16
15
 
17
16
  import openstack
@@ -103,9 +102,7 @@ class FakeCreateNeutronCommandWithExtraArgs(
103
102
  common.NeutronCommandWithExtraArgs
104
103
  ):
105
104
  def get_parser(self, prog_name):
106
- parser = super(FakeCreateNeutronCommandWithExtraArgs, self).get_parser(
107
- prog_name
108
- )
105
+ parser = super().get_parser(prog_name)
109
106
  parser.add_argument(
110
107
  '--known-attribute',
111
108
  )
@@ -126,8 +123,6 @@ class TestNetworkAndCompute(utils.TestCommand):
126
123
  def setUp(self):
127
124
  super().setUp()
128
125
 
129
- self.namespace = argparse.Namespace()
130
-
131
126
  # Create client mocks. Note that we intentionally do not use specced
132
127
  # mocks since we want to test fake methods.
133
128
 
@@ -137,13 +132,13 @@ class TestNetworkAndCompute(utils.TestCommand):
137
132
  return_value='take_action_network'
138
133
  )
139
134
 
140
- self.app.client_manager.compute = mock.Mock()
141
- self.compute_client = self.app.client_manager.compute
135
+ self.app.client_manager.sdk_connection.compute = mock.Mock()
136
+ self.compute_client = self.app.client_manager.sdk_connection.compute
142
137
  self.compute_client.compute_action = mock.Mock(
143
138
  return_value='take_action_compute'
144
139
  )
145
140
 
146
- self.cmd = FakeNetworkAndComputeCommand(self.app, self.namespace)
141
+ self.cmd = FakeNetworkAndComputeCommand(self.app, None)
147
142
 
148
143
  def test_take_action_network(self):
149
144
  arglist = ['common', 'network']
@@ -167,20 +162,20 @@ class TestNetworkAndCompute(utils.TestCommand):
167
162
 
168
163
  class TestNetworkAndComputeCommand(TestNetworkAndCompute):
169
164
  def setUp(self):
170
- super(TestNetworkAndComputeCommand, self).setUp()
171
- self.cmd = FakeNetworkAndComputeCommand(self.app, self.namespace)
165
+ super().setUp()
166
+ self.cmd = FakeNetworkAndComputeCommand(self.app, None)
172
167
 
173
168
 
174
169
  class TestNetworkAndComputeLister(TestNetworkAndCompute):
175
170
  def setUp(self):
176
- super(TestNetworkAndComputeLister, self).setUp()
177
- self.cmd = FakeNetworkAndComputeLister(self.app, self.namespace)
171
+ super().setUp()
172
+ self.cmd = FakeNetworkAndComputeLister(self.app, None)
178
173
 
179
174
 
180
175
  class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
181
176
  def setUp(self):
182
- super(TestNetworkAndComputeShowOne, self).setUp()
183
- self.cmd = FakeNetworkAndComputeShowOne(self.app, self.namespace)
177
+ super().setUp()
178
+ self.cmd = FakeNetworkAndComputeShowOne(self.app, None)
184
179
 
185
180
  def test_take_action_with_http_exception(self):
186
181
  with mock.patch.object(self.cmd, 'take_action_network') as m_action:
@@ -205,9 +200,7 @@ class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
205
200
 
206
201
  class TestNeutronCommandWithExtraArgs(utils.TestCommand):
207
202
  def setUp(self):
208
- super(TestNeutronCommandWithExtraArgs, self).setUp()
209
-
210
- self.namespace = argparse.Namespace()
203
+ super().setUp()
211
204
 
212
205
  # Create client mocks. Note that we intentionally do not use specced
213
206
  # mocks since we want to test fake methods.
@@ -217,9 +210,7 @@ class TestNeutronCommandWithExtraArgs(utils.TestCommand):
217
210
  self.network_client.test_create_action = mock.Mock()
218
211
 
219
212
  # Subclasses can override the command object to test.
220
- self.cmd = FakeCreateNeutronCommandWithExtraArgs(
221
- self.app, self.namespace
222
- )
213
+ self.cmd = FakeCreateNeutronCommandWithExtraArgs(self.app, None)
223
214
 
224
215
  def test_create_extra_attributes_default_type(self):
225
216
  arglist = [