Skip to content

Commit

Permalink
2.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
markheger committed May 9, 2019
1 parent e3b4469 commit 688fac5
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 5 deletions.
2 changes: 1 addition & 1 deletion package/docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
# The short X.Y version.
version = '2.0'
# The full version, including alpha/beta/rc tags.
release = '2.0.1'
release = '2.1.0'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
2 changes: 1 addition & 1 deletion package/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
],
install_requires=['streamsx'],
install_requires=['streamsx','wget'],

test_suite='nose.collector',
tests_require=['nose']
Expand Down
6 changes: 3 additions & 3 deletions package/streamsx/eventstore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"""

__version__='2.0.1'
__version__='2.1.0'

__all__ = ['insert', 'configure_connection']
from streamsx.eventstore._eventstore import insert,configure_connection
__all__ = ['insert', 'configure_connection', 'download_toolkit', 'get_service_details']
from streamsx.eventstore._eventstore import insert,configure_connection,download_toolkit,get_service_details
73 changes: 73 additions & 0 deletions package/streamsx/eventstore/_eventstore.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
from streamsx.topology.schema import CommonSchema, StreamSchema
from streamsx.spl.types import rstring
import os
import getpass
import wget
from tempfile import gettempdir
import shutil
import tarfile


def _add_toolkit_dependency(topo):
# IMPORTANT: Dependency of this python wrapper to a specific toolkit version
Expand All @@ -18,6 +24,73 @@ def _add_store_file(topology, path):
topology.add_file_dependency(path, 'opt')
return 'opt/'+filename


def _download_tk(url, name):
targetdir=gettempdir() + '/' + name
tmpfile = gettempdir() + '/' + name + '.tgz'
if os.path.isdir(targetdir):
shutil.rmtree(targetdir)
if os.path.isfile(tmpfile):
os.remove(tmpfile)
wget.download(url, tmpfile)
print (tmpfile + ": " + str(os.stat(tmpfile)))
tar = tarfile.open(tmpfile, "r:gz")
tar.extractall(path=targetdir)
tar.close()
toolkit_path = targetdir + '/' + name
tkfile = toolkit_path + '/toolkit.xml'
if os.path.isfile(tkfile):
print (tkfile + ': ' + str(os.stat(tkfile)))
return toolkit_path


def download_toolkit(url=None):
"""Downloads the event store toolkit from GitHub.
    Example for updating the Event Store toolkit::
# download event store toolkit from GitHub
eventstore_toolkit = es.update_toolkit(url=None)
# add event store toolkit to topology
streamsx.spl.toolkit.add_toolkit(topo, eventstore_toolkit)
   Returns:
        eventstore toolkit location
"""
if url is None:
url = 'https://github.com/IBMStreams/streamsx.eventstore/releases/download/v2.0.1-Enterprise-v2/streamsx.eventstore.toolkits-2.0.1-20190503-1449.tgz'
eventstore_toolkit = _download_tk(url,'com.ibm.streamsx.eventstore')
return eventstore_toolkit


def get_service_details(service_configuration):
"""Retrieve connection information for Event Store service in ICP4D.
    Example for retrieving Event Store service details::
from icpd_core import icpd_util
eventstore_cfg=icpd_util.get_service_instance_details(name='your-eventstore-instance')
es_db, es_connection, es_user, es_password, es_truststore, es_truststore_password, es_keystore, es_keystore_password = get_service_details(eventstore_cfg)
   Returns:
        database_name, connection, user, password, truststore, truststore_password, keystore, keystore_password
"""

es_db=input("Event Store database name (for example EVENTDB):")
es_connection=input("Event Store connection (for example '<HOST1>:<JDBC_PORT>;<HOST1>:1101,<HOST2>:1101,<HOST3>:1101':")
es_user=input("Event Store user:")
es_password=getpass.getpass('Event Store password:')

es_truststore=input("Event Store truststore file location (for example '/user-home/_global_/eventstore/db2eventstore-1234567890/clientkeystore':")
es_truststore_password=getpass.getpass("Event Store truststore password:")
# Change the lines below, if keystore and truststore is not in the same file
es_keystore=es_truststore
es_keystore_password=es_truststore_password

return es_db, es_connection, es_user, es_password, es_truststore, es_truststore_password, es_keystore, es_keystore_password


def configure_connection(instance, name='eventstore', database=None, connection=None, user=None, password=None, keystore_password=None, truststore_password=None):
"""Configures IBM Streams for a connection to IBM Db2 Event Store database.
Expand Down
15 changes: 15 additions & 0 deletions package/streamsx/eventstore/tests/test_eventstore.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,21 @@ def test_param(self):
es.insert(s, connection='9.26.150.75:1101', database='sample_db', table='sample_table', batch_size=100, max_num_active_batches=5)
es.insert(s, connection='9.26.150.75:1101', database='sample_db', table='sample_table', batch_size=100, max_num_active_batches=5, front_end_connection_flag=True)


def test_update_toolkit(self):
topo = Topology()
url = None
# download event store toolkit from GitHub
eventstore_toolkit = es.download_toolkit(url)
# add event store toolkit to topology
streamsx.spl.toolkit.add_toolkit(topo, eventstore_toolkit)

def test_get_service_details(self):
topo = Topology()
es_cfg = None
es_db, es_connection, es_user, es_password, es_truststore, es_truststore_password, es_keystore, es_keystore_password = es.get_service_details(es_cfg)


##
## Test requirements
##
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
streamsx
wget

0 comments on commit 688fac5

Please sign in to comment.