python-openstackclient 7.1.4__py3-none-any.whl → 7.1.5__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.
@@ -701,7 +701,10 @@ class AddServerSecurityGroup(command.Command):
701
701
  security_group = compute_v2.find_security_group(
702
702
  compute_client, parsed_args.group
703
703
  )['name']
704
- compute_client.add_security_group_to_server(server, security_group)
704
+ compute_client.add_security_group_to_server(
705
+ server,
706
+ {'name': security_group},
707
+ )
705
708
 
706
709
 
707
710
  class AddServerVolume(command.ShowOne):
@@ -4039,7 +4042,8 @@ class RemoveServerSecurityGroup(command.Command):
4039
4042
  compute_client, parsed_args.group
4040
4043
  )['name']
4041
4044
  compute_client.remove_security_group_from_server(
4042
- server, security_group
4045
+ server,
4046
+ {'name': security_group},
4043
4047
  )
4044
4048
 
4045
4049
 
@@ -1295,7 +1295,7 @@ class ServerTests(common.ComputeTestCase):
1295
1295
  )
1296
1296
  if ip_address in cmd_output['addresses']['private']:
1297
1297
  # Hang out for a bit and try again
1298
- print('retrying add port check')
1298
+ print('retrying remove port check')
1299
1299
  wait_time += 10
1300
1300
  time.sleep(10)
1301
1301
  else:
@@ -1367,6 +1367,92 @@ class ServerTests(common.ComputeTestCase):
1367
1367
  addresses = cmd_output['addresses']['private']
1368
1368
  self.assertIn(ip_address, addresses)
1369
1369
 
1370
+ def test_server_add_remove_security_group(self):
1371
+ name = uuid.uuid4().hex
1372
+ cmd_output = self.openstack(
1373
+ 'server create '
1374
+ + '--network private '
1375
+ + '--flavor '
1376
+ + self.flavor_name
1377
+ + ' '
1378
+ + '--image '
1379
+ + self.image_name
1380
+ + ' '
1381
+ + '--wait '
1382
+ + name,
1383
+ parse_output=True,
1384
+ )
1385
+
1386
+ self.assertIsNotNone(cmd_output['id'])
1387
+ self.assertEqual(name, cmd_output['name'])
1388
+ self.addCleanup(self.openstack, 'server delete --wait ' + name)
1389
+
1390
+ # create security group
1391
+ security_group_name = uuid.uuid4().hex
1392
+
1393
+ cmd_output = self.openstack(
1394
+ 'security group list',
1395
+ parse_output=True,
1396
+ )
1397
+ self.assertNotIn(security_group_name, cmd_output)
1398
+
1399
+ cmd_output = self.openstack(
1400
+ 'security group create ' + security_group_name,
1401
+ parse_output=True,
1402
+ )
1403
+ self.assertIsNotNone(cmd_output['id'])
1404
+ self.addCleanup(
1405
+ self.openstack, 'security group delete ' + security_group_name
1406
+ )
1407
+
1408
+ # add security group to server, assert the name of the security group
1409
+ # appears
1410
+ self.openstack(
1411
+ 'server add security group ' + name + ' ' + security_group_name
1412
+ )
1413
+
1414
+ wait_time = 0
1415
+ while wait_time < 60:
1416
+ cmd_output = self.openstack(
1417
+ 'server show ' + name,
1418
+ parse_output=True,
1419
+ )
1420
+ if security_group_name not in [
1421
+ x['name'] for x in cmd_output['security_groups']
1422
+ ]:
1423
+ # Hang out for a bit and try again
1424
+ print('retrying add security group check')
1425
+ wait_time += 10
1426
+ time.sleep(10)
1427
+ else:
1428
+ break
1429
+ security_groups = [x['name'] for x in cmd_output['security_groups']]
1430
+ self.assertIn(security_group_name, security_groups)
1431
+
1432
+ # remove security group, assert the name of the security group doesn't
1433
+ # appear
1434
+ self.openstack(
1435
+ 'server remove security group ' + name + ' ' + security_group_name
1436
+ )
1437
+
1438
+ wait_time = 0
1439
+ while wait_time < 60:
1440
+ cmd_output = self.openstack(
1441
+ 'server show ' + name,
1442
+ parse_output=True,
1443
+ )
1444
+ if security_group_name not in [
1445
+ x['name'] for x in cmd_output['security_groups']
1446
+ ]:
1447
+ # Hang out for a bit and try again
1448
+ print('retrying remove security group check')
1449
+ wait_time += 10
1450
+ time.sleep(10)
1451
+ else:
1452
+ break
1453
+ security_groups = [x['name'] for x in cmd_output['security_groups']]
1454
+ self.assertNotIn(security_group_name, security_groups)
1455
+
1370
1456
  def test_server_add_remove_volume(self):
