--- a/.hgignore
+++ b/.hgignore
@@ -2,17 +2,16 @@ coverage/
docs/_build/
hghooks/Mozilla_Hg_Hooks.egg-info/
pylib/mozansible/mozansible.egg-info/
pylib/mozautomation/mozautomation.egg-info/
pylib/mozhginfo/mozhginfo.egg-info/
pylib/mozhginfo/pushlog_client.egg-info
pylib/mozreview/mozreview.egg-info/
pylib/mozreviewbots/mozreviewbots.egg-info/
-pylib/rbbz/rbbz.egg-info/
pylib/Bugsy/bugsy.egg-info/
pylib/vcsreplicator/vcsreplicator.egg-info/
testing/bmoserver/.vagrant
testing/puppet/files/Mozilla-Bugzilla-Public*
testing/unifiedserver/.vagrant
testing/vcttesting.egg-info/
venv/
\.pyc$
--- a/ansible/roles/docker-rbweb/files/install-reviewboard
+++ b/ansible/roles/docker-rbweb/files/install-reviewboard
@@ -54,23 +54,21 @@ initialize()
# have undesirable consequences.
#
# TODO this appears to add ~1s overhead. Consider putting this behavior
# behind a flag.
print('disabling extensions')
site.run_manage_command('disable-extension',
['mozreview.extension.MozReviewExtension'])
site.run_manage_command('disable-extension',
- ['rbbz.extension.BugzillaExtension'])
-site.run_manage_command('disable-extension',
['rbmotd.extension.MotdExtension'])
print('enabling extensions')
site.run_manage_command('enable-extension', ['mozreview.extension.MozReviewExtension'])
-site.run_manage_command('enable-extension', ['rbbz.extension.BugzillaExtension'])
+site.run_manage_command('enable-extension', ['mozreview.extension.BugzillaExtension'])
site.run_manage_command('enable-extension', ['rbmotd.extension.MotdExtension'])
# Hook up Bugzilla authentication.
site.run_manage_command('set-siteconfig', ['--key=auth_backend',
'--value=bugzilla'])
site.run_manage_command('set-siteconfig', ['--key=logging_enabled',
--- a/ansible/roles/docker-rbweb/tasks/main.yml
+++ b/ansible/roles/docker-rbweb/tasks/main.yml
@@ -28,25 +28,23 @@
- name: Install mozreview extension
shell: /venv/bin/easy_install -U dist/*.egg chdir=/version-control-tools/pylib/mozreview
tags:
- docker-refresh
- name: Build other extension
command: /venv/bin/python setup.py bdist_egg chdir=/version-control-tools/pylib/{{ item }}
with_items:
- - rbbz
- rbmotd
tags:
- docker-refresh
- name: Install other extensions
shell: /venv/bin/easy_install -U dist/*.egg chdir=/version-control-tools/pylib/{{ item }}
with_items:
- - rbbz
- rbmotd
tags:
- docker-refresh
- name: Remove default httpd configs
file: path={{ item }} state=absent
with_items:
- /etc/httpd/conf.d/welcome.conf
--- a/ansible/tasks/install-mozreview.yml
+++ b/ansible/tasks/install-mozreview.yml
@@ -13,31 +13,22 @@
command: "{{ venv }}/bin/hg --config extensions.purge= -R {{ rb_vct }} purge --all"
# mozreview imports from mozautomation package. So, we need to install
# mozautomation before mozreview can be built.
- name: install mozautomation egg
command: "{{ venv }}/bin/pip install --upgrade --no-deps --force-reinstall {{ rb_vct }}/pylib/mozautomation"
-# rbbz imports from mozreview package. So, we need to install mozreview before
-# rbbz can be built.
-
- name: build mozreview egg
command: "{{ python }} setup.py bdist_egg chdir={{ rb_vct }}/pylib/mozreview"
- name: install mozreview egg
shell: "{{ easy_install }} -U dist/*.egg chdir={{ rb_vct }}/pylib/mozreview"
-- name: build rbbz egg
- command: "{{ python }} setup.py bdist_egg chdir={{ rb_vct }}/pylib/rbbz"
-
-- name: install rbbz egg
- shell: "{{ easy_install }} -U dist/*.egg chdir={{ rb_vct }}/pylib/rbbz"
-
- name: build rbmotd egg
command: "{{ python }} setup.py bdist_egg chdir={{ rb_vct }}/pylib/rbmotd"
- name: install rbmotd egg
shell: "{{ easy_install }} -U dist/*.egg chdir={{ rb_vct }}/pylib/rbmotd"
- name: Generate static Review Board files from extensions
command: "{{ rbsite }} manage {{ sitehome }} -- install-extension-media --force"
--- a/create-test-environment
+++ b/create-test-environment
@@ -71,20 +71,16 @@ cd ../..
cd pylib/mozreview
python setup.py develop
cd ../..
cd pylib/mozreviewbots
python setup.py develop
cd ../..
-cd pylib/rbbz
-python setup.py develop
-cd ../..
-
cd pylib/vcsreplicator
python setup.py develop
cd ../..
cd hghooks
python setup.py develop
cd ..
--- a/docs/hacking-mozreview.rst
+++ b/docs/hacking-mozreview.rst
@@ -17,21 +17,16 @@ Mercurial Server
Bugzilla
Review Board actions result in interaction with Bugzilla.
mozreview
A Review Board extension providing integration with the rest of the
MozReview system, including user interface modifications and
autoland and Bugzilla support.
-rbbz
- A Review Board extension that integrates Review Board with
- Bugzilla. The code here is slowly being migrated to the mozreview
- extension, so rbbz should be considered deprecated.
-
Review Board Mercurial Extension
There exist client-oriented and server-oriented Mercurial extensions
to enable Mercurial peers to exchange and interface with review data.
Running a MozReview Instance
============================
It is possible to run a fully isolated, fully local MozReview instance
@@ -342,19 +337,16 @@ use some love.
You'll need to define your Review Board credentials through environment
variables: ``BUGZILLA_USERNAME`` and ``BUGZILLA_PASSWORD``. The name
*bugzilla* is in there because MozReview shares its user database with
Bugzilla.
Code Locations
==============
-``pylib/rbbz`` contains the modifications to Review Board to enable
-Bugzilla integration and support for series of reviews.
-
``pylib/mozreview`` contains the UI modifications to Review Board.
``hgext/reviewboard`` contains the client and server Mercurial
extensions.
``pylib/reviewboardmods`` contains the server-side code that runs as
part of pushing reviews to the Mercurial server. This contains the
low-level code that maps commits to review requests and ensures Review
deleted file mode 100644
--- a/docs/rbbz/rbbz.rst
+++ /dev/null
@@ -1,94 +0,0 @@
-rbbz package
-============
-
-Submodules
-----------
-
-rbbz.auth module
-----------------
-
-.. automodule:: rbbz.auth
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.bugzilla module
---------------------
-
-.. automodule:: rbbz.bugzilla
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.diffs module
------------------
-
-.. automodule:: rbbz.diffs
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.errors module
-------------------
-
-.. automodule:: rbbz.errors
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.extension module
----------------------
-
-.. automodule:: rbbz.extension
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.forms module
------------------
-
-.. automodule:: rbbz.forms
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.middleware module
-----------------------
-
-.. automodule:: rbbz.middleware
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.models module
-------------------
-
-.. automodule:: rbbz.models
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.resources module
----------------------
-
-.. automodule:: rbbz.resources
- :members:
- :undoc-members:
- :show-inheritance:
-
-rbbz.transports module
-----------------------
-
-.. automodule:: rbbz.transports
- :members:
- :undoc-members:
- :show-inheritance:
-
-
-Module contents
----------------
-
-.. automodule:: rbbz
- :members:
- :undoc-members:
- :show-inheritance:
--- a/moz.build
+++ b/moz.build
@@ -62,15 +62,11 @@ with Files('hgtemplates/**'):
with Files('hgserver/**'):
BUG_COMPONENT = ('Developer Services', 'Mercurial: hg.mozilla.org')
FINAL = True
with Files('hgwsgi/**'):
BUG_COMPONENT = ('Developer Services', 'Mercurial: hg.mozilla.org')
FINAL = True
-with Files('pylib/rbbz/**'):
- BUG_COMPONENT = ('Developer Services', 'MozReview')
- FINAL = True
-
with Files('pylib/reviewboardmods/**'):
BUG_COMPONENT = ('Developer Services', 'MozReview')
FINAL = True
--- a/pylib/mozreview/mozreview/bugzilla/errors.py
+++ b/pylib/mozreview/mozreview/bugzilla/errors.py
@@ -12,17 +12,17 @@ class BugzillaError(Exception):
def __init__(self, msg, fault_code=None):
super(BugzillaError, self).__init__(msg)
self.msg = msg
self.fault_code = fault_code
class BugzillaUrlError(BugzillaError):
def __init__(self):
- BugzillaError.__init__(self, 'No Bugzilla URL provided in rbbz '
+ BugzillaError.__init__(self, 'No Bugzilla URL provided in mozreview '
'configuration.')
@simple_decorator
def bugzilla_to_publish_errors(func):
def _transform_errors(*args, **kwargs):
try:
return func(*args, **kwargs)
--- a/pylib/mozreview/mozreview/extension.py
+++ b/pylib/mozreview/mozreview/extension.py
@@ -1,27 +1,36 @@
from __future__ import unicode_literals
import json
import logging
import os
from django.conf.urls import include, patterns, url
+from django.contrib.sites.models import Site
+
+from djblets.siteconfig.models import SiteConfiguration
from reviewboard.diffviewer.opcode_generator import (
get_diff_opcode_generator_class,
set_diff_opcode_generator_class,
)
from reviewboard.extensions.base import Extension, JSExtension
-from reviewboard.extensions.hooks import (HeaderDropdownActionHook,
+from reviewboard.extensions.hooks import (AuthBackendHook,
+ HeaderDropdownActionHook,
HostingServiceHook,
ReviewRequestDropdownActionHook,
ReviewRequestFieldsHook,
+ SignalHook,
TemplateHook,
URLHook)
+from reviewboard.reviews.signals import (
+ reply_publishing,
+ review_publishing,
+)
from reviewboard.reviews.builtin_fields import (TestingDoneField,
BranchField,
DependsOnField,
BlocksField)
from reviewboard.reviews.fields import (get_review_request_field,
get_review_request_fieldset)
from reviewboard.urls import (diffviewer_url_names,
review_request_url_names)
@@ -30,21 +39,31 @@ from mozreview.autoland.resources import
autoland_enable_resource,
autoland_request_update_resource,
autoland_trigger_resource,
try_autoland_trigger_resource,
)
from mozreview.batchreview.resources import (
batch_review_resource,
)
+from mozreview.bugzilla.auth import BugzillaBackend
+from mozreview.bugzilla.client import Bugzilla
+from mozreview.bugzilla.errors import (
+ bugzilla_to_publish_errors,
+)
+from mozreview.diffs import build_plaintext_review
from mozreview.diffviewer.opcode_generator import (
NoFilterDiffOpcodeGenerator
)
+from mozreview.errors import (
+ ParentShipItError,
+)
from mozreview.extra_data import (
is_parent,
+ is_pushed,
)
from mozreview.fields import (
BaseCommitField,
CombinedReviewersField,
CommitAuthorField,
CommitsListField,
FileDiffReviewerField,
ImportCommitField,
@@ -59,24 +78,32 @@ from mozreview.hooks import (
)
from mozreview.hostingservice.hmo_repository import (
HMORepository,
)
from mozreview.ldap.resources import (
ldap_association_resource,
)
from mozreview.middleware import (
+ CorsHeaderMiddleware,
MozReviewCacheDisableMiddleware,
MozReviewUserProfileMiddleware,
)
+from mozreview.models import (
+ get_bugzilla_api_key,
+)
from mozreview.pulse import (
initialize_pulse_handlers,
)
+from mozreview.rb_utils import (
+ get_obj_url,
+)
from mozreview.resources.bugzilla_login import (
bugzilla_api_key_login_resource,
+ bugzilla_cookie_login_resource,
)
from mozreview.resources.batch_review_request import (
batch_review_request_resource,
)
from mozreview.resources.commit_data import (
commit_data_resource,
)
from mozreview.resources.commit_rewrite import (
@@ -156,25 +183,27 @@ class MozReviewExtension(Extension):
resources = [
autoland_enable_resource,
autoland_request_update_resource,
autoland_trigger_resource,
batch_review_request_resource,
batch_review_resource,
bugzilla_api_key_login_resource,
+ bugzilla_cookie_login_resource,
commit_data_resource,
commit_rewrite_resource,
file_diff_reviewer_resource,
ldap_association_resource,
review_request_summary_resource,
try_autoland_trigger_resource,
]
middleware = [
+ CorsHeaderMiddleware,
MozReviewCacheDisableMiddleware,
MozReviewUserProfileMiddleware,
]
def initialize(self):
self.original_opcode_generator = get_diff_opcode_generator_class()
set_diff_opcode_generator_class(NoFilterDiffOpcodeGenerator)
@@ -290,16 +319,26 @@ class MozReviewExtension(Extension):
# Use a custom method to calculate a review approval state.
MozReviewApprovalHook(self)
# Instantiate the various signal handlers
initialize_signal_handlers(self)
HostingServiceHook(self, HMORepository)
+ AuthBackendHook(self, BugzillaBackend)
+
+ # Any abortable signal hooks that talk to Bugzilla should have
+ # sandbox_errors=False, since we don't want to complete the action if
+ # updating Bugzilla failed for any reason.
+ SignalHook(self, review_publishing, on_review_publishing,
+ sandbox_errors=False)
+ SignalHook(self, reply_publishing, on_reply_publishing,
+ sandbox_errors=False)
+
def shutdown(self):
# Restore the built-in opcode generator.
set_diff_opcode_generator_class(self.original_opcode_generator)
# We have to put the TestingDone field back before we shut down
# in order to get the instance back to its original state.
main_fieldset = get_review_request_fieldset('main')
if not get_review_request_field('testing_done'):
@@ -330,8 +369,89 @@ class MozReviewExtension(Extension):
if SETTINGS is None:
with open(SETTINGS_PATH, 'r') as f:
SETTINGS = json.load(f)
return SETTINGS.get(key, self.default_settings.get(key, default))
except IOError:
logger.error('Could not access settings file (returning None): %s'
% SETTINGS_PATH)
return None
+
+
+def get_reply_url(reply, site=None, siteconfig=None):
+ """ Get the URL for a reply to a review.
+
+ Since replies can have multiple comments, we can't link to a specific
+ comment, so we link to the parent review which the reply is targeted at.
+ """
+ return get_obj_url(reply.base_reply_to, site=site, siteconfig=siteconfig)
+
+
+@bugzilla_to_publish_errors
+def on_review_publishing(user, review, **kwargs):
+ """Comment in the bug and potentially r+ or clear a review flag.
+
+ Note that a reviewer *must* have editbugs to set an attachment flag on
+ someone else's attachment (i.e. the standard BMO review process).
+
+ TODO: Report lack-of-editbugs properly; see bug 1119065.
+ """
+ review_request = review.review_request
+ logger.info('Publishing review for user: %s review id: %s '
+ 'review request id: %s' % (user, review.id,
+ review_request.id))
+
+ # skip review requests that were not pushed
+ if not is_pushed(review_request):
+ logger.info('Did not publish review: %s: for user: %d: review not '
+ 'pushed.' % (user, review.id))
+ return
+
+ site = Site.objects.get_current()
+ siteconfig = SiteConfiguration.objects.get_current()
+ comment = build_plaintext_review(review,
+ get_obj_url(review, site,
+ siteconfig),
+ {"user": user})
+ b = Bugzilla(get_bugzilla_api_key(user))
+
+ # TODO: Update all attachments in one call. This is not possible right
+ # now because we have to potentially mix changing and creating flags.
+
+ if is_parent(review_request):
+ # Mirror the comment to the bug, unless it's a ship-it, in which
+ # case throw an error. Ship-its are allowed only on child commits.
+ if review.ship_it:
+ raise ParentShipItError
+
+ [b.post_comment(int(bug_id), comment) for bug_id in
+ review_request.get_bug_list()]
+ else:
+ diff_url = '%sdiff/#index_header' % get_obj_url(review_request)
+ bug_id = int(review_request.get_bug_list()[0])
+
+ if review.ship_it:
+ commented = b.r_plus_attachment(bug_id, review.user.email,
+ diff_url, comment)
+ else:
+ commented = b.cancel_review_request(bug_id, review.user.email,
+ diff_url, comment)
+
+ if comment and not commented:
+ b.post_comment(bug_id, comment)
+
+
+@bugzilla_to_publish_errors
+def on_reply_publishing(user, reply, **kwargs):
+ review_request = reply.review_request
+ logger.info('Posting bugzilla reply for review request %s' % (
+ review_request.id))
+
+ # skip review requests that were not pushed
+ if not is_pushed(review_request):
+ return
+
+ bug_id = int(review_request.get_bug_list()[0])
+ b = Bugzilla(get_bugzilla_api_key(user))
+
+ url = get_reply_url(reply)
+ comment = build_plaintext_review(reply, url, {"user": user})
+ b.post_comment(bug_id, comment)
--- a/pylib/mozreview/mozreview/forms.py
+++ b/pylib/mozreview/mozreview/forms.py
@@ -10,16 +10,15 @@ class MozReviewSettingsForm(SettingsForm
config = forms.CharField(
required=False,
help_text=_('Configure this extension by editing ' +
mozreview.extension.SETTINGS_PATH)
)
class BugzillaAuthSettingsForm(SiteSettingsForm):
-
auth_bz_xmlrpc_url = forms.CharField(
label="Bugzilla XMLRPC URL",
help_text="URL for your Bugzilla installation's XMLRPC interface",
required=True)
class Meta:
title = "Bugzilla Backend Settings"
deleted file mode 100644
--- a/pylib/rbbz/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-*.pyc
-*~
-build
-dist
-rbbz.egg-info
deleted file mode 100644
--- a/pylib/rbbz/MANIFEST.in
+++ /dev/null
@@ -1,1 +0,0 @@
-include README.md
deleted file mode 100644
--- a/pylib/rbbz/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-rbbz: Review Board extension for Bugzilla support
-=================================================
-
-rbbz is a [Review Board extension][] that integrates a Bugzilla user
-database. It adds an authentication back end, which, when enabled,
-authenticates against Bugzilla's XMLRPC API instead of the local
-Review Board database. When active, Review Board's User List web API,
-used by the UI's autosuggest, also queries Bugzilla.
-
-
-Installation
-------------
-
-As described in Review Board's [extension installation docs][],
-install rbbz like any other Python package, e.g.
-
- pip install rbbz
-
-In the Review Board admin UI, go to the Extensions page and enable
-rbbz. You'll then have to go to the Authentication settings and
-change the Authentication Method to "Bugzilla". A setting for
-"Bugzilla XMLRPC URL" will appear. Enter the URL to your Bugzilla
-installation's XMLPRC API, e.g. https://bugzilla.yourdomain/xmlrpc.cgi.
-
-At this point you should be able to log out and log back in with your
-Bugzilla credentials. Similarly, when you choose people for a review,
-the autosuggest should return results from the Bugzilla user database.
-
-
-Technical Notes
----------------
-
-In order to stay generic, Review Board's User List web API always
-searches the local database. To provide support for Bugzilla, rbbz
-overrides a function called early in the User List function in order
-to send a user-search query to Bugzilla. It then writes the results
-to the Review Board user table, updating existing entries and creating
-new ones when needed.
-
-
-To Do
------
-
-* Support for Bugzilla's REST API (as an option, so older Bugzilla
- systems are still supported).
-
-* Caching in User List to avoid always searching the Bugzilla
- database, if possible.
-
-[Review Board extension]: http://www.reviewboard.org/docs/manual/dev/extending/
-[extension installation docs]: http://www.reviewboard.org/docs/manual/dev/admin/extensions/#installing-extensions
deleted file mode 100644
--- a/pylib/rbbz/rbbz/extension.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-import logging
-
-from django.contrib.sites.models import Site
-
-from djblets.siteconfig.models import SiteConfiguration
-
-from reviewboard.extensions.base import Extension
-from reviewboard.extensions.hooks import AuthBackendHook, SignalHook
-from reviewboard.reviews.signals import (
- reply_publishing,
- review_publishing,
-)
-
-from mozreview.bugzilla.client import Bugzilla
-from mozreview.bugzilla.errors import (
- bugzilla_to_publish_errors,
-)
-from mozreview.diffs import build_plaintext_review
-from mozreview.errors import (
- ParentShipItError,
-)
-from mozreview.extra_data import (
- is_parent,
- is_pushed,
-)
-from mozreview.middleware import CorsHeaderMiddleware
-from mozreview.models import (
- get_bugzilla_api_key,
-)
-from mozreview.rb_utils import (
- get_obj_url,
-)
-from mozreview.bugzilla.auth import BugzillaBackend
-from mozreview.resources.bugzilla_login import bugzilla_cookie_login_resource
-
-
-logger = logging.getLogger(__name__)
-
-
-class BugzillaExtension(Extension):
- middleware = [CorsHeaderMiddleware]
-
- resources = [
- bugzilla_cookie_login_resource,
- ]
-
- def initialize(self):
- AuthBackendHook(self, BugzillaBackend)
-
- # Any abortable signal hooks that talk to Bugzilla should have
- # sandbox_errors=False, since we don't want to complete the action if
- # updating Bugzilla failed for any reason.
- SignalHook(self, review_publishing, on_review_publishing,
- sandbox_errors=False)
- SignalHook(self, reply_publishing, on_reply_publishing,
- sandbox_errors=False)
-
-
-def get_reply_url(reply, site=None, siteconfig=None):
- """ Get the URL for a reply to a review.
-
- Since replies can have multiple comments, we can't link to a specific
- comment, so we link to the parent review which the reply is targeted at.
- """
- return get_obj_url(reply.base_reply_to, site=site, siteconfig=siteconfig)
-
-
-@bugzilla_to_publish_errors
-def on_review_publishing(user, review, **kwargs):
- """Comment in the bug and potentially r+ or clear a review flag.
-
- Note that a reviewer *must* have editbugs to set an attachment flag on
- someone else's attachment (i.e. the standard BMO review process).
-
- TODO: Report lack-of-editbugs properly; see bug 1119065.
- """
- review_request = review.review_request
- logger.info('Publishing review for user: %s review id: %s '
- 'review request id: %s' % (user, review.id,
- review_request.id))
-
- # skip review requests that were not pushed
- if not is_pushed(review_request):
- logger.info('Did not publish review: %s: for user: %d: review not '
- 'pushed.' % (user, review.id))
- return
-
- site = Site.objects.get_current()
- siteconfig = SiteConfiguration.objects.get_current()
- comment = build_plaintext_review(review,
- get_obj_url(review, site,
- siteconfig),
- {"user": user})
- b = Bugzilla(get_bugzilla_api_key(user))
-
- # TODO: Update all attachments in one call. This is not possible right
- # now because we have to potentially mix changing and creating flags.
-
- if is_parent(review_request):
- # Mirror the comment to the bug, unless it's a ship-it, in which
- # case throw an error. Ship-its are allowed only on child commits.
- if review.ship_it:
- raise ParentShipItError
-
- [b.post_comment(int(bug_id), comment) for bug_id in
- review_request.get_bug_list()]
- else:
- diff_url = '%sdiff/#index_header' % get_obj_url(review_request)
- bug_id = int(review_request.get_bug_list()[0])
-
- if review.ship_it:
- commented = b.r_plus_attachment(bug_id, review.user.email,
- diff_url, comment)
- else:
- commented = b.cancel_review_request(bug_id, review.user.email,
- diff_url, comment)
-
- if comment and not commented:
- b.post_comment(bug_id, comment)
-
-
-@bugzilla_to_publish_errors
-def on_reply_publishing(user, reply, **kwargs):
- review_request = reply.review_request
- logger.info('Posting bugzilla reply for review request %s' % (
- review_request.id))
-
- # skip review requests that were not pushed
- if not is_pushed(review_request):
- return
-
- bug_id = int(review_request.get_bug_list()[0])
- b = Bugzilla(get_bugzilla_api_key(user))
-
- url = get_reply_url(reply)
- comment = build_plaintext_review(reply, url, {"user": user})
- b.post_comment(bug_id, comment)
deleted file mode 100644
--- a/pylib/rbbz/setup.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from reviewboard.extensions.packaging import setup
-
-PACKAGE = 'rbbz'
-VERSION = '0.2.9'
-
-setup(
- name=PACKAGE,
- version=VERSION,
- description='Review Board extension for Bugzilla support',
- url='https://github.com/mozilla/rbbz',
- author='Mark Cote',
- author_email='mcote@mozilla.com',
- license='MPL 2.0',
- packages=['rbbz'],
- install_requires=['mozautomation>=0.2'],
- entry_points={
- 'reviewboard.extensions':
- '%s = rbbz.extension:BugzillaExtension' % PACKAGE,
- }
-)
--- a/testing/vcttesting/mozreview.py
+++ b/testing/vcttesting/mozreview.py
@@ -394,17 +394,16 @@ class MozReview(object):
name = 'mozreview-%s' % os.path.basename(self._path)
data = json.dumps(['trigger', ROOT, {
'name': name,
'chdir': ROOT,
'expression': ['anyof',
['dirname', 'hgext/reviewboard'],
['dirname', 'pylib/mozreview'],
- ['dirname', 'pylib/rbbz'],
['dirname', 'reviewboardmods'],
],
'command': ['%s/mozreview' % ROOT, 'refresh', self._path],
}])
p = subprocess.Popen([WATCHMAN, '-j'], stdin=subprocess.PIPE)
p.communicate(data)
res = p.wait()
if res != 0: