python-openstackclient 7.3.1__py3-none-any.whl → 8.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 (235) hide show
  1. openstackclient/common/availability_zone.py +3 -6
  2. openstackclient/common/clientmanager.py +2 -1
  3. openstackclient/common/envvars.py +57 -0
  4. openstackclient/common/extension.py +3 -11
  5. openstackclient/common/limits.py +1 -1
  6. openstackclient/common/project_cleanup.py +3 -2
  7. openstackclient/common/quota.py +54 -28
  8. openstackclient/compute/client.py +2 -5
  9. openstackclient/compute/v2/agent.py +5 -5
  10. openstackclient/compute/v2/aggregate.py +17 -15
  11. openstackclient/compute/v2/console.py +3 -4
  12. openstackclient/compute/v2/flavor.py +14 -18
  13. openstackclient/compute/v2/host.py +3 -3
  14. openstackclient/compute/v2/hypervisor.py +10 -4
  15. openstackclient/compute/v2/hypervisor_stats.py +1 -1
  16. openstackclient/compute/v2/keypair.py +8 -10
  17. openstackclient/compute/v2/server.py +70 -112
  18. openstackclient/compute/v2/server_backup.py +1 -1
  19. openstackclient/compute/v2/server_event.py +7 -16
  20. openstackclient/compute/v2/server_group.py +6 -6
  21. openstackclient/compute/v2/server_image.py +1 -1
  22. openstackclient/compute/v2/server_migration.py +6 -6
  23. openstackclient/compute/v2/server_volume.py +4 -4
  24. openstackclient/compute/v2/service.py +9 -13
  25. openstackclient/compute/v2/usage.py +4 -6
  26. openstackclient/identity/client.py +2 -4
  27. openstackclient/identity/common.py +16 -17
  28. openstackclient/identity/v2_0/ec2creds.py +4 -3
  29. openstackclient/identity/v2_0/endpoint.py +12 -10
  30. openstackclient/identity/v2_0/project.py +6 -6
  31. openstackclient/identity/v2_0/role.py +1 -1
  32. openstackclient/identity/v2_0/service.py +7 -7
  33. openstackclient/identity/v2_0/user.py +6 -21
  34. openstackclient/identity/v3/access_rule.py +2 -5
  35. openstackclient/identity/v3/consumer.py +4 -3
  36. openstackclient/identity/v3/credential.py +8 -9
  37. openstackclient/identity/v3/domain.py +1 -1
  38. openstackclient/identity/v3/ec2creds.py +4 -3
  39. openstackclient/identity/v3/endpoint.py +104 -88
  40. openstackclient/identity/v3/endpoint_group.py +1 -1
  41. openstackclient/identity/v3/group.py +3 -4
  42. openstackclient/identity/v3/identity_provider.py +1 -2
  43. openstackclient/identity/v3/limit.py +4 -9
  44. openstackclient/identity/v3/mapping.py +4 -3
  45. openstackclient/identity/v3/policy.py +5 -8
  46. openstackclient/identity/v3/project.py +6 -6
  47. openstackclient/identity/v3/region.py +2 -5
  48. openstackclient/identity/v3/registered_limit.py +4 -8
  49. openstackclient/identity/v3/role.py +15 -16
  50. openstackclient/identity/v3/service.py +8 -8
  51. openstackclient/identity/v3/service_provider.py +3 -6
  52. openstackclient/identity/v3/tag.py +2 -2
  53. openstackclient/identity/v3/token.py +1 -2
  54. openstackclient/identity/v3/trust.py +74 -25
  55. openstackclient/identity/v3/user.py +9 -6
  56. openstackclient/image/client.py +2 -5
  57. openstackclient/image/v1/image.py +11 -15
  58. openstackclient/image/v2/cache.py +2 -4
  59. openstackclient/image/v2/image.py +30 -37
  60. openstackclient/image/v2/metadef_namespaces.py +4 -3
  61. openstackclient/image/v2/metadef_resource_type_association.py +1 -2
  62. openstackclient/image/v2/metadef_resource_types.py +1 -2
  63. openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +9 -1370
  64. openstackclient/network/client.py +4 -10
  65. openstackclient/network/common.py +16 -12
  66. openstackclient/network/utils.py +3 -3
  67. openstackclient/network/v2/address_group.py +5 -9
  68. openstackclient/network/v2/address_scope.py +2 -3
  69. openstackclient/network/v2/default_security_group_rule.py +1 -2
  70. openstackclient/network/v2/floating_ip.py +14 -21
  71. openstackclient/network/v2/floating_ip_port_forwarding.py +7 -7
  72. openstackclient/network/v2/ip_availability.py +1 -2
  73. openstackclient/network/v2/l3_conntrack_helper.py +8 -12
  74. openstackclient/network/v2/local_ip.py +24 -26
  75. openstackclient/network/v2/local_ip_association.py +4 -5
  76. openstackclient/network/v2/ndp_proxy.py +9 -10
  77. openstackclient/network/v2/network.py +12 -16
  78. openstackclient/network/v2/network_agent.py +29 -37
  79. openstackclient/network/v2/network_auto_allocated_topology.py +4 -5
  80. openstackclient/network/v2/network_flavor.py +1 -1
  81. openstackclient/network/v2/network_flavor_profile.py +5 -5
  82. openstackclient/network/v2/network_meter.py +3 -3
  83. openstackclient/network/v2/network_meter_rule.py +5 -8
  84. openstackclient/network/v2/network_qos_policy.py +4 -4
  85. openstackclient/network/v2/network_qos_rule.py +4 -5
  86. openstackclient/network/v2/network_rbac.py +4 -4
  87. openstackclient/network/v2/network_segment.py +6 -7
  88. openstackclient/network/v2/network_segment_range.py +16 -20
  89. openstackclient/network/v2/network_trunk.py +24 -16
  90. openstackclient/network/v2/port.py +42 -31
  91. openstackclient/network/v2/router.py +55 -41
  92. openstackclient/network/v2/security_group.py +8 -15
  93. openstackclient/network/v2/security_group_rule.py +9 -10
  94. openstackclient/network/v2/subnet.py +31 -30
  95. openstackclient/network/v2/subnet_pool.py +4 -4
  96. openstackclient/object/client.py +2 -3
  97. openstackclient/object/v1/container.py +2 -3
  98. openstackclient/object/v1/object.py +2 -9
  99. openstackclient/shell.py +22 -5
  100. openstackclient/tests/functional/base.py +2 -2
  101. openstackclient/tests/functional/common/test_quota.py +3 -1
  102. openstackclient/tests/functional/compute/v2/common.py +12 -6
  103. openstackclient/tests/functional/compute/v2/test_server.py +2 -3
  104. openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
  105. openstackclient/tests/functional/identity/v2/test_user.py +1 -1
  106. openstackclient/tests/functional/identity/v3/common.py +3 -8
  107. openstackclient/tests/functional/identity/v3/test_application_credential.py +10 -10
  108. openstackclient/tests/functional/identity/v3/test_endpoint.py +3 -3
  109. openstackclient/tests/functional/identity/v3/test_group.py +3 -3
  110. openstackclient/tests/functional/identity/v3/test_idp.py +3 -7
  111. openstackclient/tests/functional/identity/v3/test_limit.py +4 -4
  112. openstackclient/tests/functional/identity/v3/test_project.py +5 -14
  113. openstackclient/tests/functional/identity/v3/test_region.py +1 -3
  114. openstackclient/tests/functional/identity/v3/test_registered_limit.py +3 -3
  115. openstackclient/tests/functional/identity/v3/test_role.py +1 -1
  116. openstackclient/tests/functional/identity/v3/test_role_assignment.py +13 -31
  117. openstackclient/tests/functional/identity/v3/test_service_provider.py +3 -7
  118. openstackclient/tests/functional/identity/v3/test_user.py +8 -8
  119. openstackclient/tests/functional/network/v2/common.py +7 -3
  120. openstackclient/tests/functional/network/v2/test_address_group.py +4 -0
  121. openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +15 -11
  122. openstackclient/tests/functional/network/v2/test_local_ip.py +4 -0
  123. openstackclient/tests/functional/network/v2/test_network_meter_rule.py +2 -2
  124. openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +2 -3
  125. openstackclient/tests/functional/network/v2/test_network_rbac.py +2 -2
  126. openstackclient/tests/functional/network/v2/test_network_trunk.py +1 -1
  127. openstackclient/tests/functional/network/v2/test_port.py +17 -7
  128. openstackclient/tests/functional/network/v2/test_router.py +42 -0
  129. openstackclient/tests/functional/network/v2/test_subnet_pool.py +4 -0
  130. openstackclient/tests/unit/api/test_compute_v2.py +67 -87
  131. openstackclient/tests/unit/common/test_availability_zone.py +6 -14
  132. openstackclient/tests/unit/common/test_command.py +1 -1
  133. openstackclient/tests/unit/common/test_extension.py +5 -7
  134. openstackclient/tests/unit/common/test_limits.py +1 -1
  135. openstackclient/tests/unit/common/test_project_cleanup.py +5 -6
  136. openstackclient/tests/unit/common/test_quota.py +51 -28
  137. openstackclient/tests/unit/compute/v2/fakes.py +4 -10
  138. openstackclient/tests/unit/compute/v2/test_agent.py +16 -16
  139. openstackclient/tests/unit/compute/v2/test_aggregate.py +56 -60
  140. openstackclient/tests/unit/compute/v2/test_console.py +16 -16
  141. openstackclient/tests/unit/compute/v2/test_flavor.py +71 -71
  142. openstackclient/tests/unit/compute/v2/test_host.py +8 -8
  143. openstackclient/tests/unit/compute/v2/test_hypervisor.py +22 -30
  144. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
  145. openstackclient/tests/unit/compute/v2/test_keypair.py +24 -24
  146. openstackclient/tests/unit/compute/v2/test_server.py +524 -560
  147. openstackclient/tests/unit/compute/v2/test_server_backup.py +5 -7
  148. openstackclient/tests/unit/compute/v2/test_server_event.py +16 -18
  149. openstackclient/tests/unit/compute/v2/test_server_group.py +25 -31
  150. openstackclient/tests/unit/compute/v2/test_server_image.py +6 -8
  151. openstackclient/tests/unit/compute/v2/test_server_migration.py +37 -37
  152. openstackclient/tests/unit/compute/v2/test_server_volume.py +12 -12
  153. openstackclient/tests/unit/compute/v2/test_service.py +39 -45
  154. openstackclient/tests/unit/compute/v2/test_usage.py +5 -5
  155. openstackclient/tests/unit/identity/v2_0/fakes.py +1 -1
  156. openstackclient/tests/unit/identity/v3/test_access_rule.py +1 -3
  157. openstackclient/tests/unit/identity/v3/test_application_credential.py +1 -1
  158. openstackclient/tests/unit/identity/v3/test_credential.py +4 -4
  159. openstackclient/tests/unit/identity/v3/test_endpoint.py +167 -172
  160. openstackclient/tests/unit/identity/v3/test_mappings.py +2 -2
  161. openstackclient/tests/unit/identity/v3/test_trust.py +5 -2
  162. openstackclient/tests/unit/identity/v3/test_user.py +16 -0
  163. openstackclient/tests/unit/image/v1/fakes.py +2 -2
  164. openstackclient/tests/unit/image/v2/test_image.py +39 -1
  165. openstackclient/tests/unit/integ/cli/test_shell.py +1 -2
  166. openstackclient/tests/unit/network/test_common.py +2 -2
  167. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +8 -14
  168. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +49 -35
  169. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +1 -1
  170. openstackclient/tests/unit/network/v2/test_network_compute.py +11 -11
  171. openstackclient/tests/unit/network/v2/test_network_trunk.py +2 -2
  172. openstackclient/tests/unit/network/v2/test_port.py +33 -5
  173. openstackclient/tests/unit/network/v2/test_router.py +120 -7
  174. openstackclient/tests/unit/network/v2/test_security_group_compute.py +11 -19
  175. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +14 -14
  176. openstackclient/tests/unit/object/v1/test_object_all.py +4 -3
  177. openstackclient/tests/unit/test_shell.py +16 -13
  178. openstackclient/tests/unit/volume/v2/test_volume.py +1 -1
  179. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +1 -1
  180. openstackclient/tests/unit/volume/v3/fakes.py +2 -8
  181. openstackclient/tests/unit/volume/v3/test_volume.py +1 -1
  182. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +3 -3
  183. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +1 -2
  184. openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +1 -1
  185. openstackclient/volume/client.py +1 -3
  186. openstackclient/volume/v2/consistency_group.py +4 -8
  187. openstackclient/volume/v2/consistency_group_snapshot.py +1 -2
  188. openstackclient/volume/v2/qos_specs.py +1 -2
  189. openstackclient/volume/v2/volume.py +8 -16
  190. openstackclient/volume/v2/volume_backup.py +6 -7
  191. openstackclient/volume/v2/volume_snapshot.py +8 -9
  192. openstackclient/volume/v2/volume_transfer_request.py +0 -3
  193. openstackclient/volume/v2/volume_type.py +10 -21
  194. openstackclient/volume/v3/block_storage_cluster.py +3 -3
  195. openstackclient/volume/v3/block_storage_manage.py +1 -3
  196. openstackclient/volume/v3/volume.py +18 -19
  197. openstackclient/volume/v3/volume_attachment.py +3 -2
  198. openstackclient/volume/v3/volume_backup.py +7 -8
  199. openstackclient/volume/v3/volume_group.py +2 -1
  200. openstackclient/volume/v3/volume_group_snapshot.py +2 -1
  201. openstackclient/volume/v3/volume_snapshot.py +4 -3
  202. openstackclient/volume/v3/volume_type.py +10 -21
  203. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/AUTHORS +4 -0
  204. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/METADATA +7 -13
  205. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/RECORD +210 -233
  206. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/WHEEL +1 -1
  207. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/entry_points.txt +0 -41
  208. python_openstackclient-8.0.0.dist-info/pbr.json +1 -0
  209. openstackclient/tests/functional/volume/v1/__init__.py +0 -0
  210. openstackclient/tests/functional/volume/v1/common.py +0 -35
  211. openstackclient/tests/functional/volume/v1/test_qos.py +0 -100
  212. openstackclient/tests/functional/volume/v1/test_service.py +0 -76
  213. openstackclient/tests/functional/volume/v1/test_snapshot.py +0 -232
  214. openstackclient/tests/functional/volume/v1/test_transfer_request.py +0 -111
  215. openstackclient/tests/functional/volume/v1/test_volume.py +0 -228
  216. openstackclient/tests/functional/volume/v1/test_volume_type.py +0 -213
  217. openstackclient/tests/unit/volume/v1/__init__.py +0 -0
  218. openstackclient/tests/unit/volume/v1/fakes.py +0 -615
  219. openstackclient/tests/unit/volume/v1/test_qos_specs.py +0 -471
  220. openstackclient/tests/unit/volume/v1/test_service.py +0 -295
  221. openstackclient/tests/unit/volume/v1/test_transfer_request.py +0 -380
  222. openstackclient/tests/unit/volume/v1/test_type.py +0 -633
  223. openstackclient/tests/unit/volume/v1/test_volume.py +0 -1447
  224. openstackclient/tests/unit/volume/v1/test_volume_backup.py +0 -435
  225. openstackclient/volume/v1/__init__.py +0 -0
  226. openstackclient/volume/v1/qos_specs.py +0 -377
  227. openstackclient/volume/v1/service.py +0 -136
  228. openstackclient/volume/v1/volume.py +0 -734
  229. openstackclient/volume/v1/volume_backup.py +0 -302
  230. openstackclient/volume/v1/volume_snapshot.py +0 -433
  231. openstackclient/volume/v1/volume_transfer_request.py +0 -200
  232. openstackclient/volume/v1/volume_type.py +0 -520
  233. python_openstackclient-7.3.1.dist-info/pbr.json +0 -1
  234. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/LICENSE +0 -0
  235. {python_openstackclient-7.3.1.dist-info → python_openstackclient-8.0.0.dist-info}/top_level.txt +0 -0