1371
1457
  volume_wait_for = volume_common.BaseVolumeTests.wait_for_status
1372
1458
 
@@ -1186,7 +1186,7 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
1186
1186
  self.server.id, ignore_missing=False
1187
1187
  )
1188
1188
  self.compute_sdk_client.add_security_group_to_server.assert_called_once_with(
1189
- self.server, 'fake_sg'
1189
+ self.server, {'name': 'fake_sg'}
1190
1190
  )
1191
1191
  mock_find_nova_net_sg.assert_called_once_with(
1192
1192
  self.compute_sdk_client, 'fake_sg'
@@ -1207,7 +1207,7 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
1207
1207
  self.server.id, ignore_missing=False
1208
1208
  )
1209
1209
  self.compute_sdk_client.add_security_group_to_server.assert_called_once_with(
1210
- self.server, 'fake_sg'
1210
+ self.server, {'name': 'fake_sg'}
1211
1211
  )
1212
1212
  self.assertIsNone(result)
1213
1213
 
@@ -7394,7 +7394,7 @@ class TestServerRemoveSecurityGroup(TestServer):
7394
7394
  self.server.id, ignore_missing=False
7395
7395
  )
7396
7396
  self.compute_sdk_client.remove_security_group_from_server.assert_called_once_with(
7397
- self.server, 'fake_sg'
7397
+ self.server, {'name': 'fake_sg'}
7398
7398
  )
7399
7399
  mock_find_nova_net_sg.assert_called_once_with(
7400
7400
  self.compute_sdk_client, 'fake_sg'
@@ -7415,7 +7415,7 @@ class TestServerRemoveSecurityGroup(TestServer):
7415
7415
  self.server.id, ignore_missing=False
7416
7416
  )
7417
7417
  self.compute_sdk_client.remove_security_group_from_server.assert_called_once_with(
7418
- self.server, 'fake_sg'
7418
+ self.server, {'name': 'fake_sg'}
7419
7419
  )
7420
7420
  self.assertIsNone(result)
7421
7421
 
@@ -1,12 +1,10 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: python-openstackclient
3
- Version: 7.1.4
3
+ Version: 7.1.5
4
4
  Summary: OpenStack Command-line Client
5
5
  Home-page: https://docs.openstack.org/python-openstackclient/latest/
6
6
  Author: OpenStack
7
7
  Author-email: openstack-discuss@lists.openstack.org
8
- License: UNKNOWN
9
- Platform: UNKNOWN
10
8
  Classifier: Environment :: OpenStack
11
9
  Classifier: Intended Audience :: Information Technology
12
10
  Classifier: Intended Audience :: System Administrators
@@ -20,17 +18,28 @@ Classifier: Programming Language :: Python :: 3.10
20
18
  Classifier: Programming Language :: Python :: 3.11
21
19
  Classifier: Programming Language :: Python :: 3.12
22
20
  Requires-Python: >=3.8
23
- Requires-Dist: cliff (>=3.5.0)
24
- Requires-Dist: cryptography (>=2.7)
25
- Requires-Dist: iso8601 (>=0.1.11)
26
- Requires-Dist: openstacksdk (>=3.3.0)
27
- Requires-Dist: osc-lib (>=2.3.0)
28
- Requires-Dist: oslo.i18n (>=3.15.3)
29
- Requires-Dist: pbr (!=2.1.0,>=2.0.0)
30
- Requires-Dist: python-cinderclient (>=3.3.0)
31
- Requires-Dist: python-keystoneclient (>=3.22.0)
32
- Requires-Dist: requests (>=2.27.0)
33
- Requires-Dist: stevedore (>=2.0.1)
21
+ License-File: LICENSE
22
+ License-File: AUTHORS
23
+ Requires-Dist: pbr!=2.1.0,>=2.0.0
24
+ Requires-Dist: cryptography>=2.7
25
+ Requires-Dist: cliff>=3.5.0
26
+ Requires-Dist: iso8601>=0.1.11
27
+ Requires-Dist: openstacksdk>=3.3.0
28
+ Requires-Dist: osc-lib>=2.3.0
29
+ Requires-Dist: oslo.i18n>=3.15.3
30
+ Requires-Dist: python-keystoneclient>=3.22.0
31
+ Requires-Dist: python-cinderclient>=3.3.0
32
+ Requires-Dist: requests>=2.27.0
33
+ Requires-Dist: stevedore>=2.0.1
34
+ Dynamic: author
35
+ Dynamic: author-email
36
+ Dynamic: classifier
37
+ Dynamic: description
38
+ Dynamic: home-page
39
+ Dynamic: license-file
40
+ Dynamic: requires-dist
41
+ Dynamic: requires-python
42
+ Dynamic: summary
34
43
 
