python-openstackclient 6.3.0__py3-none-any.whl → 6.5.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 (162) hide show
  1. openstackclient/common/availability_zone.py +4 -4
  2. openstackclient/common/pagination.py +82 -0
  3. openstackclient/compute/v2/flavor.py +2 -16
  4. openstackclient/compute/v2/hypervisor.py +2 -21
  5. openstackclient/compute/v2/keypair.py +2 -9
  6. openstackclient/compute/v2/server.py +220 -131
  7. openstackclient/compute/v2/server_event.py +30 -19
  8. openstackclient/compute/v2/server_group.py +2 -23
  9. openstackclient/compute/v2/server_migration.py +2 -22
  10. openstackclient/compute/v2/usage.py +4 -6
  11. openstackclient/identity/v3/mapping.py +25 -3
  12. openstackclient/identity/v3/policy.py +3 -1
  13. openstackclient/image/v2/cache.py +218 -0
  14. openstackclient/image/v2/image.py +40 -17
  15. openstackclient/image/v2/metadef_namespaces.py +25 -21
  16. openstackclient/image/v2/metadef_objects.py +189 -0
  17. openstackclient/image/v2/metadef_properties.py +284 -0
  18. openstackclient/network/utils.py +100 -0
  19. openstackclient/network/v2/default_security_group_rule.py +418 -0
  20. openstackclient/network/v2/local_ip_association.py +1 -1
  21. openstackclient/network/v2/ndp_proxy.py +7 -3
  22. openstackclient/network/v2/network.py +2 -2
  23. openstackclient/network/v2/port.py +65 -19
  24. openstackclient/network/v2/security_group_rule.py +18 -111
  25. openstackclient/network/v2/subnet.py +1 -0
  26. openstackclient/object/v1/container.py +2 -12
  27. openstackclient/object/v1/object.py +2 -11
  28. openstackclient/tests/functional/base.py +13 -6
  29. openstackclient/tests/functional/identity/v3/test_role.py +11 -3
  30. openstackclient/tests/functional/network/v2/common.py +7 -1
  31. openstackclient/tests/functional/network/v2/test_address_group.py +2 -4
  32. openstackclient/tests/functional/network/v2/test_address_scope.py +0 -6
  33. openstackclient/tests/functional/network/v2/test_default_security_group_rule.py +67 -0
  34. openstackclient/tests/functional/network/v2/test_floating_ip.py +3 -6
  35. openstackclient/tests/functional/network/v2/test_ip_availability.py +3 -8
  36. openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +3 -4
  37. openstackclient/tests/functional/network/v2/test_local_ip.py +2 -4
  38. openstackclient/tests/functional/network/v2/test_network.py +18 -17
  39. openstackclient/tests/functional/network/v2/test_network_agent.py +24 -21
  40. openstackclient/tests/functional/network/v2/test_network_flavor.py +0 -6
  41. openstackclient/tests/functional/network/v2/test_network_flavor_profile.py +0 -6
  42. openstackclient/tests/functional/network/v2/test_network_meter.py +6 -6
  43. openstackclient/tests/functional/network/v2/test_network_meter_rule.py +7 -8
  44. openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +1 -3
  45. openstackclient/tests/functional/network/v2/test_network_qos_policy.py +4 -4
  46. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +16 -20
  47. openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py +4 -4
  48. openstackclient/tests/functional/network/v2/test_network_rbac.py +1 -4
  49. openstackclient/tests/functional/network/v2/test_network_segment.py +7 -12
  50. openstackclient/tests/functional/network/v2/test_network_segment_range.py +3 -4
  51. openstackclient/tests/functional/network/v2/test_network_service_provider.py +2 -4
  52. openstackclient/tests/functional/network/v2/test_network_trunk.py +3 -3
  53. openstackclient/tests/functional/network/v2/test_port.py +2 -8
  54. openstackclient/tests/functional/network/v2/test_router.py +0 -6
  55. openstackclient/tests/functional/network/v2/test_security_group.py +1 -4
  56. openstackclient/tests/functional/network/v2/test_security_group_rule.py +1 -4
  57. openstackclient/tests/functional/network/v2/test_subnet.py +4 -22
  58. openstackclient/tests/functional/network/v2/test_subnet_pool.py +0 -6
  59. openstackclient/tests/unit/common/test_availability_zone.py +28 -30
  60. openstackclient/tests/unit/common/test_extension.py +1 -4
  61. openstackclient/tests/unit/common/test_limits.py +2 -4
  62. openstackclient/tests/unit/common/test_project_cleanup.py +3 -10
  63. openstackclient/tests/unit/common/test_quota.py +18 -24
  64. openstackclient/tests/unit/compute/v2/fakes.py +24 -11
  65. openstackclient/tests/unit/compute/v2/test_agent.py +1 -1
  66. openstackclient/tests/unit/compute/v2/test_aggregate.py +62 -72
  67. openstackclient/tests/unit/compute/v2/test_console.py +18 -30
  68. openstackclient/tests/unit/compute/v2/test_flavor.py +85 -89
  69. openstackclient/tests/unit/compute/v2/test_host.py +12 -19
  70. openstackclient/tests/unit/compute/v2/test_hypervisor.py +23 -25
  71. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -6
  72. openstackclient/tests/unit/compute/v2/test_keypair.py +25 -39
  73. openstackclient/tests/unit/compute/v2/test_server.py +316 -365
  74. openstackclient/tests/unit/compute/v2/test_server_backup.py +5 -17
  75. openstackclient/tests/unit/compute/v2/test_server_event.py +23 -25
  76. openstackclient/tests/unit/compute/v2/test_server_group.py +41 -33
  77. openstackclient/tests/unit/compute/v2/test_server_image.py +6 -18
  78. openstackclient/tests/unit/compute/v2/test_server_migration.py +45 -45
  79. openstackclient/tests/unit/compute/v2/test_server_volume.py +15 -31
  80. openstackclient/tests/unit/compute/v2/test_service.py +51 -56
  81. openstackclient/tests/unit/compute/v2/test_usage.py +10 -13
  82. openstackclient/tests/unit/fakes.py +4 -0
  83. openstackclient/tests/unit/identity/v3/test_mappings.py +9 -4
  84. openstackclient/tests/unit/identity/v3/test_trust.py +0 -2
  85. openstackclient/tests/unit/image/v1/fakes.py +2 -1
  86. openstackclient/tests/unit/image/v1/test_image.py +1 -1
  87. openstackclient/tests/unit/image/v2/fakes.py +82 -0
  88. openstackclient/tests/unit/image/v2/test_cache.py +214 -0
  89. openstackclient/tests/unit/image/v2/test_image.py +62 -4
  90. openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +5 -19
  91. openstackclient/tests/unit/image/v2/test_metadef_objects.py +162 -0
  92. openstackclient/tests/unit/image/v2/test_metadef_properties.py +227 -0
  93. openstackclient/tests/unit/integ/cli/test_shell.py +0 -2
  94. openstackclient/tests/unit/network/test_common.py +3 -3
  95. openstackclient/tests/unit/network/v2/fakes.py +1 -0
  96. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +1133 -0
  97. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +5 -13
  98. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +1 -9
  99. openstackclient/tests/unit/network/v2/test_network.py +33 -0
  100. openstackclient/tests/unit/network/v2/test_network_compute.py +5 -11
  101. openstackclient/tests/unit/network/v2/test_network_trunk.py +6 -8
  102. openstackclient/tests/unit/network/v2/test_port.py +83 -38
  103. openstackclient/tests/unit/network/v2/test_security_group_compute.py +7 -15
  104. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +19 -27
  105. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +3 -6
  106. openstackclient/tests/unit/network/v2/test_subnet.py +92 -0
  107. openstackclient/tests/unit/network/v2/test_subnet_pool.py +11 -13
  108. openstackclient/tests/unit/test_shell.py +1 -7
  109. openstackclient/tests/unit/utils.py +10 -4
  110. openstackclient/tests/unit/volume/v1/fakes.py +7 -1
  111. openstackclient/tests/unit/volume/v1/test_qos_specs.py +2 -2
  112. openstackclient/tests/unit/volume/v1/test_service.py +1 -1
  113. openstackclient/tests/unit/volume/v1/test_transfer_request.py +2 -2
  114. openstackclient/tests/unit/volume/v1/test_type.py +2 -4
  115. openstackclient/tests/unit/volume/v1/test_volume.py +5 -7
  116. openstackclient/tests/unit/volume/v1/test_volume_backup.py +4 -4
  117. openstackclient/tests/unit/volume/v2/fakes.py +32 -12
  118. openstackclient/tests/unit/volume/v2/test_backup_record.py +1 -1
  119. openstackclient/tests/unit/volume/v2/test_consistency_group.py +4 -6
  120. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +2 -4
  121. openstackclient/tests/unit/volume/v2/test_qos_specs.py +2 -2
  122. openstackclient/tests/unit/volume/v2/test_service.py +1 -1
  123. openstackclient/tests/unit/volume/v2/test_volume.py +78 -16
  124. openstackclient/tests/unit/volume/v2/test_volume_backend.py +10 -22
  125. openstackclient/tests/unit/volume/v2/test_volume_backup.py +76 -89
  126. openstackclient/tests/unit/volume/v2/test_volume_host.py +1 -1
  127. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +5 -7
  128. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +4 -8
  129. openstackclient/tests/unit/volume/v2/test_volume_type.py +164 -24
  130. openstackclient/tests/unit/volume/v3/fakes.py +91 -15
  131. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +3 -7
  132. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +11 -31
  133. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +6 -16
  134. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +219 -157
  135. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +32 -23
  136. openstackclient/tests/unit/volume/v3/test_volume.py +50 -48
  137. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +17 -47
  138. openstackclient/tests/unit/volume/v3/test_volume_group.py +23 -65
  139. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +88 -77
  140. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +14 -42
  141. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -28
  142. openstackclient/volume/v1/volume.py +2 -14
  143. openstackclient/volume/v2/volume.py +30 -15
  144. openstackclient/volume/v2/volume_backend.py +10 -18
  145. openstackclient/volume/v2/volume_backup.py +18 -15
  146. openstackclient/volume/v2/volume_snapshot.py +2 -12
  147. openstackclient/volume/v2/volume_type.py +211 -14
  148. openstackclient/volume/v3/block_storage_manage.py +72 -11
  149. openstackclient/volume/v3/block_storage_resource_filter.py +33 -11
  150. openstackclient/volume/v3/volume_attachment.py +2 -14
  151. openstackclient/volume/v3/volume_group_snapshot.py +27 -27
  152. openstackclient/volume/v3/volume_message.py +2 -13
  153. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/AUTHORS +11 -0
  154. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/METADATA +6 -5
  155. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/RECORD +160 -151
  156. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/entry_points.txt +23 -5
  157. python_openstackclient-6.5.0.dist-info/pbr.json +1 -0
  158. openstackclient/tests/unit/common/test_parseractions.py +0 -233
  159. python_openstackclient-6.3.0.dist-info/pbr.json +0 -1
  160. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/LICENSE +0 -0
  161. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/WHEEL +0 -0
  162. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/top_level.txt +0 -0
