misc: mass replace readthedocs.org with readthedocs.io
authorGregory Szorc <gps@mozilla.com>
Wed, 27 Apr 2016 16:08:49 -0700
changeset 362605 7bc9ca6c8aecc3347402233a20fec8ce1580b2a2
parent 362604 d09a58f2334e16ed6be5d1130cf75f82040ab169
child 362606 c22f493453e33a02a834d4dba15e4599ec8cea71
push id16998
push userrwood@mozilla.com
push dateMon, 02 May 2016 19:42:03 +0000
misc: mass replace readthedocs.org with readthedocs.io I just got an email telling me RTD is now serving from readthedocs.io instead of readthedocs.org. They are redirecting the latter to the former. So we might as well update the URLs. While I was here, I snuck in some changes to convert http:// to https://.
README.rst
autoland/README.md
docs/hgmo/mozbuildinfo.rst
docs/hgmo/ops.rst
hgext/reviewboard/client.py
hgext/reviewboard/hgrb/proto.py
hgext/reviewboard/server.py
hgext/reviewboard/tests/test-auth.t
hgext/reviewboard/tests/test-repo-discovery.t
hghooks/mozhghooks/advertise_upgrade.py
hghooks/tests/test-advertise-upgrade.t
hgserver/tests/test-nrpe-zookeeper.t
pylib/mozhginfo/mozhginfo/pushlog_client.py
pylib/mozreview/mozreview/extension.py
pylib/mozreview/mozreview/templates/mozreview/login-error.html
pylib/mozreviewbots/setup.py
pylib/vcsreplicator/setup.py
pylib/vcsreplicator/tests/test-check-consumer-lag.t
pylib/vcsreplicator/vcsreplicator/nagios.py
scripts/check_zookeeper
scripts/generate-hg-s3-bundles
--- a/README.rst
+++ b/README.rst
@@ -8,17 +8,17 @@ control at Mozilla.
 This repository contains the code that Mozilla uses in production to
 power `hg.mozilla.org <https://hg.mozilla.org>`_,
 `reviewboard.mozilla.org <https://reviewboard.mozilla.org>`_, and among
 other sites and services.
 
 The canonical repository is https://hg.mozilla.org/hgcustom/version-control-tools/
 
 Most documentation exists in the ``docs/`` directory. It can be
-`viewed online <https://mozilla-version-control-tools.readthedocs.org/en/latest/>`_
+`viewed online <https://mozilla-version-control-tools.readthedocs.io/en/latest/>`_
 on Read the Docs. Latest CI reports can be `viewed online
 <https://ci.mozilla.org/job/version-control-tools/>`_.
 
 If you are interested in getting in touch with the people who maintain
 this repository, join ``#vcs`` in ``irc.mozilla.org``.
 
 .. note:: A dev environment is needed for performing admin operations
 
--- a/autoland/README.md
+++ b/autoland/README.md
@@ -79,17 +79,17 @@ following:
       "destination": "try",
       "trysyntax": "try: -b o -p linux -u mochitest-1 -t none",
       "landed": true,
       "result": "1f34accb7920"
       "error_msg": ""
     }
 
 
-[1] http://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview.html
+[1] https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview.html
 
 [2] http://hg.mozilla.org/try
 
 
 Design
 ------
 
 Autoland consists of three components which run independently. A Flask based
--- a/docs/hgmo/mozbuildinfo.rst
+++ b/docs/hgmo/mozbuildinfo.rst
@@ -1,16 +1,16 @@
 .. _hgmo_mozbuildinfo:
 
 ==================
 moz.build Metadata
 ==================
 
 hg.mozilla.org has the ability to extract and render metadata from
-`moz.build files <https://gecko.readthedocs.org/en/latest/build/buildsystem/mozbuild-files.html>`_.
+`moz.build files <https://gecko.readthedocs.io/en/latest/build/buildsystem/mozbuild-files.html>`_.
 
 Web Command
 ===========
 
 On repositories that have this feature enabled, a new web command is
 available: ``mozbuildinfo``. Requests to this web command have the
 form::
 