35
44
  ========================
36
45
  Team and repository tags
@@ -171,5 +180,3 @@ Authentication using username/password is most commonly used:
171
180
  If a password is not provided above (in plaintext), you will be interactively
172
181
  prompted to provide one securely.
173
182
 
174
-
175
-
@@ -30,7 +30,7 @@ openstackclient/compute/v2/host.py,sha256=1Ow4eJu9HPz-SC0u_eXJskUXaGoyW7X1O2yZIf
30
30
  openstackclient/compute/v2/hypervisor.py,sha256=xkSLqZjaJnVABAKh9ANF9zqy67WaEJeD9NiVL3Frqko,8808
31
31
  openstackclient/compute/v2/hypervisor_stats.py,sha256=Y2Jkkleha8PXnM2VQ2MJtjKxHKchGRyEqmILfPj-Wgw,2161
32
32
  openstackclient/compute/v2/keypair.py,sha256=yM30AVsMmPP1SAqD8_nKXNkeB9WLyL6sd18AjeYIuhM,15730
33
- openstackclient/compute/v2/server.py,sha256=qzozAjygKLZUQ4Dtib1R1_10Sc7zm3axBCP3wt9d3Zw,187204
33
+ openstackclient/compute/v2/server.py,sha256=k6GEzWM98DzV6RTJw_9i4iFFsCfDJD4ii9-ow-ca-P8,187272
34
34
  openstackclient/compute/v2/server_backup.py,sha256=GVf_T5iHt0po1vYDDQgUQ_fN3AisHvKozEXY37voWkc,4119
35
35
  openstackclient/compute/v2/server_event.py,sha256=vLtu_LBJ99Fgfj9oRBCVATalRMyqBd3CUjHToVfQB48,10055
36
36
  openstackclient/compute/v2/server_group.py,sha256=s9CjDnmjNUk03VUdAkOn5QHMoSCHV8dtvuLe05ER4Rg,8674
@@ -159,7 +159,7 @@ openstackclient/tests/functional/compute/v2/test_aggregate.py,sha256=7KQfDWDM2Tq
159
159
  openstackclient/tests/functional/compute/v2/test_flavor.py,sha256=2-dVzVvXsNSMDsTBzDuo3Rv79asExWC7wURudSld1iw,7452
160
160
  openstackclient/tests/functional/compute/v2/test_hypervisor.py,sha256=w9iH5k5__R3saIWPl7N6kXT9xRfTykrQEBKoaS2gSnE,1923
161
161
  openstackclient/tests/functional/compute/v2/test_keypair.py,sha256=9DiQz6_eNPOYQc6iFyraW8AZOhKsWplsfHpXy0ia8qY,7116
162
- openstackclient/tests/functional/compute/v2/test_server.py,sha256=k1bWgR1eN3AmImXMDG4tsXanGC0AcPROMe1rcypi4iI,51618
162
+ openstackclient/tests/functional/compute/v2/test_server.py,sha256=MBg-R-k0wqcRkgUX2GEL-u5KdxewcbiSRAw6XCvJslQ,54495
163
163
  openstackclient/tests/functional/compute/v2/test_server_event.py,sha256=8MhH2tEJ4MrYW20UQOxKkFdZe0346nIRlz7wbCLXKxI,5157
164
164
  openstackclient/tests/functional/compute/v2/test_server_group.py,sha256=Bd46q5DDFHXCUInzT0Kbe0fmArW73VxEt4tQStRA-iE,3062
165
165
  openstackclient/tests/functional/identity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -294,7 +294,7 @@ openstackclient/tests/unit/compute/v2/test_host.py,sha256=AAcIxoGpVdy1qOkV3lPFyD
294
294
  openstackclient/tests/unit/compute/v2/test_hypervisor.py,sha256=t_Xv7uh4dzv6G-gOG3Eoy7l516cHOwy1xeiBgIyaUKc,17390
295
295
  openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py,sha256=1z8Jhx_CBoN-cu4im3MQc-YPAZlRQfu--3c9UAUmMG4,3020
296
296
  openstackclient/tests/unit/compute/v2/test_keypair.py,sha256=ASoemn6bN_tEKZlHRbhUpjPNydPaqMA22jn6fyAcwGs,25067