@@ -16,7 +16,7 @@
16
16
  import copy
17
17
  import logging
18
18
 
19
- from novaclient import exceptions as nova_exceptions
19
+ from openstack import exceptions as sdk_exceptions
20
20
  from osc_lib.command import command
21
21
  from osc_lib import utils
22
22
 
@@ -119,8 +119,8 @@ class ListAvailabilityZone(command.Lister):
119
119
  def _get_compute_availability_zones(self, parsed_args):
120
120
  compute_client = self.app.client_manager.sdk_connection.compute
121
121
  try:
122
- data = compute_client.availability_zones(details=True)
123
- except nova_exceptions.Forbidden: # policy doesn't allow
122
+ data = list(compute_client.availability_zones(details=True))
123
+ except sdk_exceptions.ForbiddenException: # policy doesn't allow
124
124
  try:
125
125
  data = compute_client.availability_zones(details=False)
126
126
  except Exception:
@@ -135,7 +135,7 @@ class ListAvailabilityZone(command.Lister):
135
135
  volume_client = self.app.client_manager.sdk_connection.volume
136
136
  data = []
137
137
  try:
138
- data = volume_client.availability_zones()
138
+ data = list(volume_client.availability_zones())
139
139
  except Exception as e:
140
140
  LOG.debug('Volume availability zone exception: %s', e)