--- a/docs/hgmo/ops.rst
+++ b/docs/hgmo/ops.rst
@@ -445,17 +445,17 @@ Expected Output
 
 There is a single consumer and partition for the pulse notifier Kafka
 consumer. So, expected output is something like the following::
 
    OK - 1/1 consumers completely in sync
 
    OK - partition 0 is completely in sync (159580/159580)
 
-   See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+   See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
    for details about this check.
 
 Remediation to Check Failure
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 There are 3 main categories of check failure:
 
 1. pulse.mozilla.org is down
--- a/hgext/reviewboard/client.py
+++ b/hgext/reviewboard/client.py
@@ -535,17 +535,17 @@ def doreview(repo, ui, remote, nodes):
         identifier.user = ircnick
 
     if hasattr(repo, 'mq'):
         for patch in repo.mq.applied:
             if patch.node in nodes:
                 ui.warn(_('(You are using mq to develop patches. For the best '
                     'code review experience, use bookmark-based development '
                     'with changeset evolution. Read more at '
-                    'http://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview-user.html)\n'))
+                    'https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview-user.html)\n'))
                 break
 
     req = commonrequestdict(ui, bzauth)
     req['identifier'] = identifier.full
     req['changesets'] = []
     req['obsolescence'] = obsolete.isenabled(repo, obsolete.createmarkersopt)
     req['deduce-reviewers'] = ui.configbool('reviewboard', 'deduce-reviewers', True)
 
--- a/hgext/reviewboard/hgrb/proto.py
+++ b/hgext/reviewboard/hgrb/proto.py
@@ -18,17 +18,17 @@ from mercurial import (
 )
 
 from mozautomation import commitparser
 from hgrb.util import ReviewID
 
 
 API_KEY_NEEDED = (
     'Bugzilla API keys are now used by MozReview; '
-    'see https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html#bugzilla-credentials '
+    'see https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html#bugzilla-credentials '
     'for instructions on how to configure your client')
 
 
 class AuthorizationError(Exception):
     """Represents an error authenticating or authorizing to Bugzilla."""
 
     def __init__(self, e, username=None, apikey=None, **kwargs):
         self.e = e
