4444 is_eol_version ,
4545 get_lifecycles ,
4646 load_mails_from_environment ,
47- get_env_variable ,
4847)
4948from eol_checker .constants import OS_NAMES , CONTAINER_NAMES
5049
@@ -60,21 +59,21 @@ class ContainerEolChecker(object):
6059
6160 def __init__ (self , debug : bool = False , send_email : bool = False ):
6261 self .today = date .today ()
62+ # Used for OpenShift CronJob
63+ env_debug = os .getenv ("DEBUG" )
64+ debug_enabled = (
65+ debug if env_debug is None else env_debug .strip ().lower () in {"1" , "true" , "yes" , "on" }
66+ )
67+ self ._setup_logger (debug = debug_enabled )
6368 self .lifecycle_data : Any = None
6469 self .eol_images : dict = {}
6570 self .already_eol_images : dict = {}
6671 self .approaching_eol_images : dict = {}
6772 self .os_name : str = ""
68- self .default_mails : List [str ] = os .getenv ("DEFAULT_EMAILS" , "" ).split ("," )
73+ self .default_mails : List [str ] = os .getenv ("DEFAULT_EMAILS" ).split ("," )
6974 self .container_to_analyze : str = ""
7075 self .jira_fetcher = JiraFetcher ()
7176 self .eol_sme_mails = load_mails_from_environment ()
72- # Used for OpenShift CronJob
73- env_debug = os .getenv ("DEBUG" )
74- debug_enabled = (
75- debug if env_debug is None else env_debug .strip ().lower () in {"1" , "true" , "yes" , "on" }
76- )
77- self ._setup_logger (debug = debug_enabled )
7877
7978 env_send_email = os .getenv ("SEND_EMAIL" )
8079 self .send_email = (
@@ -150,7 +149,7 @@ def analyze_lifecycle_yaml(self, data: Any) -> None:
150149 for lifecycle in get_lifecycles (data ):
151150 self .check_enddate (lifecycle )
152151
153- def _get_jira_msg (self , report_type : str , enddate : str ) -> str :
152+ def _get_jira_msg (self , report_type : str , enddate : str , jira_id : str = "" ) -> str :
154153 """
155154 Generate a Jira message.
156155 Args:
@@ -159,12 +158,15 @@ def _get_jira_msg(self, report_type: str, enddate: str) -> str:
159158 Returns:
160159 The Jira message.
161160 """
162- jira_msg = (
163- "Connection to Jira not available"
164- if self .jira_fetcher .jira is None
165- else "Jira ticket is not filled. Use Jira issue template:"
166- )
167- return self .bold_line + f"{ report_type } in { enddate } " + self .bold_line_end + f". { jira_msg } "
161+ jira_url = get_jira_ticket_url (jira_issue_id = self .jira_fetcher .jira_deprecation_ticket )
162+ url = f"<a href='{ jira_url } '>{ jira_url } </a>" if self .send_email else jira_url
163+ msg = "Jira ticket is not filled. Use this template: "
164+ if jira_id != "" :
165+ jira_url = get_jira_ticket_url (jira_issue_id = jira_id )
166+ url = f"<a href='{ jira_url } '>{ jira_url } </a>" if self .send_email else jira_url
167+ msg = "Jira ticket is already filed: "
168+ jira_msg = f"{ msg } { url } "
169+ return self .bold_line + f"{ report_type } in { enddate } . " + self .bold_line_end + jira_msg
168170
169171 def summary_for_images (self , images : dict , os_name : str , eol_type : bool = True ) -> str :
170172 """
@@ -188,27 +190,25 @@ def summary_for_images(self, images: dict, os_name: str, eol_type: bool = True)
188190 logger .info ("Processing container: '%s' with values: '%s'" , container_name , values )
189191 stream_name = values ["name" ]
190192 if self .send_email :
191- for mail in self .eol_sme_mails [container_name ]:
193+ mails = [
194+ self .eol_sme_mails [group ]
195+ for group in self .eol_sme_mails .keys ()
196+ if container_name .startswith (group )
197+ ]
198+ logger .debug ("Mails: '%s' for container: '%s'" , mails , container_name )
199+ for mail in mails :
192200 if mail and mail not in self .default_mails :
193- self .default_mails .append (mail )
201+ self .default_mails .extend (mail )
194202 if self .jira_fetcher .jira is None :
195203 logger .error ("Connection to Jira failed" )
196204 jira_msg = self ._get_jira_msg (report_type = report_type , enddate = values ["enddate" ])
197- jira_id = self .jira_fetcher .jira_deprecation_ticket
198- jira_url = get_jira_ticket_url (jira_issue_id = jira_id )
199- url = f"<a href='{ jira_url } '>{ jira_url } </a>" if self .send_email else jira_url
200- report += f"{ stream_name } for { os_name } { jira_msg } { url } { self .end_line } "
205+ report += f"{ stream_name } for { os_name } .{ jira_msg } { self .end_line } "
201206 continue
202- jira_msg = self ._get_jira_msg (report_type = report_type , enddate = values ["enddate" ])
203- jira_msg += "Jira ticket is already filed:"
204- jira_id = self .jira_fetcher .is_jira_filled_for_container (stream_name = stream_name )
205- if jira_id == "" :
206- jira_msg = self ._get_jira_msg (report_type = report_type , enddate = values ["enddate" ])
207- jira_id = self .jira_fetcher .jira_deprecation_ticket
208- jira_url = get_jira_ticket_url (jira_issue_id = jira_id )
209- url = f"<a href='{ jira_url } '>{ jira_url } </a>" if self .send_email else jira_url
210- report += f"{ stream_name } for { os_name } { jira_msg } { url } { self .end_line } "
211- report += "\n "
207+ jira_id = self .jira_fetcher .is_jira_filed_for_container (stream_name = stream_name )
208+ jira_msg = self ._get_jira_msg (
209+ report_type = report_type , enddate = values ["enddate" ], jira_id = jira_id
210+ )
211+ report += f"{ stream_name } for { os_name } { jira_msg } { self .end_line } \n "
212212
213213 return report
214214
@@ -265,26 +265,25 @@ def send_emails(self):
265265 Send emails with the container EOL information.
266266 """
267267 logger .debug ("Sending emails is enabled" )
268- logger .debug (", " . join ( self .default_mails ) )
269- self .smtp_server = get_env_variable ("SMTP_SERVER" , "smtp.redhat.com" )
270- self .smtp_port = int (get_env_variable ("SMTP_PORT" , "25" ))
268+ logger .debug (self .default_mails )
269+ self .smtp_server = os . getenv ("SMTP_SERVER" , "smtp.redhat.com" )
270+ self .smtp_port = int (os . getenv ("SMTP_PORT" , "25" ))
271271
272272 send_from = "phracek@redhat.com"
273- send_to = self .default_mails
274273 self .mime_msg ["From" ] = send_from
275- self .mime_msg ["To" ] = ", " .join (send_to )
274+ self .mime_msg ["To" ] = "," .join (self . default_mails )
276275 self .mime_msg ["Subject" ] = "Container EOL Checker Report"
277276 logger .debug (
278277 "Sending email with subject: 'Container EOL Checker Report' to: '%s'" ,
279- send_to ,
278+ self . default_mails ,
280279 )
281280 logger .debug ("Email body: '%s'" , self .body )
282281 logger .debug ("Message: '%s'" , self .mime_msg )
283282 self .mime_msg .attach (MIMEText (self .body , "html" ))
284283 try :
285284 smtp = SMTP (self .smtp_server , int (self .smtp_port ))
286285 smtp .set_debuglevel (5 )
287- smtp .sendmail (send_from , send_to , self .mime_msg .as_string ())
286+ smtp .sendmail (send_from , self . default_mails , self .mime_msg .as_string ())
288287 except smtplib .SMTPRecipientsRefused as e :
289288 logger .error ("Error sending email(SMTPRecipientsRefused): %s" , e .strerror )
290289 except smtplib .SMTPException as e :
@@ -297,12 +296,13 @@ def run(self):
297296 """
298297 Run the container EOL checker.
299298 """
299+ logger .debug ("Variables:\n %s" , vars (self ))
300300 logger .info ("Running container EOL checker" )
301301 if self .jira_fetcher .jira is None :
302302 logger .error ("Connection to Jira failed" )
303303 else :
304304 self .jira_fetcher .get_jira_deprecation_details ()
305- self .jira_fetcher .check_if_jira_is_filled ()
305+ self .jira_fetcher .check_if_jira_is_filed ()
306306 self .analyze_containers ()
307307 self .body = self .summary_report ()
308308 logger .info (self .body )
0 commit comments