taler-deployment

Deployment scripts and configuration files
Log | Files | Refs | README

commit d6bcd5b5c882be79e059c70d069760f0dd9d0356
parent f0815b1db3dcda3f3462476c03dc4bcd26401193
Author: MS <ms@taler.net>
Date:   Fri, 24 Jul 2020 11:09:42 +0200

allow PATCHing instances

Diffstat:
Mbin/taler-config-instances | 264+++++++++++++++++++++++++++++++++++++++++--------------------------------------
1 file changed, 137 insertions(+), 127 deletions(-)

diff --git a/bin/taler-config-instances b/bin/taler-config-instances @@ -1,9 +1,10 @@ #!/usr/bin/env python3 -from requests import post +import requests from os import environ from sys import exit from urllib.parse import urljoin +from dataclasses import dataclass MERCHANT_BACKEND_BASE_URL = environ.get("TALER_ENV_MERCHANT_BACKEND") if not MERCHANT_BACKEND_BASE_URL: @@ -15,7 +16,7 @@ if not MERCHANT_BACKEND_BASE_URL: print("TALER_ENV_NAME not defined. Please source the ~/activate file.") exit(1) -INSTANCE_CONFIG_URL = urljoin(MERCHANT_BACKEND_BASE_URL, "/private/instances") +TALER_PATCH_INSTANCES = environ.get("TALER_PATCH_INSTANCES") def expectResponse(response, expected_status_codes): if response.status_code not in expected_status_codes: @@ -25,142 +26,151 @@ def expectResponse(response, expected_status_codes): # Allows for finer grained checks. return response -print("configuring Blog") -BLOG_INSTANCE_ID="blog" -blog_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{BLOG_INSTANCE_ID}"], - id=BLOG_INSTANCE_ID, - name="Blog", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +class Instance: + def __init__(self, instance_id, config_data, backend_url, is_patch=False): + self.instance_id = instance_id + self.config_data = config_data + self.backend_url = backend_url + if not is_patch: # First time instance configuration. + self.config_data.update(id=instance_id) + self.is_patch = is_patch + + def get_config_data(self): + return self.config_data + def get_config_url(self): + if not is_patch: + return urljoin(self.backend_url, "/private/instances") + return urljoin(self.backend_url, "/private/instances/{}".format(self.instance_id)) + def get_http_method(self): + if not is_patch: + return requests.post + return requests.patch + +blog = Instance( + "blog", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/blog"], + name="Blog", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -print("configuring Donations") -DONATIONS_INSTANCE_ID="donations" -donations_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{DONATIONS_INSTANCE_ID}"], - id=DONATIONS_INSTANCE_ID, - name="Donations", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +donations = Instance( + "donations", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/donations"], + name="Donations", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -print("configuring Survey") -SURVEY_INSTANCE_ID="survey" -survey_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{SURVEY_INSTANCE_ID}"], - id=SURVEY_INSTANCE_ID, - name="Survey", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +survey = Instance( + "survey", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/survey"], + name="Survey", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -print("configuring PoS") -POS_INSTANCE_ID="pos" -pos_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{POS_INSTANCE_ID}"], - id=POS_INSTANCE_ID, - name="PoS", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +pos = Instance( + "pos", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/pos"], + name="PoS", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -print("configuring GNUnet") -GNUNET_INSTANCE_ID="GNUnet" -gnunet_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{GNUNET_INSTANCE_ID}"], - id=GNUNET_INSTANCE_ID, - name="GNUnet", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +gnunet = Instance( + "gnunet", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/GNUnet"], + name="GNUnet", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -print("configuring Taler") -TALER_INSTANCE_ID="Taler" -taler_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{TALER_INSTANCE_ID}"], - id=TALER_INSTANCE_ID, - name="Taler", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +taler = Instance( + "Taler", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/Taler"], + name="Taler", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -print("configuring Tor") -TOR_INSTANCE_ID="Tor" -tor_config = dict( - payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/{TOR_INSTANCE_ID}"], - id=TOR_INSTANCE_ID, - name="Tor", - address=dict(), - jurisdiction=dict(), - default_max_wire_fee="EUR:1", - default_wire_fee_amortization=3, - default_max_deposit_fee="EUR:1", - default_wire_transfer_delay=dict(d_ms="forever"), - default_pay_delay=dict(d_ms="forever") +tor = Instance( + "Tor", + dict( + payto_uris=[f"payto://x-taler-bank/bank.{TALER_ENV_NAME}.taler.net/Tor"], + name="Tor", + address=dict(), + jurisdiction=dict(), + default_max_wire_fee="EUR:1", + default_wire_fee_amortization=3, + default_max_deposit_fee="EUR:1", + default_wire_transfer_delay=dict(d_ms="forever"), + default_pay_delay=dict(d_ms="forever") + ), + MERCHANT_BACKEND_BASE_URL, + TALER_PATCH_INSTANCES ) -expectResponse( - post(INSTANCE_CONFIG_URL, json=blog_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) - -expectResponse( - post(INSTANCE_CONFIG_URL, json=donations_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) - -expectResponse( - post(INSTANCE_CONFIG_URL, json=survey_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) - -expectResponse( - post(INSTANCE_CONFIG_URL, json=pos_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) - -expectResponse( - post(INSTANCE_CONFIG_URL, json=taler_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) - -expectResponse( - post(INSTANCE_CONFIG_URL, json=gnunet_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) - -expectResponse( - post(INSTANCE_CONFIG_URL, json=tor_config, headers={"Authorization": "ApiKey sandbox"}), - [204, 409] -) +for instance in [blog, donations, pos, tor, taler, gnunet, survey]: + expectResponse( + instance.get_http_method( + instance.get_config_url(), + json=instance.get_config_data(), + headers={"Authorization": "apikey sandbox"} + ), + [204, 409] + )