File swift-dispersion-insecure-ssl.patch of Package openstack-swift
From: Vincent Untz <vuntz@suse.com>
Date: Fri, 12 Jul 2013 06:11:27 +0000 (+0200)
Subject: Allow dispersion tools to use keystone server with insecure certificate
X-Git-Url: https://review.openstack.org/gitweb?p=openstack%2Fswift.git;a=commitdiff_plain;h=82986ab4bfab3ae7bd192bdd42795d56f9711c9d
Allow dispersion tools to use keystone server with insecure certificate
The swift-dispersion-populate and swift-dispersion-report tools now
accept a --insecure option.
Also, dispersion.conf now has a keystone_api_insecure option.
Default is obviously to use the secure path.
Change-Id: I4000352e547d9ce5b08ade54e0c886281caff891
---
diff --git a/bin/swift-dispersion-populate b/bin/swift-dispersion-populate
index 324c644..20159c9 100755
--- a/bin/swift-dispersion-populate
+++ b/bin/swift-dispersion-populate
@@ -18,7 +18,8 @@
import traceback
from ConfigParser import ConfigParser
from cStringIO import StringIO
-from sys import exit, argv, stdout
+from optparse import OptionParser
+from sys import exit, stdout
from time import time
from uuid import uuid4
@@ -27,7 +28,10 @@ from eventlet.pools import Pool
from swiftclient import Connection, get_auth
from swift.common.ring import Ring
-from swift.common.utils import compute_eta, get_time_units
+from swift.common.utils import compute_eta, get_time_units, config_true_value
+
+
+insecure = False
def put_container(connpool, container, report):
@@ -79,10 +83,19 @@ if __name__ == '__main__':
patcher.monkey_patch()
conffile = '/etc/swift/dispersion.conf'
- if len(argv) == 2:
- conffile = argv[1]
- elif len(argv) > 2:
- exit('Syntax: %s [conffile]' % argv[0])
+
+ parser = OptionParser(usage='''
+Usage: %%prog [options] [conf_file]
+
+[conf_file] defaults to %s'''.strip() % conffile)
+ parser.add_option('--insecure', action='store_true', default=False,
+ help='Allow accessing insecure keystone server. '
+ 'The keystone\'s certificate will not be verified.')
+ options, args = parser.parse_args()
+
+ if args:
+ conffile = args.pop(0)
+
c = ConfigParser()
if not c.read(conffile):
exit('Unable to read config file: %s' % conffile)
@@ -92,6 +105,8 @@ if __name__ == '__main__':
retries = int(conf.get('retries', 5))
concurrency = int(conf.get('concurrency', 25))
endpoint_type = str(conf.get('endpoint_type', 'publicURL'))
+ insecure = options.insecure \
+ or config_true_value(conf.get('keystone_api_insecure', 'no'))
coropool = GreenPool(size=concurrency)
retries_done = 0
@@ -101,14 +116,16 @@ if __name__ == '__main__':
url, token = get_auth(conf['auth_url'], conf['auth_user'],
conf['auth_key'],
auth_version=conf.get('auth_version', '1.0'),
- os_options=os_options)
+ os_options=os_options,
+ insecure=insecure)
account = url.rsplit('/', 1)[1]
connpool = Pool(max_size=concurrency)
connpool.create = lambda: Connection(conf['auth_url'],
conf['auth_user'], conf['auth_key'],
retries=retries,
preauthurl=url, preauthtoken=token,
- os_options=os_options)
+ os_options=os_options,
+ insecure=insecure)
container_ring = Ring(swift_dir, ring_name='container')
parts_left = dict((x, x) for x in xrange(container_ring.partition_count))
diff --git a/bin/swift-dispersion-report b/bin/swift-dispersion-report
index f96baab..dd7219c 100755
--- a/bin/swift-dispersion-report
+++ b/bin/swift-dispersion-report
@@ -37,6 +37,7 @@ unmounted = []
notfound = []
json_output = False
debug = False
+insecure = False
def get_error_log(prefix):
@@ -322,6 +323,9 @@ Usage: %%prog [options] [conf_file]
help='Only run container report')
parser.add_option('--object-only', action='store_true', default=False,
help='Only run object report')
+ parser.add_option('--insecure', action='store_true', default=False,
+ help='Allow accessing insecure keystone server. '
+ 'The keystone\'s certificate will not be verified.')
options, args = parser.parse_args()
if args:
@@ -344,6 +348,8 @@ Usage: %%prog [options] [conf_file]
and not options.container_only
if not (object_report or container_report):
exit("Neither container or object report is set to run")
+ insecure = options.insecure \
+ or config_true_value(conf.get('keystone_api_insecure', 'no'))
if options.debug:
debug = True
@@ -354,12 +360,14 @@ Usage: %%prog [options] [conf_file]
url, token = get_auth(conf['auth_url'], conf['auth_user'],
conf['auth_key'],
auth_version=conf.get('auth_version', '1.0'),
- os_options=os_options)
+ os_options=os_options,
+ insecure=insecure)
account = url.rsplit('/', 1)[1]
connpool = Pool(max_size=concurrency)
connpool.create = lambda: Connection(
conf['auth_url'], conf['auth_user'], conf['auth_key'], retries=retries,
- preauthurl=url, preauthtoken=token, os_options=os_options)
+ preauthurl=url, preauthtoken=token, os_options=os_options,
+ insecure=insecure)
container_ring = Ring(swift_dir, ring_name='container')
object_ring = Ring(swift_dir, ring_name='object')
diff --git a/doc/manpages/dispersion.conf.5 b/doc/manpages/dispersion.conf.5
index ec6029a..b1188a6 100644
--- a/doc/manpages/dispersion.conf.5
+++ b/doc/manpages/dispersion.conf.5
@@ -67,6 +67,7 @@ Whether to run the object report. The default is yes.
.IP "auth_user = dpstats:dpstats"
.IP "auth_key = dpstats"
.IP "swift_dir = /etc/swift"
+.IP "# keystone_api_insecure = no"
.IP "# dispersion_coverage = 1"
.IP "# retries = 5"
.IP "# concurrency = 25"
diff --git a/doc/manpages/swift-dispersion-populate.1 b/doc/manpages/swift-dispersion-populate.1
index 63fd36e..7fa132d 100644
--- a/doc/manpages/swift-dispersion-populate.1
+++ b/doc/manpages/swift-dispersion-populate.1
@@ -24,7 +24,7 @@
.SH SYNOPSIS
.LP
-.B swift-dispersion-populate
+.B swift-dispersion-populate [--insecure] [conf_file]
.SH DESCRIPTION
.PP
@@ -56,6 +56,13 @@ same configuration file, /etc/swift/dispersion.conf . The account used by these
tool should be a dedicated account for the dispersion stats and also have admin
privileges.
+.SH OPTIONS
+.RS 0
+.PD 1
+.IP "\fB--insecure\fR"
+Allow accessing insecure keystone server. The keystone's certificate will not
+be verified.
+
.SH CONFIGURATION
.PD 0
Example \fI/etc/swift/dispersion.conf\fR:
diff --git a/doc/manpages/swift-dispersion-report.1 b/doc/manpages/swift-dispersion-report.1
index 6f19b34..a1273bf 100644
--- a/doc/manpages/swift-dispersion-report.1
+++ b/doc/manpages/swift-dispersion-report.1
@@ -24,7 +24,7 @@
.SH SYNOPSIS
.LP
-.B swift-dispersion-report [-d|--debug] [-j|--dump-json] [-p|--partitions] [--container-only|--object-only] [conf_file]
+.B swift-dispersion-report [-d|--debug] [-j|--dump-json] [-p|--partitions] [--container-only|--object-only] [--insecure] [conf_file]
.SH DESCRIPTION
.PP
@@ -84,6 +84,13 @@ Only run the container report
.IP "\fB--object-only\fR"
Only run the object report
+.SH OPTIONS
+.RS 0
+.PD 1
+.IP "\fB--insecure\fR"
+Allow accessing insecure keystone server. The keystone's certificate will not
+be verified.
+
.SH CONFIGURATION
.PD 0
Example \fI/etc/swift/dispersion.conf\fR:
diff --git a/etc/dispersion.conf-sample b/etc/dispersion.conf-sample
index fb62b86..fb36519 100644
--- a/etc/dispersion.conf-sample
+++ b/etc/dispersion.conf-sample
@@ -7,6 +7,7 @@ auth_key = testing
# auth_key = testing
# auth_version = 2.0
# endpoint_type = publicURL
+# keystone_api_insecure = no
#
# swift_dir = /etc/swift
# dispersion_coverage = 1