error

Unable to serialize object of class in vCenter Orchestrator

家ラボの vCenter Orchestrator を 5.5.2.1 (ShellShock 対応) に上げたところ、action:waitAllWorkflowComplete でエラーが発生するようになったので、その対応方法を記します。 発生するエラーメッセージは以下の通り。

Workflow:Create lab / waitAllWorkflowComplete (item6) : ch.dunes.model.type.ConvertorException: Unable to serialize object of class : ch.dunes.vso.sdk.SDKTypeConvertor_server$1

この問題を起こした Action は、直前の Foreach ノードで複数実行したワークフローの完了を workflow token (wfTokens) の内容を確認しながら待機します。この wfToken は Foreach ノードで実行したワークフローのアウトプット オブジェクトも含まれているので、その辺で Serialize Error が出ているのかもしれません。以下が、問題を発生した実際のワークフローになります。

vco error

バグ報告をしても修正を待っていられないので、回避策として action:waitAllWorkflowComplete を Scriptable Task に置き換えます。 まず、action:waitAllWorkflowComplete のスクリプトの内容を確認します。

script task

次に、問題を起こしたワークフローの action:waitAllWorkflowComplete を Scriptable Task に変更します。

revised task

そしてその中身のスクリプトとパラメーターバインディングを行います。スクリプトは以下になります。

parameter binding

action:waitAllWorkflowComplete のスクリプトから不要な return 文を削除します。 パラメーターバインディングは以下になります。

parameter binding

ワークフローでは、ワークフロー トークンの配列を wfTokens としていますが、バインディングの際に tokens という名前に変更しています。 実際のスクリプトは、貼り付けるほどでもないですが、以下のようになります。

var result = new Array();
if (tokens != null && tokens.length > 0) {
    result[tokens.length-1] = null; // init the array with the good size but full of null

    var allFinished = false;
    while (! allFinished) {
        System.sleep(500);

        allFinished = true;

        for (var i in tokens) {
            if (tokens[i].state == "completed" || tokens[i].state == "failed" || tokens[i].state == "canceled") {
                allFinished &= true;
                if (result[i] == null) {
                    var prop = tokens[i].getOutputParameters(); // Properties
                    if (prop == null) prop = new Properties();
                    prop.put("__state", tokens[i].state);
                    if (tokens[i].state == "failed")
                        prop.put("__exception", tokens[i].exception);
                    result[i] = prop;
                }
            }
            else {
                allFinished = false;
            }
        }
    }   
}

関連記事

  1. vco

    vCenter Orchestrator (1) – Intro

    VMware の数ある製品の中でおそらく 3 番目に顧客先でインス…

  2. vco

    備忘録: wait a vim task in vCO script

    var task = folder.destory_Task();…

  3. Yufuin-no-mori Traing

    vco

    Updating Host advanced settings with updateOptions…

    まとめvRealize Orchestrator のスクリプティ…

  4. Tong-Sai@Naka Island, Thailand

    install

    vCenter Orchestrator (2) – Installation Type…

    Windows 版 vCenter Server をイ…

  5. vco

    [Fixed] Unable to serialize object of class in vRe…

    先日にエントリのネタになったバグが KB として上がり、さらにバグパッ…

  6. vco

    vCO のスクリプトで vCenter の情報が取得できない

    vCenter Orchestrator (vCO) のスクリプト…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。










  1. vmotion

    vMotion の歴史 (6) – vCenter Server 6.0 – T…
  2. isilon

    VMware Tools on Isilon Virtual Nodes (un…
  3. powershell

    PowerCLI – PowerShell on Mac
  4. nicolas vibert

    地理的な拡張
  5. vsphere client

    vSphere Client (C#) 5.5 update 2 へのアップグレ…
PAGE TOP
Translate »