Armadilloフォーラム

コンテナからのRest API経由のユーザーデータの一括削除について

takamura.eiji

2025年7月31日 10時00分

==========
製品型番:AG9130-C03D0
Debian/ABOSバージョン:v3.21.3-at.14
==========

マニュアル「6.12.6.16. Rest API : ユーザー設定とユーザーデータの管理」に従い、Rest APIからユーザーデータ一括削除を試してみたところ、
ホスト OS 上で実行するとマニュアル例のように実行されて再起動されますが、コンテナ上で実行すると以下のようになります。

■コンテナOS上で実行した場合
armadillo:/# AUTH="Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
armadillo:/# alias curl_rest='curl -k -H "$AUTH" -w "\nhttp code: %{http_code}\n" '
armadillo:/# curl_rest -X POST "https://127.0.0.1:58080/api/reset_default"
ssse-flw: EmbSe_Init(): Entry
App :INFO :Using PortName='/dev/i2c-6:0x48' (ENV: EX_SSS_BOOT_SSS_PORT=/dev/i2c-6:0x48)
sss :INFO :atr (Len=35)
00 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 08
01 00 00 00 00 64 00 00 0A 4A 43 4F 50 34 20 41
54 50 4F
sss :WARN :Communication channel is Plain.
sss :WARN :!!!Not recommended for production use.!!!
ssse-flw: Version: 1.0.5
ssse-flw: EmbSe_Init(): Exit
ssse-flw: Control Command EMBSE_LOG_LEVEL; requested log level = 4
{"stdout":"rm -f /etc/NetworkManager/system-connections/*\n"}
{"stdout":"persist_file -r /etc/NetworkManager/system-connections\n"}
{"stdout":"persist_file -r /etc/dnsmasq.d\n"}
{"stdout":"rc-service dnsmasq restart\n"}
{"stdout":"/etc/init.d/iptables save\n"}
{"stdout":"sed -i -e '/NETAVARK/d' /etc/iptables/rules-save\n"}
{"stdout":"persist_file /etc/iptables/rules-save\n"}
{"stdout":"podman stop -a\n"}
{"stdout":"reformatting /var/log\n"}
{"stdout":"deleting /var/app/volumes/*\n"}
armadillo:~#

/var/app/volumes の削除の段階?でコンテナ OS が終了したようでホスト OS に戻されます。
コンテナ OS では中途半端?に終わっているのか再起動もされません。
下記について、ご見解をお願いいたします。

・手順は正しいでしょうか?
・本動作は想定通りの動作でしょうか?
・内部的には abos-ctrl reset-default -f が実行されている認識でよろしいでしょうか?
・自動的に再起動までされるようにするにはどうすればいいのでしょうか?

コメント

at_dominique.m…

2025年7月31日 11時42分

takamura.eijiさん

お世話になっています、
マルティネです。

> /var/app/volumes の削除の段階?でコンテナ OS が終了したようでホスト OS に戻されます。
> コンテナ OS では中途半端?に終わっているのか再起動もされません。

申し訳ございせん、abos-web 側の実装の問題です。

おっしゃる通りに、reset-default コマンドで /var/app/volumes のデータを削除する前にコンテナを停止していますが、
abos-web で http client が切断した際にコマンドを停止させるか、コマンドを実行しさせるかのオプションがあって、
reset-default で最後まで実行させるようにしてませんでした。

修正はもうできてませうので、8月末のアップデートで正常に動作するようになります。

参考までに以下のパッチです

diff --git a/src/settings/restapi_reset_default.rs b/src/settings/restapi_reset_default.rs
index aa1b553a2f08..afe361c57589 100644
--- a/src/settings/restapi_reset_default.rs
+++ b/src/settings/restapi_reset_default.rs
@@ -20,7 +20,11 @@ async fn restapi_reset_default(
 ) -> impl IntoResponse {
     json_stream_command(
         vec!["reset_default.sh".to_string()],
-        &CommandOpts::default(),
+        &CommandOpts {
+            // This should not stop halfway
+            stream_ignore_output_errors: true,
+            ..Default::default()
+        },
         None,
     )
 }

他のコマンドでコンテナがいきなりなくなる問題はない(かすでに対応している)と思いますが、
ついでに一回り確認します。報告ありがとうございました。

大変お手数ですが、試したい場合の abos-web のビルド手順は用意してませんので、もし急ぎじゃなければ来月のアップデートを待っていただければ幸いです。
その前に試したい場合はテスト用の apk を準備しますので言ってください。

よろしくお願いします

ご回答ありがとうございました。

> その前に試したい場合はテスト用の apk を準備しますので言ってください。

是非試したいので、apkをご用意頂けないでしょうか?

at_dominique.m…

2025年8月1日 14時16分

takamura.eijiさん

> 是非試したいので、apkをご用意頂けないでしょうか?

お待たせしました。
添付した tar アーカイブに動作確認用の apk でご確認ください。

armadillo:~# tar xvf abos-web.tar 
abos-web/
abos-web/abos-web-1.10.0-r5.apk
abos-web/abos-web-openrc-1.10.0-r5.apk
armadillo:~# persist_file -a add ./abos-web/abos-web-*apk
(1/2) Upgrading abos-web (1.9.0-r0 -> 1.10.0-r5)
(2/2) Upgrading abos-web-openrc (1.9.0-r0 -> 1.10.0-r5)
Executing busybox-1.37.0-r12.trigger
OK: 214 MiB in 197 packages
Install succeeded, but might not work in the running system
Please reboot if installed program does not work
armadillo:~# reboot
 
 
/ # curl $AUTH -X POST https://host.containers.internal:58080/api/reset_default
{"stdout":"rm -f /etc/NetworkManager/system-connections/*\n"}
[...]
{"stdout":"deleting /var/app/volumes/*\n"}
armadillo:~#

/var/app/volumes 削除でコンテナが今まで通り停止されますが、コマンドが最後まで実行されて再起動します。

また、ABOS 3.21.3-at.14 にある reset-default コマンドは何らかのエラーの場合に途中で失敗して再起動しない可能性はありますが、
ABOS 3.22.1-at.1 に更新していただければコンテナ起動後のエラー処理を改善して、
コンテナが停止した後に再起動せずに自ら止まる事がなくなったはずですので、更新も推奨します。
(abos-ctrl update コマンド等で)

よろしくお願いします。

ファイル ファイルの説明
abos-web.tar A9E用のaarch64パッケージです。