@numa08 猫耳帽子の女の子

明日目が覚めたら俺達の業界が夢のような世界になっているとイイナ。

Virtualbox SDKをScalaで叩くと幸せだった

正しくないVagrantの使い方をしていたようです


vagrantで仮想マシンの電源オン、オフの自動化を考えていましたが、そもそもVagrantはそんな ことに使うツールではなく、実験用の仮想マシンをお手軽に操作するツールのようでした。

確かに、rootのパスワードがvagrantで固定だったり、vagrantユーザを作る必要があったりと、ちょと考えればわかることですね。(*)

(*)一応、分かってましたよ。ただ、自分の家で使うだけだからいいかなぁ・・・と

Virtualbox SDKを知った


Virtualboxダウンロードページでは公式SDKが配布されています。

ドキュメントによると

らしいです。

Javaが使えるならScalaも行けるやろ、ってことでやってみました。

Web Serverを立ち上げる


Virtualboxをインストールしたディレクトリ内のVBoxWebSrv.exeを起動すれば立ち上がります。 標準ではポート18083を利用します。

ポート番号の変更など様々なオプションがあるので

VBoxWebSrv.exe -h

とすると、オプションのヘルプを見ることができます。

SDKをインストールする


さきほどのダウンロードページからSDKのダウンロードを行います。

Javaの場合はsdk\bindings\glue\javaにサンプルコードが、sdk\bindings\webservice\java\jax-wsにライブラリのjarファイルが入っています。

コードを書く


sbt使ってコードを書きました。とりあえずVirtualboxのバージョンと仮想マシンの一覧の表示を行います。

package net.numa08

import org.virtualbox_4_2.VirtualBoxManager
import org.virtualbox_4_2.IMachine
import scala.collection.JavaConversions._
object VboxScala extends App {
    val manager = VirtualBoxManager.createInstance(null)
    manager.connect("http://localhost:18083","Windows User Name","Windows User Password")
    val box = manager.getVBox
    println("Vbox version is " + box.getVersion)

    val machiens:java.util.List[IMachine] = box.getMachines
    machiens.foreach( m => println(m.getName))
}

今後のこと


こんな感じ