You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sdap.apache.org by ea...@apache.org on 2020/08/06 02:03:27 UTC
[incubator-sdap-nexus] branch cassandra-authentication updated: Add
cassandra auth support in doms
This is an automated email from the ASF dual-hosted git repository.
eamonford pushed a commit to branch cassandra-authentication
in repository https://gitbox.apache.org/repos/asf/incubator-sdap-nexus.git
The following commit(s) were added to refs/heads/cassandra-authentication by this push:
new 095a89f Add cassandra auth support in doms
095a89f is described below
commit 095a89f818597b1ff4bb2c2eca03dabf4feee5e5
Author: Eamon Ford <ea...@gmail.com>
AuthorDate: Wed Aug 5 19:03:14 2020 -0700
Add cassandra auth support in doms
---
.../algorithms/doms/DomsInitialization.py | 31 ++++++++++++++++++----
.../algorithms/doms/domsconfig.ini.default | 4 ++-
analysis/webservice/webapp.py | 2 --
3 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/analysis/webservice/algorithms/doms/DomsInitialization.py b/analysis/webservice/algorithms/doms/DomsInitialization.py
index 2d429ca..b9ee6f3 100644
--- a/analysis/webservice/algorithms/doms/DomsInitialization.py
+++ b/analysis/webservice/algorithms/doms/DomsInitialization.py
@@ -14,16 +14,18 @@
# limitations under the License.
-
import ConfigParser
import logging
import pkg_resources
-from cassandra.cluster import Cluster
-from cassandra.policies import TokenAwarePolicy, DCAwareRoundRobinPolicy, WhiteListRoundRobinPolicy
+from cassandra.auth import PlainTextAuthProvider
+from cassandra.cluster import Cluster
+from cassandra.policies import (DCAwareRoundRobinPolicy, TokenAwarePolicy,
+ WhiteListRoundRobinPolicy)
from webservice.NexusHandler import nexus_initializer
+
@nexus_initializer
class DomsInitializer:
def __init__(self):
@@ -35,9 +37,12 @@ class DomsInitializer:
domsconfig = ConfigParser.SafeConfigParser()
domsconfig.read(DomsInitializer._get_config_files('domsconfig.ini'))
+ domsconfig = self.override_config(domsconfig, config)
cassHost = domsconfig.get("cassandra", "host")
cassPort = domsconfig.get("cassandra", "port")
+ cassUsername = domsconfig.get("cassandra", "username")
+ cassPassword = domsconfig.get("cassandra", "password")
cassKeyspace = domsconfig.get("cassandra", "keyspace")
cassDatacenter = domsconfig.get("cassandra", "local_datacenter")
cassVersion = int(domsconfig.get("cassandra", "protocol_version"))
@@ -55,13 +60,29 @@ class DomsInitializer:
dc_policy = WhiteListRoundRobinPolicy([cassHost])
token_policy = TokenAwarePolicy(dc_policy)
- with Cluster([host for host in cassHost.split(',')], port=int(cassPort), load_balancing_policy=token_policy,
- protocol_version=cassVersion) as cluster:
+ if cassUsername and cassPassword:
+ auth_provider = PlainTextAuthProvider(username=cassUsername, password=cassPassword)
+ else:
+ auth_provider = None
+
+ with Cluster([host for host in cassHost.split(',')],
+ port=int(cassPort),
+ load_balancing_policy=token_policy,
+ protocol_version=cassVersion,
+ auth_provider=auth_provider) as cluster:
session = cluster.connect()
self.createKeyspace(session, cassKeyspace)
self.createTables(session)
+ def override_config(self, first, second):
+ for section in second.sections():
+ if first.has_section(section): # only override preexisting section, ignores the other
+ for option in second.options(section):
+ if second.get(section, option) is not None:
+ first.set(section, option, second.get(section, option))
+ return first
+
def createKeyspace(self, session, cassKeyspace):
log = logging.getLogger(__name__)
log.info("Verifying DOMS keyspace '%s'" % cassKeyspace)
diff --git a/analysis/webservice/algorithms/doms/domsconfig.ini.default b/analysis/webservice/algorithms/doms/domsconfig.ini.default
index d1814bf..6191f9e 100644
--- a/analysis/webservice/algorithms/doms/domsconfig.ini.default
+++ b/analysis/webservice/algorithms/doms/domsconfig.ini.default
@@ -1,10 +1,12 @@
[cassandra]
-host=sdap-cassandra
+host=localhost
port=9042
keyspace=doms
local_datacenter=datacenter1
protocol_version=3
dc_policy=DCAwareRoundRobinPolicy
+username=
+password=
[cassandraDD]
diff --git a/analysis/webservice/webapp.py b/analysis/webservice/webapp.py
index 3ee2f09..d1ada7f 100644
--- a/analysis/webservice/webapp.py
+++ b/analysis/webservice/webapp.py
@@ -126,12 +126,10 @@ if __name__ == "__main__":
tile_service_factory=tile_service_factory,
thread_pool=request_thread_pool)))
-
class VersionHandler(tornado.web.RequestHandler):
def get(self):
self.write(pkg_resources.get_distribution("nexusanalysis").version)
-
handlers.append((r"/version", VersionHandler))
if staticEnabled: