python-openstackclient 7.2.0__py3-none-any.whl → 7.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/common/clientmanager.py +6 -1
- openstackclient/common/limits.py +1 -1
- openstackclient/common/quota.py +7 -2
- openstackclient/compute/v2/server.py +38 -22
- openstackclient/compute/v2/usage.py +2 -2
- openstackclient/identity/common.py +22 -34
- openstackclient/identity/v3/credential.py +45 -28
- openstackclient/identity/v3/limit.py +15 -0
- openstackclient/identity/v3/region.py +23 -22
- openstackclient/identity/v3/registered_limit.py +18 -0
- openstackclient/identity/v3/role.py +287 -117
- openstackclient/identity/v3/role_assignment.py +1 -1
- openstackclient/identity/v3/service_provider.py +95 -45
- openstackclient/identity/v3/trust.py +114 -75
- openstackclient/image/v2/image.py +3 -0
- openstackclient/network/v2/network.py +33 -0
- openstackclient/network/v2/network_flavor_profile.py +1 -17
- openstackclient/network/v2/port.py +73 -19
- openstackclient/tests/functional/compute/v2/test_server.py +87 -1
- openstackclient/tests/functional/identity/v3/common.py +1 -1
- openstackclient/tests/functional/identity/v3/test_application_credential.py +2 -1
- openstackclient/tests/functional/identity/v3/test_role.py +24 -0
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +8 -0
- openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -5
- openstackclient/tests/functional/network/v2/test_port.py +28 -1
- openstackclient/tests/unit/compute/v2/fakes.py +0 -304
- openstackclient/tests/unit/compute/v2/test_aggregate.py +40 -31
- openstackclient/tests/unit/compute/v2/test_console.py +7 -3
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +60 -53
- openstackclient/tests/unit/compute/v2/test_keypair.py +57 -69
- openstackclient/tests/unit/compute/v2/test_server.py +63 -5
- openstackclient/tests/unit/compute/v2/test_server_group.py +99 -105
- openstackclient/tests/unit/compute/v2/test_server_volume.py +12 -5
- openstackclient/tests/unit/compute/v2/test_service.py +83 -37
- openstackclient/tests/unit/compute/v2/test_usage.py +12 -7
- openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -6
- openstackclient/tests/unit/identity/v2_0/test_role.py +1 -2
- openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +2 -1
- openstackclient/tests/unit/identity/v2_0/test_token.py +6 -20
- openstackclient/tests/unit/identity/v3/test_catalog.py +2 -5
- openstackclient/tests/unit/identity/v3/test_credential.py +74 -63
- openstackclient/tests/unit/identity/v3/test_project.py +1 -3
- openstackclient/tests/unit/identity/v3/test_region.py +74 -96
- openstackclient/tests/unit/identity/v3/test_role.py +679 -603
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +263 -1
- openstackclient/tests/unit/identity/v3/test_service_provider.py +159 -209
- openstackclient/tests/unit/identity/v3/test_token.py +5 -20
- openstackclient/tests/unit/identity/v3/test_trust.py +137 -155
- openstackclient/tests/unit/image/v2/test_image.py +6 -0
- openstackclient/tests/unit/network/v2/fakes.py +3 -0
- openstackclient/tests/unit/network/v2/test_network.py +25 -0
- openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +0 -35
- openstackclient/tests/unit/network/v2/test_port.py +129 -16
- openstackclient/tests/unit/utils.py +8 -2
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +31 -13
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +34 -13
- openstackclient/volume/v2/volume_backup.py +11 -2
- openstackclient/volume/v3/volume_backup.py +13 -2
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/AUTHORS +2 -0
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/METADATA +14 -16
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/RECORD +66 -66
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/entry_points.txt +0 -1
- python_openstackclient-7.3.0.dist-info/pbr.json +1 -0
- python_openstackclient-7.2.0.dist-info/pbr.json +0 -1
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-7.2.0.dist-info → python_openstackclient-7.3.0.dist-info}/top_level.txt +0 -0
|
@@ -12,17 +12,18 @@
|
|
|
12
12
|
# License for the specific language governing permissions and limitations
|
|
13
13
|
# under the License.
|
|
14
14
|
|
|
15
|
-
import copy
|
|
16
15
|
from unittest import mock
|
|
17
16
|
from unittest.mock import call
|
|
18
17
|
import uuid
|
|
19
18
|
|
|
19
|
+
from openstack.compute.v2 import keypair as _keypair
|
|
20
|
+
from openstack.identity.v3 import project as _project
|
|
21
|
+
from openstack.identity.v3 import user as _user
|
|
22
|
+
from openstack.test import fakes as sdk_fakes
|
|
20
23
|
from osc_lib import exceptions
|
|
21
24
|
|
|
22
25
|
from openstackclient.compute.v2 import keypair
|
|
23
26
|
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
|
|
24
|
-
from openstackclient.tests.unit import fakes
|
|
25
|
-
from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
|
|
26
27
|
from openstackclient.tests.unit import utils as tests_utils
|
|
27
28
|
|
|
28
29
|
|
|
@@ -31,20 +32,17 @@ class TestKeypair(compute_fakes.TestComputev2):
|
|
|
31
32
|
super().setUp()
|
|
32
33
|
|
|
33
34
|
# Initialize the user mock
|
|
35
|
+
self._user = sdk_fakes.generate_fake_resource(_user.User)
|
|
34
36
|
self.users_mock = self.identity_client.users
|
|
35
37
|
self.users_mock.reset_mock()
|
|
36
|
-
self.users_mock.get.return_value =
|
|
37
|
-
None,
|
|
38
|
-
copy.deepcopy(identity_fakes.USER),
|
|
39
|
-
loaded=True,
|
|
40
|
-
)
|
|
38
|
+
self.users_mock.get.return_value = self._user
|
|
41
39
|
|
|
42
40
|
|
|
43
41
|
class TestKeypairCreate(TestKeypair):
|
|
44
42
|
def setUp(self):
|
|
45
43
|
super().setUp()
|
|
46
44
|
|
|
47
|
-
self.keypair =
|
|
45
|
+
self.keypair = sdk_fakes.generate_fake_resource(_keypair.Keypair)
|
|
48
46
|
|
|
49
47
|
self.columns = (
|
|
50
48
|
'created_at',
|
|
@@ -122,7 +120,7 @@ class TestKeypairCreate(TestKeypair):
|
|
|
122
120
|
) as mock_open:
|
|
123
121
|
mock_open.return_value = mock.MagicMock()
|
|
124
122
|
m_file = mock_open.return_value.__enter__.return_value
|
|
125
|
-
m_file.read.return_value =
|
|
123
|
+
m_file.read.return_value = self.keypair.public_key
|
|
126
124
|
|
|
127
125
|
columns, data = self.cmd.take_action(parsed_args)
|
|
128
126
|
|
|
@@ -208,7 +206,7 @@ class TestKeypairCreate(TestKeypair):
|
|
|
208
206
|
) as mock_open:
|
|
209
207
|
mock_open.return_value = mock.MagicMock()
|
|
210
208
|
m_file = mock_open.return_value.__enter__.return_value
|
|
211
|
-
m_file.read.return_value =
|
|
209
|
+
m_file.read.return_value = self.keypair.public_key
|
|
212
210
|
columns, data = self.cmd.take_action(parsed_args)
|
|
213
211
|
|
|
214
212
|
self.compute_sdk_client.create_keypair.assert_called_with(
|
|
@@ -263,11 +261,11 @@ class TestKeypairCreate(TestKeypair):
|
|
|
263
261
|
|
|
264
262
|
arglist = [
|
|
265
263
|
'--user',
|
|
266
|
-
|
|
264
|
+
self._user.name,
|
|
267
265
|
self.keypair.name,
|
|
268
266
|
]
|
|
269
267
|
verifylist = [
|
|
270
|
-
('user',
|
|
268
|
+
('user', self._user.name),
|
|
271
269
|
('name', self.keypair.name),
|
|
272
270
|
]
|
|
273
271
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -276,7 +274,7 @@ class TestKeypairCreate(TestKeypair):
|
|
|
276
274
|
|
|
277
275
|
self.compute_sdk_client.create_keypair.assert_called_with(
|
|
278
276
|
name=self.keypair.name,
|
|
279
|
-
user_id=
|
|
277
|
+
user_id=self._user.id,
|
|
280
278
|
public_key=mock_generate.return_value.public_key,
|
|
281
279
|
)
|
|
282
280
|
|
|
@@ -288,11 +286,11 @@ class TestKeypairCreate(TestKeypair):
|
|
|
288
286
|
|
|
289
287
|
arglist = [
|
|
290
288
|
'--user',
|
|
291
|
-
|
|
289
|
+
self._user.name,
|
|
292
290
|
self.keypair.name,
|
|
293
291
|
]
|
|
294
292
|
verifylist = [
|
|
295
|
-
('user',
|
|
293
|
+
('user', self._user.name),
|
|
296
294
|
('name', self.keypair.name),
|
|
297
295
|
]
|
|
298
296
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -306,11 +304,13 @@ class TestKeypairCreate(TestKeypair):
|
|
|
306
304
|
|
|
307
305
|
|
|
308
306
|
class TestKeypairDelete(TestKeypair):
|
|
309
|
-
keypairs = compute_fakes.create_keypairs(count=2)
|
|
310
|
-
|
|
311
307
|
def setUp(self):
|
|
312
308
|
super().setUp()
|
|
313
309
|
|
|
310
|
+
self.keypairs = list(
|
|
311
|
+
sdk_fakes.generate_fake_resources(_keypair.Keypair, count=2)
|
|
312
|
+
)
|
|
313
|
+
|
|
314
314
|
self.cmd = keypair.DeleteKeypair(self.app, None)
|
|
315
315
|
|
|
316
316
|
def test_keypair_delete(self):
|
|
@@ -374,9 +374,9 @@ class TestKeypairDelete(TestKeypair):
|
|
|
374
374
|
def test_keypair_delete_with_user(self):
|
|
375
375
|
self.set_compute_api_version('2.10')
|
|
376
376
|
|
|
377
|
-
arglist = ['--user',
|
|
377
|
+
arglist = ['--user', self._user.name, self.keypairs[0].name]
|
|
378
378
|
verifylist = [
|
|
379
|
-
('user',
|
|
379
|
+
('user', self._user.name),
|
|
380
380
|
('name', [self.keypairs[0].name]),
|
|
381
381
|
]
|
|
382
382
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -386,16 +386,16 @@ class TestKeypairDelete(TestKeypair):
|
|
|
386
386
|
self.assertIsNone(ret)
|
|
387
387
|
self.compute_sdk_client.delete_keypair.assert_called_with(
|
|
388
388
|
self.keypairs[0].name,
|
|
389
|
-
user_id=
|
|
389
|
+
user_id=self._user.id,
|
|
390
390
|
ignore_missing=False,
|
|
391
391
|
)
|
|
392
392
|
|
|
393
393
|
def test_keypair_delete_with_user_pre_v210(self):
|
|
394
394
|
self.set_compute_api_version('2.9')
|
|
395
395
|
|
|
396
|
-
arglist = ['--user',
|
|
396
|
+
arglist = ['--user', self._user.name, self.keypairs[0].name]
|
|
397
397
|
verifylist = [
|
|
398
|
-
('user',
|
|
398
|
+
('user', self._user.name),
|
|
399
399
|
('name', [self.keypairs[0].name]),
|
|
400
400
|
]
|
|
401
401
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -409,17 +409,19 @@ class TestKeypairDelete(TestKeypair):
|
|
|
409
409
|
|
|
410
410
|
|
|
411
411
|
class TestKeypairList(TestKeypair):
|
|
412
|
-
# Return value of self.compute_sdk_client.keypairs().
|
|
413
|
-
keypairs = compute_fakes.create_keypairs(count=1)
|
|
414
|
-
|
|
415
412
|
def setUp(self):
|
|
416
413
|
super().setUp()
|
|
417
414
|
|
|
418
|
-
self.
|
|
415
|
+
self.keypairs = list(
|
|
416
|
+
sdk_fakes.generate_fake_resources(_keypair.Keypair, count=1)
|
|
417
|
+
)
|
|
418
|
+
self.compute_sdk_client.keypairs.return_value = iter(self.keypairs)
|
|
419
419
|
|
|
420
420
|
# Get the command object to test
|
|
421
421
|
self.cmd = keypair.ListKeypair(self.app, None)
|
|
422
422
|
|
|
423
|
+
self._project = sdk_fakes.generate_fake_resource(_project.Project)
|
|
424
|
+
|
|
423
425
|
def test_keypair_list_no_options(self):
|
|
424
426
|
arglist = []
|
|
425
427
|
verifylist = []
|
|
@@ -475,26 +477,22 @@ class TestKeypairList(TestKeypair):
|
|
|
475
477
|
|
|
476
478
|
users_mock = self.identity_client.users
|
|
477
479
|
users_mock.reset_mock()
|
|
478
|
-
users_mock.get.return_value =
|
|
479
|
-
None,
|
|
480
|
-
copy.deepcopy(identity_fakes.USER),
|
|
481
|
-
loaded=True,
|
|
482
|
-
)
|
|
480
|
+
users_mock.get.return_value = self._user
|
|
483
481
|
|
|
484
482
|
arglist = [
|
|
485
483
|
'--user',
|
|
486
|
-
|
|
484
|
+
self._user.name,
|
|
487
485
|
]
|
|
488
486
|
verifylist = [
|
|
489
|
-
('user',
|
|
487
|
+
('user', self._user.name),
|
|
490
488
|
]
|
|
491
489
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
492
490
|
|
|
493
491
|
columns, data = self.cmd.take_action(parsed_args)
|
|
494
492
|
|
|
495
|
-
users_mock.get.assert_called_with(
|
|
493
|
+
users_mock.get.assert_called_with(self._user.name)
|
|
496
494
|
self.compute_sdk_client.keypairs.assert_called_with(
|
|
497
|
-
user_id=
|
|
495
|
+
user_id=self._user.id,
|
|
498
496
|
)
|
|
499
497
|
|
|
500
498
|
self.assertEqual(('Name', 'Fingerprint', 'Type'), columns)
|
|
@@ -514,10 +512,10 @@ class TestKeypairList(TestKeypair):
|
|
|
514
512
|
|
|
515
513
|
arglist = [
|
|
516
514
|
'--user',
|
|
517
|
-
|
|
515
|
+
self._user.name,
|
|
518
516
|
]
|
|
519
517
|
verifylist = [
|
|
520
|
-
('user',
|
|
518
|
+
('user', self._user.name),
|
|
521
519
|
]
|
|
522
520
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
523
521
|
|
|
@@ -533,32 +531,22 @@ class TestKeypairList(TestKeypair):
|
|
|
533
531
|
|
|
534
532
|
projects_mock = self.identity_client.tenants
|
|
535
533
|
projects_mock.reset_mock()
|
|
536
|
-
projects_mock.get.return_value =
|
|
537
|
-
None,
|
|
538
|
-
copy.deepcopy(identity_fakes.PROJECT),
|
|
539
|
-
loaded=True,
|
|
540
|
-
)
|
|
534
|
+
projects_mock.get.return_value = self._project
|
|
541
535
|
|
|
542
536
|
users_mock = self.identity_client.users
|
|
543
537
|
users_mock.reset_mock()
|
|
544
|
-
users_mock.list.return_value = [
|
|
545
|
-
fakes.FakeResource(
|
|
546
|
-
None,
|
|
547
|
-
copy.deepcopy(identity_fakes.USER),
|
|
548
|
-
loaded=True,
|
|
549
|
-
),
|
|
550
|
-
]
|
|
538
|
+
users_mock.list.return_value = [self._user]
|
|
551
539
|
|
|
552
|
-
arglist = ['--project',
|
|
553
|
-
verifylist = [('project',
|
|
540
|
+
arglist = ['--project', self._project.name]
|
|
541
|
+
verifylist = [('project', self._project.name)]
|
|
554
542
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
555
543
|
|
|
556
544
|
columns, data = self.cmd.take_action(parsed_args)
|
|
557
545
|
|
|
558
|
-
projects_mock.get.assert_called_with(
|
|
559
|
-
users_mock.list.assert_called_with(tenant_id=
|
|
546
|
+
projects_mock.get.assert_called_with(self._project.name)
|
|
547
|
+
users_mock.list.assert_called_with(tenant_id=self._project.id)
|
|
560
548
|
self.compute_sdk_client.keypairs.assert_called_with(
|
|
561
|
-
user_id=
|
|
549
|
+
user_id=self._user.id,
|
|
562
550
|
)
|
|
563
551
|
|
|
564
552
|
self.assertEqual(('Name', 'Fingerprint', 'Type'), columns)
|
|
@@ -576,8 +564,8 @@ class TestKeypairList(TestKeypair):
|
|
|
576
564
|
def test_keypair_list_with_project_pre_v210(self):
|
|
577
565
|
self.set_compute_api_version('2.9')
|
|
578
566
|
|
|
579
|
-
arglist = ['--project',
|
|
580
|
-
verifylist = [('project',
|
|
567
|
+
arglist = ['--project', self._project.name]
|
|
568
|
+
verifylist = [('project', self._project.name)]
|
|
581
569
|
|
|
582
570
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
583
571
|
ex = self.assertRaises(
|
|
@@ -590,9 +578,9 @@ class TestKeypairList(TestKeypair):
|
|
|
590
578
|
def test_keypair_list_conflicting_user_options(self):
|
|
591
579
|
arglist = [
|
|
592
580
|
'--user',
|
|
593
|
-
|
|
581
|
+
self._user.name,
|
|
594
582
|
'--project',
|
|
595
|
-
|
|
583
|
+
self._project.name,
|
|
596
584
|
]
|
|
597
585
|
|
|
598
586
|
self.assertRaises(
|
|
@@ -707,7 +695,7 @@ class TestKeypairShow(TestKeypair):
|
|
|
707
695
|
)
|
|
708
696
|
|
|
709
697
|
def test_keypair_show(self):
|
|
710
|
-
self.keypair =
|
|
698
|
+
self.keypair = sdk_fakes.generate_fake_resource(_keypair.Keypair)
|
|
711
699
|
self.compute_sdk_client.find_keypair.return_value = self.keypair
|
|
712
700
|
|
|
713
701
|
self.data = (
|
|
@@ -735,7 +723,7 @@ class TestKeypairShow(TestKeypair):
|
|
|
735
723
|
self.assertEqual(self.data, data)
|
|
736
724
|
|
|
737
725
|
def test_keypair_show_public(self):
|
|
738
|
-
self.keypair =
|
|
726
|
+
self.keypair = sdk_fakes.generate_fake_resource(_keypair.Keypair)
|
|
739
727
|
self.compute_sdk_client.find_keypair.return_value = self.keypair
|
|
740
728
|
|
|
741
729
|
arglist = ['--public-key', self.keypair.name]
|
|
@@ -751,7 +739,7 @@ class TestKeypairShow(TestKeypair):
|
|
|
751
739
|
def test_keypair_show_with_user(self):
|
|
752
740
|
self.set_compute_api_version('2.10')
|
|
753
741
|
|
|
754
|
-
self.keypair =
|
|
742
|
+
self.keypair = sdk_fakes.generate_fake_resource(_keypair.Keypair)
|
|
755
743
|
self.compute_sdk_client.find_keypair.return_value = self.keypair
|
|
756
744
|
|
|
757
745
|
self.data = (
|
|
@@ -767,22 +755,22 @@ class TestKeypairShow(TestKeypair):
|
|
|
767
755
|
|
|
768
756
|
arglist = [
|
|
769
757
|
'--user',
|
|
770
|
-
|
|
758
|
+
self._user.name,
|
|
771
759
|
self.keypair.name,
|
|
772
760
|
]
|
|
773
761
|
verifylist = [
|
|
774
|
-
('user',
|
|
762
|
+
('user', self._user.name),
|
|
775
763
|
('name', self.keypair.name),
|
|
776
764
|
]
|
|
777
765
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
778
766
|
|
|
779
767
|
columns, data = self.cmd.take_action(parsed_args)
|
|
780
768
|
|
|
781
|
-
self.users_mock.get.assert_called_with(
|
|
769
|
+
self.users_mock.get.assert_called_with(self._user.name)
|
|
782
770
|
self.compute_sdk_client.find_keypair.assert_called_with(
|
|
783
771
|
self.keypair.name,
|
|
784
772
|
ignore_missing=False,
|
|
785
|
-
user_id=
|
|
773
|
+
user_id=self._user.id,
|
|
786
774
|
)
|
|
787
775
|
|
|
788
776
|
self.assertEqual(self.columns, columns)
|
|
@@ -791,14 +779,14 @@ class TestKeypairShow(TestKeypair):
|
|
|
791
779
|
def test_keypair_show_with_user_pre_v210(self):
|
|
792
780
|
self.set_compute_api_version('2.9')
|
|
793
781
|
|
|
794
|
-
self.keypair =
|
|
782
|
+
self.keypair = sdk_fakes.generate_fake_resource(_keypair.Keypair)
|
|
795
783
|
arglist = [
|
|
796
784
|
'--user',
|
|
797
|
-
|
|
785
|
+
self._user.name,
|
|
798
786
|
self.keypair.name,
|
|
799
787
|
]
|
|
800
788
|
verifylist = [
|
|
801
|
-
('user',
|
|
789
|
+
('user', self._user.name),
|
|
802
790
|
('name', self.keypair.name),
|
|
803
791
|
]
|
|
804
792
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -21,7 +21,9 @@ from unittest import mock
|
|
|
21
21
|
import uuid
|
|
22
22
|
|
|
23
23
|
import iso8601
|
|
24
|
+
from openstack.compute.v2 import server_group as _server_group
|
|
24
25
|
from openstack import exceptions as sdk_exceptions
|
|
26
|
+
from openstack.test import fakes as sdk_fakes
|
|
25
27
|
from osc_lib.cli import format_columns
|
|
26
28
|
from osc_lib import exceptions
|
|
27
29
|
from osc_lib import utils as common_utils
|
|
@@ -1165,7 +1167,7 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1165
1167
|
self.server.id, ignore_missing=False
|
|
1166
1168
|
)
|
|
1167
1169
|
self.compute_sdk_client.add_security_group_to_server.assert_called_once_with(
|
|
1168
|
-
self.server, 'fake_sg'
|
|
1170
|
+
self.server, {'name': 'fake_sg'}
|
|
1169
1171
|
)
|
|
1170
1172
|
mock_find_nova_net_sg.assert_called_once_with(
|
|
1171
1173
|
self.compute_sdk_client, 'fake_sg'
|
|
@@ -1186,7 +1188,7 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1186
1188
|
self.server.id, ignore_missing=False
|
|
1187
1189
|
)
|
|
1188
1190
|
self.compute_sdk_client.add_security_group_to_server.assert_called_once_with(
|
|
1189
|
-
self.server, 'fake_sg'
|
|
1191
|
+
self.server, {'name': 'fake_sg'}
|
|
1190
1192
|
)
|
|
1191
1193
|
self.assertIsNone(result)
|
|
1192
1194
|
|
|
@@ -1375,7 +1377,9 @@ class TestServerCreate(TestServer):
|
|
|
1375
1377
|
self.assertEqual(self.datalist(), data)
|
|
1376
1378
|
|
|
1377
1379
|
def test_server_create_with_options(self):
|
|
1378
|
-
server_group =
|
|
1380
|
+
server_group = sdk_fakes.generate_fake_resource(
|
|
1381
|
+
_server_group.ServerGroup
|
|
1382
|
+
)
|
|
1379
1383
|
self.compute_sdk_client.find_server_group.return_value = server_group
|
|
1380
1384
|
|
|
1381
1385
|
security_group = network_fakes.create_one_security_group()
|
|
@@ -1544,6 +1548,60 @@ class TestServerCreate(TestServer):
|
|
|
1544
1548
|
self.assertEqual(self.columns, columns)
|
|
1545
1549
|
self.assertEqual(self.datalist(), data)
|
|
1546
1550
|
|
|
1551
|
+
def test_server_create_with_no_security_group(self):
|
|
1552
|
+
arglist = [
|
|
1553
|
+
'--image',
|
|
1554
|
+
self.image.id,
|
|
1555
|
+
'--flavor',
|
|
1556
|
+
self.flavor.id,
|
|
1557
|
+
'--no-security-group',
|
|
1558
|
+
self.server.name,
|
|
1559
|
+
]
|
|
1560
|
+
verifylist = [
|
|
1561
|
+
('image', self.image.id),
|
|
1562
|
+
('flavor', self.flavor.id),
|
|
1563
|
+
('key_name', None),
|
|
1564
|
+
('properties', None),
|
|
1565
|
+
('security_groups', []),
|
|
1566
|
+
('hints', {}),
|
|
1567
|
+
('server_group', None),
|
|
1568
|
+
('config_drive', False),
|
|
1569
|
+
('password', None),
|
|
1570
|
+
('server_name', self.server.name),
|
|
1571
|
+
]
|
|
1572
|
+
|
|
1573
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1574
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
1575
|
+
|
|
1576
|
+
self.compute_sdk_client.find_flavor.assert_has_calls(
|
|
1577
|
+
[mock.call(self.flavor.id, ignore_missing=False)] * 2
|
|
1578
|
+
)
|
|
1579
|
+
self.network_client.find_security_group.assert_not_called()
|
|
1580
|
+
self.image_client.find_image.assert_called_once_with(
|
|
1581
|
+
self.image.id, ignore_missing=False
|
|
1582
|
+
)
|
|
1583
|
+
self.compute_sdk_client.create_server.assert_called_once_with(
|
|
1584
|
+
name=self.server.name,
|
|
1585
|
+
image_id=self.image.id,
|
|
1586
|
+
flavor_id=self.flavor.id,
|
|
1587
|
+
min_count=1,
|
|
1588
|
+
max_count=1,
|
|
1589
|
+
security_groups=[],
|
|
1590
|
+
networks=[],
|
|
1591
|
+
block_device_mapping=[
|
|
1592
|
+
{
|
|
1593
|
+
'uuid': self.image.id,
|
|
1594
|
+
'boot_index': 0,
|
|
1595
|
+
'source_type': 'image',
|
|
1596
|
+
'destination_type': 'local',
|
|
1597
|
+
'delete_on_termination': True,
|
|
1598
|
+
},
|
|
1599
|
+
],
|
|
1600
|
+
)
|
|
1601
|
+
|
|
1602
|
+
self.assertEqual(self.columns, columns)
|
|
1603
|
+
self.assertEqual(self.datalist(), data)
|
|
1604
|
+
|
|
1547
1605
|
def test_server_create_with_network(self):
|
|
1548
1606
|
network_net1 = network_fakes.create_one_network()
|
|
1549
1607
|
network_net2 = network_fakes.create_one_network()
|
|
@@ -7400,7 +7458,7 @@ class TestServerRemoveSecurityGroup(TestServer):
|
|
|
7400
7458
|
self.server.id, ignore_missing=False
|
|
7401
7459
|
)
|
|
7402
7460
|
self.compute_sdk_client.remove_security_group_from_server.assert_called_once_with(
|
|
7403
|
-
self.server, 'fake_sg'
|
|
7461
|
+
self.server, {'name': 'fake_sg'}
|
|
7404
7462
|
)
|
|
7405
7463
|
mock_find_nova_net_sg.assert_called_once_with(
|
|
7406
7464
|
self.compute_sdk_client, 'fake_sg'
|
|
@@ -7421,7 +7479,7 @@ class TestServerRemoveSecurityGroup(TestServer):
|
|
|
7421
7479
|
self.server.id, ignore_missing=False
|
|
7422
7480
|
)
|
|
7423
7481
|
self.compute_sdk_client.remove_security_group_from_server.assert_called_once_with(
|
|
7424
|
-
self.server, 'fake_sg'
|
|
7482
|
+
self.server, {'name': 'fake_sg'}
|
|
7425
7483
|
)
|
|
7426
7484
|
self.assertIsNone(result)
|
|
7427
7485
|
|