hibiki31 / virty

Web interface of Libvirt-API for easy deployment.
17 stars 3 forks source link

UIリファクタリング #68

Open hibiki31 opened 1 year ago

hibiki31 commented 1 year ago

VM一覧

https://virty-dev.hinagiku.me/vms

VM詳細

参考

コンソールの開き方は、以下のURLにVMのUUIDを埋め込み別タブで開くだけ

/novnc/vnc.html?resize=remote&autoconnect=true&path=novnc/websockify?token=${VMのUUID}
hibiki31 commented 1 year ago

タスクの完了監視

  1. タスク実施状況を監視して、実行中はプログレスサークルを表示する
  2. 完了した際はJSONのリロードを行いページ更新を行う

API使用方法

/api/tasks/incompleteにてロングポーリングを行う

  1. クエリ無しでGETすると即時応答がありupdate_hashが手に入る
  2. update_hashをクエリに乗せGETするとupdate_hash取得時とタスク状況が変わっていなければ最大10秒間レスポンスを返さない
  3. 10秒経過するとupdate_hashを返す、この場合は理論上update_hashは変わっていないはず
  4. タスク状況が変わればサーバは10秒を待たずレスポンスを返す

このupdate_hashはまだ完了していないタスクのuuidを結合してmd5したもの。このハッシュに変化があれば=タスク状況が変わったことになるのでリロードを行うとそれっぽいプログレスサークルとリロードが行える

taso0096 commented 1 year ago

このハッシュに変化があれば=タスク状況が変わったことになるのでリロードを行うとそれっぽいプログレスサークルとリロードが行える

update_hashが更新されただけでは現在のページに関係があるかどうかわからない。 タスクを追加するAPIのレスポンスにはタスクのuuidが含まれているので、/api/tasks/incompleteのレスポンスに状態が変化したタスクのuuidがあればリロードするかどうかの判断ができる。 また、uuidだけでなくresource(vm、storageなど)があれば他のメンバーが追加したタスクでも、自分の今のページに関係がありそうならリロードするなどの判断ができる(これは今考慮することではないので後回し)。

とりあえず仕様が確定するまでは以下の2つのみ実装する。