chinaunix网友2006-05-16 10:30
/****************************************************************** * * FILE:CopyCommonFunction.java * * 履歴: * * 日付: 2004/04/28 * 版数: 1.00 * 担当: BSC)杉山 実 * 内容: 新規作成 * * 日付: 2004/08/16 * 版数: 1.01 * 担当: BSC)杉山 実 * 内容: 選出論理改善による修正 * * 日付: 2004/09/13 * 版数: 1.02 * 担当: BSC)杉山 実 * 内容: マイグレーションID切替え時に仮想LUN割当の変更も行う * (CT障害番号:000061) * * 日付: 2004/09/17 * 版数: 1.03 * 担当: BSC)杉山 実 * 内容: コピー履歴で出力するバックアップ有無の文言を変更する * (CT障害番号:000048) * * 日付: 2004/09/17 * 版数: 1.04 * 担当: BSC)杉山 実 * 内容: Handle-Engine間のエラートレースを出力する機能改善 * (CT障害番号:000079) * * 日付: 2004/09/17 * 版数: 1.05 * 担当: BSC)杉山 実 * 内容: COPY_HISTORY_PATHに誤ったディレクトリ名指定された時に * ワーニングメッセージを出力しコマンドは正常終了する * (CT障害番号:000030) * * 日付: 2004/10/25 * 版数: 1.06 * 担当: BSC)杉山 実 * 内容: 1.05版の修正不備対応 * * 日付: 2004/11/02 * 版数: 1.07 * 担当: BSC)杉山 実 * 内容: コピー履歴用タイトル追加 * * 日付: 2004/12/01 * 版数: 1.50 * 担当: BSC)田近 聡 * 内容: 1.5版対応 * * 日付: 2005/03/04 * 版数: 1.51 * 担当: BSC)田近 聡 * 内容: CT0031 マイグレーション時にコピー先情報を設定しないように修正(障害番号:021) * * 日付: 2005/08/26 * 版数: 2.00 * 担当: BSC)樋口 健太 * 内容: ACM
chinaunix网友2006-05-16 10:26
/******************************************************************
*
* FILE:CopyHistoryWriter.java
*
* 履歴:
*
* 日付: 2005/12/28
* 版数: 3.00
* 担当: BSC)田近 聡
* 内容: 新規作成
*
* 日付: 2006/01/17
* 版数: 3.01
* 担当: BSC)田近 聡
* 内容: CT0053:(コピー中止正常系)LostFlgを削除
*
* 日付: 2006/01/18
* 版数: 3.02
* 担当: BSC)田近 聡
* 内容: CT0052:Mig中止、切替え、Rep切離し異常系で、
* コピー進捗率採取に失敗した場合、開始時刻を表示しないように修正
*
* 日付: 2006/05/08
* 版数: 4.00
* 担当: BSC)田近 聡
* 内容: コピー履歴改善対応
*
==================================================================
* This software is the licensed software of Fujitsu Limited.
* All Rights Reserved, Copyright (c) 2004 by Fujitsu Limited
*
* THIS SOFTWARE IS THE CONFIDENTIAL OR TRADE SECRET PROPERTY
* OF FUJITSU LIMITED AND MAY ONLY BE USED UNDER LICENSE FROM
* FUJITSU LIMITED
*/
package com.fujitsu.storagesoft.sahandle.manager.util;
import java.util.logging.Logger;
import com.fujitsu.storagesoft.sahandle.common.Const;
import com.fujitsu.storagesoft.sahandle.common.HandleLog;
import com.fujitsu.storagesoft.sahandle.common.Utility;
import com.fujitsu.storagesoft.sahandle.common.ho.repository.CopyStatus;
import com.fujitsu.storagesoft.sahandle.common.ho.repository.VSwitch;
import com.fujitsu.storagesoft.sahandle.common.ho.repository.VirtualBox;
import com.fujitsu.storagesoft.sahandle.common.ho.repository.VirtualDisk;
import com.fujitsu.storagesoft.sahandle.common.ho.screen.SSwitch;
import com.fujitsu.storagesoft.sahandle.repository.RepositoryClient;
/**
* コピー履歴出力用クラス.
*
*
* @author BSC)田近 聡
* @version 4.00
*/
public class CopyHistoryWriter {
/** トレース出力用 */
private final Logger trace;
/** メッセージID */
private String id;
/** メッセージ名 */
private String name;
/** エラーメッセージ */
private String message;
/** コピーABEND要因情報 */
private int abend;
/**
* コンストラクタ
*/
public CopyHistoryWriter(String msgId, String msgName, String errorMsg,
int copyAbend) {
id = msgId;
name = msgName;
abend = copyAbend;
message = errorMsg;
trace = HandleLog.getTrace(CopyHistoryWriter.class);
}
/**
* GUIマイグレーション開始正常終了
*
* @param copyStatus
* コピーステータス情報
* @param vsw
* 処理仮想化スイッチ
* @param vb
* コピー元仮想筐体
* @param vd
* コピー元仮想ディスク
*/
public void writeStartMig(CopyStatus copyStatus, SSwitch vsw,
VirtualBox vb, VirtualDisk vd) {
CopyStatus status = (CopyStatus) copyStatus.clone();
status.setSrcVirtualBoxName(vb.getName());
status.setSrcVirtualDiskName(vd.getName());
status.setSwitchName(vsw.getHostName());
status.setTotalCapcity(Utility.toMByte(copyStatus.getTotalCapcity()));
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* CLIマイグレーション開始正常終了
*
* @param copyStatus
* コピーステータス情報
* @param vsw
* 処理仮想化スイッチ
* @param vb
* コピー元仮想筐体
* @param vd
* コピー元仮想ディスク
*/
public void writeStartMig(CopyStatus copyStatus, VSwitch vsw,
VirtualBox vb, VirtualDisk vd) {
CopyStatus status = (CopyStatus) copyStatus.clone();
status.setSrcVirtualBoxName(vb.getName());
status.setSrcVirtualDiskName(vd.getName());
status.setSwitchName(vsw.getHostName());
status.setTotalCapcity(Utility.toMByte(copyStatus.getTotalCapcity()));
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* GUIマイグレーション開始異常終了
*
* @param cStatus
* コピーステータス情報
* @param vsw
* 処理仮想化スイッチ
* @param vb
* コピー元仮想筐体
* @param vd
* コピー元仮想ディスク
* @param copyCode
* 処理コード
*/
public void writeStratMigError(CopyStatus cStatus, SSwitch vsw,
VirtualBox vb, VirtualDisk vd, int copyCode) {
CopyStatus status = new CopyStatus();
status.setSrcVirtualBoxName(vb.getName());
status.setSrcVirtualDiskName(vd.getName());
status.setSwitchName(vsw.getHostName());
status.setTotalCapcity(Utility.toMByte(vd.getCapacity()));
status.setProcessingCd(copyCode);
status.setBackupFlg(cStatus.getBackupFlg());
status.setStartTime(System.currentTimeMillis() / 1000);
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* CLIマイグレーション開始異常終了
*
* @param cStatus
* コピーステータス情報
* @param vsw
* 処理仮想化スイッチ
* @param vb
* コピー元仮想筐体
* @param vd
* コピー元仮想ディスク
* @param copyCode
* 処理コード
*/
public void writeStratMigError(CopyStatus cStatus, VSwitch vsw,
VirtualBox vb, VirtualDisk vd, int copyCode) {
CopyStatus status = new CopyStatus();
status.setSrcVirtualBoxName(vb.getName());
status.setSrcVirtualDiskName(vd.getName());
status.setSwitchName(vsw.getHostName());
status.setTotalCapcity(Utility.toMByte(vd.getCapacity()));
status.setProcessingCd(copyCode);
status.setBackupFlg(cStatus.getBackupFlg());
status.setStartTime(System.currentTimeMillis() / 1000);
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* マイグレーション中止
* レプリケーション中止正常終了
*
* @param copyStatus
* コピーステータス情報
* @param pCopyStatus
* セションIDを保持するコピーステータス情報
*/
public void writeCancel(CopyStatus copyStatus, CopyStatus pCopyStatus) {
CopyStatus status = (CopyStatus) copyStatus.clone();
status.setSessionId(pCopyStatus.getSessionId());
if (copyStatus.getStatus() != Const.COPY_STATUS_ABNORMAL) {
// 正常動作セションの場合
print(Const.COPY_MSG_ID_CANCELED, Const.COPY_MSG_CANCELED, status,
message, abend);
} else {
// 異常動作セションの場合
print(Const.COPY_MSG_ID_WARNING, Const.COPY_MSG_ABNORMAL, status,
message, abend);
}
}
/**
* マイグレーション切替
* レプリケーション切離し正常終了
*
* @param copyStatus
* コピーステータス情報
* @param pCopyStatus
* セションIDを保持するコピーステータス情報
* @param lostFlg
* Engineロストフラグ
*/
public void writeFinish(CopyStatus copyStatus, CopyStatus pCopyStatus) {
CopyStatus status = (CopyStatus) copyStatus.clone();
status.setSessionId(pCopyStatus.getSessionId());
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* マイグレーション中止,切替
* レプリケーション中止,切離し異常終了
*
* @param copyStatus
* コピーステータス情報
* @param pCopyStatus
* セションIDを保持するコピーステータス情報
*/
public void writeCancelFinishError(CopyStatus copyStatus,
CopyStatus pCopyStatus, int copyCode, int backupFlg) {
CopyStatus status = new CopyStatus();
if (copyStatus != null) {
status = (CopyStatus) copyStatus.clone();
status.setSessionId(pCopyStatus.getSessionId());
} else {
// コピー進捗率採取に失敗した場合
status = createErrorCopyStatus(pCopyStatus, copyCode, backupFlg);
abend = Const.COPY_ABEND_CAUSE_UNKNOWN_INT_VALUE;
}
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* マイグレーション自動切替
*
* @param copyStatus
* コピーステータス情報
* @param pCopyStatus
* セションIDを保持するコピーステータス情報
* @param copyHistoryFlg
* コピー履歴出力フラグ
* @param copyCode
* 処理コード
* @param backupFlg
* バックアップ有無フラグ
* @param errorMsg
* エラーメッセージ
*/
public void writeAutoFinishMig(CopyStatus copyStatus,
CopyStatus pCopyStatus, boolean copyHistoryFlg, int copyCode,
int backupFlg, String errorMsg) {
try {
CopyStatus status = new CopyStatus();
if (!copyHistoryFlg) {
// コピー履歴に出力する場合
if (copyStatus != null) {
status = (CopyStatus) copyStatus.clone();
status.setSessionId(pCopyStatus.getSessionId());
} else {
// コピー進捗率採取に失敗した場合
status = createErrorCopyStatus(pCopyStatus, copyCode,
backupFlg);
abend = Const.COPY_ABEND_CAUSE_UNKNOWN_INT_VALUE;
}
if (errorMsg == null) {
// 正常終了
print(Const.COPY_MSG_ID_NORMAL, Const.COPY_MSG_NORMAL,
status, errorMsg, abend);
} else {
// 異常終了
print(Const.COPY_MSG_ID_ABNORMAL, Const.COPY_MSG_FAILED,
status, errorMsg, abend);
}
}
} catch (Exception e) {
this.trace.info("It failed in the output of the log.");
}
}
/**
* コピー進捗率採取に失敗した場合のCopyStatus情報生成メソッド.
*
* @param pCopyStatus
* セションIDを保持するCopyStatus
* @param copyCode
* 処理コード
* @param backupFlg
* バックアップ有無
* @return status CopyStatus情報
*/
private CopyStatus createErrorCopyStatus(CopyStatus pCopyStatus,
int copyCode, int backupFlg) {
CopyStatus status = RepositoryClient.getInstance().getCopyStatus(
pCopyStatus.getSessionId());
if (status == null) {
// ACMセションの場合
status = new CopyStatus();
status.setSessionId(pCopyStatus.getSessionId());
status.setSrcVirtualBoxName(Const.COPY_MSG_UNKNOWN);
status.setSrcVirtualDiskName(Const.COPY_MSG_UNKNOWN);
status.setDstVirtualBoxName(Const.COPY_MSG_UNKNOWN);
status.setDstVirtualDiskName(Const.COPY_MSG_UNKNOWN);
status.setProcessingCd(copyCode);
status.setBackupFlg(backupFlg);
status.setStartTime(Const.COPY_MSG_UNKNOWN_STARTTIME);
} else {
// 容量をMByte単位に変換
status.setTotalCapcity(Utility.toMByte(status.getTotalCapcity()));
}
return status;
}
/**
* レプリケーション開始正常系
*
* @param copyStatus
* コピーステータス情報
* @param vsw
* 処理仮想化スイッチ
* @param srcVirtualBox
* 元仮想筐体
* @param dstVirtualBox
* 先仮想筐体
* @param srcVirtualDisk
* 元仮想ディスク
* @param dstVirtualDisk
* 先仮想ディスク
*/
public void writeStartRep(CopyStatus copyStatus, VSwitch vsw,
VirtualBox srcVirtualBox, VirtualBox dstVirtualBox,
VirtualDisk srcVirtualDisk, VirtualDisk dstVirtualDisk) {
CopyStatus status = (CopyStatus) copyStatus.clone();
status.setSrcVirtualBoxName(srcVirtualBox.getName());
status.setSrcVirtualDiskName(srcVirtualDisk.getName());
status.setDstVirtualBoxName(dstVirtualBox.getName());
status.setDstVirtualDiskName(dstVirtualDisk.getName());
status.setSwitchName(vsw.getHostName());
status.setTotalCapcity(Utility.toMByte(copyStatus.getTotalCapcity()));
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* レプリケーション開始異常系
*
* @param copyStaus
* コピーステータス情報
* @param vsw
* 処理仮想化スイッチ
* @param srcVirtualBox
* 元仮想筐体
* @param dstVirtualBox
* 先仮想筐体
* @param srcVirtualDisk
* 元仮想ディスク
* @param dstVirtualDisk
* 先仮想ディスク
* @param copyCode
* 処理コード
* @param backupFlg
* バックアップ有無フラグ
*/
public void writeStartRepError(CopyStatus copyStaus, VSwitch vsw,
VirtualBox srcVirtualBox, VirtualBox dstVirtualBox,
VirtualDisk srcVirtualDisk, VirtualDisk dstVirtualDisk,
int copyCode, int backupFlg) {
CopyStatus status = new CopyStatus();
status.setSessionId(copyStaus.getSessionId());
status.setSrcVirtualBoxName(srcVirtualBox.getName());
status.setSrcVirtualDiskName(srcVirtualDisk.getName());
status.setDstVirtualBoxName(dstVirtualBox.getName());
status.setDstVirtualDiskName(dstVirtualDisk.getName());
status.setSwitchName(vsw.getHostName());
status.setStartTime(System.currentTimeMillis() / 1000);
status.setPriority(copyStaus.getPriority());
status.setBackupFlg(backupFlg);
status.setProcessingCd(copyCode);
status.setTotalCapcity(Utility.toMByte(srcVirtualDisk.getCapacity()));
// コピー履歴出力処理
print(id, name, status, message, abend);
}
/**
* コピー履歴出力メソッド.
*
* @param id
* メッセージID
* @param name
* メッセージ名
* @param status
* コピーステータス情報
* @param message
* エラーメッセージ
* @param abend
* コピーABEND情報
*/
private void print(String id, String name, CopyStatus status,
String message, int abend) {
CopyCommonFunction.setCopyInfo(id, name, status, message, abend);
}
}
chinaunix网友2006-05-16 10:16
/****************************************************************** * * FILE:CopyCommonFunction.java * * 履歴: * * 日付: 2004/04/28 * 版数: 1.00 * 担当: BSC)杉山 実 * 内容: 新規作成 * * 日付: 2004/08/16 * 版数: 1.01 * 担当: BSC)杉山 実 * 内容: 選出論理改善による修正 * * 日付: 2004/09/13 * 版数: 1.02 * 担当: BSC)杉山 実 * 内容: マイグレーションID切替え時に仮想LUN割当の変更も行う * (CT障害番号:000061) * * 日付: 2004/09/17 * 版数: 1.03 * 担当: BSC)杉山 実 * 内容: コピー履歴で出力するバックアップ有無の文言を変更する * (CT障害番号:000048) * * 日付: 2004/09/17 * 版数: 1.04 * 担当: BSC)杉山 実 * 内容: Handle-Engine間のエラートレースを出力する機能改善 * (CT障害番号:000079) * * 日付: 2004/09/17 * 版数: 1.05 * 担当: BSC)杉山 実 * 内容: COPY_HISTORY_PATHに誤ったディレクトリ名指定された時に * ワーニングメッセージを出力しコマンドは正常終了する * (CT障害番号:000030) * * 日付: 2004/10/25 * 版数: 1.06 * 担当: BSC)杉山 実 * 内容: 1.05版の修正不備対応 * * 日付: 2004/11/02 * 版数: 1.07 * 担当: BSC)杉山 実 * 内容: コピー履歴用タイトル追加 * * 日付: 2004/12/01 * 版数: 1.50 * 担当: BSC)田近 聡 * 内容: 1.5版対応 * * 日付: 2005/03/04 * 版数: 1.51 * 担当: BSC)田近 聡 * 内容: CT0031 マイグレーション時にコピー先情報を設定しないように修正(障害番号:021) * * 日付: 2005/08/26 * 版数: 2.00 * 担当: BSC)樋口 健太 * 内容: ACM
chinaunix网友2006-05-16 10:16
/****************************************************************** * * FILE:CopyCommonFunction.java * * 履歴: * * 日付: 2004/04/28 * 版数: 1.00 * 担当: BSC)杉山 実 * 内容: 新規作成 * * 日付: 2004/08/16 * 版数: 1.01 * 担当: BSC)杉山 実 * 内容: 選出論理改善による修正 * * 日付: 2004/09/13 * 版数: 1.02 * 担当: BSC)杉山 実 * 内容: マイグレーションID切替え時に仮想LUN割当の変更も行う * (CT障害番号:000061) * * 日付: 2004/09/17 * 版数: 1.03 * 担当: BSC)杉山 実 * 内容: コピー履歴で出力するバックアップ有無の文言を変更する * (CT障害番号:000048) * * 日付: 2004/09/17 * 版数: 1.04 * 担当: BSC)杉山 実 * 内容: Handle-Engine間のエラートレースを出力する機能改善 * (CT障害番号:000079) * * 日付: 2004/09/17 * 版数: 1.05 * 担当: BSC)杉山 実 * 内容: COPY_HISTORY_PATHに誤ったディレクトリ名指定された時に * ワーニングメッセージを出力しコマンドは正常終了する * (CT障害番号:000030) * * 日付: 2004/10/25 * 版数: 1.06 * 担当: BSC)杉山 実 * 内容: 1.05版の修正不備対応 * * 日付: 2004/11/02 * 版数: 1.07 * 担当: BSC)杉山 実 * 内容: コピー履歴用タイトル追加 * * 日付: 2004/12/01 * 版数: 1.50 * 担当: BSC)田近 聡 * 内容: 1.5版対応 * * 日付: 2005/03/04 * 版数: 1.51 * 担当: BSC)田近 聡 * 内容: CT0031 マイグレーション時にコピー先情報を設定しないように修正(障害番号:021) * * 日付: 2005/08/26 * 版数: 2.00 * 担当: BSC)樋口 健太 * 内容: ACM
chinaunix网友2006-05-16 10:16
/****************************************************************** * * FILE:CopyCommonFunction.java * * 履歴: * * 日付: 2004/04/28 * 版数: 1.00 * 担当: BSC)杉山 実 * 内容: 新規作成 * * 日付: 2004/08/16 * 版数: 1.01 * 担当: BSC)杉山 実 * 内容: 選出論理改善による修正 * * 日付: 2004/09/13 * 版数: 1.02 * 担当: BSC)杉山 実 * 内容: マイグレーションID切替え時に仮想LUN割当の変更も行う * (CT障害番号:000061) * * 日付: 2004/09/17 * 版数: 1.03 * 担当: BSC)杉山 実 * 内容: コピー履歴で出力するバックアップ有無の文言を変更する * (CT障害番号:000048) * * 日付: 2004/09/17 * 版数: 1.04 * 担当: BSC)杉山 実 * 内容: Handle-Engine間のエラートレースを出力する機能改善 * (CT障害番号:000079) * * 日付: 2004/09/17 * 版数: 1.05 * 担当: BSC)杉山 実 * 内容: COPY_HISTORY_PATHに誤ったディレクトリ名指定された時に * ワーニングメッセージを出力しコマンドは正常終了する * (CT障害番号:000030) * * 日付: 2004/10/25 * 版数: 1.06 * 担当: BSC)杉山 実 * 内容: 1.05版の修正不備対応 * * 日付: 2004/11/02 * 版数: 1.07 * 担当: BSC)杉山 実 * 内容: コピー履歴用タイトル追加 * * 日付: 2004/12/01 * 版数: 1.50 * 担当: BSC)田近 聡 * 内容: 1.5版対応 * * 日付: 2005/03/04 * 版数: 1.51 * 担当: BSC)田近 聡 * 内容: CT0031 マイグレーション時にコピー先情報を設定しないように修正(障害番号:021) * * 日付: 2005/08/26 * 版数: 2.00 * 担当: BSC)樋口 健太 * 内容: ACM