gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-grid5k] 115/189: fix sharding setup, finish explain script summar


From: gnunet
Subject: [taler-grid5k] 115/189: fix sharding setup, finish explain script summary
Date: Thu, 28 Apr 2022 10:48:05 +0200

This is an automated email from the git hooks/post-receive script.

marco-boss pushed a commit to branch master
in repository grid5k.

commit e5293ac4131f588bef58a1fd8fe81e401833cf22
Author: Boss Marco <bossm8@bfh.ch>
AuthorDate: Tue Mar 29 23:46:35 2022 +0200

    fix sharding setup, finish explain script summary
---
 additional/explain-visualizer/explain.py | 148 ++++++++++---
 experiment/scripts/database.sh           |  25 ++-
 experiment/scripts/shard.sh              |   8 +-
 experiment/taler.sharded.rspec           | 361 +++++++++++++++++++++++++++----
 4 files changed, 456 insertions(+), 86 deletions(-)

diff --git a/additional/explain-visualizer/explain.py 
b/additional/explain-visualizer/explain.py
index bad053f..51dfd2e 100755
--- a/additional/explain-visualizer/explain.py
+++ b/additional/explain-visualizer/explain.py
@@ -3,11 +3,13 @@
 
 from json import loads
 from re import compile, sub, escape
-import stat
-from subprocess import check_output, CalledProcessError
+from subprocess import check_output, CalledProcessError, STDOUT
 from enum import Enum
 from textwrap import fill
 import argparse
+from datetime import datetime
+from os import mkdir, path
+import sys
 
 try:
     import sqlparse