297
- openstackclient/tests/unit/compute/v2/test_server.py,sha256=Lg2sSCAI9Cenb4xz1hoOwheQul7KxiEhJvXKHdg2rzA,310893
297
+ openstackclient/tests/unit/compute/v2/test_server.py,sha256=aoNHY-W6TeV1VU7UaisrC8qql8rTsp5C5buQ-pJ0-H8,310933
298
298
  openstackclient/tests/unit/compute/v2/test_server_backup.py,sha256=MW2UQQ32cE403Bmihp7s_MYVhVV4NrkwfDdaZ-y5Wu4,7503
299
299
  openstackclient/tests/unit/compute/v2/test_server_event.py,sha256=aZhLD_RgcNDUdCgwVJmpolQlabVWxlrp5edSZBanR_Q,12504
300
300
  openstackclient/tests/unit/compute/v2/test_server_group.py,sha256=Ul0SQ_cIq4mW7TIsm6mDRtCOlboNyy6lClP1Oy3NPAE,14934
@@ -493,11 +493,11 @@ openstackclient/volume/v3/volume_message.py,sha256=HBBxPEcYoNqGjEbzGIEnIJ1XTcQ2K
493
493
  openstackclient/volume/v3/volume_snapshot.py,sha256=pZ4q_qCwqh4jaGhX28G59wsWDmEc3uXdbpeD176osZg,3186
494
494
  openstackclient/volume/v3/volume_transfer_request.py,sha256=PthOJV2m-pTV1njFzwTpaekXZkET1c6alIJrpuN7R6Q,7530
495
495
  openstackclient/volume/v3/volume_type.py,sha256=DF2MVoW2mIk0ABDLZD8D2sb8JlR7-rRjA4qCnBHRe6o,34039
496
- python_openstackclient-7.1.4.dist-info/AUTHORS,sha256=TRFKS0fs1j9d3_KWaIQfYnNH3gfTnDyBHng0RJAUFeM,21384
497
- python_openstackclient-7.1.4.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
498
- python_openstackclient-7.1.4.dist-info/METADATA,sha256=kgsnQMio_eekeFp0wbbLQ1k9JiLJmyUnkzCFkhqaLs4,6581
499
- python_openstackclient-7.1.4.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
500
- python_openstackclient-7.1.4.dist-info/entry_points.txt,sha256=9kVhKTeyLPfkXDMI_ALqXvz0zSJEqibJLHHsOdmtT3c,53261
501
- python_openstackclient-7.1.4.dist-info/pbr.json,sha256=Ath0K2qvjbVogYTdeuTmNoMRajUIwhHfhz_eJUkQVOM,47
502
- python_openstackclient-7.1.4.dist-info/top_level.txt,sha256=htg7z9oZgysRuVUHn-m1Bk6XLGOeV65nMbZX9H8qhs0,16
503
- python_openstackclient-7.1.4.dist-info/RECORD,,
496
+ python_openstackclient-7.1.5.dist-info/licenses/AUTHORS,sha256=TRFKS0fs1j9d3_KWaIQfYnNH3gfTnDyBHng0RJAUFeM,21384
497
+ python_openstackclient-7.1.5.dist-info/licenses/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
498
+ python_openstackclient-7.1.5.dist-info/METADATA,sha256=fmv-QoucuGzPHr8JFTkAH3h5EkM7OWsX5b5KAL7I3vU,6740
499
+ python_openstackclient-7.1.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
500
+ python_openstackclient-7.1.5.dist-info/entry_points.txt,sha256=VsZCw-6So3hkHuIiX-dGaMVL1PEqmfDynF37m1EwjCs,53260
501
+ python_openstackclient-7.1.5.dist-info/pbr.json,sha256=UhLx127tuigXv-CFTmYy9R7GRr1HsjkJKYtQJnfqOow,47
502
+ python_openstackclient-7.1.5.dist-info/top_level.txt,sha256=htg7z9oZgysRuVUHn-m1Bk6XLGOeV65nMbZX9H8qhs0,16
503
+ python_openstackclient-7.1.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.34.2)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -715,4 +715,3 @@ volume_type_set = openstackclient.volume.v3.volume_type:SetVolumeType
715
715
  volume_type_show = openstackclient.volume.v3.volume_type:ShowVolumeType
716
716
  volume_type_unset = openstackclient.volume.v3.volume_type:UnsetVolumeType
717
717
  volume_unset = openstackclient.volume.v3.volume:UnsetVolume
718
-
@@ -0,0 +1 @@
1
+ {"git_version": "67f5509f", "is_release": true}
@@ -1 +0,0 @@
1
- {"git_version": "f42ade43", "is_release": true}