141
141
  if parsed_args.volume:
@@ -0,0 +1,82 @@
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 osc_lib.cli import parseractions
14
+
15
+ from openstackclient.i18n import _
16
+
17
+
18
+ # TODO(stephenfin): Consider moving these to osc-lib since they're broadly
19
+ # useful
20
+
21
+
22
+ def add_marker_pagination_option_to_parser(parser):
23
+ """Add marker-based pagination options to the parser.
24
+
25
+ APIs that use marker-based paging use the marker and limit query parameters
26
+ to paginate through items in a collection.
27
+
28
+ Marker-based pagination is often used in cases where the length of the
29
+ total set of items is either changing frequently, or where the total length
30
+ might not be known upfront.
31
+ """
32
+ parser.add_argument(
33
+ '--limit',
34
+ metavar='<limit>',
35
+ type=int,
36
+ action=parseractions.NonNegativeAction,
37
+ help=_(
38
+ 'The maximum number of entries to return. If the value exceeds '
39
+ 'the server-defined maximum, then the maximum value will be used.'
40
+ ),
41
+ )
42
+ parser.add_argument(
43
+ '--marker',
44
+ metavar='<marker>',
45
+ default=None,
46
+ help=_(
47
+ 'The first position in the collection to return results from. '
48
+ 'This should be a value that was returned in a previous request.'
49
+ ),
50
+ )
51
+
52
+
53
+ def add_offset_pagination_option_to_parser(parser):
54
+ """Add offset-based pagination options to the parser.
55
+
56
+ APIs that use offset-based paging use the offset and limit query parameters
57
+ to paginate through items in a collection.
58
+
59
+ Offset-based pagination is often used where the list of items is of a fixed
60
+ and predetermined length.
61
+ """
62
+ parser.add_argument(
63
+ '--limit',
64
+ metavar='<limit>',
65
+ type=int,
66
+ action=parseractions.NonNegativeAction,
67
+ help=_(
68
+ 'The maximum number of entries to return. If the value exceeds '
69
+ 'the server-defined maximum, then the maximum value will be used.'
70
+ ),
71
+ )
72
+ parser.add_argument(
73
+ '--offset',
74
+ metavar='<offset>',
75
+ type=int,
76
+ action=parseractions.NonNegativeAction,
77
+ default=None,
78
+ help=_(
79
+ 'The (zero-based) offset of the first item in the collection to '
80
+ 'return.'
81
+ ),
82
+ )
@@ -25,6 +25,7 @@ from osc_lib.command import command
25
25
  from osc_lib import exceptions
