@@ -2272,6 +2272,50 @@ def test_server_list_with_invalid_changes_since(self, mock_parse_isotime):
22722272 'Invalid time value'
22732273 )
22742274
2275+ def test_server_list_v269_with_partial_constructs (self ):
2276+ self .app .client_manager .compute .api_version = \
2277+ api_versions .APIVersion ('2.69' )
2278+ arglist = []
2279+ verifylist = []
2280+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2281+ # include "partial results" from non-responsive part of
2282+ # infrastructure.
2283+ server_dict = {
2284+ "id" : "server-id-95a56bfc4xxxxxx28d7e418bfd97813a" ,
2285+ "status" : "UNKNOWN" ,
2286+ "tenant_id" : "6f70656e737461636b20342065766572" ,
2287+ "created" : "2018-12-03T21:06:18Z" ,
2288+ "links" : [
2289+ {
2290+ "href" : "http://fake/v2.1/" ,
2291+ "rel" : "self"
2292+ },
2293+ {
2294+ "href" : "http://fake" ,
2295+ "rel" : "bookmark"
2296+ }
2297+ ],
2298+ # We need to pass networks as {} because its defined as a property
2299+ # of the novaclient Server class which gives {} by default. If not
2300+ # it will fail at formatting the networks info later on.
2301+ "networks" : {}
2302+ }
2303+ server = compute_fakes .fakes .FakeResource (
2304+ info = server_dict ,
2305+ )
2306+ self .servers .append (server )
2307+ columns , data = self .cmd .take_action (parsed_args )
2308+ # get the first three servers out since our interest is in the partial
2309+ # server.
2310+ next (data )
2311+ next (data )
2312+ next (data )
2313+ partial_server = next (data )
2314+ expected_row = (
2315+ 'server-id-95a56bfc4xxxxxx28d7e418bfd97813a' , '' ,
2316+ 'UNKNOWN' , '' , '' , '' )
2317+ self .assertEqual (expected_row , partial_server )
2318+
22752319
22762320class TestServerLock (TestServer ):
22772321
0 commit comments