true">
bool">
int">
float">
string">
F1">
F2">
F3">
F4">
F5">
F6">
Docker, Inc.">
| Executable version | Compiled | Notes / Changlog |
| 1.0.1 | 2022-09-05 | Release |
| 1.0 | 2022-07-14 | Final, more or less, see notes below |
| 0.7 | 2022-07-01 | Unreleased, bugfixes, style. |
| 0.6 | 2021-11-08 | Unreleased, runs with &tde4mhpd; 2.0.4 |
| 0.0 | 2021-09-28 | Started |
(sudo) pip3 install --upgrade pip
(sudo) pip3 install requests< config > < local > ...</ local > < hostbase > ...</ hostbase > < rsh > ...</ rsh > < launcher > ...</ launcher > </ config >
This section contains an element
clusters = <tag1> <tag2> <tag3> <tag1> = host1 host2 host3 <tag2> = user@host4 user@host5 host6 <tag3> = <tag1> <tag2>
< hostbase > < label > my_hosts_a</ label > < pattern > 10.1.1.1</ pattern > < pattern > 10.1.1.2</ pattern > < pattern > 10.1.1.3</ pattern > </ hostbase > < hostbase > < label > my_hosts_b</ label > < pattern > 10.1.1.3-5</ pattern > </ hostbase > < hostbase > < label > my_hosts_c</ label > < ref > my_hosts_a</ ref > < ref > my_hosts_b</ ref > </ hostbase >
mhp_admin show hostbases
+-------------------------------------------------------+ | host base | +------------+------------------------------------------+ | label | addresses | +------------+------------------------------------------+ | my_hosts_a | 10.1.1.1, 10.1.1.2, 10.1.1.3 | | my_hosts_b | 10.1.1.3-5 | | my_hosts_c | 10.1.1.1, 10.1.1.2, 10.1.1.3, 10.1.1.3-5 | +------------+------------------------------------------+
< rsh > < label > my_standard_ssh</ label > < user > uwe</ user > < command > ssh :USER:@:HOST: :COMMAND:</ command > </ rsh >
mhp_admin run "id" via my_standard_ssh at 192.168.178.21
mhp_admin run "id" via my_standard_ssh at my_host_at_home
mhp_admin run "id" at 192.168.178.21
uid=1000(uwe) gid=100(users) groups=100(users),4(adm),24(cdrom),27(sudo),30(dip)... +-----------------------------+ | run 'id' | +----------------+-------+----+ | host | port | rc | +----------------+-------+----+ | 192.168.178.21 | 57431 | 0 | +----------------+-------+----+
< launcher > < label > my_launcher_at_home</ label > < user > uwe</ user > < rsh_command > my_standard_ssh</ rsh_command > < command > /path/to/my/tde4mhpd</ command > </ launcher >
mhp_admin launch my_launcher_at_home at 192.168.178.21
+-------------------------------------------------------------------------------------------------------+ | tde4mhp config | +-------------------+--------------------------------------------------------------------+--------------+ | name | value | def'd by | +-------------------+--------------------------------------------------------------------+--------------+ | version | 2.0.3 | | | process_mode | daemon | cmdline | | launched_by | | default | | owned_by | uwe | default | ...
+--------------------------------------------------------------------------------------------+
| nodes launched |
+----------------+----+-----+----------------------------------------------------------------+
| host | rc | msg | command |
+----------------+----+-----+----------------------------------------------------------------+
| 192.168.178.21 | 0 | ok | /mnt/server/devel/sdv/privat/uwe/sandbox/uwe/tde4mhpd/tde4mhpd |
+----------------+----+-----+----------------------------------------------------------------++----------------------------------------------------------------------------------------------------------------+
| nodes launched |
+----------------+----+-------------------------+----------------------------------------------------------------+
| host | rc | msg | command |
+----------------+----+-------------------------+----------------------------------------------------------------+
| 192.168.178.21 | 7 | process already running | /mnt/server/devel/sdv/privat/uwe/sandbox/uwe/tde4mhpd/tde4mhpd |
+----------------+----+-------------------------+----------------------------------------------------------------+mhp_admin show hostbases
+-----------------------------------------------------------------------------------------------------+ | host base | +----------------+------------------------------------------------------------------------------------+ | label | addresses | +----------------+------------------------------------------------------------------------------------+ | my_hosts | 10.1.1.24 10.1.1.42 10.1.1.44 10.1.1.46 10.1.1.47 10.1.1.50 10.1.1.103 10.1.1.116 | | my_hosts_linux | 10.1.1.24 10.1.1.42 10.1.1.44 10.1.1.46 10.1.1.47 10.1.1.50 | | my_hosts_osx | 10.1.1.103 10.1.1.116 | +----------------+------------------------------------------------------------------------------------+
mhp_admin show remote
+------------------------------------------------------------+ | remote shell commands | +-----------------+------+-----------------------------------+ | label | user | command | +-----------------+------+-----------------------------------+ | my_standard_ssh | uwe | ssh -p 22 :USER:@:HOST: :COMMAND: | +-----------------+------+-----------------------------------+
mhp_admin run "id" via my_ssh at my_hosts
uid=753(uwe) gid=100(_lpoperator) groups=100(_lpoperator),12(everyone)... uid=753(uwe) gid=100(_lpoperator) groups=100(_lpoperator),12(everyone)... uid=753(uwe) gid=100(users) groups=100(users),27(sudo),121(nopasswdlogin),1003(uwe) uid=753(uwe) gid=100(users) groups=100(users),4(adm),27(sudo),121(nopasswdlogin) uid=753(uwe) gid=100(users) groups=100(users),4(adm),27(sudo),753(uwe) uid=753(uwe) gid=100(users) groups=100(users),10(wheel) ... uid=753(uwe) gid=1002(uwe) groups=1002(uwe),10(wheel),100(users) ... uid=753(uwe) gid=1002(uwe) groups=1002(uwe),10(wheel),100(users) ... +-----------------+ | run 'id' | +------------+----+ | host | rc | +------------+----+ | 10.1.1.103 | 0 | | 10.1.1.116 | 0 | | 10.1.1.24 | 0 | | 10.1.1.42 | 0 | | 10.1.1.44 | 0 | | 10.1.1.46 | 0 | | 10.1.1.47 | 0 | | 10.1.1.50 | 0 | +------------+----+
mhp_admin run "killall -9 tde4mhpd" via my_ssh at my_hosts_linux mhp_admin run "killall -9 tde4mhpd.osx" via my_ssh at my_hosts_osx
mhp_admin show launchers
+-----------------------------------------------------------------------------------+ | launchers | +-------------------+--------+------+-----------------------+-----------------------+ | label | remote | user | command | options | +-------------------+--------+------+-----------------------+-----------------------+ | my_launcher_osx | my_ssh | uwe | /path/to/tde4mhpd.osx | -chief_host 10.1.1.24 | | my_launcher_linux | my_ssh | uwe | /path/to/tde4mhpd | -chief_host 10.1.1.24 | +-------------------+--------+------+-----------------------+-----------------------+
mhp_admin launch my_launcher_linux at 10.1.1.24
+------------------------------------------------------------------------------------------------+ | nodes launched | +-----------+-------+----+-----+-----------------------------------------------------------------+ | host | port | rc | msg | command | +-----------+-------+----+-----+-----------------------------------------------------------------+ | 10.1.1.24 | 57431 | 0 | ok | ssh -p 22 uwe@10.1.1.24 /path/to/tde4mhpd -chief_host 10.1.1.24 | +-----------+-------+----+-----+-----------------------------------------------------------------+
mhp_admin at 10.1.1.24
mhp_admin at
+------------------------+ | current network | +------------+-----------+ | chief_host | 10.1.1.24 | | chief_port | 57431 | +------------+-----------+
mhp_admin launch my_launcher_linux at my_hosts_linux
+------------------------------------------------------------------------------------+ | nodes launched | +-----------+----+-------------------------+-----------------------------------------+ | host | rc | msg | command | +-----------+----+-------------------------+-----------------------------------------+ | 10.1.1.24 | 7 | process already running | /path/to/tde4mhpd -chief_host 10.1.1.24 | | 10.1.1.42 | 0 | ok | /path/to/tde4mhpd -chief_host 10.1.1.24 | | 10.1.1.44 | 0 | ok | /path/to/tde4mhpd -chief_host 10.1.1.24 | | 10.1.1.46 | 0 | ok | /path/to/tde4mhpd -chief_host 10.1.1.24 | | 10.1.1.47 | 0 | ok | /path/to/tde4mhpd -chief_host 10.1.1.24 | | 10.1.1.50 | 0 | ok | /path/to/tde4mhpd -chief_host 10.1.1.24 | +-----------+----+-------------------------+-----------------------------------------+
mhp_admin launch my_launcher_osx at my_hosts_osx
+---------------------------------------------------------------------+ | nodes launched | +------------+----+-----+---------------------------------------------+ | host | rc | msg | command | +------------+----+-----+---------------------------------------------+ | 10.1.1.103 | 0 | ok | /path/to/tde4mhpd.osx -chief_host 10.1.1.24 | | 10.1.1.116 | 0 | ok | /path/to/tde4mhpd.osx -chief_host 10.1.1.24 | +------------+----+-----+---------------------------------------------+
mhp_admin select all from hosts at 10.1.1.24
arg (['all'], ['at', '10.1.1.24']) +--------------------------------------------------------------------------------------------------------------------+ | nodes governed by chief 10.1.1.24:57431 | +-------+------------+-------+-----------+--------+-----+-------------+-------+---------+-----------+---------+------+ | lock | host | port | hostname | proc | msg | launched_as | role | threads | uptime | version | perf | +-------+------------+-------+-----------+--------+-----+-------------+-------+---------+-----------+---------+------+ | False | 10.1.1.24 | 57431 | guul | daemon | ok | standalone | chief | 8 / 0 | 774093.0 | 2.0.4 | 0.0 | | False | 10.1.1.42 | 57431 | demon | daemon | ok | controlled | loyal | 4 / 4 | 774085.0 | 2.0.4 | 0.0 | | False | 10.1.1.44 | 57431 | belsazar | daemon | ok | controlled | loyal | 6 / 6 | 774091.0 | 2.0.4 | 0.0 | | False | 10.1.1.46 | 57431 | box01 | daemon | ok | standalone | loyal | 9 / 0 | 774090.0 | 2.0.4 | 0.0 | | False | 10.1.1.47 | 57431 | box02 | daemon | ok | standalone | loyal | 8 / 0 | 1186.48 | 2.0.4 | 0.0 | | False | 10.1.1.50 | 57431 | box03 | daemon | ok | standalone | loyal | 8 / 0 | 85528.4 | 2.0.4 | 0.0 | | False | 10.1.1.103 | 57431 | minimuff | daemon | ok | standalone | loyal | 8 / 0 | 87525.1 | 2.0.4 | 0.0 | | False | 10.1.1.116 | 57431 | applejack | daemon | ok | controlled | loyal | 8 / 0 | 1026130.0 | 2.0.4 | 0.0 | +-------+------------+-------+-----------+--------+-----+-------------+-------+---------+-----------+---------+------+ | number of nodes listed here - good: 8, bad: 0 | +--------------------------------------------------------------------------------------------------------------------+
In principle, the methods for inspecting the network are similar to those you might know from the browser interface: We can list the entire set of hosts, inspect a single host in detail, display the cpu-load when computations are running, check the list of available lens distortion models, render the logfiles in case of problems. The command line tool however allows more control about the representation and also allows to examine properties across hosts, which are not covered by the standard host list representation.
Instead of implementing tons of dash- and double-dash style options we decided to provide a simple query language which reminds a little bit of SQL. We consider each call to &mhp_admin_py; as a query, and the output is usually a mixture of informal messages and a table (as if we were sending a query to an SQL-database from the command line).
Any property of the network is obtained by means of the command &select;. We consider the &mhp;-network as interacting objects the properties of which can be represented as tables. There is a fixed set of tables, e.g. the table of hosts participating in the network, the table of properties for each host, the table of lens distortion models available on each host. In the following we demonstrate how these tables are displayed. The most important one is certainly &hosts; because it gives us a quick overview about the relationship between the nodes (e.g. status, mutual linking, role). A possible syntax for &select; is
+------------------------------------------------------------------------------------------------------------------+ | nodes governed by chief 10.1.1.24:57431 | +-------+------------+-------+-----------+--------+-----+-------------+-------+---------+---------+---------+------+ | lock | host | port | hostname | proc | msg | launched_as | role | threads | uptime | version | perf | +-------+------------+-------+-----------+--------+-----+-------------+-------+---------+---------+---------+------+ | False | 10.1.1.46 | 57431 | box01 | daemon | ok | standalone | loyal | 8 / 0 | 8460.42 | 2.0.4 | 0.0 | | False | 10.1.1.47 | 57431 | box02 | daemon | ok | standalone | loyal | 8 / 0 | 8465.46 | 2.0.4 | 0.0 | | False | 10.1.1.24 | 57431 | guul | daemon | ok | standalone | chief | 8 / 0 | 48.5919 | 2.0.4 | 0.0 | | False | 10.1.1.44 | 57431 | belsazar | daemon | ok | controlled | loyal | 6 / 6 | 8465.8 | 2.0.4 | 0.0 | | False | 10.1.1.42 | 57431 | demon | daemon | ok | controlled | loyal | 4 / 4 | 6522.53 | 2.0.4 | 0.0 | | False | 10.1.1.50 | 57431 | box03 | daemon | ok | standalone | loyal | 8 / 0 | 8464.44 | 2.0.4 | 0.0 | | False | 10.1.1.116 | 57431 | applejack | daemon | ok | controlled | loyal | 8 / 0 | 262.221 | 2.0.4 | 0.0 | | False | 10.1.1.103 | 57431 | minimuff | daemon | ok | standalone | loyal | 8 / 0 | 6616.86 | 2.0.4 | 0.0 | +-------+------------+-------+-----------+--------+-----+-------------+-------+---------+---------+---------+------+ | number of nodes listed here - good: 8, bad: 0 | +------------------------------------------------------------------------------------------------------------------+
mhp_admin select all from hosts
The table &tab_hosts; essentially lists properties collected by and stored at the chief host.
The table name has historic reasons. A better name would be &tab_nodes;.
Instead of listing all nodes we can restrict ourselves to selected columns or rows.
Examples:
mhp_admin select host status version from hosts
+-----------------------------------------------+
| nodes governed by chief 10.1.1.24:57431 |
+------------------+-------------+--------------+
| host | status | version |
+------------------+-------------+--------------+
| 10.1.1.24 | ok | 2.0.4 |
| 10.1.1.44 | ok | 2.0.4 |
| 10.1.1.46 | ok | 2.0.4 |
| 10.1.1.47 | ok | 2.0.4 |
| 10.1.1.42 | ok | 2.0.4 |
| 10.1.1.50 | ok | 2.0.4 |
| 10.1.1.116 | ok | 2.0.4 |
| 10.1.1.103 | ok | 2.0.4 |
+------------------+-------------+--------------+
| number of nodes listed here - good: 8, bad: 0 |
+-----------------------------------------------+
mhp_admin select host hostname launched_as uptime from hosts where "launched_as == 'controlled'"
+------------------------------------------------+ | nodes governed by chief 10.1.1.24:57431 | +------------+-----------+-------------+---------+ | host | hostname | launched_as | uptime | +------------+-----------+-------------+---------+ | 10.1.1.42 | demon | controlled | 7215.02 | | 10.1.1.44 | belsazar | controlled | 9158.3 | | 10.1.1.116 | applejack | controlled | 954.72 | +------------+-----------+-------------+---------+ | number of nodes listed here - good: 3, bad: 0 | +------------------------------------------------+
mhp_admin describe hosts
+-------------------------------------------------------------------------------------------+ | describe hosts | +----------------------+-------+------------------------------------------------------------+ | column | type | comment | +----------------------+-------+------------------------------------------------------------+ | host | str | Host address in ip4-dot notation | | port | int | Port, default for MHP is 57431 | | hostname | str | Alias for 'sys_hostname' | | process_mode | str | Foreground, background, daemon | | proc | str | Alias for 'process_mode' | | status | str | Message from requesting node properties | | msg | str | Alias for 'status' | | launched_by | str | Commandline or some program (e.g. 3DE4) | | launched_as | str | controlled, standalone | ...
mhp_admin select some from hosts
mhp_admin select all from hosts
mhp_admin select raw from hosts
While in many cases table &tab_hosts; is all you might be interested in,
there is yet another table, &tab_properties; which provides more or
at least different information than &tab_hosts; including
the number of threads used for computations. The query
mhp_admin select launched_by host hostname num_cores num_threads_comm num_threads_priv from properties at all
+-----------------------------------------------------------------------------------------------------------+
| properties |
+-------------+------------+--------------------+-----------+------------------+------------------+---------+
| launched_by | host | hostname | num_cores | num_threads_comm | num_threads_priv | request |
+-------------+------------+--------------------+-----------+------------------+------------------+---------+
| | 10.1.1.24 | guul | 8 | 8 | 0 | ok |
| 3DE4 | 10.1.1.42 | demon | 8 | 4 | 4 | ok |
| 3DE4 | 10.1.1.44 | belsazar | 12 | 6 | 6 | ok |
| | 10.1.1.46 | box01 | 8 | 8 | 0 | ok |
| | 10.1.1.47 | box02 | 8 | 8 | 0 | ok |
| | 10.1.1.50 | box03 | 8 | 8 | 0 | ok |
| 3DE4 | 10.1.1.116 | applejack | 8 | 8 | 0 | ok |
| | 10.1.1.103 | minimuff | 8 | 8 | 0 | ok |
+-------------+------------+--------------------+-----------+------------------+------------------+---------+
mhp_admin select launched_by host hostname uname num_cores from properties at all where "launched_by != ''"
+---------------------------------------------------------------------------------------------+
| properties |
+-------------+------------+-----------+--------------------------------+-----------+---------+
| launched_by | host | hostname | uname | num_cores | request |
+-------------+------------+-----------+--------------------------------+-----------+---------+
| 3DE4 | 10.1.1.42 | demon | Linux 3.16.0-38-generic x86_64 | 8 | ok |
| 3DE4 | 10.1.1.116 | applejack | Darwin 20.3.0 arm64 | 8 | ok |
| 3DE4 | 10.1.1.44 | belsazar | Linux 4.4.0-91-generic x86_64 | 12 | ok |
+-------------+------------+-----------+--------------------------------+-----------+---------+
mhp_admin select all from properties at 10.1.1.42
+----------------------------------------------------------------------------------------------+
| properties |
+------------------+------------------------------------------------------------+--------------+
| name | value | defd_by |
+------------------+------------------------------------------------------------+--------------+
| executable | tde4mhpd | |
| version | 2.0.4 | |
| uptime | 245715 | |
| pid | 5410 | |
| process_mode | daemon | default |
| launched_by | 3DE4 | cmdline |
| owned_by | uwe | default |
| host | 10.1.1.42 | system |
| port | 57431 | default |
| chief_host | 10.1.1.24 | legacy |
| chief_port | 57431 | legacy |
| chief_status | ok | |
| is_chief | no | |
| network_mode | explicit | default |
| ip_addr | 10.1.1.42 | |
| sys_hostname | demon | |
| subnet_a | 10.1.1.0/24 | default |
| subnet_b | 0.0.0.0/0 | undefined |
| subnet_c | 0.0.0.0/0 | undefined |
| fileserver_base | | undefined |
| num_cores | 8 | |
| num_threads_priv | 4 | legacy |
| num_threads_comm | 4 | legacy |
| install_dir | /server/devel/sdv/privat/uwe/sandbox/uwe/tde4mhpd | installation |
| plugin_dir | <install_dir> / . | default |
| tmp_dir | /tmp/ | default |
| home_dir | /home/uwe/.3dequalizer/ | default |
| exec_path | /server/devel/sdv/privat/uwe/sandbox/uwe/tde4mhpd/tde4mhpd | installation |
| config_file | | default |
| logfile | /tmp/tde4mhp.u753.p57431.log | default |
| loglevel | LOG_NOTICE | legacy |
| uname | Linux 3.16.0-38-generic x86_64 | |
| is_locked | no | runtime |
| admin_host_a | 0.0.0.0 | runtime |
| admin_host_b | 0.0.0.0 | runtime |
+------------------+------------------------------------------------------------+--------------+
In contrast to section
The button COLLECT in the browser interface has gained a certain popularity,
since it gathers disconnected nodes scattered over the local area network
in a simple way. Let us assume after a couple of maintenance works on the
machines, our &mhp;-network has shrinked to the following small set of nodes:
mhp_admin select all from hosts at 10.1.1.24
+-------------------------------------------------------------------------------------------------------------------+
| nodes governed by chief 10.1.1.24:57431 |
+-------+------------+-------+-----------+--------+-----+-------------+-------+---------+----------+---------+------+
| lock | host | port | hostname | proc | msg | launched_as | role | threads | uptime | version | perf |
+-------+------------+-------+-----------+--------+-----+-------------+-------+---------+----------+---------+------+
| False | 10.1.1.24 | 57431 | guul | daemon | ok | standalone | chief | 8 / 0 | 247103.0 | 2.0.4 | 0.0 |
| False | 10.1.1.50 | 57431 | box03 | daemon | ok | standalone | loyal | 8 / 0 | 247098.0 | 2.0.4 | 0.0 |
| False | 10.1.1.116 | 57431 | applejack | daemon | ok | controlled | loyal | 8 / 0 | 499143.0 | 2.0.4 | 0.0 |
+-------+------------+-------+-----------+--------+-----+-------------+-------+---------+----------+---------+------+
| number of nodes listed here - good: 3, bad: 0 |
+-------------------------------------------------------------------------------------------------------------------+
mhp_admin collect at 10.1.1.24
+------------------------+ | collect | +-------------------+----+ | status of request | ok | +-------------------+----+ | collected | 7 | +-------------------+----+ | not authorized | 0 | | unknown | 0 | +-------------------+----+
mhp_admin select all from hosts
+----------------------------------------------------------------------------------------------------------------------------+ | nodes governed by chief 10.1.1.24:57431 | +-------+------------+-------+--------------------+--------+-----+-------------+-------+---------+----------+---------+------+ | lock | host | port | hostname | proc | msg | launched_as | role | threads | uptime | version | perf | +-------+------------+-------+--------------------+--------+-----+-------------+-------+---------+----------+---------+------+ | False | 10.1.1.24 | 57431 | guul | daemon | ok | standalone | chief | 8 / 0 | 247002.0 | 2.0.4 | 0.0 | | False | 10.1.1.44 | 57431 | belsazar | daemon | ok | controlled | loyal | 6 / 6 | 247000.0 | 2.0.4 | 0.0 | | False | 10.1.1.46 | 57431 | box01 | daemon | ok | standalone | loyal | 8 / 0 | 246999.0 | 2.0.4 | 0.0 | | False | 10.1.1.47 | 57431 | box02 | daemon | ok | standalone | loyal | 8 / 0 | 246998.0 | 2.0.4 | 0.0 | | False | 10.1.1.42 | 57431 | demon | daemon | ok | controlled | loyal | 4 / 4 | 246998.0 | 2.0.4 | 0.0 | | False | 10.1.1.50 | 57431 | box03 | daemon | ok | standalone | loyal | 8 / 0 | 246997.0 | 2.0.4 | 0.0 | | False | 10.1.1.116 | 57431 | applejack | daemon | ok | controlled | loyal | 8 / 0 | 499041.0 | 2.0.4 | 0.0 | | False | 10.1.1.103 | 57431 | minimuff.box | daemon | ok | standalone | loyal | 8 / 0 | 2842.14 | 2.0.4 | 0.0 | +-------+------------+-------+--------------------+--------+-----+-------------+-------+---------+----------+---------+------+ | number of nodes listed here - good: 8, bad: 0 | +----------------------------------------------------------------------------------------------------------------------------+
It is also possible to add one or more disconnected nodes to a network or move them from one network to another. There are two commands for doing this, namely &unlink; and &relink;. The syntax is
mhp_admin unlink 10.1.1.50
mhp_admin relink 10.1.1.46 10.1.1.47 to 10.1.1.50
mhp_admin select host hostname role from hosts at 10.1.1.50
arg (['host', 'hostname', 'role'], ['at', '10.1.1.50']) +-----------------------------------------------+ | nodes governed by chief 10.1.1.50:57431 | +-----------------+----------------+------------+ | host | hostname | role | +-----------------+----------------+------------+ | 10.1.1.50 | box03 | chief | | 10.1.1.46 | box01 | loyal | | 10.1.1.47 | box02 | loyal | +-----------------+----------------+------------+ | number of nodes listed here - good: 3, bad: 0 | +-----------------------------------------------+
mhp_admin select host hostname role from hosts at 10.1.1.24
arg (['host', 'hostname', 'role'], ['at', '10.1.1.24']) +-----------------------------------------------+ | nodes governed by chief 10.1.1.24:57431 | +-----------------+----------------+------------+ | host | hostname | role | +-----------------+----------------+------------+ | 10.1.1.24 | guul | chief | | 10.1.1.42 | demon | loyal | | 10.1.1.44 | belsazar | loyal | | 10.1.1.116 | applejack | loyal | | 10.1.1.103 | minimuff | loyal | +-----------------+----------------+------------+ | number of nodes listed here - good: 5, bad: 0 | +-----------------------------------------------+
mhp_admin relink 10.1.1.50 to 10.1.1.24
mhp_admin select all from load
+----------------------------------------------------------------------------------------------+ | load, snapshot | +------------+-------+------------+--------+----------------------------------+----------------+ | host | port | hostname | status | comm | priv | +------------+-------+------------+--------+----------------------------------+----------------+ | 10.1.1.24 | 57431 | guul | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.42 | 57431 | demon | ok | ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▖ | ▄▖▄▖▄▖▄▖▄▖▄▖▄▖ | | 10.1.1.44 | 57431 | belsazar | ok | ▄▄▄▄▄▗▄▄▄▄▖▄▄▄▄▖▄▄▄▄▄▗▄▄▄▄▖▄▄▄▄▖ | ▄▄▗▄▖▄▖▄▄▗▄▖▄▖ | | 10.1.1.46 | 57431 | box01 | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.47 | 57431 | box02 | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.50 | 57431 | box03 | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.52 | 57431 | boxoffice1 | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.87 | 57431 | minimuff | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.88 | 57431 | mibox | ok | ▄▄▄▄▄▄▄▖▄▄▄▄▄▄▄▖▄▄▄▄▄▄▄▖▄▄▄▄▄▄▄▖ | | | 10.1.1.91 | 57431 | heibox | ok | ▄▄▄▄▄▄▄▖▄▄▄▄▄▄▄▖▄▄▄▄▄▄▄▖▄▄▄▄▄▄▄▖ | | | 10.1.1.116 | 57431 | applejack | ok | ▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖▄▄▄▖ | | | 10.1.1.118 | 57431 | azrael | ok | ▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖▄▖ | | +------------+-------+------------+--------+----------------------------------+----------------+
select some from processes at all
+---------------------------------------------------------------------+ | processes at network 10.1.1.24:57431 | +------------+-------+--------+--------+-------------+------+---------+ | host | port | pid | ppid | category | pcpu | request | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.24 | 57431 | 629 | 10537 | news | 0.0 | ok | | | | 969 | 10537 | responder | 0.0 | | | | | 10537 | 1 | parent | 0.0 | | | | | 10540 | 10537 | updater_udp | 0.0 | | | | | 32459 | 10537 | news | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.40 | 57431 | 14777 | 1 | parent | 0.0 | ok | | | | 15191 | 14777 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.42 | 57431 | 2001 | 15510 | responder | 0.0 | ok | | | | 6570 | 1 | undefined | 0.0 | | | | | 15510 | 1 | parent | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.44 | 57431 | 8517 | 1 | parent | 0.0 | ok | | | | 29377 | 8517 | updater_udp | 0.0 | | | | | 29984 | 8517 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.46 | 57431 | 2745 | 24109 | responder | 0.0 | ok | | | | 24109 | 1 | parent | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.47 | 57431 | 22287 | 1 | parent | 0.0 | ok | | | | 29122 | 22287 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.50 | 57431 | 1920 | 1 | parent | 0.0 | ok | | | | 14919 | 1920 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.52 | 57431 | 619 | 1 | parent | 0.0 | ok | | | | 18137 | 619 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.87 | 57431 | 4310 | 1 | parent | 0.1 | ok | | | | 6025 | 4310 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.88 | 57431 | 648033 | 1 | parent | 0.0 | ok | | | | 677879 | 648033 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.91 | 57431 | 566268 | 1 | parent | 0.0 | ok | | | | 575662 | 566268 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.116 | 57431 | 67068 | 1 | parent | 0.0 | ok | | | | 73155 | 67068 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+ | 10.1.1.118 | 57431 | 84 | 1 | parent | 0.0 | ok | | | | 578 | 84 | responder | 0.0 | | +------------+-------+--------+--------+-------------+------+---------+
mhp_admin select some from processes at all where "category == 'computational'"
+------------------------------------------------------------------------+ | processes at network 10.1.1.24:57431 | +------------+-------+--------+--------+---------------+-------+---------+ | host | port | pid | ppid | category | pcpu | request | +------------+-------+--------+--------+---------------+-------+---------+ | 10.1.1.42 | 57431 | 1975 | 15510 | computational | 105 | ok | | 10.1.1.47 | 57431 | 29081 | 22287 | computational | 283 | ok | | 10.1.1.52 | 57431 | 18012 | 619 | computational | 389 | ok | | 10.1.1.116 | 57431 | 73139 | 67068 | computational | 782.9 | ok | | 10.1.1.87 | 57431 | 6009 | 4310 | computational | 785.9 | ok | | 10.1.1.24 | 57431 | 866 | 10537 | computational | 861 | ok | | 10.1.1.88 | 57431 | 677857 | 648033 | computational | 446 | ok | | 10.1.1.91 | 57431 | 575637 | 566268 | computational | 493 | ok | | 10.1.1.46 | 57431 | 2703 | 24109 | computational | 676 | ok | | 10.1.1.50 | 57431 | 14885 | 1920 | computational | 649 | ok | | 10.1.1.44 | 57431 | 29750 | 8517 | computational | 1012 | ok | | 10.1.1.40 | 57431 | 15166 | 14777 | computational | 679 | ok | | 10.1.1.118 | 57431 | 545 | 84 | computational | 2235 | ok | +------------+-------+--------+--------+---------------+-------+---------+
run "kill 545" at 10.1.1.118
This query starts the &mhp;-node via a remote shell command according to the specification in the config file, on the hosts specified by the &at;-clause a single host or on multiple hosts. The ip-addresses may passed explicitly or as a reference to a host base. If the &options;-clause is given, options specified in the config file are ignored, and only &var_options; from the clause are passed to the executable.
The following examples are based on a launcher labelled mhp_admin launch my_launcher_linux at 10.1.1.24 10.1.1.44 10.1.1.50
mhp_admin launch my_launcher_linux at my_hosts_linux
mhp_admin launch my_launcher_linux at 10.1.1.44 options "-chief_host 10.1.1.50"
Execute any &unix;-command with parameters described by the string &var_command;
via the remote shell command given by &var_rsh_label;
as user &user; on the hosts specified. If no &via;-clause is given,
the first &config_rsh;-entry in the config file is used for running the remote shell.
If no &as;-clause is given, the content of
Examples are based on a host base labelled
Check if we can connect to all hosts by our remote shell command:
mhp_admin run "id" via my_standard_ssh at my_hosts
mhp_admin run "ps -e | grep tde4mhp" via my_standard_ssh at my_hosts
mhp_admin run "killall -9 tde4mhpd" via my_standard_ssh at my_hosts
mhp_admin run "id" at 10.1.1.50
mhp_admin run "echo -n ':USER:@:HOST:: ';id" at 10.1.1.50
uwe@10.1.1.46: uid=753(uwe) gid=100(users) groups=100(users),10(wheel) ...
uwe@10.1.1.47: uid=753(uwe) gid=1002(uwe) groups=1002(uwe),10(wheel),100(users) ...
uwe@10.1.1.50: uid=753(uwe) gid=1002(uwe) groups=1002(uwe),10(wheel),100(users) ...
+------------------------------------+
| run 'echo -n ':USER:@:HOST:: ';id' |
+---------------------+--------------+
| host | rc |
+---------------------+--------------+
| 10.1.1.46 | 0 |
| 10.1.1.47 | 0 |
| 10.1.1.50 | 0 |
+---------------------+--------------+
Given a network of three nodes mhp_admin at 10.1.1.47
+-----------------------------------------------+
| request http://10.1.1.47:57431/properties.xml |
+------------------------+----------------------+
| status of request | ok |
+------------------------+----------------------+
| chief host:port | 10.1.1.50:57431 |
+------------------------+----------------------+
mhp_admin at
+------------------------+
| current network |
+------------+-----------+
| chief_host | 10.1.1.50 |
| chief_port | 57431 |
+------------+-----------+
&var_columns; is either one of { &raw; | &all; | &some; } or a white space separated list of column names. &raw; prints out all columns in the form they are delivered by &tde4mhpd;, which might be not very comprehensible. &all; refers to a representation which is quite close to the representation in the browser interface. &some; refers to a selection of columns which we found to be interesting and sufficient in many situations, the "developer's choice", if you like. Often, you are interested in a different set of properties, and in this case you simply name the columns you would like to see.
List some properties of all nodes of the current network.
mhp_admin select some from hosts
mhp_admin select all from properties at 10.1.1.44
mhp_admin select host uname from properties at range 10.1.1.46 10.1.1.50
mhp_admin select all from load
mhp_admin select all from hostbase my_hosts_linux
mhp_admin select some from lens_models at all where "linking == 'plugin'"
This clause restricts the output of any query to table rows for which the boolean expression is &true;.
Please note that you need quotation marks around the expression, since operators like
List all nodes which have a version number other than e.g. mhp_admin select host version from hosts where "version != '2.0.4'"
mhp_admin select host uname from properties at all where "'Darwin' in uname"
mhp_admin select host from properties at all where "launched_by == '3DE4'"
By this clause, which appears in &select_from;-queries, table rows are sorted according to the columns and direction specified. The clause is applied from the right to the left, i.e. order criteria on the left have a higher priority than order criteria on the right.
The output of
mhp_admin select all from hosts order by role ascending launched_as descending
Print a table, which describes the output of the &select_from;-query for the table passed to &describe;, i.e. name and data type for each column, and hopefully a comment.
mhp_admin describe lens_model
+-----------------------------------------------------------+
| describe lens_model |
+---------+------+------------------------------------------+
| column | type | comment |
+---------+------+------------------------------------------+
| name | str | Name of lens parameter |
| type | str | Type of lens parameter |
| default | str | Default value (mostly adjustable double) |
| range | str | Range for very coarse adjustment |
+---------+------+------------------------------------------+
Unlink loyal nodes from their network. After this query each of the nodes forms a network consisting of only the node itself. If the query is applied to the chief of a network, the tool will respond something like "nothing to do" because the chief cannot be unlinked from its own network.
mhp_admin unlink 10.1.1.46 10.1.1.47
mhp_admin unlink all
Relink nodes from one network to another. &var_node; is the chief of the target network. This query is useful for dealing with more than one network, or for repairing a disintegrated network by hand. The operation is refused if the caller of &mhp_admin_py; is not authorized to access any of the affected nodes due to ui-locking. The node being relinked accepts the lock-state of the target network.
Given a network with chief mhp_admin unlink 10.1.1.50
mhp_admin relink 10.1.1.47 to 10.1.1.50
mhp_admin relink 10.1.1.50 to 10.1.1.24
mhp_admin relink 10.1.1.24 to 10.1.1.50
The nodes specified by &var_hosts; in the current network are restarted from the same executable path as they were originally started from. It is not quite clear in how far this query is useful for administration. It definitely has its flaws, but we are using it after compiling to quickly get a new version running, instead of rebuilding the entire network.
The nodes specified by &var_hosts; in the current network are terminated in a well-defined way. This is the recommended method disconnecting a node, e.g. if you need to shut down or reboot the host for maintenance.
Given a network
mhp_admin select host port role from hosts
arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.50:57431 |
+------------------+--------------+-------------+
| host | port | role |
+------------------+--------------+-------------+
| 10.1.1.50 | 57431 | chief |
| 10.1.1.47 | 57431 | loyal |
| 10.1.1.46 | 57431 | loyal |
+------------------+--------------+-------------+
| number of nodes listed here - good: 3, bad: 0 |
+-----------------------------------------------+
mhp_admin terminate 10.1.1.50
mhp_admin select host port role from hosts
arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+------------------+--------------+-------------+
| host | port | role |
+------------------+--------------+-------------+
| 10.1.1.46 | 57431 | chief |
| 10.1.1.47 | 57431 | loyal |
+------------------+--------------+-------------+
| number of nodes listed here - good: 2, bad: 0 |
+-----------------------------------------------+
mhp_admin run "killall -9 tde4mhpd" at 10.1.1.50
arg: ('killall -9 tde4mhpd', ['10.1.1.50'])
+---------------------------+
| run 'killall -9 tde4mhpd' |
+-----------------+---------+
| host | rc |
+-----------------+---------+
| 10.1.1.50 | 0 |
+-----------------+---------+mhp_admin select host port role from hosts
arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+-----------------+-------------+---------------+
| host | port | role |
+-----------------+-------------+---------------+
| 10.1.1.46 | 57431 | chief |
| 10.1.1.47 | 57431 | loyal |
| 10.1.1.50 | 57431 | unclear |
+-----------------+-------------+---------------+
| number of nodes listed here - good: 2, bad: 1 |
+-----------------------------------------------+
Assign the chief role to a different node. This should be done if the chief is going to be terminated, e.g. for maintenance. The network remains operational, and core computations are not interrupted.
In the network
mhp_admin select host port role from hosts
arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.47:57431 |
+------------------+--------------+-------------+
| host | port | role |
+------------------+--------------+-------------+
| 10.1.1.47 | 57431 | chief |
| 10.1.1.46 | 57431 | loyal |
| 10.1.1.50 | 57431 | loyal |
+------------------+--------------+-------------+
| number of nodes listed here - good: 3, bad: 0 |
+-----------------------------------------------+
mhp_admin make_chief 10.1.1.46
mhp_admin terminate 10.1.1.47
mhp_admin select host port role from hosts
arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+------------------+--------------+-------------+
| host | port | role |
+------------------+--------------+-------------+
| 10.1.1.46 | 57431 | chief |
| 10.1.1.50 | 57431 | loyal |
+------------------+--------------+-------------+
| number of nodes listed here - good: 2, bad: 0 |
+-----------------------------------------------+
The hosts known to the node at &var_host; are scanned for running instances of &tde4mhpd;. Each instance found is then incorporated into the &mhp;-network. A node will refuse the request if the caller of &mhp_admin_py; is not authorized to access the node due to ui-locking. If the network specified by &var_host; is locked, each node collected becomes locked as well. Collecting only works for nodes listening to the same port.
Given a network
mhp_admin select host port role from hosts at 10.1.1.24
arg (['host', 'port', 'role'], ['at', '10.1.1.24'])
+-----------------------------------------------+
| nodes governed by chief 10.1.1.24:57431 |
+-------------------+-------------+-------------+
| host | port | role |
+-------------------+-------------+-------------+
| 10.1.1.24 | 57431 | chief |
| 10.1.1.42 | 57431 | loyal |
| 10.1.1.44 | 57431 | loyal |
| 10.1.1.46 | 57431 | loyal |
| 10.1.1.47 | 57431 | loyal |
| 10.1.1.50 | 57431 | loyal |
| 10.1.1.103 | 57431 | loyal |
+-------------------+-------------+-------------+
| number of nodes listed here - good: 7, bad: 0 |
+-----------------------------------------------+
mhp_admin unlink all
mhp_admin select host port role from hosts at 10.1.1.24
mhp_admin collect at 10.1.1.24
+------------------------+
| collect |
+-------------------+----+
| status of request | ok |
+-------------------+----+
| collected | 6 |
+-------------------+----+
| not authorized | 0 |
| unknown | 0 |
+-------------------+----+
mhp_admin select host port role from hosts
arg (['host', 'port', 'role'], ['at', '10.1.1.24'])
+-----------------------------------------------+
| nodes governed by chief 10.1.1.24:57431 |
+-------------------+-------------+-------------+
| host | port | role |
+-------------------+-------------+-------------+
| 10.1.1.24 | 57431 | chief |
| 10.1.1.42 | 57431 | loyal |
| 10.1.1.44 | 57431 | loyal |
| 10.1.1.46 | 57431 | loyal |
| 10.1.1.47 | 57431 | loyal |
| 10.1.1.50 | 57431 | loyal |
| 10.1.1.103 | 57431 | loyal |
+-------------------+-------------+-------------+
| number of nodes listed here - good: 7, bad: 0 |
+-----------------------------------------------+
&var_nodes; is a node or list of nodes, separated by white space. The purpose of this command is to remove node entries from the node list in table &tab_hosts; in case they are in an undefined state, e.g. after a hard termination.
As an example consider the result of arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+-----------------+-------------+---------------+
| host | port | role |
+-----------------+-------------+---------------+
| 10.1.1.46 | 57431 | chief |
| 10.1.1.47 | 57431 | loyal |
| 10.1.1.50 | 57431 | unclear |
+-----------------+-------------+---------------+
| number of nodes listed here - good: 2, bad: 1 |
+-----------------------------------------------+
mhp_admin release 10.1.1.50
arg (['host', 'port', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+------------------+--------------+-------------+
| host | port | role |
+------------------+--------------+-------------+
| 10.1.1.46 | 57431 | chief |
| 10.1.1.47 | 57431 | loyal |
+------------------+--------------+-------------+
| number of nodes listed here - good: 2, bad: 0 |
+-----------------------------------------------+
Set one or more properties to given values at the hosts specified. The number of values in the &to;-clause must coincide with the number of properties. Currently there are not many properties to set at runtime:
A typical setup for a standalone node with 8 cpu-cores would be 8 community threads and 0 private threads,
but maybe you want to try out having one or two threads more in order to avoid idle times:
mhp_admin set num_threads_comm num_threads_priv at 10.1.1.46 10.1.1.47 to 9 0
mhp_admin set loglevel at all to 7
mhp_admin select num_threads_comm num_threads_priv loglevel from properties at 10.1.1.46
+----------------------------------------+
| properties |
+------------------+-----------+---------+
| name | value | defd_by |
+------------------+-----------+---------+
| num_threads_priv | 0 | legacy |
| num_threads_comm | 9 | legacy |
| loglevel | LOG_DEBUG | legacy |
+------------------+-----------+---------+
mhp_admin select host num_threads_comm num_threads_priv loglevel from properties at 10.1.1.46 10.1.1.47
(['host', 'num_threads_comm', 'num_threads_priv', 'loglevel'], ['10.1.1.46', '10.1.1.47'])
+-----------------------------------------------------------------------+
| properties |
+-----------+------------------+------------------+-----------+---------+
| host | num_threads_comm | num_threads_priv | loglevel | request |
+-----------+------------------+------------------+-----------+---------+
| 10.1.1.46 | 9 | 0 | LOG_DEBUG | ok |
| 10.1.1.47 | 9 | 0 | LOG_DEBUG | ok |
+-----------+------------------+------------------+-----------+---------+
Plugins for lens distortion (and later skills) can be added as functionality to a node without restarting it. This query causes the nodes to rescan their plugin directories so that plugins become available for computations.
Consider a set of nodes with the following plugin directories (paths edited for the sake of brevity):
mhp_admin select host install_dir plugin_dir from properties at all
(['host', 'install_dir', 'plugin_dir'], 'all')
+----------------------------------------------------------------+
| properties |
+-----------+----------------------+-------------------+---------+
| host | install_dir | plugin_dir | request |
+-----------+----------------------+-------------------+---------+
| 10.1.1.46 | /server/.../tde4mhpd | <install_dir> / . | ok |
| 10.1.1.47 | /server/.../tde4mhpd | <install_dir> / . | ok |
| 10.1.1.50 | /server/.../tde4mhpd | <install_dir> / . | ok |
+-----------+----------------------+-------------------+---------+
mhp_admin select some from lens_models at all
+-------------------------------------------------------------------------------------------------+
| lens_models at network 10.1.1.46:57431 |
+-----------+-------+---------------------------------------------------------+---------+---------+
| host | port | name | linking | request |
+-----------+-------+---------------------------------------------------------+---------+---------+
| 10.1.1.46 | 57431 | 3DE Classic LD Model | static | ok |
| | | 3DE4 Anamorphic - Rescaled, Degree 4 | static | |
| | | 3DE4 Anamorphic - Standard, Degree 4 | static | |
| | | 3DE4 Anamorphic, Degree 6 | static | |
| | | 3DE4 Radial - Fisheye, Degree 8 | static | |
| | | 3DE4 Radial - Standard, Degree 4 | static | |
+-----------+-------+---------------------------------------------------------+---------+---------+
| 10.1.1.47 | 57431 | 3DE Classic LD Model | static | ok |
| | | 3DE4 Anamorphic - Rescaled, Degree 4 | static | |
| | | 3DE4 Anamorphic - Standard, Degree 4 | static | |
| | | 3DE4 Anamorphic, Degree 6 | static | |
| | | 3DE4 Radial - Fisheye, Degree 8 | static | |
| | | 3DE4 Radial - Standard, Degree 4 | static | |
+-----------+-------+---------------------------------------------------------+---------+---------+
| 10.1.1.50 | 57431 | 3DE Classic LD Model | static | ok |
| | | 3DE4 Anamorphic - Rescaled, Degree 4 | static | |
| | | 3DE4 Anamorphic - Standard, Degree 4 | static | |
| | | 3DE4 Anamorphic, Degree 6 | static | |
| | | 3DE4 Radial - Fisheye, Degree 8 | static | |
| | | 3DE4 Radial - Standard, Degree 4 | static | |
+-----------+-------+---------------------------------------------------------+---------+---------+
| number of entries listed here: 21 |
+-------------------------------------------------------------------------------------------------+
cp /path/to/tde4_ldp_radial_fisheye_stereographic_deg_8.so /server/.../tde4mhpd/
mhp_admin rescan all
mhp_admin select some from lens_models at all where "linking == 'plugin'"
+-------------------------------------------------------------------------------------------------+
| lens_models at network 10.1.1.46:57431 |
+-----------+-------+---------------------------------------------------------+---------+---------+
| host | port | name | linking | request |
+-----------+-------+---------------------------------------------------------+---------+---------+
| 10.1.1.46 | 57431 | 3DE4 Radial - Fisheye, Stereographic, Degree 8 [Plugin] | plugin | ok |
| 10.1.1.47 | 57431 | 3DE4 Radial - Fisheye, Stereographic, Degree 8 [Plugin] | plugin | ok |
| 10.1.1.50 | 57431 | 3DE4 Radial - Fisheye, Stereographic, Degree 8 [Plugin] | plugin | ok |
+-----------+-------+---------------------------------------------------------+---------+---------+
| number of entries listed here: 3 |
+-------------------------------------------------------------------------------------------------+
By this query the network is locked so that it can be administrated from only one host (or two hosts if specified). This affects access by means
of the commandline tool &mhp_admin_py; as well as the browser interface. When the network is locked, &tde4;-clients can still connect,
run computations and modify the number of available threads on their own machine through &tde4;'s GUI.
In the first form as shown above you provide a human readable name or nickname and optionally a string
which expresses ways to contact you (like e.g.
The second form reads the parameters from the preset file passed,
which has the following form:
The third form (without parameters) reads the file &file_uilock_xml;. This is certainly the fastest and easiest way to lock the network, once you have configured the ui-lock file.
We start with an unlocked network:
mhp_admin select lock host hostname from hosts
arg (['lock', 'host', 'hostname', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+----------+-------------+------------+---------+
| lock | host | hostname | role |
+----------+-------------+------------+---------+
| False | 10.1.1.46 | box01 | chief |
| False | 10.1.1.47 | box02 | loyal |
| False | 10.1.1.50 | box03 | loyal |
+----------+-------------+------------+---------+
| number of nodes listed here - good: 3, bad: 0 |
+-----------------------------------------------+
mhp_admin lock name "uwe" contact "forbidden forest"
Enter new password: *****
+-------------------------------------+
| lock |
+-------------------+-----------------+
| prop | value |
+-------------------+-----------------+
| request sent to | 10.1.1.46:57431 |
| status | ok |
| num_hosts_success | 3 |
| num_hosts_failed | 0 |
| admin host a | 10.1.1.44 |
| admin host b | 0.0.0.0 |
+-------------------+-----------------+
mhp_admin select lock host hostname from hosts
arg (['lock', 'host', 'hostname', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+---------+--------------+------------+---------+
| lock | host | hostname | role |
+---------+--------------+------------+---------+
| True | 10.1.1.46 | box01 | chief |
| True | 10.1.1.47 | box02 | loyal |
| True | 10.1.1.50 | box03 | loyal |
+---------+--------------+------------+---------+
| number of nodes listed here - good: 3, bad: 0 |
+-----------------------------------------------+
The first form works if the machine running the tool is the same as the admin host used for locking. The second form is used to unlock the network from any host in the local area network.
If we assume the network is still locked from our example in the previous section, we simply call:
mhp_admin unlock
+-------------------------------------+
| unlock |
+-------------------+-----------------+
| prop | value |
+-------------------+-----------------+
| request sent to | 10.1.1.46:57431 |
| status | ok |
| num_hosts_success | 3 |
| num_hosts_failed | 0 |
+-------------------+-----------------+
mhp_admin select lock host hostname from hosts
arg (['lock', 'host', 'hostname', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+----------+-------------+------------+---------+
| lock | host | hostname | role |
+----------+-------------+------------+---------+
| False | 10.1.1.46 | box01 | chief |
| False | 10.1.1.47 | box02 | loyal |
| False | 10.1.1.50 | box03 | loyal |
+----------+-------------+------------+---------+
| number of nodes listed here - good: 3, bad: 0 |
+-----------------------------------------------+
Given a locked &mhp;-network, by this query you change the lock state from &var_host; (or the host &mhp_admin_py; is running on) to a new admin host &var_host_a; and optionally a secondary admin host &var_host_b;. This requires to enter the current password at prompt. The &mhp;-network remains locked.
For the following example we consider a network of three nodes mhp_admin select lock host hostname role from hosts
arg (['lock', 'host', 'hostname', 'role'],)
+-----------------------------------------------+
| nodes governed by chief 10.1.1.46:57431 |
+---------+--------------+------------+---------+
| lock | host | hostname | role |
+---------+--------------+------------+---------+
| True | 10.1.1.46 | box01 | chief |
| True | 10.1.1.47 | box02 | loyal |
| True | 10.1.1.50 | box03 | loyal |
+---------+--------------+------------+---------+
| number of nodes listed here - good: 3, bad: 0 |
+-----------------------------------------------+
mhp_admin show lock
+---------------------------+
| current lock |
+---------------+-----------+
| prop | value |
+---------------+-----------+
| status | ok |
| is_locked | true |
| admin_name | uwe |
| admin_contact | phn 4321 |
| admin_host_a | 10.1.1.44 |
| admin_host_b | 0.0.0.0 |
| permissions | all |
+---------------+-----------+
mhp_admin relock to 10.1.1.103
mhp_admin show lock
+----------------------------+
| current lock |
+---------------+------------+
| prop | value |
+---------------+------------+
| status | ok |
| is_locked | true |
| admin_name | uwe |
| admin_contact | phn 4321 |
| admin_host_a | 10.1.1.103 |
| admin_host_b | 0.0.0.0 |
| permissions | all |
+---------------+------------+
mhp_admin select all from hosts
+------------------------------------------+
| request http://10.1.1.46:57431/hosts.xml |
+----------------------+-------------------+
| status of request | not authorized |
+----------------------+-------------------+
| chief host:port | 10.1.1.46:57431 |
+----------------------+-------------------+
mhp_admin relock 10.1.1.103 to 10.1.1.44
mhp_admin show lock
+---------------------------+
| current lock |
+---------------+-----------+
| prop | value |
+---------------+-----------+
| status | ok |
| is_locked | true |
| admin_name | uwe |
| admin_contact | office |
| admin_host_a | 10.1.1.44 |
| admin_host_b | 0.0.0.0 |
| permissions | all |
+---------------+-----------+
There is a situation in which relocking as in the previous example is not possible any longer.
Let us assume there is a second network (locked or unlocked) with chief mhp_admin relock to 10.1.1.103
mhp_admin at 10.1.1.24
mhp_admin relock 10.1.1.03 to 10.1.1.44
Create an optical highlight if the table entry of column &var_column; matches value &var_value; with respect to function &var_function;.
The function can be
By the following query table entry mhp_admin create tag for theme light if role eq "chief" bold 127 63 0
mhp_admin show tags
+-----------------------------------------------------+
| tags for theme 'light' |
+-------------+------+------------+-------+-----------+
| column | func | value | bold | color |
+-------------+------+------------+-------+-----------+
| launched_as | eq | standalone | False | 0 127 0 |
| launched_as | eq | controlled | False | 159 91 0 |
| role | eq | chief | True | 127 63 0 |
| role | eq | loyal | True | 91 127 63 |
| role | eq | renegade | True | 255 0 0 |
| role | eq | unclear | True | 127 31 31 |
| rc | eq | 0 | True | 0 255 0 |
| rc | neq | not 0 | True | 255 0 0 |
+-------------+------+------------+-------+-----------+
mhp_admin select host role from hosts
+-----------------------------------------------+
| nodes governed by chief 10.1.1.24:57431 |
+------------------------+----------------------+
| host | role |
+------------------------+----------------------+
| 10.1.1.24 | chief |
| 10.1.1.42 | loyal |
| 10.1.1.44 | loyal |
| 10.1.1.46 | loyal |
| 10.1.1.50 | loyal |
| 10.1.1.103 | renegade |
| 10.1.1.116 | unclear |
+------------------------+----------------------+
| number of nodes listed here - good: 5, bad: 2 |
+-----------------------------------------------+
Remove the tag for theme &var_theme; where column &var_column; matches value &var_value; with respect to function &var_function;.
The function can be
Using this query is straight forward. Each tag is uniquely determined by &var_theme;, column &var_column;, &var_function; and &var_value;:
mhp_admin drop tag for theme dark if role eq "chief"
This query allows to define a shortcut for &select;-queries. The shortcut is called a &view;, and it is executed y means of the &show;-query (as opposed to languages like SQL, where a view behaves like a "real" table...).
Create a view named e.g. mhp_admin create view uilock as select host hostname is_locked admin_host_a from properties at all
mhp_admin show uilock
mhp_admin select host hostname is_locked admin_host_a from properties at all
mhp_admin show views
+-----------------------------------------------------------------------------+
| views |
+--------+--------------------------------------------------------------------+
| name | query |
+--------+--------------------------------------------------------------------+
| load | select all from load order by host asc |
| uilock | select host hostname is_locked admin_host_a from properties at all |
| hosts | select all from hosts order by role asc host asc |
+--------+--------------------------------------------------------------------+
Delete the view &var_view;.
mhp_admin drop view uilock
&show; &tab_hostbase; - Show host addresses as given in config file.
&show; &tab_remote; - Show remote shell commands as given in config file.
&show; &tab_launchers; - Show &mhp;-node launchers as given in config file.
&show; &tab_lock; - Display current lock state of the network.
&show; &tab_tags; - Show markup tags (bells and whistles)
&show; &tab_version; - Display version number in machine-readable style.
&show; &tab_views; - Show user-defined views
&show; &var_view; - Run a user-defined query referred to by &var_view;.
The queries of the first form are easy to use, just try out.
For the second form let us assume we have created views previously:
mhp_admin show views
+-------------------------------------------------------------------+
| views |
+-------+-----------------------------------------------------------+
| name | query |
+-------+-----------------------------------------------------------+
| hosts | select all from hosts order by role asc host asc port asc |
| proc | select all from proc at all |
+-------+-----------------------------------------------------------+
mhp_admin show hosts
mhp_admin show proc
mhp_admin sl all from hostsmhp_admin sl all from prop at 10.1.1.24
mhp_admin sl name from lmod at 10.1.1.50
mhp_admin terminate 10.1.1.46 10.1.1.47 10.1.1.50 10.1.1.103 10.1.1.116
mhp_admin term 1.1.46 1.1.47 1.1.50 1.1.103 1.1.116
mhp_admin term 1.46 1.47 1.50 1.103 1.116
mhp_admin term 46 47 50 103 116
mhp_admin unlink 10.1.1.50 mhp_admin relink 10.1.1.46 10.1.1.47 to 10.1.1.50
mhp_admin unl 50 mhp_admin rel 46 47 to 50
┌────────────────────────────────────────────────────────────────────────────────────┐ │ nodes governed by chief 10.1.1.24:57431 │ ├───────┬────────────┬────────────────────┬────────┬─────┬───────┬─────────┬─────────┤ │ lock │ host │ hostname │ proc │ msg │ role │ up_dhms │ version │ ├───────┼────────────┼────────────────────┼────────┼─────┼───────┼─────────┼─────────┤ │ False │ 10.1.1.24 │ guul │ daemon │ ok │ chief │ 4d 2h │ 2.0.4 │ │ False │ 10.1.1.42 │ demon │ daemon │ ok │ loyal │ 4d 1h │ 2.0.4 │ │ False │ 10.1.1.47 │ box02 │ daemon │ ok │ loyal │ 4d 2h │ 2.0.4 │ │ False │ 10.1.1.50 │ box03 │ daemon │ ok │ loyal │ 1d 3h │ 2.0.4 │ │ False │ 10.1.1.46 │ box01 │ daemon │ ok │ loyal │ 4d 2h │ 2.0.4 │ │ False │ 10.1.1.52 │ boxoffice1 │ daemon │ ok │ loyal │ 4d 2h │ 2.0.4 │ │ False │ 10.1.1.88 │ mibox │ daemon │ ok │ loyal │ 4d 1h │ 2.0.4 │ │ False │ 10.1.1.91 │ heibox │ daemon │ ok │ loyal │ 29m 23s │ 2.0.4 │ │ False │ 10.1.1.87 │ minimuff.box │ daemon │ ok │ loyal │ 3d 9h │ 2.0.4 │ │ False │ 10.1.1.116 │ applejack │ daemon │ ok │ loyal │ 3d 9h │ 2.0.4 │ │ False │ 10.1.1.118 │ azrael │ daemon │ ok │ loyal │ 1d 6h │ 2.0.4 │ ├───────┴────────────┴────────────────────┴────────┴─────┴───────┴─────────┴─────────┤ │ number of nodes listed here - good: 11, bad: 0 │ └────────────────────────────────────────────────────────────────────────────────────┘