@@ -34,6 +34,7 @@ from osc_lib import exceptions
34
34
  from osc_lib import utils
35
35
 
36
36
  from openstackclient.api import compute_v2
37
+ from openstackclient.common import envvars
37
38
  from openstackclient.common import pagination
38
39
  from openstackclient.i18n import _
39
40
  from openstackclient.identity import common as identity_common
@@ -324,48 +325,6 @@ def _prep_server_detail(compute_client, image_client, server, *, refresh=True):
324
325
  return info
325
326
 
326
327
 
327
- def bool_from_str(value, strict=False):
328
- true_strings = ('1', 't', 'true', 'on', 'y', 'yes')
329
- false_strings = ('0', 'f', 'false', 'off', 'n', 'no')
330
-
331
- if isinstance(value, bool):
332
- return value
333
-
334
- lowered = value.strip().lower()
335
- if lowered in true_strings:
336
- return True
337
- elif lowered in false_strings or not strict:
338
- return False
339
-
340
- msg = _(
341
- "Unrecognized value '%(value)s'; acceptable values are: %(valid)s"
342
- ) % {
343
- 'value': value,
344
- 'valid': ', '.join(
345
- f"'{s}'" for s in sorted(true_strings + false_strings)
346
- ),
347
- }
348
- raise ValueError(msg)
349
-
350
-
351
- def boolenv(*vars, default=False):
352
- """Search for the first defined of possibly many bool-like env vars.
353
-
354
- Returns the first environment variable defined in vars, or returns the
355
- default.
356
-
357
- :param vars: Arbitrary strings to search for. Case sensitive.
358
- :param default: The default to return if no value found.
359
- :returns: A boolean corresponding to the value found, else the default if
360
- no value found.
361
- """
362
- for v in vars:
363
- value = os.environ.get(v, None)
364
- if value:
365
- return bool_from_str(value)
366
- return default
367
-
368
-
369
328
  class AddFixedIP(command.ShowOne):
