fix boto 2 conflict on Google Compute Engine instances
GCE installs some Python-2-only boto plugin that conflicts with boto running under Python 3. It gives a SyntaxError in /usr/share/google/boto/boto_plugins/compute_auth.py (https://github.com/GoogleCloudPlatform/compute-image-packages). Disabling boto's default configuration file prior to importing boto so that GCE's plugin is not loaded. See https://discourse.mailinabox.email/t/500-internal-server-error-for-admin/942.
This commit is contained in:
parent
161d096139
commit
cf33be4596
|
@ -22,6 +22,7 @@ System:
|
|||
* If ownCloud sends out email, it will use the box's administrative address now (admin@yourboxname).
|
||||
* Z-Push (Exchange/ActiveSync) logs now exclude warnings and are now rotated to save disk space.
|
||||
* Fix pip command that might have not installed all necessary Python packages.
|
||||
* The control panel and backup would not work on Google Compute Engine because they install a conflicting boto package.
|
||||
|
||||
v0.14 (November 4, 2015)
|
||||
------------------------
|
||||
|
|
|
@ -12,7 +12,7 @@ import os, os.path, shutil, glob, re, datetime
|
|||
import dateutil.parser, dateutil.relativedelta, dateutil.tz
|
||||
import rtyaml
|
||||
|
||||
from utils import exclusive_process, load_environment, shell, wait_for_service
|
||||
from utils import exclusive_process, load_environment, shell, wait_for_service, fix_boto
|
||||
|
||||
def backup_status(env):
|
||||
# Root folder
|
||||
|
@ -326,6 +326,7 @@ def list_target_files(config):
|
|||
|
||||
elif p.scheme == "s3":
|
||||
# match to a Region
|
||||
fix_boto() # must call prior to importing boto
|
||||
import boto.s3
|
||||
from boto.exception import BotoServerError
|
||||
for region in boto.s3.regions():
|
||||
|
|
|
@ -94,6 +94,7 @@ def index():
|
|||
no_users_exist = (len(get_mail_users(env)) == 0)
|
||||
no_admins_exist = (len(get_admins(env)) == 0)
|
||||
|
||||
utils.fix_boto() # must call prior to importing boto
|
||||
import boto.s3
|
||||
backup_s3_hosts = [(r.name, r.endpoint) for r in boto.s3.regions()]
|
||||
|
||||
|
|
|
@ -245,6 +245,14 @@ def wait_for_service(port, public, env, timeout):
|
|||
return False
|
||||
time.sleep(min(timeout/4, 1))
|
||||
|
||||
def fix_boto():
|
||||
# Google Compute Engine instances install some Python-2-only boto plugins that
|
||||
# conflict with boto running under Python 3. Disable boto's default configuration
|
||||
# file prior to importing boto so that GCE's plugin is not loaded:
|
||||
import os
|
||||
os.environ["BOTO_CONFIG"] = "/etc/boto3.cfg"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from dns_update import get_dns_domains
|
||||
from web_update import get_web_domains, get_default_www_redirects
|
||||
|
|
Loading…
Reference in New Issue