99logger = logging .getLogger (__name__ )
1010
1111
12- TESTCASES = ('scs-0100-syntax-check' , 'scs-0100-semantics-check' , 'flavor-name-check' )
1312STRATEGY = flavor_names .ParsingStrategy (
1413 vstr = 'v3' ,
1514 parsers = (flavor_names .parser_v3 , ),
@@ -32,25 +31,14 @@ def compute_scs_flavors(flavors: typing.List[openstack.compute.v2.flavor.Flavor]
3231 try :
3332 flavorname = parser (flv .name )
3433 except ValueError as exc :
35- logger .info (f"error parsing { flv .name } : { exc } " )
36- flavorname = None
34+ flavorname = f"error parsing { flv .name } : { exc } "
3735 result .append ((flv , flavorname ))
3836 return result
3937
4038
41- def _log_errors (cause , names ):
42- """helper to construct result for testcase"""
43- if not names :
44- return []
45- message = f"{ cause } with flavor(s): { ', ' .join (sorted (names ))} "
46- logger .error (message )
47- return message
48-
49-
5039def compute_scs_0100_syntax_check (scs_flavors : list ) -> bool :
5140 """This test ensures that each SCS flavor is indeed named correctly."""
52- problems = [flv .name for flv , flavorname in scs_flavors if not flavorname ]
53- return _log_errors ('syntax problems' , problems )
41+ return [flavorname for _ , flavorname in scs_flavors if isinstance (flavorname , str )]
5442
5543
5644def compute_scs_0100_semantics_check (scs_flavors : list ) -> bool :
@@ -61,36 +49,31 @@ def compute_scs_0100_semantics_check(scs_flavors: list) -> bool:
6149 NOTE that this test is incomplete; it only checks the most obvious properties.
6250 See also <https://github.com/SovereignCloudStack/standards/issues/554>.
6351 """
64- problems = set ()
52+ problems = []
6553 for flv , flavorname in scs_flavors :
66- if not flavorname :
54+ if isinstance ( flavorname , str ) :
6755 continue # this case is handled by syntax check
6856 cpuram = flavorname .cpuram
6957 if flv .vcpus < cpuram .cpus :
70- logger .error (f"Flavor { flv .name } CPU overpromise: { flv .vcpus } < { cpuram .cpus } " )
71- problems .add (flv .name )
58+ problems .append (f"CPU overpromise for { flv .name !r} : { flv .vcpus } < { cpuram .cpus } " )
7259 elif flv .vcpus > cpuram .cpus :
73- logger .info (f"Flavor { flv .name } CPU underpromise : { flv .vcpus } > { cpuram .cpus } " )
60+ logger .info (f"CPU underpromise for { flv .name !r } : { flv .vcpus } > { cpuram .cpus } " )
7461 # RAM
7562 flvram = int ((flv .ram + 51 ) / 102.4 ) / 10
7663 # Warn for strange sizes (want integer numbers, half allowed for < 10GiB)
7764 if flvram >= 10 and flvram != int (flvram ) or flvram * 2 != int (flvram * 2 ):
78- logger .info (f"Flavor { flv . name } uses discouraged uneven size of memory { flvram :.1f} GiB" )
65+ logger .info (f"Discouraged uneven size of memory for { flv . name !r } : { flvram :.1f} GiB" )
7966 if flvram < cpuram .ram :
80- logger .error (f"Flavor { flv .name } RAM overpromise { flvram :.1f} < { cpuram .ram :.1f} " )
81- problems .add (flv .name )
67+ problems .append (f"RAM overpromise for { flv .name !r} : { flvram :.1f} < { cpuram .ram :.1f} " )
8268 elif flvram > cpuram .ram :
83- logger .info (f"Flavor { flv .name } RAM underpromise { flvram :.1f} > { cpuram .ram :.1f} " )
69+ logger .info (f"RAM underpromise for { flv .name !r } : { flvram :.1f} > { cpuram .ram :.1f} " )
8470 # Disk could have been omitted
8571 disksize = flavorname .disk .disksize if flavorname .disk else 0
8672 # We have a recommendation for disk size steps
8773 if disksize not in ACC_DISK :
88- logger .info (f"Flavor { flv . name } non -standard disk size { disksize } , should have (5, 10, 20, 50, 100, 200, ...)" )
74+ logger .info (f"Non -standard disk size for { flv . name !r } : { disksize } not in (5, 10, 20, 50, 100, 200, ...)" )
8975 if flv .disk < disksize :
90- logger .error (f"Flavor { flv .name } disk overpromise { flv .disk } < { disksize } " )
91- problems .add (flv .name )
76+ problems .append (f"Disk overpromise for { flv .name !r} : { flv .disk } < { disksize } " )
9277 elif flv .disk > disksize :
93- logger .info (f"Flavor { flv .name } disk underpromise { flv .disk } > { disksize } " )
94- if problems :
95- logger .error (f"scs-100-semantics-check: flavor(s) failed: { ', ' .join (sorted (problems ))} " )
96- return not problems
78+ logger .info (f"Disk underpromise for { flv .name !r} : { flv .disk } > { disksize } " )
79+ return problems
0 commit comments