Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Fedora Infrastructure (http://www.linux-archive.org/fedora-infrastructure/)
-   -   Change Request: fas=>bugzilla sync script that does not email invalid users (http://www.linux-archive.org/fedora-infrastructure/411104-change-request-fas-bugzilla-sync-script-does-not-email-invalid-users.html)

Toshio Kuratomi 08-10-2010 09:08 PM

Change Request: fas=>bugzilla sync script that does not email invalid users
 
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 = '
'.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"

_______________________________________________
infrastructure mailing list
infrastructure@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/infrastructure

Mike McGrath 08-10-2010 09:09 PM

Change Request: fas=>bugzilla sync script that does not email invalid users
 
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 = '
'.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"
>
>
_______________________________________________
infrastructure mailing list
infrastructure@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/infrastructure

seth vidal 08-10-2010 09:11 PM

Change Request: fas=>bugzilla sync script that does not email invalid users
 
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


_______________________________________________
infrastructure mailing list
infrastructure@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/infrastructure


All times are GMT. The time now is 07:44 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.