diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-09-16 16:05:32 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-09-16 16:05:32 +0300 |
commit | 5467f2ddadeaaf74dfb2109d53c4d5be9f275f20 (patch) | |
tree | f649f50edfefb146f097fd8da39a13dd4e261b84 /dev-shell | |
parent | db136cebdda6f853fdc08a3b4beaeef310a11a22 (diff) | |
download | acf2-5467f2ddadeaaf74dfb2109d53c4d5be9f275f20.tar.bz2 acf2-5467f2ddadeaaf74dfb2109d53c4d5be9f275f20.tar.xz |
integration with 'lbu commit'
client must specifically request saving files if server's root file system is tmpfs
web client does this automatically on commit
Diffstat (limited to 'dev-shell')
-rwxr-xr-x | dev-shell | 59 |
1 files changed, 35 insertions, 24 deletions
@@ -3,18 +3,14 @@ # Copyright (c) 2012-2013 Kaarle Ritvanen # See LICENSE file for license details -function parse_var { - echo "$2" | sed "s/^$1: \\(.\\+\\)"$'\r'"\$/\\1/;ta;d;:a;q" -} - function _acf_req { local url=$ACF_URL$1 shift local resp resp=$(curl -s -w $'\n\nStatus: %{response_code}\r\n' \ - ${ACF_AUTH_TOKEN:+-H "X-ACF-Auth-Token: $ACF_AUTH_TOKEN"} \ - ${ACF_TXN_ID:+-H "X-ACF-Transaction-ID: $ACF_TXN_ID"} \ + ${ACF_Auth_Token:+-H "X-ACF-Auth-Token: $ACF_Auth_Token"} \ + ${ACF_Transaction_ID:+-H "X-ACF-Transaction-ID: $ACF_Transaction_ID"} \ "$@" $url) local code=$? @@ -23,9 +19,10 @@ function _acf_req { return 1 fi + resp=$(echo "$resp" | sed $'s/\r//') echo "$resp" - local status=$(parse_var Status "$resp") + local status=$(echo "$resp" | sed 's/^Status: //;ta;d;:a;q') [ "${status:0:1}" = 2 ] && return echo "Request failed" >&2 @@ -34,31 +31,30 @@ function _acf_req { function _acf_start_req { local url=$1 - local hdr=X-ACF-$2 - local var=ACF_$3 - shift 3 - - local current=${!var} - local status= + shift local resp resp=$(_acf_req "$url" "$@" -D /proc/self/fd/1 -o /proc/self/fd/3) [ $? -eq 0 ] || return - local id=$(parse_var $hdr "$resp") - eval export $var=$id + local txn_id=$ACF_Transaction_ID + + while read line; do + eval export "$line" + done < <(echo "$resp" | \ + sed 's/^X-\(ACF-[-A-Za-z]\+\): /\1=/;ta;d;:a;y/-/_/') bash --rcfile "$ACF_QD_CLI" [ $? -eq 254 ] || _acf_req $url -X DELETE - eval $var=$current + ACF_Transaction_ID=$txn_id } -if [ "$ACF_AUTH_TOKEN" ]; then +if [ "$ACF_Auth_Token" ]; then - if [ "$ACF_TXN_ID" ]; then + if [ "$ACF_Transaction_ID" ]; then cat >&2 <<EOF -Transaction $ACF_TXN_ID started +Transaction $ACF_Transaction_ID started Type 'commit' to commit, 'exit' to abort EOF @@ -71,16 +67,31 @@ Available commands: Delete object: delete <path> Fetch metadata: meta <path> Start transaction: start +EOF + if [ $ACF_Save_Required = 1 ]; then + echo " Save changes persistently: save" >&2 + fi +cat >&2 <<EOF Example: put /awall/zone/internet '{"iface": ["eth0"]}' EOF fi - PS1="$ACF_USER@acf2-dev-shell${ACF_TXN_ID:+($ACF_TXN_ID)}> " + PS1="$ACF_USER@acf2-dev-shell${ACF_Transaction_ID:+($ACF_Transaction_ID)}> " + + if [ $ACF_Save_Required = 1 ]; then + function save { + if [ "$ACF_Transaction_ID" ]; then + echo "Transaction not committed" >&2 + return 1 + fi + _acf_req /save -X POST + } + fi function start { - _acf_start_req /transaction Transaction-ID TXN_ID -X POST + _acf_start_req /transaction -X POST } function meta { @@ -114,7 +125,7 @@ EOF } function commit { - if [ "$ACF_TXN_ID" ]; then + if [ "$ACF_Transaction_ID" ]; then if _acf_req /transaction -X PUT; then echo Committed >&2 exit 254 @@ -177,8 +188,8 @@ EOF echo >&2 fi - ACF_TXN_ID= + ACF_Transaction_ID= - _acf_start_req /login Auth-Token AUTH_TOKEN \ + _acf_start_req /login \ -d "{\"username\": \"$ACF_USER\", \"password\": \"$PASSWORD\"}" fi |