Change Request: fas=>bugzilla sync script that does not email invalid users

Mike McGrath mmcgrath at redhat.com
Tue Aug 10 21:09:54 UTC 2010


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 at fedoraproject.org')
> +NOTIFYEMAIL = config.get('mail.notify_email', ['admin at 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 at redhat.com"
> +bugzilla.password = "MOLPiNsy2c"
>
>  # Mail server for sending invalid bugzilla account messages
> -mail.server = 'localhost'
> +mail.server = 'bastion'
>  mail.admin_email = 'admin at 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 at 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"
>
>


More information about the infrastructure mailing list