Deploy the trigger on the Production CentreΒΆ

This Jupyter Notebook creates a Web Processing Service request on the Ellip Platform Deployer to deploy the trigger and its associated coordinators on the Production Centre.

In [22]:
import getpass
import lxml.etree as etree
import owslib
from owslib.wps import monitorExecution
from owslib.wps import WebProcessingService
  • Set the deployer
In [23]:
deployer = 'https://ec-better-triggers-deployer.terradue.com'
  • Define the trigger information
In [24]:
trigger_queue = dict([('artifact_id', 'tg-ethz-01-03-01-queue'),
                ('version', '0.1'),
                ('community', 'ec-better')])

trigger_pipe = dict([('artifact_id', 'tg-ethz-01-01-03-pipe'),
                ('version', '0.1'),
                ('community', 'ec-better')])
In [25]:
api_key = getpass.getpass("What is your Ellip platform API key?")
  • First do the imports of the Python libraries required
  • Connect to the WPS server and do a GetCapabilities request to list the available process:
In [26]:
wps_url = '%s/zoo-bin/zoo_loader.cgi' % deployer

wps = WebProcessingService(wps_url, verbose=False, skip_caps=True)

wps.getcapabilities()
In [27]:
for index, elem in enumerate(wps.processes):
    print(index, elem.identifier)
(0, 'ec_better_tg_better_wfp_00001_via_tg_better_wfp_00001_via_0_1')
(1, 'ec_better_tg_ethz_01_03_01_queue_tg_ethz_01_03_01_queue_1_1')
(2, 'TerradueUnDeployProcess')
(3, 'ec_better_tg_better_wfp_00001_queue_tg_better_wfp_00001_queue_0_1')
(4, 'ec_better_tg_ethz_01_03_01_via_tg_tg_ethz_01_03_01_via_1_1')
(5, 'GetStatus')
(6, 'TerradueDeployProcess')
(7, 'ec_better_wfp_01_01_01_wfp_01_01_01_1_0')
  • Select the TerradueDeployProcess process to submit a DescribeProcess request and list the inputs:
In [28]:
process_id = 'TerradueDeployProcess'

process = wps.describeprocess(process_id)

for data_input in process.dataInputs:
    print data_input.identifier

print '----'

for process_output in process.processOutputs:
    print process_output.identifier
applicationPackage
apikey
----
deployResult
  • Build the Python dictionary with the inputs:
  • Submit the Execute WPS request:
In [30]:
for trigger in [trigger_queue, trigger_pipe]:
    ows_context_url = '/%s/_applications/%s/%s/%s/%s-%s-application-context.xml' % (trigger['community'],
                                                                                    trigger['community'],
                                                                                    trigger['artifact_id'],
                                                                                    trigger['version'],
                                                                                    trigger['artifact_id'],
                                                                                    trigger['version'])
    print 'Deploying %s' % ows_context_url

    inputs = [('applicationPackage', ows_context_url),
              ('apikey', api_key)]

    execution = owslib.wps.WPSExecution(url=wps.url)

    execution_request = execution.buildRequest(process_id,
                                               inputs,
                                               output=[('deployResult', False)])


    execution_response = execution.submitRequest(etree.tostring(execution_request))

    execution.parseResponse(execution_response)

    monitorExecution(execution)

    if execution.isSucceded():
        print 'Application %s deployed!' % trigger['artifact_id']
    else:
        print 'Application %s not deployed!' % trigger['artifact_id']

Deploying /ec-better/_applications/ec-better/tg-better-wfp-00001-queue/0.3/tg-better-wfp-00001-queue-0.3-application-context.xml
Application tg-better-wfp-00001-queue deployed!
Deploying /ec-better/_applications/ec-better/tg-better-wfp-00001-pipe/0.4/tg-better-wfp-00001-pipe-0.4-application-context.xml
Application tg-better-wfp-00001-pipe deployed!
  • Check the new WPS capabilities:
In [31]:
wps = WebProcessingService(wps_url, verbose=False, skip_caps=True)
wps.getcapabilities()

for index, elem in enumerate(wps.processes):
    print(index, elem.identifier)
(0, 'ec_better_tg_better_wfp_00001_via_tg_better_wfp_00001_via_0_1')
(1, 'ec_better_tg_better_wfp_00001_pipe_tg_better_wfp_00001_pipe_0_4')
(2, 'ec_better_tg_ethz_01_03_01_queue_tg_ethz_01_03_01_queue_1_1')
(3, 'TerradueUnDeployProcess')
(4, 'ec_better_tg_better_wfp_00001_queue_tg_better_wfp_00001_queue_0_1')
(5, 'ec_better_tg_ethz_01_03_01_via_tg_tg_ethz_01_03_01_via_1_1')
(6, 'GetStatus')
(7, 'ec_better_tg_better_wfp_00001_queue_tg_better_wfp_00001_queue_0_3')
(8, 'TerradueDeployProcess')
(9, 'ec_better_wfp_01_01_01_wfp_01_01_01_1_0')