We've had a few complaints about our bugzilla sync script sending out too much email. I'd like to apply this hotfix to the export-bugzilla script on fas01 (where the cron job runs) and the associated config change to stop sending out email to the invalid users.
Can I get two +1's?
-Toshio
diff --git a/scripts/export-bugzilla.py b/scripts/export-bugzilla.py index 413cd27..2306b6f 100755 --- a/scripts/export-bugzilla.py +++ b/scripts/export-bugzilla.py @@ -14,7 +14,7 @@ from email.Message import Message import turbogears import bugzilla from turbogears import config -turbogears.update_config(configfile="/etc/export-bugzilla.cfg") +turbogears.update_config(configfile="./export-bugzilla.cfg") from turbogears.database import session from fas.model import BugzillaQueue
@@ -23,6 +23,7 @@ BZUSER = config.get('bugzilla.username') BZPASS = config.get('bugzilla.password') MAILSERVER = config.get('mail.server', 'localhost') ADMINEMAIL = config.get('mail.admin_email', 'admin@fedoraproject.org') +NOTIFYEMAIL = config.get('mail.notify_email', ['admin@fedoraproject.org'])
if __name__ == '__main__': opts, args = getopt.getopt(sys.argv[1:], '', ('usage', 'help')) @@ -77,39 +78,66 @@ if __name__ == '__main__': session.delete(entry) session.flush()
- # Mail the people without bugzilla accounts - for person in no_bz_account: - smtplib.SMTP(MAILSERVER) - msg = Message() - message = '''Hello %(name)s, +# Mail the people without bugzilla accounts + if '$USER' in NOTIFYEMAIL: + for person in no_bz_account: + smtplib.SMTP(MAILSERVER) + msg = Message() + message = '''Hello %(name)s, + + As a Fedora packager, we grant you permissions to make changes to bugs in + bugzilla to all Fedora bugs. This lets you work together with other Fedora + developers in an easier fashion. However, to enable this functionality, we + need to have your bugzilla email address stored in the Fedora Account System. + At the moment you have:
-As a Fedora packager, we grant you permissions to make changes to bugs in -bugzilla to all Fedora bugs. This lets you work together with other Fedora -developers in an easier fashion. However, to enable this functionality, we -need to have your bugzilla email address stored in the Fedora Account System. -At the moment you have: + %(email)s
- %(email)s + which bugzilla is telling us is not an account in bugzilla. If you could + please set up an account in bugzilla with this address or change your email + address on your Fedora Account to match an existing bugzilla account this would + let us go forward.
-which bugzilla is telling us is not an account in bugzilla. If you could -please set up an account in bugzilla with this address or change your email -address on your Fedora Account to match an existing bugzilla account this would -let us go forward. + Note: this message is being generated by an automated script. You'll continue + getting this message until the problem is resolved. Sorry for the + inconvenience.
-Note: this message is being generated by an automated script. You'll continue -getting this message until the problem is resolved. Sorry for the -inconvenience. + Thank you, + The Fedora Account System + %(admin_email)s + ''' % {'name': person.person.human_name, 'email': person.email, + 'admin_email': ADMINEMAIL} + + msg.add_header('To', person.email) + msg.add_header('From', ADMINEMAIL) + msg.add_header('Subject', 'Fedora Account System and Bugzilla Mismatch') + msg.set_payload(message) + smtp = smtplib.SMTP(MAILSERVER) + smtp.sendmail(ADMINEMAIL, [person.email], msg.as_string()) + smtp.quit() + #print 'Message to %s: %s' % (person.email, message,) + recipients = ', '.join([e for e in NOTIFYEMAIL if e != '$USER']) + if recipients and no_bz_account: + smtplib.SMTP(MAILSERVER) + msg = Message() + people = [] + for person in no_bz_account: + people.append(' %(user)s -- %(name)s -- %(email)s' % + {'name': person.person.human_name, 'email': person.email, + 'user': person.person.username}) + people = '\n'.join(people) + message = ''' +The following people are in the packager group but do not have email addresses +that are valid in bugzilla: +%s
-Thank you, -The Fedora Account System -%(admin_email)s -''' % {'name': person.person.human_name, 'email': person.email, - 'admin_email': ADMINEMAIL} +''' % people
- msg.add_header('To', person.email) msg.add_header('From', ADMINEMAIL) + msg.add_header('To', recipients) msg.add_header('Subject', 'Fedora Account System and Bugzilla Mismatch') msg.set_payload(message)
diff --git a/scripts/export-bugzilla.cfg b/scripts/export-bugzilla.cfg index ead23f6..89d1945 100644 --- a/scripts/export-bugzilla.cfg +++ b/scripts/export-bugzilla.cfg @@ -1,14 +1,19 @@ [global] # bugzilla.url = https://bugdev.devel.redhat.com/bugzilla-cvs/xmlrpc.cgi -# bugzilla.url = https://bugzilla.redhat.com/xmlrpc.cgi -bugzilla.url = "https://bzprx.vip.phx.redhat.com/xmlrpc.cgi" -bugzilla.username = "<%= bugzillaUser %>" -bugzilla.password = "<%= bugzillaPassword %>" +bugzilla.url = "https://bugzilla.redhat.com/xmlrpc.cgi" +#bugzilla.url = "https://bzprx.vip.phx.redhat.com/xmlrpc.cgi" +bugzilla.username = "fedora-admin-xmlrpc@redhat.com" +bugzilla.password = "MOLPiNsy2c"
# Mail server for sending invalid bugzilla account messages -mail.server = 'localhost' +mail.server = 'bastion' mail.admin_email = 'admin@fedoraproject.org'
+# This is a list (*must* have a comma) of email addresses to send messages about +# invalid bugzilla accounts to. The strin '$USER' is special. If present in the +# list, it will send an email to the user whose email address is not in bugzilla. +mail.notify_email = '$USER', 'admin@fedoraproject.org' + # At the moment, we have to extract this information directly from the fas2 # database. We can build a json interface for it at a later date. -sqlalchemy.dburi = "postgres://fedora:bunbunbun@localhost/fas2" +sqlalchemy.dburi = "postgres://fas:DsjBks9dn3Sakz9Gsnd55@db02/fas2"
On Tue, 10 Aug 2010, Toshio Kuratomi wrote:
We've had a few complaints about our bugzilla sync script sending out too much email. I'd like to apply this hotfix to the export-bugzilla script on fas01 (where the cron job runs) and the associated config change to stop sending out email to the invalid users.
Can I get two +1's?
+1 thanks for looking into this.
-Mike
-Toshio
diff --git a/scripts/export-bugzilla.py b/scripts/export-bugzilla.py index 413cd27..2306b6f 100755 --- a/scripts/export-bugzilla.py +++ b/scripts/export-bugzilla.py @@ -14,7 +14,7 @@ from email.Message import Message import turbogears import bugzilla from turbogears import config -turbogears.update_config(configfile="/etc/export-bugzilla.cfg") +turbogears.update_config(configfile="./export-bugzilla.cfg") from turbogears.database import session from fas.model import BugzillaQueue
@@ -23,6 +23,7 @@ BZUSER = config.get('bugzilla.username') BZPASS = config.get('bugzilla.password') MAILSERVER = config.get('mail.server', 'localhost') ADMINEMAIL = config.get('mail.admin_email', 'admin@fedoraproject.org') +NOTIFYEMAIL = config.get('mail.notify_email', ['admin@fedoraproject.org'])
if __name__ == '__main__': opts, args = getopt.getopt(sys.argv[1:], '', ('usage', 'help')) @@ -77,39 +78,66 @@ if __name__ == '__main__': session.delete(entry) session.flush()
- # Mail the people without bugzilla accounts
- for person in no_bz_account:
smtplib.SMTP(MAILSERVER)
msg = Message()
message = '''Hello %(name)s,
+# Mail the people without bugzilla accounts
- if '$USER' in NOTIFYEMAIL:
for person in no_bz_account:
smtplib.SMTP(MAILSERVER)
msg = Message()
message = '''Hello %(name)s,
- As a Fedora packager, we grant you permissions to make changes to bugs in
- bugzilla to all Fedora bugs. This lets you work together with other Fedora
- developers in an easier fashion. However, to enable this functionality, we
- need to have your bugzilla email address stored in the Fedora Account System.
- At the moment you have:
-As a Fedora packager, we grant you permissions to make changes to bugs in -bugzilla to all Fedora bugs. This lets you work together with other Fedora -developers in an easier fashion. However, to enable this functionality, we -need to have your bugzilla email address stored in the Fedora Account System. -At the moment you have:
%(email)s
- %(email)s
- which bugzilla is telling us is not an account in bugzilla. If you could
- please set up an account in bugzilla with this address or change your email
- address on your Fedora Account to match an existing bugzilla account this would
- let us go forward.
-which bugzilla is telling us is not an account in bugzilla. If you could -please set up an account in bugzilla with this address or change your email -address on your Fedora Account to match an existing bugzilla account this would -let us go forward.
- Note: this message is being generated by an automated script. You'll continue
- getting this message until the problem is resolved. Sorry for the
- inconvenience.
-Note: this message is being generated by an automated script. You'll continue -getting this message until the problem is resolved. Sorry for the -inconvenience.
- Thank you,
- The Fedora Account System
- %(admin_email)s
- ''' % {'name': person.person.human_name, 'email': person.email,
'admin_email': ADMINEMAIL}
msg.add_header('To', person.email)
msg.add_header('From', ADMINEMAIL)
msg.add_header('Subject', 'Fedora Account System and Bugzilla Mismatch')
msg.set_payload(message)
smtp = smtplib.SMTP(MAILSERVER)
smtp.sendmail(ADMINEMAIL, [person.email], msg.as_string())
smtp.quit()
#print 'Message to %s: %s' % (person.email, message,)
- recipients = ', '.join([e for e in NOTIFYEMAIL if e != '$USER'])
- if recipients and no_bz_account:
smtplib.SMTP(MAILSERVER)
msg = Message()
people = []
for person in no_bz_account:
people.append(' %(user)s -- %(name)s -- %(email)s' %
{'name': person.person.human_name, 'email': person.email,
'user': person.person.username})
people = '\n'.join(people)
message = '''
+The following people are in the packager group but do not have email addresses +that are valid in bugzilla: +%s
-Thank you, -The Fedora Account System -%(admin_email)s -''' % {'name': person.person.human_name, 'email': person.email,
'admin_email': ADMINEMAIL}
+''' % people
msg.add_header('To', person.email) msg.add_header('From', ADMINEMAIL)
msg.add_header('To', recipients) msg.add_header('Subject', 'Fedora Account System and Bugzilla Mismatch') msg.set_payload(message)
diff --git a/scripts/export-bugzilla.cfg b/scripts/export-bugzilla.cfg index ead23f6..89d1945 100644 --- a/scripts/export-bugzilla.cfg +++ b/scripts/export-bugzilla.cfg @@ -1,14 +1,19 @@ [global] # bugzilla.url = https://bugdev.devel.redhat.com/bugzilla-cvs/xmlrpc.cgi -# bugzilla.url = https://bugzilla.redhat.com/xmlrpc.cgi -bugzilla.url = "https://bzprx.vip.phx.redhat.com/xmlrpc.cgi" -bugzilla.username = "<%= bugzillaUser %>" -bugzilla.password = "<%= bugzillaPassword %>" +bugzilla.url = "https://bugzilla.redhat.com/xmlrpc.cgi" +#bugzilla.url = "https://bzprx.vip.phx.redhat.com/xmlrpc.cgi" +bugzilla.username = "fedora-admin-xmlrpc@redhat.com" +bugzilla.password = "MOLPiNsy2c"
# Mail server for sending invalid bugzilla account messages -mail.server = 'localhost' +mail.server = 'bastion' mail.admin_email = 'admin@fedoraproject.org'
+# This is a list (*must* have a comma) of email addresses to send messages about +# invalid bugzilla accounts to. The strin '$USER' is special. If present in the +# list, it will send an email to the user whose email address is not in bugzilla. +mail.notify_email = '$USER', 'admin@fedoraproject.org'
# At the moment, we have to extract this information directly from the fas2 # database. We can build a json interface for it at a later date. -sqlalchemy.dburi = "postgres://fedora:bunbunbun@localhost/fas2" +sqlalchemy.dburi = "postgres://fas:DsjBks9dn3Sakz9Gsnd55@db02/fas2"
On Tue, 2010-08-10 at 17:08 -0400, Toshio Kuratomi wrote:
We've had a few complaints about our bugzilla sync script sending out too much email. I'd like to apply this hotfix to the export-bugzilla script on fas01 (where the cron job runs) and the associated config change to stop sending out email to the invalid users.
+1
if you change the bugzilla password that's now archived in the list. :)
-sv
On Tue, 10 Aug 2010, Toshio Kuratomi wrote:
# At the moment, we have to extract this information directly from the fas2 # database. We can build a json interface for it at a later date. -sqlalchemy.dburi = "postgres://fedora:bunbunbun@localhost/fas2" +sqlalchemy.dburi = "postgres://fas:DsjBks9dn3Sakz9Gsnd55@db02/fas2"
:: cough cough :: also this is not our fas db02 password... anymore.
-Mike
infrastructure@lists.fedoraproject.org