diff --git a/src/allmydata/scripts/common.py b/src/allmydata/scripts/common.py index 34266ee72..572048f71 100644 --- a/src/allmydata/scripts/common.py +++ b/src/allmydata/scripts/common.py @@ -4,15 +4,19 @@ import os, sys, urllib, textwrap import codecs from os.path import join +from yaml import ( + safe_dump, +) + # Python 2 compatibility from future.utils import PY2 if PY2: from future.builtins import str # noqa: F401 -# On Python 2 this will be the backported package: -from configparser import NoSectionError - from twisted.python import usage +from twisted.python.filepath import FilePath + + from allmydata.util.assertutil import precondition from allmydata.util.encodingutil import unicode_to_url, quote_output, \ @@ -115,6 +119,22 @@ class NoDefaultBasedirOptions(BasedirOptions): DEFAULT_ALIAS = u"tahoe" +def write_introducer(basedir, petname, furl): + """ + Overwrite the node's ``introducers.yaml`` with a file containing the given + introducer information. + """ + FilePath(basedir).child(b"private").child(b"introducers.yaml").setContent( + safe_dump({ + "introducers": { + petname: { + "furl": furl.decode("ascii"), + }, + }, + }).encode("ascii"), + ) + + def get_introducer_furl(nodedir, config): """ :return: the introducer FURL for the given node (no matter if it's diff --git a/src/allmydata/test/common.py b/src/allmydata/test/common.py index 8eab155b0..cbe4d768c 100644 --- a/src/allmydata/test/common.py +++ b/src/allmydata/test/common.py @@ -32,10 +32,6 @@ import attr import treq -from yaml import ( - safe_dump, -) - from zope.interface import implementer from testtools import ( @@ -85,6 +81,9 @@ from allmydata.client import ( config_from_string, create_client_from_config, ) +from allmydata.scripts.common import ( + write_introducer, + ) from ..crypto import ( ed25519, @@ -104,22 +103,6 @@ EMPTY_CLIENT_CONFIG = config_from_string( ) -def write_introducer(basedir, petname, furl): - """ - Overwrite the node's ``introducers.yaml`` with a file containing the given - introducer information. - """ - FilePath(basedir).child(b"private").child(b"introducers.yaml").setContent( - safe_dump({ - "introducers": { - petname: { - "furl": furl.decode("ascii"), - }, - }, - }).encode("ascii"), - ) - - @attr.s class MemoryIntroducerClient(object): """ diff --git a/src/allmydata/test/test_client.py b/src/allmydata/test/test_client.py index b76047be0..7fb82c262 100644 --- a/src/allmydata/test/test_client.py +++ b/src/allmydata/test/test_client.py @@ -58,6 +58,9 @@ from allmydata.util import ( from allmydata.util.fileutil import abspath_expanduser_unicode from allmydata.interfaces import IFilesystemNode, IFileNode, \ IImmutableFileNode, IMutableFileNode, IDirectoryNode +from allmydata.scripts.common import ( + write_introducer, +) from foolscap.api import flushEventualQueue import allmydata.test.common_util as testutil from .common import ( @@ -66,7 +69,6 @@ from .common import ( UseTestPlugins, MemoryIntroducerClient, get_published_announcements, - write_introducer, ) from .matchers import ( MatchesSameElements, diff --git a/src/allmydata/test/test_introducer.py b/src/allmydata/test/test_introducer.py index 4ccabd4e4..f6497eeb4 100644 --- a/src/allmydata/test/test_introducer.py +++ b/src/allmydata/test/test_introducer.py @@ -39,9 +39,11 @@ from allmydata.util import pollmixin, idlib, fileutil, yamlutil from allmydata.util.iputil import ( listenOnUnused, ) +from allmydata.scripts.common import ( + write_introducer, +) import allmydata.test.common_util as testutil from .common import ( - write_introducer, SyncTestCase, AsyncTestCase, AsyncBrokenTestCase, diff --git a/src/allmydata/test/test_system.py b/src/allmydata/test/test_system.py index 14bcb9c47..5a34dcc4d 100644 --- a/src/allmydata/test/test_system.py +++ b/src/allmydata/test/test_system.py @@ -47,7 +47,7 @@ from .web.common import ( from allmydata.test.test_runner import RunBinTahoeMixin from . import common_util as testutil from .common_util import run_cli -from .common import ( +from ..scripts.common import ( write_introducer, )