@@ -53,8 +53,6 @@ def __init__(self, env_layer, execution_config, composite_logger, telemetry_writ
53
53
54
54
self .stopwatch = Stopwatch (self .env_layer , self .telemetry_writer , self .composite_logger )
55
55
56
- self .__org_expected_install_packages_list = None
57
- self .__org_expected_install_packages_version_list = None
58
56
self .__enable_installation_warning_status = False
59
57
60
58
def start_installation (self , simulate = False ):
@@ -128,9 +126,6 @@ def start_installation(self, simulate=False):
128
126
overall_patch_installation_successful = bool (update_run_successful and not maintenance_window_exceeded )
129
127
# NOTE: Not updating installation substatus at this point because we need to wait for the implicit/second assessment to complete first, as per CRP's instructions
130
128
131
- # Reset expected packages and versions list:
132
- self .__reset_expected_packages_and_version_list ()
133
-
134
129
return overall_patch_installation_successful
135
130
136
131
def write_installer_perf_logs (self , patch_operation_successful , installed_patch_count , retry_count , maintenance_window , maintenance_window_exceeded , task_status , error_msg ):
@@ -260,10 +255,6 @@ def install_updates(self, maintenance_window, package_manager, simulate=False):
260
255
self .status_handler .set_package_install_status (self .skipped_esm_packages , self .skipped_esm_package_versions , Constants .FAILED )
261
256
self .composite_logger .log ("\n List of packages to be updated: \n " + str (packages ))
262
257
263
- # Store the original list of packages and versions that were intended to be installed
264
- self .__org_expected_install_packages_list = list (packages )
265
- self .__org_expected_install_packages_version_list = list (package_versions )
266
-
267
258
sec_packages , sec_package_versions = self .package_manager .get_security_updates ()
268
259
self .telemetry_writer .write_event ("Security packages out of the final package list: " + str (sec_packages ), Constants .TelemetryEventLevel .Verbose )
269
260
self .status_handler .set_package_install_status_classification (sec_packages , sec_package_versions , classification = "Security" )
@@ -844,23 +835,29 @@ def __log_progress_status(self, maintenance_window, installed_update_count):
844
835
self .composite_logger .log (progress_status )
845
836
846
837
# region - Failed packages retry succeeded
847
- def __reset_expected_packages_and_version_list (self ):
848
- self .__org_expected_install_packages_list = None
849
- self .__org_expected_install_packages_version_list = None
850
-
851
838
def __check_if_all_packages_installed (self ):
852
839
#type (none) -> bool
853
- """ Check if all supposed packages are installed """
840
+ """ Check if all supposed security and critical packages are installed """
854
841
# Get the list of installed packages
855
842
installed_packages_list = self .status_handler .get_installation_packages_list ()
856
- # Create a list to store uninstalled packages
857
- uninstalled_packages_list = [
858
- (pkg , ver ) for pkg , ver in zip (self .__org_expected_install_packages_list , self .__org_expected_install_packages_version_list )
859
- if not any (installed_pkg ['name' ] == pkg and installed_pkg ['version' ] == ver and installed_pkg ['patchInstallationState' ] == Constants .INSTALLED for
860
- installed_pkg in installed_packages_list )
861
- ]
862
- # Return True if all packages are installed, otherwise return False
863
- return len (uninstalled_packages_list ) == 0
843
+ print ('what is installed_packages_list' , installed_packages_list )
844
+ # Get security and critical packages
845
+ security_critical_packages = []
846
+ for package in installed_packages_list :
847
+ if 'classifications' in package and any (classification in ['Security' , 'Critical' ] for classification in package ['classifications' ]):
848
+ security_critical_packages .append (package )
849
+
850
+ # Return false there's no security/critical packages
851
+ if len (security_critical_packages ) == 0 :
852
+ return False
853
+
854
+ # Check if any security/critical package are not installed
855
+ for package in security_critical_packages :
856
+ if package ['patchInstallationState' ] != Constants .INSTALLED :
857
+ return False
858
+
859
+ # All security/critical packages are installed
860
+ return True
864
861
865
862
def __sent_metadata_health_store (self ):
866
863
self .composite_logger .log_debug ("[PI] Reviewing final healthstore record write. [HealthStoreId={0}][MaintenanceRunId={1}]" .format (str (self .execution_config .health_store_id ), str (self .execution_config .maintenance_run_id )))
0 commit comments