EDDS Data streaming software
============================

IRAP has modified a Java StreamClient application delivered by ESA, to be able to download
SolarOrbiter TM/TC in near real-time, from EDDS server.

* link:/documents/EDDS/software/[Download STREAM_CLIENT.irap]
* link:/documents/EDDS/software/STREAM_CLIENT.irap[Browse Software directory]

== Introduction

The new software is consists in:

* *EDDS.py*
+
--
python script, using EDDS SOAP Web Services

* read config.properties file, to extract user authentication parameters and EDDS server address

* connect to EDDS server with user account
 
* launch a data streaming requests (TM or TC data)

* recover the corresponding requestId

* run Java StreamClient that gets streaming data for the corresponding request
--

* *StreamClientLauncher.sh*
+
--
Shell script that run the Java Stream Client to recover streaming data from EDDS server
--

== Software requirements

* Access to EDDS server
+
--
Ask ESOC for an account on the EDDS server, with a valid Usename and password

Check your network configuration rules for your computer to access EDDS server
--

* python
+
--
You need python 3.x installed on your computer, with some extra libraries :

* zeep : to access SOAP Web services
* isodate : ISO 8601 library (ISO time)
* configobj : to parse config.properties

You can use pip to install those libraries

	$ pip install zeep isodate configobj
--

* java
+
--
Java probably 8.x is necessary (to be confirmed)
--


== Installation manual

Download and extract the link:/documents/EDDS/software/STREAM_CLIENT.irap.tar.gz[]

----
$ cd <install-directory>
$ tar xvzf STREAM_CLIENT.irap.tar.gz
$ cd STREAM_CLIENT.irap
----

You will find here:

* config.properties :
+
config file used by application to find username, password, EDDS server address

* EDDS.py
+
python EDDS library

* StreamCLientLauncher.sh
+
Shell script that run the Java StreamClient application

* streamclient.xml
+
Java beans XML config file, modified by IRAP to change ESA software behaviour

* lib
+
Original ESA Java library (.jar files)

* src
+
IRAP's added Java source files 

* irap-streamedds.jar
+
IRAP modified library (build from src/*java)

* build
+
Shell script to build the IRAP Java modified software

=== Configuration

You have first to update the config.properties file with your usual text editor,
to fill your EDDS username and passord

.config.properties
----
# The username that the request submitter should log on as
username = <EDDS-username>

# The password that the request submitter should log on as
password = <your-EDDS-password>

# The EDDS web server that the request submitter should submit requests to
eddsServerAddress = https://mmaasweb01.esoc.ops.esa.int:8443/edds/EddsService?wsdl
----

Check also the content of streamclient.xml file, to verify pathname of config.properties file

.streamclient.xml
----
  <bean class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
    <property name="location" value="file:///home/solar/EDDS/STREAM_CLIENT.irap/config.properties"/>
  </bean>
----

You can use the build script to reconstruct the IRAP Java library, 
but it's not necessary if you dont't modify the corresponding java sources.

----
./build
----

Will create/update the irap-streamedds.jar library

=== User Manual

From the extraction directory, just enter :

----
# To download TM data
$ python -m EDDS TM

# To download TC data
$ python -m EDDS TC
----

[CAUTION]
====
Actually, as SWA data is not yet available, we are using PID = 76,77 filtering for TM data test purpose
====

You can have a look on EDDS.py, in create_TM_stream_request() function

----
	StreamDataRequest = PktTmStream (
			DataSource = "PARC",
			Filter = "pids=76,77;sendRawData=true"
		)
----

We will update later the EDDS.py software, to modify PID filters, for example to filter SWA data :

	Filter = "pids=95-99;sendRawData=true"

You can modify also the test_TM() or test_TC() functions:

----
def	test_TM ():
	"""
	Create a PktTmStream request, with a given duration
	"""
	duration = isodate.Duration (hours = 1)

	req = create_TM_stream_request (duration)

	job_id = send_stream_request (req)

	update_properties (job_id)

	run_stream_client()
----

== Acknowledgements

Please acknoledge Tom.barthe@gmail.com

* He has made available the EDDS Web services from remote python script, using SOAP protocol.

* He has also overloaded the ESA stream client software to modify the application behaviour, 
in order to create a single result file per request, increasing regularly in near real-time.