26
26
  from osc_lib import utils
27
27
 
28
+ from openstackclient.common import pagination
28
29
  from openstackclient.i18n import _
29
30
  from openstackclient.identity import common as identity_common
30
31
 
@@ -292,22 +293,7 @@ class ListFlavor(command.Lister):
292
293
  default=False,
293
294
  help=_("List additional fields in output"),
294
295
  )
295
- parser.add_argument(
296
- '--marker',
297
- metavar="<flavor-id>",
298
- help=_("The last flavor ID of the previous page"),
299
- )
300
- parser.add_argument(
301
- '--limit',
302
- type=int,
303
- metavar='<num-flavors>',
304
- help=_(
305
- 'Maximum number of flavors to display. This is also '
306
- 'configurable on the server. The actual limit used will be '
307
- 'the lower of the user-supplied value and the server '
308
- 'configuration-derived value'
309
- ),
310
- )
296
+ pagination.add_marker_pagination_option_to_parser(parser)
311
297
  return parser
312
298
 
313
299
  def take_action(self, parsed_args):
@@ -25,6 +25,7 @@ from osc_lib.command import command
25
25
  from osc_lib import exceptions
26
26
  from osc_lib import utils
27
27
 
28
+ from openstackclient.common import pagination
28
29
  from openstackclient.i18n import _
29
30
 
30
31
 
@@ -80,27 +81,7 @@ class ListHypervisor(command.Lister):
80
81
  "when using microversion 2.52 or lower"
81
82
  ),
82
83
  )
83
- parser.add_argument(
84
- '--marker',
85
- metavar='<marker>',
86
- help=_(
87
- "The UUID of the last hypervisor of the previous page; "
88
- "displays list of hypervisors after 'marker'. "
89
- "(supported with --os-compute-api-version 2.33 or above)"
90
- ),
91
- )
92
- parser.add_argument(
93
- '--limit',
94
- metavar='<limit>',
95
- type=int,
96
- help=_(
97
- "Maximum number of hypervisors to display. Note that there "
98
- "is a configurable max limit on the server, and the limit "
99
- "that is used will be the minimum of what is requested "
100
- "here and what is configured in the server. "
101
- "(supported with --os-compute-api-version 2.33 or above)"
102
- ),
103
- )
84
+ pagination.add_marker_pagination_option_to_parser(parser)
104
85
  parser.add_argument(
105
86
  '--long',
106
87
  action='store_true',
@@ -27,6 +27,7 @@ from osc_lib.command import command
27
27
  from osc_lib import exceptions
28
28
  from osc_lib import utils
29
29
 
30
+ from openstackclient.common import pagination
30
31
  from openstackclient.i18n import _
31
32
  from openstackclient.identity import common as identity_common
32
33
 
@@ -296,15 +297,7 @@ class ListKeypair(command.Lister):
296
297
  ),
297
298
  )
298
299
  identity_common.add_project_domain_option_to_parser(parser)
299
- parser.add_argument(
300
- '--marker',
301
- help=_('The last keypair ID of the previous page'),
302
- )
303
- parser.add_argument(
304
- '--limit',
305
- type=int,
306
- help=_('Maximum number of keypairs to display'),
307
- )
300
+ pagination.add_marker_pagination_option_to_parser(parser)
308
301
  return parser
309
302
 
310
303
  def take_action(self, parsed_args):