370
329
  _description = _("Add fixed IP address to server")
371
330
 
@@ -399,7 +358,7 @@ class AddFixedIP(command.ShowOne):
399
358
  return parser
400
359
 
401
360
  def take_action(self, parsed_args):
402
- compute_client = self.app.client_manager.sdk_connection.compute
361
+ compute_client = self.app.client_manager.compute
403
362
  server = compute_client.find_server(
404
363
  parsed_args.server, ignore_missing=False
405
364
  )
@@ -430,7 +389,7 @@ class AddFixedIP(command.ShowOne):
430
389
 
431
390
  interface = compute_client.create_server_interface(server.id, **kwargs)
432
391
 
433
- columns = (
392
+ columns: tuple[str, ...] = (
434
393
  'port_id',
435
394
  'server_id',
436
395
  'net_id',
@@ -438,7 +397,7 @@ class AddFixedIP(command.ShowOne):
438
397
  'port_state',
439
398
  'fixed_ips',
440
399
  )
441
- column_headers = (
400
+ column_headers: tuple[str, ...] = (
442
401
  'Port ID',
443
402
  'Server ID',
444
403
  'Network ID',
@@ -493,7 +452,7 @@ class AddFloatingIP(network_common.NetworkAndComputeCommand):
493
452
  return parser
494
453
 
495
454
  def take_action_network(self, client, parsed_args):
496
- compute_client = self.app.client_manager.sdk_connection.compute
455
+ compute_client = self.app.client_manager.compute
497
456
 
498
457
  attrs = {}
499
458
  obj = client.find_ip(
@@ -586,7 +545,7 @@ class AddPort(command.Command):
586
545
  return parser
587
546
 
588
547
  def take_action(self, parsed_args):
589
- compute_client = self.app.client_manager.sdk_connection.compute
548
+ compute_client = self.app.client_manager.compute
590
549
 
591
550
  server = compute_client.find_server(
592
551
  parsed_args.server, ignore_missing=False
@@ -640,7 +599,7 @@ class AddNetwork(command.Command):
640
599
  return parser
641
600
 
642
601
  def take_action(self, parsed_args):
643
- compute_client = self.app.client_manager.sdk_connection.compute
602
+ compute_client = self.app.client_manager.compute
644
603
 
645
604
  server = compute_client.find_server(
646
605
  parsed_args.server, ignore_missing=False
@@ -691,7 +650,7 @@ class AddServerSecurityGroup(command.Command):
691
650
  return parser
692
651
 
693
652
  def take_action(self, parsed_args):
694
- compute_client = self.app.client_manager.sdk_connection.compute
653
+ compute_client = self.app.client_manager.compute
695
654
 
696
655
  server = compute_client.find_server(
697
656
  parsed_args.server, ignore_missing=False
@@ -793,7 +752,7 @@ with status ``SHELVED`` or ``SHELVED_OFFLOADED``."""
793
752
  return parser
794
753
 
795
754
  def take_action(self, parsed_args):
796
- compute_client = self.app.client_manager.sdk_connection.compute
755
+ compute_client = self.app.client_manager.compute
797
756
  volume_client = self.app.client_manager.sdk_connection.volume
798
757
 
799
758
  server = compute_client.find_server(
@@ -842,8 +801,13 @@ with status ``SHELVED`` or ``SHELVED_OFFLOADED``."""
842
801
  **kwargs,
843
802
  )
844
803
 
845
- columns = ('id', 'server id', 'volume id', 'device')
846
- column_headers = ('ID', 'Server ID', 'Volume ID', 'Device')
804
+ columns: tuple[str, ...] = ('id', 'server id', 'volume id', 'device')
805
+ column_headers: tuple[str, ...] = (
806
+ 'ID',
807
+ 'Server ID',
808
+ 'Volume ID',
809
+ 'Device',
810
+ )
847
811
  if sdk_utils.supports_microversion(compute_client, '2.49'):
848
812
  columns += ('tag',)
849
813
  column_headers += ('Tag',)
@@ -1027,7 +991,6 @@ class BDMLegacyAction(argparse.Action):
1027
991
 
1028
992
  class BDMAction(parseractions.MultiKeyValueAction):
1029
993
  def __init__(self, option_strings, dest, **kwargs):
1030
- required_keys = []
1031
994
  optional_keys = [
1032
995
  'uuid',
1033
996
  'source_type',
@@ -1045,7 +1008,7 @@ class BDMAction(parseractions.MultiKeyValueAction):
1045
1008
  super().__init__(
1046
1009
  option_strings,
1047
1010
  dest,
1048
- required_keys=required_keys,
1011
+ required_keys=[],
1049
1012
  optional_keys=optional_keys,
1050
1013
  **kwargs,
1051
1014
  )
@@ -1402,7 +1365,7 @@ class CreateServer(command.ShowOne):
1402
1365
  default=[],
1403
1366
  help=_(
1404
1367
  'File(s) to inject into image before boot '
1405
- '(repeat option to set multiple files)'
1368
+ '(repeat option to set multiple files) '
1406
1369
  '(supported by --os-compute-api-version 2.57 or below)'
1407
1370
  ),
1408
1371
  )
@@ -1554,7 +1517,7 @@ class CreateServer(command.ShowOne):
1554
1517
  self.app.stdout.write(f'\rProgress: {progress}')
1555
1518
  self.app.stdout.flush()
1556
1519
 
1557
- compute_client = self.app.client_manager.sdk_connection.compute
1520
+ compute_client = self.app.client_manager.compute
1558
1521
  volume_client = self.app.client_manager.volume
1559
1522
  image_client = self.app.client_manager.image
1560
1523
 
@@ -1617,8 +1580,7 @@ class CreateServer(command.ShowOne):
1617
1580
  image = images[0]
1618
1581
  else:
1619
1582
  msg = _(
1620
- 'No images match the property expected by '
1621
- '--image-property'
1583
+ 'No images match the property expected by --image-property'
1622
1584
  )
1623
1585
  raise exceptions.CommandError(msg)
1624
1586
 
@@ -1873,7 +1835,7 @@ class CreateServer(command.ShowOne):
1873
1835
 
1874
1836
  if 'delete_on_termination' in mapping:
1875
1837
  try:
1876
- value = bool_from_str(
1838
+ value = envvars.bool_from_str(
1877
1839
  mapping['delete_on_termination'],
1878
1840
  strict=True,
1879
1841
  )
@@ -1902,7 +1864,7 @@ class CreateServer(command.ShowOne):
1902
1864
 
1903
1865
  # Default to empty list if nothing was specified and let nova
1904
1866
  # decide the default behavior.
1905
- networks: ty.Union[str, ty.List[ty.Dict[str, str]], None] = []
1867
+ networks: ty.Union[str, list[dict[str, str]], None] = []
1906
1868
 
1907
1869
  if 'auto' in parsed_args.nics or 'none' in parsed_args.nics:
1908
1870
  if len(parsed_args.nics) > 1:
@@ -1967,7 +1929,7 @@ class CreateServer(command.ShowOne):
1967
1929
 
1968
1930
  # convert from the novaclient-derived "NIC" view to the actual
1969
1931
  # "network" view
1970
- network = {}
1932
+ network: dict[str, str] = {}
1971
1933
 
1972
1934
  if nic['net-id']:
1973
1935
  network['uuid'] = nic['net-id']
@@ -1983,7 +1945,7 @@ class CreateServer(command.ShowOne):
1983
1945
  if nic.get('tag'): # tags are optional
1984
1946
  network['tag'] = nic['tag']
1985
1947
 
1986
- networks.append(network)
1948
+ networks.append(network) # type: ignore[union-attr]
1987
1949
 
1988
1950
  if not parsed_args.nics and sdk_utils.supports_microversion(
1989
1951
  compute_client, '2.37'
@@ -2195,7 +2157,7 @@ class CreateServerDump(command.Command):
2195
2157
  return parser
2196
2158
 
2197
2159
  def take_action(self, parsed_args):
2198
- compute_client = self.app.client_manager.sdk_connection.compute
2160
+ compute_client = self.app.client_manager.compute
2199
2161
  for name_or_id in parsed_args.server:
2200
2162
  server = compute_client.find_server(name_or_id)
2201
2163
  server.trigger_crash_dump(compute_client)
@@ -2220,7 +2182,7 @@ class DeleteServer(command.Command):
2220
2182
  parser.add_argument(
2221
2183
  '--all-projects',
2222
2184
  action='store_true',
2223
- default=boolenv('ALL_PROJECTS'),
2185
+ default=envvars.boolenv('ALL_PROJECTS'),
2224
2186
  help=_(
2225
2187
  'Delete server(s) in another project by name (admin only)'
2226
2188
  '(can be specified using the ALL_PROJECTS envvar)'
@@ -2239,7 +2201,7 @@ class DeleteServer(command.Command):
2239
2201
  self.app.stdout.write(f'\rProgress: {progress}')
2240
2202
  self.app.stdout.flush()
2241
2203
 
2242
- compute_client = self.app.client_manager.sdk_connection.compute
2204
+ compute_client = self.app.client_manager.compute
2243
2205
  for server in parsed_args.server:
2244
2206
  server_obj = compute_client.find_server(
2245
2207
  server,
@@ -2386,7 +2348,7 @@ class ListServer(command.Lister):
2386
2348
  parser.add_argument(
2387
2349
  '--all-projects',
2388
2350
  action='store_true',
2389
- default=boolenv('ALL_PROJECTS'),
2351
+ default=envvars.boolenv('ALL_PROJECTS'),
2390
2352
  help=_(
2391
2353
  'Include all projects (admin only) '
2392
2354
  '(can be specified using the ALL_PROJECTS envvar)'
@@ -2424,8 +2386,7 @@ class ListServer(command.Lister):
2424
2386
  parser.add_argument(
2425
2387
  '--key-name',
2426
2388
  help=_(
2427
- 'Search by keypair name '
2428
- '(admin only before microversion 2.83)'
2389
+ 'Search by keypair name (admin only before microversion 2.83)'
2429
2390
  ),
2430
2391
  )
2431
2392
  config_drive_group = parser.add_mutually_exclusive_group()
@@ -2648,7 +2609,7 @@ class ListServer(command.Lister):
2648
2609
  return parser
2649
2610
 
2650
2611
  def take_action(self, parsed_args):
2651
- compute_client = self.app.client_manager.sdk_connection.compute
2612
+ compute_client = self.app.client_manager.compute
2652
2613
  identity_client = self.app.client_manager.identity
2653
2614
  image_client = self.app.client_manager.image
2654
2615
 
@@ -2804,12 +2765,12 @@ class ListServer(command.Lister):
2804
2765
  msg % search_opts['changes-since']
2805
2766
  )
2806
2767
 
2807
- columns = (
2768
+ columns: tuple[str, ...] = (
2808
2769
  'id',
2809
2770
  'name',
2810
2771
  'status',
2811
2772
  )
2812
- column_headers = (
2773
+ column_headers: tuple[str, ...] = (
2813
2774
  'ID',
2814
2775
  'Name',
2815
2776
  'Status',
@@ -3124,7 +3085,7 @@ A non-admin user will not be able to execute actions."""
3124
3085
  return parser
3125
3086
 
3126
3087
  def take_action(self, parsed_args):
3127
- compute_client = self.app.client_manager.sdk_connection.compute
3088
+ compute_client = self.app.client_manager.compute
3128
3089
 
3129
3090
  kwargs = {}
3130
3091
  if parsed_args.reason:
@@ -3222,7 +3183,7 @@ revert to release the new server and restart the old one."""
3222
3183
  action='store_true',
3223
3184
  default=None,
3224
3185
  help=_(
3225
- 'Allow disk over-commit on the destination host'
3186
+ 'Allow disk over-commit on the destination host '
3226
3187
  '(supported with --os-compute-api-version 2.24 or below)'
3227
3188
  ),
3228
3189
  )
@@ -3231,7 +3192,7 @@ revert to release the new server and restart the old one."""
3231
3192
  dest='disk_overcommit',
3232
3193
  action='store_false',
3233
3194
  help=_(
3234
- 'Do not over-commit disk on the destination host (default)'
3195
+ 'Do not over-commit disk on the destination host (default) '
3235
3196
  '(supported with --os-compute-api-version 2.24 or below)'
3236
3197
  ),
3237
3198
  )
@@ -3248,7 +3209,7 @@ revert to release the new server and restart the old one."""
3248
3209
  self.app.stdout.write(f'\rProgress: {progress}')
3249
3210
  self.app.stdout.flush()
3250
3211
 
3251
- compute_client = self.app.client_manager.sdk_connection.compute
3212
+ compute_client = self.app.client_manager.compute
3252
3213
 
3253
3214
  server = compute_client.find_server(
3254
3215
  parsed_args.server, ignore_missing=False
@@ -3351,7 +3312,7 @@ class PauseServer(command.Command):
3351
3312
  return parser
3352
3313
 
3353
3314
  def take_action(self, parsed_args):
3354
- compute_client = self.app.client_manager.sdk_connection.compute
3315
+ compute_client = self.app.client_manager.compute
3355
3316
  for server in parsed_args.server:
3356
3317
  server_id = compute_client.find_server(
3357
3318
  server,
@@ -3400,7 +3361,7 @@ class RebootServer(command.Command):
3400
3361
  self.app.stdout.write(f'\rProgress: {progress}')
3401
3362
  self.app.stdout.flush()
3402
3363
 
3403
- compute_client = self.app.client_manager.sdk_connection.compute
3364
+ compute_client = self.app.client_manager.compute
3404
3365
  server_id = compute_client.find_server(
3405
3366
  parsed_args.server,
3406
3367
  ignore_missing=False,
@@ -3434,7 +3395,7 @@ class RebuildServer(command.ShowOne):
3434
3395
  '--image',
3435
3396
  metavar='<image>',
3436
3397
  help=_(
3437
- 'Recreate server from the specified image (name or ID).'
3398
+ 'Recreate server from the specified image (name or ID). '
3438
3399
  'Defaults to the currently used one.'
3439
3400
  ),
3440
3401
  )
@@ -3605,7 +3566,7 @@ class RebuildServer(command.ShowOne):
3605
3566
  self.app.stdout.write(f'\rProgress: {progress}')
3606
3567
  self.app.stdout.flush()
3607
3568
 
3608
- compute_client = self.app.client_manager.sdk_connection.compute
3569
+ compute_client = self.app.client_manager.compute
3609
3570
  image_client = self.app.client_manager.image
3610
3571
 
3611
3572
  server = compute_client.find_server(
@@ -3866,7 +3827,7 @@ host."""
3866
3827
  self.app.stdout.write(f'\rProgress: {progress}')
3867
3828
  self.app.stdout.flush()
3868
3829
 
3869
- compute_client = self.app.client_manager.sdk_connection.compute
3830
+ compute_client = self.app.client_manager.compute
3870
3831
  image_client = self.app.client_manager.image
3871
3832
 
3872
3833
  if parsed_args.host:
@@ -3931,7 +3892,7 @@ class RemoveFixedIP(command.Command):
3931
3892
  return parser
3932
3893
 
3933
3894
  def take_action(self, parsed_args):
3934
- compute_client = self.app.client_manager.sdk_connection.compute
3895
+ compute_client = self.app.client_manager.compute
3935
3896
 
3936
3897
  server = compute_client.find_server(
3937
3898
  parsed_args.server, ignore_missing=False
@@ -3960,14 +3921,12 @@ class RemoveFloatingIP(network_common.NetworkAndComputeCommand):
3960
3921
  return parser
3961
3922
 
3962
3923
  def take_action_network(self, client, parsed_args):
3963
- attrs = {}
3964
3924
  obj = client.find_ip(
3965
3925
  parsed_args.ip_address,
3966
3926
  ignore_missing=False,
3967
3927
  )
3968
- attrs['port_id'] = None
3969
3928
 
3970
- client.update_ip(obj, **attrs)
3929
+ client.update_ip(obj, port_id=None)
3971
3930
 
3972
3931
  def take_action_compute(self, client, parsed_args):
3973
3932
  server = client.find_server(parsed_args.server, ignore_missing=False)
@@ -3992,7 +3951,7 @@ class RemovePort(command.Command):
3992
3951
  return parser
3993
3952
 
3994
3953
  def take_action(self, parsed_args):
3995
- compute_client = self.app.client_manager.sdk_connection.compute
3954
+ compute_client = self.app.client_manager.compute
3996
3955
 
3997
3956
  server = compute_client.find_server(
3998
3957
  parsed_args.server, ignore_missing=False
@@ -4031,7 +3990,7 @@ class RemoveNetwork(command.Command):
4031
3990
  return parser
4032
3991
 
4033
3992
  def take_action(self, parsed_args):
4034
- compute_client = self.app.client_manager.sdk_connection.compute
3993
+ compute_client = self.app.client_manager.compute
4035
3994
 
4036
3995
  server = compute_client.find_server(
4037
3996
  parsed_args.server, ignore_missing=False
@@ -4075,7 +4034,7 @@ class RemoveServerSecurityGroup(command.Command):
4075
4034
  return parser
4076
4035
 
4077
4036
  def take_action(self, parsed_args):
4078
- compute_client = self.app.client_manager.sdk_connection.compute
4037
+ compute_client = self.app.client_manager.compute
4079
4038
 
4080
4039
  server = compute_client.find_server(
4081
4040
  parsed_args.server, ignore_missing=False
@@ -4145,7 +4104,7 @@ volume from a server with status ``SHELVED`` or ``SHELVED_OFFLOADED``."""
4145
4104
  return parser
4146
4105
 
4147
4106
  def take_action(self, parsed_args):
4148
- compute_client = self.app.client_manager.sdk_connection.compute
4107
+ compute_client = self.app.client_manager.compute
4149
4108
  volume_client = self.app.client_manager.sdk_connection.volume
4150
4109
 
4151
4110
  server = compute_client.find_server(
@@ -4198,7 +4157,7 @@ server booted from a volume."""
4198
4157
  return parser
4199
4158
 
4200
4159
  def take_action(self, parsed_args):
4201
- compute_client = self.app.client_manager.sdk_connection.compute
4160
+ compute_client = self.app.client_manager.compute
4202
4161
  image_client = self.app.client_manager.image
4203
4162
 
4204
4163
  image_ref = None
@@ -4252,7 +4211,7 @@ release the new server and restart the old one."""
4252
4211
  '--revert',
4253
4212
  action="store_true",
4254
4213
  help=_(
4255
- '**Deprecated** Restore server state before resize'
4214
+ '**Deprecated** Restore server state before resize. '
4256
4215
  "Replaced by the 'openstack server resize revert' and "
4257
4216
  "'openstack server migration revert' commands"
4258
4217
  ),
@@ -4270,7 +4229,7 @@ release the new server and restart the old one."""
4270
4229
  self.app.stdout.write(f'\rProgress: {progress}')
4271
4230
  self.app.stdout.flush()
4272
4231
 
4273
- compute_client = self.app.client_manager.sdk_connection.compute
4232
+ compute_client = self.app.client_manager.compute
4274
4233
  server = compute_client.find_server(
4275
4234
  parsed_args.server, ignore_missing=False
4276
4235
  )
@@ -4332,7 +4291,7 @@ Confirm (verify) success of resize operation and release the old server."""
4332
4291
  return parser
4333
4292
 
4334
4293
  def take_action(self, parsed_args):
4335
- compute_client = self.app.client_manager.sdk_connection.compute
4294
+ compute_client = self.app.client_manager.compute
4336
4295
  server = compute_client.find_server(
4337
4296
  parsed_args.server, ignore_missing=False
4338
4297
  )
@@ -4380,7 +4339,7 @@ one."""
4380
4339
  return parser
4381
4340
 
4382
4341
  def take_action(self, parsed_args):
4383
- compute_client = self.app.client_manager.sdk_connection.compute
4342
+ compute_client = self.app.client_manager.compute
4384
4343
  server = compute_client.find_server(
4385
4344
  parsed_args.server, ignore_missing=False
4386
4345
  )
@@ -4424,7 +4383,7 @@ class RestoreServer(command.Command):
4424
4383
  return parser
4425
4384
 
4426
4385
  def take_action(self, parsed_args):
4427
- compute_client = self.app.client_manager.sdk_connection.compute
4386
+ compute_client = self.app.client_manager.compute
4428
4387
  for server in parsed_args.server:
4429
4388
  server_id = compute_client.find_server(
4430
4389
  server,
@@ -4447,7 +4406,7 @@ class ResumeServer(command.Command):
4447
4406
  return parser
4448
4407
 
4449
4408
  def take_action(self, parsed_args):
4450
- compute_client = self.app.client_manager.sdk_connection.compute
4409
+ compute_client = self.app.client_manager.compute
4451
4410
  for server in parsed_args.server:
4452
4411
  server_id = compute_client.find_server(
4453
4412
  server,
@@ -4475,8 +4434,7 @@ class SetServer(command.Command):
4475
4434
  password_group.add_argument(
4476
4435
  '--password',
4477
4436
  help=_(
4478
- 'Set the server password. '
4479
- 'This option requires cloud support.'
4437
+ 'Set the server password. This option requires cloud support.'
4480
4438
  ),
4481
4439
  )
4482
4440
  password_group.add_argument(
@@ -4548,7 +4506,7 @@ class SetServer(command.Command):
4548
4506
  return parser
4549
4507
 
4550
4508
  def take_action(self, parsed_args):
4551
- compute_client = self.app.client_manager.sdk_connection.compute
4509
+ compute_client = self.app.client_manager.compute
4552
4510
  server = compute_client.find_server(
4553
4511
  parsed_args.server, ignore_missing=False
4554
4512
  )
@@ -4666,7 +4624,7 @@ class ShelveServer(command.Command):
4666
4624
  self.app.stdout.write(f'\rProgress: {progress}')
4667
4625
  self.app.stdout.flush()
4668
4626
 
4669
- compute_client = self.app.client_manager.sdk_connection.compute
4627
+ compute_client = self.app.client_manager.compute
4670
4628
  server_ids = []
4671
4629
 
4672
4630
  for server in parsed_args.servers:
@@ -4761,7 +4719,7 @@ information for the server."""
4761
4719
  return parser
4762
4720
 
4763
4721
  def take_action(self, parsed_args):
4764
- compute_client = self.app.client_manager.sdk_connection.compute
4722
+ compute_client = self.app.client_manager.compute
4765
4723
  image_client = self.app.client_manager.image
4766
4724
 
4767
4725
  server = compute_client.find_server(
@@ -4891,7 +4849,7 @@ class SshServer(command.Command):
4891
4849
  return parser
4892
4850
 
4893
4851
  def take_action(self, parsed_args):
4894
- compute_client = self.app.client_manager.sdk_connection.compute
4852
+ compute_client = self.app.client_manager.compute
4895
4853
 
4896
4854
  server = compute_client.find_server(
4897
4855
  parsed_args.server, ignore_missing=False
@@ -4968,7 +4926,7 @@ class StartServer(command.Command):
4968
4926
  parser.add_argument(
4969
4927
  '--all-projects',
4970
4928
  action='store_true',
4971
- default=boolenv('ALL_PROJECTS'),
4929
+ default=envvars.boolenv('ALL_PROJECTS'),
4972
4930
  help=_(
4973
4931
  'Start server(s) in another project by name (admin only) '
4974
4932
  '(can be specified using the ALL_PROJECTS envvar)'
@@ -4977,7 +4935,7 @@ class StartServer(command.Command):
4977
4935
  return parser
4978
4936
 
4979
4937
  def take_action(self, parsed_args):
4980
- compute_client = self.app.client_manager.sdk_connection.compute
4938
+ compute_client = self.app.client_manager.compute
4981
4939
  for server in parsed_args.server:
4982
4940
  server_id = compute_client.find_server(
4983
4941
  server,
@@ -5003,16 +4961,16 @@ class StopServer(command.Command):
5003
4961
  parser.add_argument(
5004
4962
  '--all-projects',
5005
4963
  action='store_true',
5006
- default=boolenv('ALL_PROJECTS'),
4964
+ default=envvars.boolenv('ALL_PROJECTS'),
5007
4965
  help=_(
5008
- 'Stop server(s) in another project by name (admin only)'
4966
+ 'Stop server(s) in another project by name (admin only) '
5009
4967
  '(can be specified using the ALL_PROJECTS envvar)'
5010
4968
  ),
5011
4969
  )
5012
4970
  return parser
5013
4971
 
5014
4972
  def take_action(self, parsed_args):
5015
- compute_client = self.app.client_manager.sdk_connection.compute
4973
+ compute_client = self.app.client_manager.compute
5016
4974
  for server in parsed_args.server:
5017
4975
  server_id = compute_client.find_server(
5018
4976
  server,
@@ -5037,7 +4995,7 @@ class SuspendServer(command.Command):
5037
4995
  return parser
5038
4996
 
5039
4997
  def take_action(self, parsed_args):
5040
- compute_client = self.app.client_manager.sdk_connection.compute
4998
+ compute_client = self.app.client_manager.compute
5041
4999
  for server in parsed_args.server:
5042
5000
  server_id = compute_client.find_server(
5043
5001
  server,
@@ -5060,7 +5018,7 @@ class UnlockServer(command.Command):
5060
5018
  return parser
5061
5019
 
5062
5020
  def take_action(self, parsed_args):
5063
- compute_client = self.app.client_manager.sdk_connection.compute
5021
+ compute_client = self.app.client_manager.compute
5064
5022
  for server in parsed_args.server:
5065
5023
  server_id = compute_client.find_server(
5066
5024
  server,
@@ -5083,7 +5041,7 @@ class UnpauseServer(command.Command):
5083
5041
  return parser
5084
5042
 
5085
5043
  def take_action(self, parsed_args):
5086
- compute_client = self.app.client_manager.sdk_connection.compute
5044
+ compute_client = self.app.client_manager.compute
5087
5045
  for server in parsed_args.server:
5088
5046
  server_id = compute_client.find_server(
5089
5047
  server,
@@ -5105,7 +5063,7 @@ class UnrescueServer(command.Command):
5105
5063
  return parser
5106
5064
 
5107
5065
  def take_action(self, parsed_args):
5108
- compute_client = self.app.client_manager.sdk_connection.compute
5066
+ compute_client = self.app.client_manager.compute
5109
5067
  server = compute_client.find_server(
5110
5068
  parsed_args.server, ignore_missing=False
5111
5069
  )
@@ -5172,7 +5130,7 @@ class UnsetServer(command.Command):
5172
5130
  return parser
5173
5131
 
5174
5132
  def take_action(self, parsed_args):
5175
- compute_client = self.app.client_manager.sdk_connection.compute
5133
+ compute_client = self.app.client_manager.compute
5176
5134
 
5177
5135
  server = compute_client.find_server(
5178
5136
  parsed_args.server, ignore_missing=False
@@ -5263,7 +5221,7 @@ class UnshelveServer(command.Command):
5263
5221
  self.app.stdout.write(f'\rProgress: {progress}')
5264
5222
  self.app.stdout.flush()
5265
5223
 
5266
- compute_client = self.app.client_manager.sdk_connection.compute
5224
+ compute_client = self.app.client_manager.compute
5267
5225
  kwargs = {}
5268
5226
 
5269
5227
  if parsed_args.availability_zone:
@@ -71,7 +71,7 @@ class CreateServerBackup(command.ShowOne):
71
71
  self.app.stderr.write(f'\rProgress: {progress}')
72
72
  self.app.stderr.flush()
73
73
 
74
- compute_client = self.app.client_manager.sdk_connection.compute
74
+ compute_client = self.app.client_manager.compute
75
75
 
76
76
  server = compute_client.find_server(
77
77
  parsed_args.server, ignore_missing=False