@@ -200,17 +200,17 @@ def _processpushreview(repo, req, ldap_u
     trust the passed LDAP username has been authenticated to belong to the
     MozReview account.
     """
     bzusername = req.get('bzusername')
     bzapikey = req.get('bzapikey')
 
     if not bzusername or not bzapikey:
         return errorresponse('Bugzilla API keys not configured; see '
-            'https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html#bugzilla-credentials '
+            'https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html#bugzilla-credentials '
             'for instructions on how to configure your client')
 
     identifier = req['identifier']
     nodes = []
     precursors = {}
     for cset in req['changesets']:
         node = cset['node']
         nodes.append(node)
--- a/hgext/reviewboard/server.py
+++ b/hgext/reviewboard/server.py
@@ -85,17 +85,17 @@ requirecaps = set([
 nopushdiscoveryrepos = '''
 Pushing and pull review discovery repos is not allowed!
 
 You are likely seeing this error because:
 
 1) You do not have the appropriate Mercurial extension installed
 2) The extension is out of date
 
-See https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html
+See https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html
 for instructions on how to configure your machine to use MozReview.
 '''
 
 def reviewcapabilities(repo):
     """Obtain the set of review capabilities for a repo."""
     caps = set()
 
     if repo.ui.configint('reviewboard', 'repoid', None):
--- a/hgext/reviewboard/tests/test-auth.t
+++ b/hgext/reviewboard/tests/test-auth.t
@@ -22,52 +22,52 @@ Pushing with a password results in serve
   saved backup bundle to $TESTTMP/client/.hg/strip-backup/737709d9e5f4*-addcommitid.hg (glob)
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files
   remote: recorded push in pushlog
   submitting 1 changesets for review
-  abort: Bugzilla API keys not configured; see https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
+  abort: Bugzilla API keys not configured; see https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
   [255]
 
 Pushing with a cookie results in server rejection
 
   $ hg --config bugzilla.userid=baduserid --config bugzilla.cookie=irrelevant --config bugzilla.apikey= push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
-  abort: Bugzilla API keys not configured; see https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
+  abort: Bugzilla API keys not configured; see https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
   [255]
 
 Pushing with unknown username with API key results in sane failure
 
   $ hg --config bugzilla.username=unknown --config bugzilla.apikey=irrelevant push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
-  abort: Bugzilla API keys are now used by MozReview; see https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
+  abort: Bugzilla API keys are now used by MozReview; see https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
   [255]
 
 Pushing with invalid API key results in sane failure
 We need to test with a new user here because the default user is already
 created in Review Board.
 
   $ adminbugzilla create-user apikey1@example.com api1password 'API Key1'
   created user 6
 
   $ hg --config bugzilla.username=apikey1@example.com --config bugzilla.apikey=badkey push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
   no changes found
   submitting 1 changesets for review
-  abort: Bugzilla API keys are now used by MozReview; see https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
+  abort: Bugzilla API keys are now used by MozReview; see https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html#bugzilla-credentials for instructions on how to configure your client
   [255]
 
 User must log in via web interface before pushing with an API key
 
   $ apikey=`mozreview create-api-key apikey1@example.com`
   $ hg --config bugzilla.username=apikey1@example.com --config bugzilla.apikey=${apikey} push
   pushing to ssh://$DOCKER_HOSTNAME:$HGPORT6/test-repo
   searching for changes
--- a/hgext/reviewboard/tests/test-repo-discovery.t
+++ b/hgext/reviewboard/tests/test-repo-discovery.t
@@ -215,17 +215,17 @@ different)
   remote: 
   remote: Pushing and pull review discovery repos is not allowed!
   remote: 
   remote: You are likely seeing this error because:
   remote: 
   remote: 1) You do not have the appropriate Mercurial extension installed
   remote: 2) The extension is out of date
   remote: 
-  remote: See https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html
+  remote: See https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html
   remote: for instructions on how to configure your machine to use MozReview.
   remote: 
   remote: -
   abort: remote error
   (check previous remote output)
   [255]
 
   $ cat >> .hg/hgrc << EOF
@@ -241,34 +241,34 @@ different)
   
   Pushing and pull review discovery repos is not allowed!
   
   You are likely seeing this error because:
   
   1) You do not have the appropriate Mercurial extension installed
   2) The extension is out of date
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html
   for instructions on how to configure your machine to use MozReview.
   [255]
 
 Pulling from autoreview repos also error
 (although we don't expect to see this much in the wild)
 
   $ hg --config extensions.reviewboard=! pull ${PUSHPREFIX}/autoreview
   pulling from ssh://$DOCKER_HOSTNAME:$HGPORT6/autoreview
   remote: 
   remote: Pushing and pull review discovery repos is not allowed!
   remote: 
   remote: You are likely seeing this error because:
   remote: 
   remote: 1) You do not have the appropriate Mercurial extension installed
   remote: 2) The extension is out of date
   remote: 
-  remote: See https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html
+  remote: See https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html
   remote: for instructions on how to configure your machine to use MozReview.
   remote: 
   remote: -
   abort: remote error
   (check previous remote output)
   [255]
 
   $ hg --config extensions.reviewboard=! --config mozilla.trustedbmoapikeyservices=${MERCURIAL_URL} pull ${MERCURIAL_URL}autoreview
@@ -277,17 +277,17 @@ Pulling from autoreview repos also error
   
   Pushing and pull review discovery repos is not allowed!
   
   You are likely seeing this error because:
   
   1) You do not have the appropriate Mercurial extension installed
   2) The extension is out of date
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview/install.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview/install.html
   for instructions on how to configure your machine to use MozReview.
   [255]
 
   $ cd ..
 
 Cleanup
 
   $ mozreview stop
--- a/hghooks/mozhghooks/advertise_upgrade.py
+++ b/hghooks/mozhghooks/advertise_upgrade.py
@@ -4,11 +4,11 @@
 from __future__ import absolute_import
 
 def hook(ui, repo, **kwargs):
     if 'bundle2' not in kwargs:
         ui.write('\n')
         ui.write('YOU ARE PUSHING WITH AN OUT OF DATE MERCURIAL CLIENT!\n')
         ui.write('newer versions are faster and have numerous bug fixes\n')
         ui.write('upgrade instructions are at the following URL:\n')
-        ui.write('https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/installing.html\n')
+        ui.write('https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/installing.html\n')
 
     return 0
--- a/hghooks/tests/test-advertise-upgrade.t
+++ b/hghooks/tests/test-advertise-upgrade.t
@@ -27,17 +27,17 @@ Old client without bundle2 does
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
   
   YOU ARE PUSHING WITH AN OUT OF DATE MERCURIAL CLIENT!
   newer versions are faster and have numerous bug fixes
   upgrade instructions are at the following URL:
-  https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/installing.html
+  https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/installing.html
 #endif
 
 Modern hg without bundle2 gets message
 (this is a bit sub-optimal, but we should never see this in the wild, so
 it's acceptable)
 
   $ echo bundle2disabled > foo
   $ hg commit -m 'bundle2 disabled'
@@ -47,9 +47,9 @@ it's acceptable)
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
   
   YOU ARE PUSHING WITH AN OUT OF DATE MERCURIAL CLIENT!
   newer versions are faster and have numerous bug fixes
   upgrade instructions are at the following URL:
-  https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/installing.html
+  https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/installing.html
--- a/hgserver/tests/test-nrpe-zookeeper.t
+++ b/hgserver/tests/test-nrpe-zookeeper.t
@@ -11,94 +11,94 @@ check_zookeeper without any arguments wi
   ERROR: must specify -H or -c
   [2]
 
 Should error connecting to non-listening port
 
   $ check_zk -H localhost:2182
   socket error connecting to localhost: [Errno 111] Connection refused
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
   [2]
 
 Should be OK checking node itself
 
   $ check_zk -H localhost:2181
   zookeeper node OK
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
 
 Cluster should be healthy
 
   $ check_zk -c /etc/zookeeper/zoo.cfg
   zookeeper ensemble OK
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
 
 Node and cluster report as healthy
 
   $ check_zk -H localhost:2181 -c /etc/zookeeper/zoo.cfg
   zookeeper node and ensemble OK
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
 
 Stopping us should result in failure
 
   $ hgmo exec hgssh /usr/bin/supervisorctl stop zookeeper
   zookeeper: stopped
   $ check_zk -H localhost:2181
   socket error connecting to localhost: [Errno 111] Connection refused
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
   [2]
 
 The cluster should report warning state
 
   $ check_zk -c /etc/zookeeper/zoo.cfg
   ENSEMBLE WARNING - only have 1/2 expected followers
   ENSEMBLE WARNING - socket error connecting to *: [Errno 111] Connection refused (glob)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
   [1]
 
 Ensemble state should recover when zookeeper started
 
   $ hgmo exec hgssh /usr/bin/supervisorctl start zookeeper
   zookeeper: started
   $ check_zk -c /etc/zookeeper/zoo.cfg
   zookeeper ensemble OK
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
 
 Stopping a separate node should result in warning
 
   $ hgmo exec hgweb0 /usr/bin/supervisorctl stop zookeeper
   zookeeper: stopped
   $ check_zk -c /etc/zookeeper/zoo.cfg
   ENSEMBLE WARNING - only have 1/2 expected followers
   ENSEMBLE WARNING - socket error connecting to *: [Errno 111] Connection refused (glob)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
   [1]
 
 Stopping multiple nodes should result in loss of quorum
 
   $ hgmo exec hgweb1 /usr/bin/supervisorctl stop zookeeper
   zookeeper: stopped
   $ check_zk -c /etc/zookeeper/zoo.cfg
   ENSEMBLE CRITICAL - unable to find leader node; ensemble likely not writable
   ENSEMBLE WARNING - node (*) is alive but not available (glob)
   ENSEMBLE WARNING - socket error connecting to *: [Errno 111] Connection refused (glob)
   ENSEMBLE WARNING - socket error connecting to *: [Errno 111] Connection refused (glob)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for more info on monitor and alerts.
   [2]
 
   $ hgmo clean
--- a/pylib/mozhginfo/mozhginfo/pushlog_client.py
+++ b/pylib/mozhginfo/mozhginfo/pushlog_client.py
@@ -1,13 +1,13 @@
 """
 This helps us query information about Mozilla's Mercurial repositories.
 
 Documentation found in here:
-https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/pushlog.html
+https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/pushlog.html
 
 Important notes from the pushlog documentation::
 
     When implementing agents that consume pushlog data, please keep in mind
     the following best practices:
 
     * Query by push ID, not by changeset or date.
     * Always specify a startID and endID.
--- a/pylib/mozreview/mozreview/extension.py
+++ b/pylib/mozreview/mozreview/extension.py
@@ -183,25 +183,25 @@ class MozReviewExtension(Extension):
         URLHook(self,
                 patterns('', url(r'^mozreview/', include('mozreview.urls'))))
 
         HeaderDropdownActionHook(self, actions=[{
             'label': 'MozReview',
             'items': [
                 {
                     'label': 'User Guide',
-                    'url': 'https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview-user.html',
+                    'url': 'https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview-user.html',
                 },
                 {
                     'label': 'Mercurial for Mozillians',
-                    'url': 'https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/index.html',
+                    'url': 'https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/index.html',
                 },
                 {
                     'label': 'Hacking MozReview',
-                    'url': 'https://mozilla-version-control-tools.readthedocs.org/en/latest/hacking-mozreview.html',
+                    'url': 'https://mozilla-version-control-tools.readthedocs.io/en/latest/hacking-mozreview.html',
                 },
                 {
                     'label': 'File a Bug',
                     'url': 'https://bugzilla.mozilla.org/enter_bug.cgi?product=MozReview&component=General',
                 },
             ],
         }])
 
--- a/pylib/mozreview/mozreview/templates/mozreview/login-error.html
+++ b/pylib/mozreview/mozreview/templates/mozreview/login-error.html
@@ -5,12 +5,12 @@
 
 {% block content %}
 <div id="error-container" haserror="true">
   <h1>Error authenticating with Bugzilla:</h1>
 
   <p>{{login_error}}</p>
 
   <p>Please try logging in again. If the problem persists,
-  please <a href="http://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview-user.html#getting-in-touch">contact the maintainers</a>
+  please <a href="https://mozilla-version-control-tools.readthedocs.io/en/latest/mozreview-user.html#getting-in-touch">contact the maintainers</a>
   and/or <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=MozReview&component=General">file a bug</a>.</p>
 </div>
 {% endblock %}
--- a/pylib/mozreviewbots/setup.py
+++ b/pylib/mozreviewbots/setup.py
@@ -1,15 +1,15 @@
 from setuptools import setup, find_packages
 
 setup(
     name='mozreviewbots',
     version='0.1',
     description='MozReview static analysis bots',
-    url='https://mozilla-version-control-tools.readthedocs.org/',
+    url='https://mozilla-version-control-tools.readthedocs.io/',
     author='Mozilla',
     author_email='dev-version-control@lists.mozilla.org',
     license='MPL 2.0',
     classifiers=[
         'Development Status :: 4 - Beta',
         'Intended Audience :: Developers',
         'Topic :: Software Development :: Build Tools',
         'Programming Language :: Python :: 2.7',
--- a/pylib/vcsreplicator/setup.py
+++ b/pylib/vcsreplicator/setup.py
@@ -1,15 +1,15 @@
 from setuptools import setup, find_packages
 
 setup(
     name='vcsreplicator',
     version='0.1',
     description='Replicate changes between version control systems',
-    url='https://mozilla-version-control-tools.readthedocs.org/',
+    url='https://mozilla-version-control-tools.readthedocs.io/',
     author='Mozilla',
     author_email='dev-version-control@lists.mozilla.org',
     license='MPL 2.0',
     classifiers=[
         'Development Status :: 4 - Beta',
         'Intended Audience :: Developers',
         'Programming Language :: Python :: 2.7',
     ],
--- a/pylib/vcsreplicator/tests/test-check-consumer-lag.t
+++ b/pylib/vcsreplicator/tests/test-check-consumer-lag.t
@@ -14,17 +14,17 @@ Check should be OK by default
   OK - partition 1 is completely in sync (0/0)
   OK - partition 2 is completely in sync (0/0)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
 
 Stop the replication consumers to test failure scenarios
 
   $ hgmo exec hgweb0 /usr/bin/supervisorctl stop vcsreplicator:*
   vcsreplicator:\d: stopped (re)
   vcsreplicator:\d: stopped (re)
   vcsreplicator:\d: stopped (re)
@@ -48,17 +48,17 @@ No issues reported when thresholds aren'
   OK - partition 2 is 1 messages behind (0/1)
   OK - partition 2 is \d+\.\d+ seconds behind (re)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
 
 Warning reported when lag count hits threshold
 
   $ check --warning-lag-count 1
   WARNING - 2/8 partitions out of sync
   
   WARNING - partition 0 is 1 messages behind (0/1)
@@ -67,17 +67,17 @@ Warning reported when lag count hits thr
   WARNING - partition 2 is 1 messages behind (0/1)
   OK - partition 2 is \d+\.\d+ seconds behind (re)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
   [1]
 
 Critical reported when lag count hits threshold
 
   $ check --critical-lag-count 1
   CRITICAL - 2/8 partitions out of sync
   
@@ -87,17 +87,17 @@ Critical reported when lag count hits th
   CRITICAL - partition 2 is 1 messages behind (0/1)
   OK - partition 2 is \d+\.\d+ seconds behind (re)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
   [2]
 
 Warning reported when lag time hits threshold
 
   $ sleep 1
 
   $ check --warning-lag-time 0.9
@@ -109,17 +109,17 @@ Warning reported when lag time hits thre
   OK - partition 2 is 1 messages behind (0/1)
   WARNING - partition 2 is \d+\.\d+ seconds behind (re)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
   [1]
 
 Critical reported when lag time hits threshold
 
   $ check --critical-lag-time 0.9
   CRITICAL - 2/8 partitions out of sync
   
@@ -129,17 +129,17 @@ Critical reported when lag time hits thr
   OK - partition 2 is 1 messages behind (0/1)
   CRITICAL - partition 2 is \d+\.\d+ seconds behind (re)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
   [2]
 
 Resuming consumers clears check
 
   $ hgmo exec hgweb0 /usr/bin/supervisorctl start vcsreplicator:*
   vcsreplicator:\d: started (re)
   vcsreplicator:\d: started (re)
@@ -157,14 +157,14 @@ Resuming consumers clears check
   OK - partition 1 is completely in sync (0/0)
   OK - partition 2 is completely in sync (1/1)
   OK - partition 3 is completely in sync (0/0)
   OK - partition 4 is completely in sync (0/0)
   OK - partition 5 is completely in sync (0/0)
   OK - partition 6 is completely in sync (0/0)
   OK - partition 7 is completely in sync (0/0)
   
-  See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html
+  See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html
   for details about this check.
 
 Cleanup
 
   $ hgmo clean
--- a/pylib/vcsreplicator/vcsreplicator/nagios.py
+++ b/pylib/vcsreplicator/vcsreplicator/nagios.py
@@ -110,12 +110,12 @@ def check_consumer_lag():
         print('OK - %d/%d consumers out of sync but within tolerances' % (
             drifted, len(offsets)))
 
     print('')
     for m in output:
         print(m)
 
     print('')
-    print('See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html')
+    print('See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html')
     print('for details about this check.')
 
     sys.exit(exitcode)
--- a/scripts/check_zookeeper
+++ b/scripts/check_zookeeper
@@ -221,12 +221,12 @@ if __name__ == '__main__':
         print(' '.join(msg))
 
     for w in warnings:
         print(w)
     for n in notices:
         print(n)
 
     print('')
-    print('See https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/ops.html')
+    print('See https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/ops.html')
     print('for more info on monitor and alerts.')
 
     sys.exit(exit)
--- a/scripts/generate-hg-s3-bundles
+++ b/scripts/generate-hg-s3-bundles
@@ -83,17 +83,17 @@ HTML_INDEX = '''
       after they are superseded.
     </p>
     <p>
       A <a href="bundles.json">JSON document</a> exposes a machine-readable
       representation of this data.
     </p>
     <p>
        For more, see
-       <a href="https://mozilla-version-control-tools.readthedocs.org/en/latest/hgmo/bundleclone.html">the official docs</a>.
+       <a href="https://mozilla-version-control-tools.readthedocs.io/en/latest/hgmo/bundleclone.html">the official docs</a>.
     </p>
     <table border="1">
       <tr>
         <th>Repository</th>
         <th>gzip</th>
         <th>bz2</th>
         <th>stream</th>
         <th>stream-legacy</th>