@@ -73,17 +75,30 @@ class Plan:
           print(self.indent + f"  Tuples Confliting: 
{self.tuples_conflicting}")
 
 
+# All plans from a single analyze will be stored here
 plans = {}
+
+# The plan which was the most time consuming 
 most_time_consuming = Plan("default", Type.RELATION, 0)
 
+# Regex which strips the partition number from a partition
+# Must be either of the suffixes: _<N> or _default
 partitioned_re = compile('.*_([0-9]+|default)')
 
+# Regexes which will be compiled at start when the identifier of the
+# log lines is set via cli arguments
 log_statement_re = None
 log_execute_re = None
 log_get_params_re = None
 
+# Command line arguments
 args = None
 
+# In which directories to store the current analyzation
+output_dir = None
+
+# Number of queries analyzed
+queries = 0
 
 def print_query(sql):
     """
@@ -116,12 +131,15 @@ def get_explain(sql) -> dict:
                       '-P', 'pager=off',
                       '-qtAXc', sql],
                 env={'PGPASSWD': args.db_pw},
-                timeout=10
+                timeout=10,
+                stderr=STDOUT
         )
         return loads(analyze_json)[0]
     except CalledProcessError as e:
-        print(e.output)
-        print("\nQuery returned an error, skipping analysation\n")
+        if not args.ignore:
+            print(e.output.decode('utf-8'), file=sys.stderr)
+            print("\nQuery returned an error, aborting\n", file=sys.stderr)
+            exit(1)
 
 
 def setup_log_regex():
@@ -131,7 +149,7 @@ def setup_log_regex():
     """
     global log_statement_re, log_execute_re, log_get_params_re
     log_statement_re = compile(f'.*{args.log_id} LOG:  statement: 
((?!COMMIT)(?!BEGIN)(?!SET)(?!START).*);')
-    log_execute_re = compile(f'.*{args.log_id} LOG:  execute [a-zA-Z0-9_]+: 
((?!COMMIT)(?!BEGIN)(?!SET)(?!START)[^#]+)(?:#.*DETAIL:  parameters: (.*))?')
+    log_execute_re = compile(f'.*{args.log_id} LOG:  execute ([a-zA-Z0-9_]+): 
((?!COMMIT)(?!BEGIN)(?!SET)(?!START)[^#]+)(?:#.*DETAIL:  parameters: (.*))?')
     log_get_params_re = compile('(\$\d+)+ = ([^, ]+)')
 
 
@@ -231,9 +249,9 @@ def parse_plan(plan, indent=2):
             parse_plan(_plan, indent + 2)
 
 
-def print_summary(attr_name):
+def print_summary_and_get_total(attr_name) -> int:
     """
-    Print a summary of the attribute with attr_name of the Plan class
+    Print a summary of the attribute with attr_name of the Plan class and 
return the total
     """
     total = 0
     for plan in iterate_plans():
@@ -242,11 +260,12 @@ def print_summary(attr_name):
             total += attr
             print("  {:<25} {:>10}".format(plan.name + ":", attr))
     print(f"\n  (Total: {total})")
+    return total
 
 
-def print_non_indexed():
+def print_and_get_non_indexed() -> int:
     """
-    Print all non indexed scans
+    Print all non indexed scans and return the total amount
     """
     total = 0
     for plan in iterate_plans():
@@ -254,11 +273,13 @@ def print_non_indexed():
             print(f"  {plan.name}")
             total += 1
     print(f"\n  (Total: {total})")
+    return total
 
 
-def visualize(analyze_json):
+def parse_visualize_and_get_summary(analyze_json) -> str:
     """
     Parse and visualize a json plan returned from EXPLAIN (ANALYZE, BUFFERS, 
VERBOSE, FORMAT JSON)
+    Returns a string with the summary (time, actual rows, sub partition rows, 
partitions hit, non indexed scans)
     """
     if analyze_json is None:
         return
@@ -279,16 +300,19 @@ def visualize(analyze_json):
     print("\n\nSUMMARY: \n")
     print(f"Rows Returned by Sub-queries:")
     print("-----------------------------\n")
-    print_summary('rows_returned')
+    total_sub_rows = print_summary_and_get_total('rows_returned')
     print("\nPartitions Hit:")
     print("---------------\n")
-    print_summary('partitions_hit')
+    total_partitions_hit = print_summary_and_get_total('partitions_hit')
     print("\nNon Indexed Scans on:")
     print("---------------------\n")
-    print_non_indexed()
+    total_non_indexed_scans = print_and_get_non_indexed()
     print("\nMost Time Consuming:")
     print("--------------------\n")
-    print("  {:<25} {:>10} ms".format(most_time_consuming.name + ":", 
most_time_consuming.time_spent))
+    print("  {:<25} {:>10} ms".format(
+        most_time_consuming.name + ":", 
+        most_time_consuming.time_spent)
+    )
     print("")
 
     if args.verbose:
@@ -297,28 +321,55 @@ def visualize(analyze_json):
             plan.print()
     print("")
 
+    return "{:<10} {:<10} {:<10} {:<10} {:<10}".format(
+      time,
+      plan['Actual Rows'],
+      total_sub_rows,
+      total_partitions_hit,
+      total_non_indexed_scans
+    )
+
 
 def handle_query():
     """
     Handle and explain analyze a query passed as argument
     """
-    print_query(args.sql)
     explain = get_explain(args.sql)
-    visualize(explain)
+    print_query(args.sql)
+    parse_visualize_and_get_summary(explain)
 
 
-def analyze_log_query(sql):
+def analyze_log_query(name, sql):
     """
     Analyze a statement extracted from the logs
     """
     # reset global plans
-    global plans, most_time_consuming
+    global plans, most_time_consuming, queries
+
+    summary = None
     plans = {}
     most_time_consuming = Plan("default", Type.RELATION, 0)
 
-    print_query(sql)
-    explain = get_explain(sql)
-    visualize(explain)
+    name = str(queries) + "_" + name
+
+    # save the original stdout that it can be reassigned later
+    orig_stdout = sys.stdout
+
+    if explain := get_explain(sql):
+        with open(path.join(output_dir, name + ".txt"), "w+") as of:
+            # Override default stdout so we can simply print in the functions
+            sys.stdout = of
+            print_query(sql)
+            summary = parse_visualize_and_get_summary(explain)
+
+    sys.stdout = orig_stdout
+
+    if summary is None:
+        summary = "error, ignored"
+
+    # Still print, even if failed so we got the same amount each time
+    print("{:<40} {}".format(name, summary))
+    queries = queries + 1
 
 
 def handle_log_statement(match):
@@ -326,7 +377,7 @@ def handle_log_statement(match):
     Handle a log line which begins with statement:
     """
     statement = match.group(1)
-    analyze_log_query(statement)
+    analyze_log_query("direct", statement)
     
 
 def handle_log_execute(match):
@@ -335,19 +386,20 @@ def handle_log_execute(match):
     This method will replace all parameters in the statement which are found 
in `parameters:'
     """
     params = None
-    statement = match.group(1)
+    name = match.group(1)
+    statement = match.group(2)
  
     if '$' in statement:
-        _parameters = match.group(2)
+        _parameters = match.group(3)
  
         if not _parameters:
             print_query(statement)
-            print("ERROR: Could not find query parameters\n")
-            print("Make sure to set the following in postgres.conf before 
collecting logs:\n")
-            print("  'log_statement=all'")
-            print("  'syslog_split_messages=off'")
-            print("  'log_error_verbosity=default'")
-            print("\n")
+            err = "ERROR: Could not find query parameters\n" \
+                  "Make sure to set the following in postgres.conf before 
collecting logs:\n\n" \
+                  "  'log_statement=all'\n" \
+                  "  'syslog_split_messages=off'\n" \
+                  "  'log_error_verbosity=default'\n"
+            print(err, file=sys.stderr)
             exit(1)
 
         params = log_get_params_re.findall(_parameters)
@@ -357,7 +409,21 @@ def handle_log_execute(match):
                             escape(param[1]), 
                             statement)
 
-    analyze_log_query(statement)
+    analyze_log_query(name, statement)
+
+
+def create_output_dir(basename):
+    """
+    Create the directory in which all current analyzes will be written to
+    """
+    global output_dir
+    dirname = basename + "-" + str(round(datetime.now().timestamp()))
+    output_dir = dirname
+    try:
+        mkdir(dirname)
+    except OSError as e:
+        print("ERROR: could not create directory: " + e, file=sys.stderr)
+        exit(1)
 
 
 def handle_logs():
@@ -372,6 +438,8 @@ def handle_logs():
     """
     logs = None
 
+    create_output_dir(path.splitext(path.basename(args.file))[0])
+
     # Needs to be called here since log_id is not set previously
     setup_log_regex()
 
@@ -382,6 +450,15 @@ def handle_logs():
         print(e.strerror)
         exit(1)
 
+    print("{:40} {:<10} {:<10} {:<10} {:<10} {:<10}".format(
+        "name",
+        "t (ms)",
+        "act-rws",
+        "sub-q-rws",
+        "prts",
+        "n-idx"
+    ))
+
     for line in logs.readlines():
 
         if match := log_statement_re.match(line):
@@ -391,6 +468,7 @@ def handle_logs():
             handle_log_execute(match)
 
     logs.close()
+    print(f"\nINFO: detailed ouptut written to 
{output_dir}/N_statement_name.txt")
 
 
 def main():
@@ -426,12 +504,16 @@ def main():
                              dest='verbose',
                              action='store_true',
                              help='Print detailed query plan')
+    global_args.add_argument('-i', '--ignore-errors',
+                             dest='ignore',
+                             action='store_true',
+                             help='Continue when an SQL error occurs')
 
     s_p = parser.add_subparsers()
 
     log_p = s_p.add_parser('logs',  
                            parents=[global_args],
-                           help='Execute queries from a log file (postgres 
must have set log_statement=all)')
+                           help='Execute queries from a log file (postgres 
must have set log_statement=all).')
     log_p.add_argument('-l', '--log-identifier',
                        dest='log_id',
                        type=str,
diff --git a/experiment/scripts/database.sh b/experiment/scripts/database.sh
index 468b366..114f0f3 100755
--- a/experiment/scripts/database.sh
+++ b/experiment/scripts/database.sh
@@ -237,8 +237,12 @@ function enable_remote_access() {
 }
 
 function setup_shards() {
+
+  cp ${G5K_HOME}/sql/exchange-tables.sql ${G5K_HOME}/sql/partition-0001.sql 
/tmp
+  chmod o+r /tmp/*.sql
+
   su postgres << EOF
-psql -d "${DB_NAME}" -f ${G5K_HOME}/sql/exchange-tables.sql
+psql -d "${DB_NAME}" -f /tmp/exchange-tables.sql
 EOF
 
   cp ${G5K_HOME}/sql/exchange-0001.sql /usr/share/taler/sql/exchange/
@@ -250,7 +254,7 @@ EOF
   sudo -u taler-exchange-httpd taler-exchange-dbinit
 
   su postgres << EOF
-psql -d "${DB_NAME}" -f ${G5K_HOME}/sql/partition-0001.sql 
+psql -d "${DB_NAME}" -f /tmp/partition-0001.sql 
 psql -d "${DB_NAME}" -tAc "CREATE EXTENSION IF NOT EXISTS postgres_fdw;"
 EOF
 
@@ -260,20 +264,21 @@ EOF
 
   let "i=1"
   for SHARD in $(get_shard_hosts); do
+    SUFFIX=$(echo $SHARD | cut -d "-" -f 2)
     su postgres << EOF
-psql -d "${DB_NAME}" -tAc "SELECT 
create_shard_server('${SHARD_DOMAIN//\*/${SHARD}}',
-                                                      5432,
-                                                      '${DB_USER}',
-                                                      '${DB_PASSWORD}',
-                                                      '${SHARD}',
+psql -d "${DB_NAME}" -tAc "SELECT create_shard_server('${SUFFIX}',
                                                       ${NUM_SHARDS},
                                                       ${i},
-                                                      '${DB_NAME}');"
+                                                      
'${SHARD_DOMAIN//\*/${SHARD}}',
+                                                      '${DB_USER}',
+                                                      '${DB_PASSWORD}',
+                                                      '${DB_NAME}',
+                                                     5432);"
 psql -d "${DB_NAME}" -tAc "GRANT ALL PRIVILEGES ON
-                           FOREIGN SERVER \"shard_${SHARD}\"
+                           FOREIGN SERVER \"${SUFFIX}\"
                            TO \"taler-exchange-httpd\";"
 psql -d "${DB_NAME}" -tAc "CREATE USER MAPPING IF NOT EXISTS FOR \"${DB_USER}\"
-                           SERVER \"shard_${SHARD}\"
+                           SERVER \"${SUFFIX}\"
                            OPTIONS (user '${DB_USER}', password 
'${DB_PASSWORD}');"
 EOF
   let "i=i+1"
diff --git a/experiment/scripts/shard.sh b/experiment/scripts/shard.sh
index 4f6ad9b..ef62be9 100755
--- a/experiment/scripts/shard.sh
+++ b/experiment/scripts/shard.sh
@@ -152,8 +152,8 @@ psql -tAc "SELECT 1 FROM pg_database WHERE 
datname='${DB_NAME}'" | \
   createdb -O "${DB_USER}" "${DB_NAME}"
 EOF
   
-  cp ${G5K_HOME}/sql/shard-0001.sql ${G5K_HOME$/sql/exchange-tables.sql /tmp
-  chmod o+r /tmp/shard-0001.sql /tmp/exchange-tables.sql
+  cp ${G5K_HOME}/sql/shard-0001.sql ${G5K_HOME}/sql/exchange-tables.sql /tmp
+  chmod o+r /tmp/*.sql
 
   PGPASSWORD=${DB_PASSWORD} psql -tA \
                                  -U ${DB_USER} \
@@ -164,12 +164,12 @@ EOF
                                  -U ${DB_USER} \
                                  -h localhost \
                                  -d ${DB_NAME} \
-                                 -f /tmp/shard-0000.sql
+                                 -f /tmp/shard-0001.sql
   PGPASSWORD=${DB_PASSWORD} psql -tA \
                                  -U ${DB_USER} \
                                  -h localhost \
                                  -d ${DB_NAME} \
-                                 -c "SELECT setup_shard_tables('$(hostname | 
cut -d "." -f 1)');"
+                                 -c "SELECT setup_shard('$(hostname | cut -d 
"." -f 1 | cut -d "-" -f 2)');"
   
 }
 
diff --git a/experiment/taler.sharded.rspec b/experiment/taler.sharded.rspec
index a5648fc..41961aa 100644
--- a/experiment/taler.sharded.rspec
+++ b/experiment/taler.sharded.rspec
@@ -1,198 +1,481 @@
 <?xml version='1.0'?>
-<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-02-17T18:14:49.349+01:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
+<rspec xmlns="http://www.geni.net/resources/rspec/3"; type="request" 
generated_by="jFed RSpec Editor" generated="2022-03-28T21:50:32.822+02:00" 
xmlns:emulab="http://www.protogeni.net/resources/rspec/ext/emulab/1"; 
xmlns:delay="http://www.protogeni.net/resources/rspec/ext/delay/1"; 
xmlns:jfed-command="http://jfed.iminds.be/rspec/ext/jfed-command/1"; 
xmlns:client="http://www.protogeni.net/resources/rspec/ext/client/1"; 
xmlns:jfed-ssh-keys="http://jfed.iminds.be/rspec/ext/jfed-ssh-keys/1"; xmlns: 
[...]
   <node client_id="DB" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="156.0" 
y="70.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="97.68354430379748" y="25.0"/>
   </node>
   <node client_id="Exchange" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="283.0" 
y="127.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="221.0" 
y="72.5"/>
   </node>
   <node client_id="Bank" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="422.0" 
y="70.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="474.7974683544304" y="25.0"/>
   </node>
   <node client_id="Proxy" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="284.5" 
y="184.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="226.5" 
y="126.5"/>
   </node>
   <node client_id="Monitor" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="732.5" 
y="156.5"/>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="915.0" 
y="92.81119637333838"/>
   </node>
   <node client_id="Merchant" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="554.5" 
y="156.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="662.6455696202531" y="92.81119637333838"/>
   </node>
   <node client_id="DNS" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="638.0" 
y="70.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="781.0253164556962" y="25.0"/>
+  </node>
+  <node client_id="Aggregator" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="500.5" 
y="138.5"/>
+  </node>
+  <node client_id="Wirewatch" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="649.5" 
y="139.5"/>
+  </node>
+  <node client_id="Transfer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="790.5" 
y="138.5"/>
+  </node>
+  <node client_id="Closer" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="913.5" 
y="137.5"/>
+  </node>
+  <node client_id="Exchange-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="364.0" 
y="70.5"/>
+  </node>
+  <node client_id="Shard-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="1026.5" 
y="35.5"/>
+  </node>
+  <node client_id="Shard-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="1034.5" 
y="75.5"/>
+  </node>
+  <node client_id="Shard-3" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="1038.5" 
y="110.5"/>
+  </node>
+  <node client_id="Shard-4" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <hardware_type name="dahu-grenoble"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="1042.5" 
y="148.5"/>
   </node>
   <node client_id="Wallet-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="140.0" 
y="300.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="205.30722735107315"/>
   </node>
   <node client_id="Wallet-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="280.0" 
y="300.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="205.30722735107315"/>
   </node>
   <node client_id="Wallet-3" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="420.0" 
y="300.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="205.30722735107315"/>
   </node>
   <node client_id="Wallet-4" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="560.0" 
y="300.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="660.5" 
y="202.5"/>
   </node>
   <node client_id="Wallet-5" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="700.0" 
y="300.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="205.30722735107315"/>
   </node>
   <node client_id="Wallet-6" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="140.0" 
y="340.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="236.665006020825"/>
   </node>
   <node client_id="Wallet-7" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="280.0" 
y="340.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="236.665006020825"/>
   </node>
   <node client_id="Wallet-8" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="420.0" 
y="340.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="236.665006020825"/>
   </node>
   <node client_id="Wallet-9" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="560.0" 
y="340.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="236.665006020825"/>
   </node>
   <node client_id="Wallet-10" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="700.0" 
y="340.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="236.665006020825"/>
   </node>
   <node client_id="Wallet-11" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="140.0" 
y="380.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="268.0227846905768"/>
   </node>
   <node client_id="Wallet-12" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="280.0" 
y="380.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="268.0227846905768"/>
   </node>
   <node client_id="Wallet-13" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="420.0" 
y="380.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="268.0227846905768"/>
   </node>
   <node client_id="Wallet-14" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="560.0" 
y="380.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="268.0227846905768"/>
   </node>
   <node client_id="Wallet-15" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="700.0" 
y="380.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="268.0227846905768"/>
   </node>
   <node client_id="Wallet-16" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="140.0" 
y="420.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="75.0" 
y="299.3805633603287"/>
   </node>
   <node client_id="Wallet-17" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="280.0" 
y="420.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="273.4810126582279" y="299.3805633603287"/>
   </node>
   <node client_id="Wallet-18" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="420.0" 
y="420.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="471.9620253164557" y="299.3805633603287"/>
   </node>
   <node client_id="Wallet-19" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="560.0" 
y="420.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="670.4430379746834" y="299.3805633603287"/>
   </node>
   <node client_id="Wallet-20" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="700.0" 
y="420.0"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="868.9240506329114" y="299.3805633603287"/>
   </node>
-  <node client_id="Shard-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+  <node client_id="Wallet-21" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="884.5" 
y="71.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="333.4821476636838"/>
   </node>
-  <node client_id="Shard-2" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+  <node client_id="Wallet-22" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="882.5" 
y="105.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="279.15189873417717" y="333.4821476636838"/>
   </node>
-  <node client_id="Shard-3" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+  <node client_id="Wallet-23" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
-    <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="884.5" 
y="140.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="477.63291139240505" y="334.26609213042764"/>
   </node>
-  <node client_id="Shard-4" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+  <node client_id="Wallet-24" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="677.5316455696203" y="333.4821476636838"/>
+  </node>
+  <node client_id="Wallet-25" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="876.012658227848" y="331.91425873019625"/>
+  </node>
+  <node client_id="Wallet-26" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="86.34177215189874" y="364.0559818666919"/>
+  </node>
+  <node client_id="Wallet-27" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="364.8399263334357"/>
+  </node>
+  <node client_id="Wallet-28" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="477.99999999999994" y="370.93658536585366"/>
+  </node>
+  <node client_id="Wallet-29" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="681.7848101265823" y="366.40781526692325"/>
+  </node>
+  <node client_id="Wallet-30" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="881.6835443037975" y="366.40781526692325"/>
+  </node>
+  <node client_id="Wallet-31" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="393.84587160295615"/>
+  </node>
+  <node client_id="Wallet-32" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="281.9873417721519" y="397.7655939366752"/>
+  </node>
+  <node client_id="Wallet-33" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="484.72151898734177" y="399.33348287016264"/>
+  </node>
+  <node client_id="Wallet-34" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="678.9493670886076" y="397.7655939366752"/>
+  </node>
+  <node client_id="Wallet-35" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="884.5189873417721" y="395.41376053644376"/>
+  </node>
+  <node client_id="Wallet-36" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="80.67088607594937" y="426.77153920619554"/>
+  </node>
+  <node client_id="Wallet-37" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="289.0759493670886" y="428.33942813968315"/>
+  </node>
+  <node client_id="Wallet-38" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="488.97468354430373" y="429.90731707317076"/>
+  </node>
+  <node client_id="Wallet-39" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="688.873417721519" y="426.77153920619554"/>
+  </node>
+  <node client_id="Wallet-40" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="891.6075949367088" y="427.55548367293943"/>
+  </node>
+  <node client_id="Wallet-41" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="84.0" 
y="463.3365853658537"/>
+  </node>
+  <node client_id="Wallet-42" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="295.0" 
y="460.3317073170732"/>
+  </node>
+  <node client_id="Wallet-43" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="485.0" 
y="460.3317073170732"/>
+  </node>
+  <node client_id="Wallet-44" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="685.0" 
y="455.8243902439025"/>
+  </node>
+  <node client_id="Wallet-45" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="892.0" 
y="460.3317073170732"/>
+  </node>
+  <node client_id="Wallet-46" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="87.0" 
y="497.89268292682925"/>
+  </node>
+  <node client_id="Wallet-47" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="297.0" 
y="492.63414634146346"/>
+  </node>
+  <node client_id="Wallet-48" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="491.0" 
y="496.390243902439"/>
+  </node>
+  <node client_id="Wallet-49" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="689.0" 
y="487.37560975609756"/>
+  </node>
+  <node client_id="Wallet-50" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="897.0" 
y="492.63414634146346"/>
+  </node>
+  <node client_id="Wallet-51" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="86.0" 
y="530.1951219512196"/>
+  </node>
+  <node client_id="Wallet-52" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="301.0" 
y="525.6878048780488"/>
+  </node>
+  <node client_id="Wallet-53" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="492.99999999999994" y="529.4439024390244"/>
+  </node>
+  <node client_id="Wallet-54" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="692.0" 
y="526.439024390244"/>
+  </node>
+  <node client_id="Wallet-55" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="901.9999999999999" y="529.4439024390244"/>
+  </node>
+  <node client_id="Wallet-56" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="90.0" 
y="558.7414634146342"/>
+  </node>
+  <node client_id="Wallet-57" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="304.0" 
y="558.7414634146342"/>
+  </node>
+  <node client_id="Wallet-58" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="494.0" 
y="560.2439024390244"/>
+  </node>
+  <node client_id="Wallet-59" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="696.0" 
y="557.2390243902439"/>
+  </node>
+  <node client_id="Wallet-60" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
+    <sliver_type name="raw-pc">
+      <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
+    </sliver_type>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; 
x="904.9999999999999" y="564.0"/>
+  </node>
+  <node client_id="Proxy-1" exclusive="true" 
component_manager_id="urn:publicid:IDN+am.grid5000.fr+authority+am">
     <sliver_type name="raw-pc">
       <disk_image 
name="http://public.lille.grid5000.fr/~bfhch01/taler-debian11.dsc"/>
     </sliver_type>
     <hardware_type name="dahu-grenoble"/>
-    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="886.5" 
y="176.5"/>
+    <location xmlns="http://jfed.iminds.be/rspec/ext/jfed/1"; x="338.0" 
y="126.5"/>
   </node>
 </rspec>
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]