@@ -699,6 +699,26 @@ def _set_container_members(self):
699699 def _set_container_raid_level (self ):
700700 pass
701701
702+ def _filter_disks (self , disks , min_free , initialize = True ):
703+ filtered_disks = []
704+
705+ for d in disks :
706+ if not d .partitioned and d .format .type is None and initialize :
707+ log .info ("Partition set factory: initializing disk %s" )
708+ self .storage .initialize_disk (d )
709+
710+ if not d .partitioned and d .format .type is not None :
711+ log .debug ("Ignoring disk %s: format %s found on disk" , d .name , d .format .type )
712+ if not d .format .supported :
713+ log .debug ("Ignoring disk %s: format %s is not supported" , d .name , d .format .name )
714+ elif d .format .free < min_free :
715+ log .debug ("Ignoring disk %s: not enough free space. Required: %s, free: %s" ,
716+ d .name , min_free , d .format .free )
717+ else :
718+ filtered_disks .append (d )
719+
720+ return filtered_disks
721+
702722 #
703723 # properties and methods related to the factory device
704724 #
@@ -1086,15 +1106,7 @@ def _get_new_device(self, *args, **kwargs):
10861106 return device
10871107
10881108 def _configure (self ):
1089- disks = []
1090- for disk in self .disks :
1091- if not disk .partitioned :
1092- log .debug ("removing unpartitioned disk %s" , disk .name )
1093- elif not disk .format .supported :
1094- log .debug ("removing disk with unsupported format %s" , disk .name )
1095- else :
1096- disks .append (disk )
1097-
1109+ disks = self ._filter_disks (self .disks , min_free = Size (0 ))
10981110 if not disks :
10991111 raise DeviceFactoryError ("no usable disks specified for partition" )
11001112
@@ -1195,18 +1207,7 @@ def configure(self):
11951207
11961208 # drop any new disks that don't have free space
11971209 min_free = min (Size ("500MiB" ), self .parent_factory .size )
1198-
1199- for d in add_disks :
1200- if not d .partitioned :
1201- log .debug ("Ignoring disk %s: disk is not partitioned" , d .name )
1202- elif not d .format .supported :
1203- log .debug ("Ignoring disk %s: format %s is not supported" , d .name , d .format .name )
1204- elif d .format .free < min_free :
1205- log .debug ("Ignoring disk %s: not enough free space. Required: %s, free: %s" ,
1206- d .name , min_free , d .format .free )
1207-
1208- add_disks = [d for d in add_disks if d .partitioned and
1209- d .format .supported and d .format .free >= min_free ]
1210+ add_disks = self ._filter_disks (add_disks , min_free )
12101211
12111212 log .debug ("add_disks: %s" , [d .name for d in add_disks ])
12121213 log .debug ("remove_disks: %s" , [d .name for d in remove_disks ])
0 commit comments