@@ -4587,7 +4587,6 @@ class _TestServerList(TestServer):
45874587 'Pinned Availability Zone' ,
45884588 'Host' ,
45894589 'Properties' ,
4590- 'Scheduler Hints' ,
45914590 )
45924591 columns_all_projects = (
45934592 'ID' ,
@@ -4738,7 +4737,6 @@ def test_server_list_long_option(self):
47384737 getattr (s , 'pinned_availability_zone' , '' ),
47394738 server .HostColumn (getattr (s , 'hypervisor_hostname' )),
47404739 format_columns .DictColumn (s .metadata ),
4741- format_columns .DictListColumn (None ),
47424740 )
47434741 for s in self .servers
47444742 )
@@ -4817,8 +4815,6 @@ def test_server_list_column_option(self):
48174815 'Host' ,
48184816 '-c' ,
48194817 'Properties' ,
4820- '-c' ,
4821- 'Scheduler Hints' ,
48224818 '--long' ,
48234819 ]
48244820 verifylist = [
@@ -4841,7 +4837,6 @@ def test_server_list_column_option(self):
48414837 self .assertIn ('Pinned Availability Zone' , columns )
48424838 self .assertIn ('Host' , columns )
48434839 self .assertIn ('Properties' , columns )
4844- self .assertIn ('Scheduler Hints' , columns )
48454840 self .assertCountEqual (columns , set (columns ))
48464841
48474842 def test_server_list_no_name_lookup_option (self ):
@@ -5255,7 +5250,6 @@ def test_server_list_long_with_host_status_v216(self):
52555250 getattr (s , 'pinned_availability_zone' , '' ),
52565251 server .HostColumn (getattr (s , 'hypervisor_hostname' )),
52575252 format_columns .DictColumn (s .metadata ),
5258- format_columns .DictListColumn (s .scheduler_hints ),
52595253 )
52605254 for s in self .servers
52615255 )
@@ -5312,7 +5306,6 @@ def test_server_list_long_with_host_status_v216(self):
53125306 getattr (s , 'pinned_availability_zone' , '' ),
53135307 server .HostColumn (getattr (s , 'hypervisor_hostname' )),
53145308 format_columns .DictColumn (s .metadata ),
5315- format_columns .DictListColumn (s .scheduler_hints ),
53165309 s .host_status ,
53175310 )
53185311 for s in servers
@@ -5546,6 +5539,159 @@ def test_server_list_v269_with_partial_constructs(self):
55465539 self .assertEqual (expected_row , partial_server )
55475540
55485541
5542+ class TestServerListV2100 (_TestServerList ):
5543+ columns = (
5544+ 'ID' ,
5545+ 'Name' ,
5546+ 'Status' ,
5547+ 'Networks' ,
5548+ 'Image' ,
5549+ 'Flavor' ,
5550+ )
5551+ columns_long = (
5552+ 'ID' ,
5553+ 'Name' ,
5554+ 'Status' ,
5555+ 'Task State' ,
5556+ 'Power State' ,
5557+ 'Networks' ,
5558+ 'Image Name' ,
5559+ 'Image ID' ,
5560+ 'Flavor' ,
5561+ 'Availability Zone' ,
5562+ 'Pinned Availability Zone' ,
5563+ 'Host' ,
5564+ 'Properties' ,
5565+ 'Scheduler Hints' ,
5566+ )
5567+
5568+ def setUp (self ):
5569+ super ().setUp ()
5570+ self .set_compute_api_version ('2.100' )
5571+
5572+ self .image_client .images .return_value = [
5573+ sdk_fakes .generate_fake_resource (
5574+ _image .Image , id = s .image ['id' ], name = self .image .name
5575+ )
5576+ # Image will be an empty string if boot-from-volume
5577+ for s in self .servers
5578+ if s .image
5579+ ]
5580+
5581+ self .compute_client .flavors .return_value = [
5582+ sdk_fakes .generate_fake_resource (
5583+ _flavor .Flavor , id = s .flavor ['id' ], name = self .flavor .name
5584+ )
5585+ for s in self .servers
5586+ ]
5587+
5588+ self .data = tuple (
5589+ (
5590+ s .id ,
5591+ s .name ,
5592+ s .status ,
5593+ server .AddressesColumn (s .addresses ),
5594+ # Image will be an empty string if boot-from-volume
5595+ self .image .name if s .image else server .IMAGE_STRING_FOR_BFV ,
5596+ self .flavor .name ,
5597+ )
5598+ for s in self .servers
5599+ )
5600+
5601+ def test_server_list_long_option (self ):
5602+ self .data = tuple (
5603+ (
5604+ s .id ,
5605+ s .name ,
5606+ s .status ,
5607+ getattr (s , 'task_state' ),
5608+ server .PowerStateColumn (getattr (s , 'power_state' )),
5609+ server .AddressesColumn (s .addresses ),
5610+ # Image will be an empty string if boot-from-volume
5611+ self .image .name if s .image else server .IMAGE_STRING_FOR_BFV ,
5612+ s .image ['id' ] if s .image else server .IMAGE_STRING_FOR_BFV ,
5613+ self .flavor .name ,
5614+ getattr (s , 'availability_zone' ),
5615+ getattr (s , 'pinned_availability_zone' , '' ),
5616+ server .HostColumn (getattr (s , 'hypervisor_hostname' )),
5617+ format_columns .DictColumn (s .metadata ),
5618+ format_columns .DictListColumn (None ),
5619+ )
5620+ for s in self .servers
5621+ )
5622+ arglist = [
5623+ '--long' ,
5624+ ]
5625+ verifylist = [
5626+ ('all_projects' , False ),
5627+ ('long' , True ),
5628+ ]
5629+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
5630+
5631+ columns , data = self .cmd .take_action (parsed_args )
5632+ self .compute_client .servers .assert_called_with (** self .kwargs )
5633+ image_ids = {s .image ['id' ] for s in self .servers if s .image }
5634+ self .image_client .images .assert_called_once_with (
5635+ id = f'in:{ "," .join (image_ids )} ' ,
5636+ )
5637+ self .compute_client .flavors .assert_called_once_with (is_public = None )
5638+ self .assertEqual (self .columns_long , columns )
5639+ self .assertEqual (self .data , tuple (data ))
5640+
5641+ def test_server_list_column_option (self ):
5642+ arglist = [
5643+ '-c' ,
5644+ 'Project ID' ,
5645+ '-c' ,
5646+ 'User ID' ,
5647+ '-c' ,
5648+ 'Created At' ,
5649+ '-c' ,
5650+ 'Security Groups' ,
5651+ '-c' ,
5652+ 'Task State' ,
5653+ '-c' ,
5654+ 'Power State' ,
5655+ '-c' ,
5656+ 'Image ID' ,
5657+ '-c' ,
5658+ 'Flavor ID' ,
5659+ '-c' ,
5660+ 'Availability Zone' ,
5661+ '-c' ,
5662+ 'Pinned Availability Zone' ,
5663+ '-c' ,
5664+ 'Host' ,
5665+ '-c' ,
5666+ 'Properties' ,
5667+ '-c' ,
5668+ 'Scheduler Hints' ,
5669+ '--long' ,
5670+ ]
5671+ verifylist = [
5672+ ('long' , True ),
5673+ ]
5674+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
5675+
5676+ columns , data = self .cmd .take_action (parsed_args )
5677+
5678+ self .compute_client .servers .assert_called_with (** self .kwargs )
5679+ self .assertIn ('Project ID' , columns )
5680+ self .assertIn ('User ID' , columns )
5681+ self .assertIn ('Created At' , columns )
5682+ self .assertIn ('Security Groups' , columns )
5683+ self .assertIn ('Task State' , columns )
5684+ self .assertIn ('Power State' , columns )
5685+ self .assertIn ('Image ID' , columns )
5686+ self .assertIn ('Flavor ID' , columns )
5687+ self .assertIn ('Availability Zone' , columns )
5688+ self .assertIn ('Pinned Availability Zone' , columns )
5689+ self .assertIn ('Host' , columns )
5690+ self .assertIn ('Properties' , columns )
5691+ self .assertIn ('Scheduler Hints' , columns )
5692+ self .assertCountEqual (columns , set (columns ))
5693+
5694+
55495695class TestServerAction (compute_fakes .TestComputev2 ):
55505696 def run_method_with_sdk_servers (self , method_name , server_count ):
55515697 servers = compute_fakes .create_servers (count = server_count )
0 commit comments