/// <summary> /// Enable of disable vApp firewall /// </summary> /// <param name="vApp"></param> /// <param name="networkName"></param> /// <param name="isEnabled"></param> public void ConfigVAppNetworkFirework(Vapp vApp, string networkName, bool isEnabled) { var networkConfig = vApp.GetNetworkConfigSection(); var configType = networkConfig.NetworkConfig.SingleOrDefault(n => n.networkName == networkName); if (configType != null) { var config = configType.Configuration; var firewallService = config.Features.SingleOrDefault(f => (f as FirewallServiceType) != null); firewallService.IsEnabled = true; vApp.UpdateSection(networkConfig).WaitForTask(1000 * 60); } }
/// <summary> /// Power on vApp /// </summary> /// <param name="vApp"></param> public void PowerOnVapp(Vapp vApp) { PowerOnVapp(vApp, 0); }
/// <summary> /// Power on vApp /// </summary> /// <param name="vApp"></param> /// <param name="timeout"></param> public void PowerOnVapp(Vapp vApp, int timeout) { if (vApp == null) { string errorMsg = "vApp is null reference"; Log.logger.Error(errorMsg); throw new EnvironmentException(VCLOUD, errorMsg); } try { Log.logger.Debug(string.Format("PowerOn vApp Start: {0}", vApp.Reference.name)); vApp.PowerOn().WaitForTask(timeout); Log.logger.Debug(string.Format("PowerOn vApp Finish: {0}", vApp.Reference.name)); } catch (Exception e) { Log.logger.Error(e.Message); throw new EnvironmentException(VCLOUD, e.Message, e); } }
/// <summary> /// Power off vApp async /// </summary> /// <param name="vApp"></param> /// <param name="timeout"></param> public void PowerOffVappAsync(Vapp vApp) { if (vApp == null) { string errorMsg = "vApp is null reference"; Log.logger.Error(errorMsg); throw new EnvironmentException(VCLOUD, errorMsg); } try { Log.logger.Debug(string.Format("PowerOff vApp: {0}", vApp.Reference.name)); vApp.PowerOff(); } catch (Exception e) { Log.logger.Error(e.Message); throw new EnvironmentException(VCLOUD, e.Message, e); } }
/// <summary> /// Get VM in specific vApp /// </summary> /// <param name="vApp"></param> /// <returns></returns> public IList<VM> GetVMsByVapp(Vapp vApp) { return vApp.GetChildrenVms(); }
/// <summary> /// Deploy vApp async /// </summary> /// <param name="vApp"></param> /// <param name="isPowerOn"></param> /// <param name="lease"></param> /// <param name="forceCustomization"></param> public void DeployVappAsync(Vapp vApp, bool isPowerOn, int lease, bool forceCustomization) { if (vApp == null) { string errorMsg = "vApp is null reference"; Log.logger.Error(errorMsg); throw new EnvironmentException(VCLOUD, errorMsg); } try { Log.logger.Debug(string.Format("Deploy vApp: {0}", vApp.Reference.name)); vApp.Deploy(isPowerOn, lease, forceCustomization); } catch (Exception e) { Log.logger.Error(e.Message); throw new EnvironmentException(VCLOUD, e.Message, e); } }
/// <summary> /// Get vApp status /// </summary> /// <param name="vApp"></param> /// <returns></returns> public vAppStatus GetVAppStatus(Vapp vApp) { if (vApp == null) { return vAppStatus.NotExist; } // get vApp status by vCloud SDK var status = vApp.GetVappStatus().Value(); if (vApp.IsDeployed()) { if (status == VappStatus.POWERED_ON.Value()) { // todo: check vm is ready for use, more than just power on return vAppStatus.Ready; } else if (status == VappStatus.FAILED_CREATION.Value()) { return vAppStatus.Error; } } else { if (status == VappStatus.FAILED_CREATION.Value()) { return vAppStatus.Error; } else if (status == VappStatus.MIXED.Value()) { return vAppStatus.Error; } else if (status == VappStatus.POWERED_OFF.Value()) { return vAppStatus.Undeploy; } else if (status == VappStatus.UNKNOWN.Value()) { return vAppStatus.Unknow; } } return vAppStatus.Unknow; }
/// <summary> /// Delete vApp /// </summary> /// <param name="vApp"></param> public void DeleteVapp(Vapp vApp) { DeleteVapp(vApp, 0); }
/// <summary> /// Deploy vApp /// </summary> /// <param name="vApp"></param> /// <param name="isPowerOn"></param> /// <param name="lease"></param> /// <param name="forceCustomization"></param> public void DeployVapp(Vapp vApp, bool isPowerOn, int lease, bool forceCustomization) { DeployVapp(vApp, isPowerOn, lease, forceCustomization, 0); }
/// <summary> /// Wait for all task in vApp finished /// </summary> /// <param name="vapp"></param> /// <param name="timeout"></param> public void WaitAppTaskFinish(Vapp vapp, int timeout) { foreach (var task in vapp.Tasks) { task.WaitForTask(timeout); } }
/// <summary> /// Undeploy vApp async /// </summary> /// <param name="vApp"></param> /// <param name="timeout"></param> public void UndeployVappAsync(Vapp vApp) { if (vApp == null) { string errorMsg = "vApp is null reference"; Log.logger.Error(errorMsg); throw new EnvironmentException(VCLOUD, errorMsg); } try { Log.logger.Debug(string.Format("Undeploy vApp: {0}", vApp.Reference.name)); vApp.Undeploy(UndeployPowerActionType.DEFAULT); } catch (Exception e) { Log.logger.Error(e.Message); throw new EnvironmentException(VCLOUD, e.Message, e); } }
/// <summary> /// Undeploy vApp /// </summary> /// <param name="vApp"></param> public void UndeployVapp(Vapp vApp) { UndeployVapp(vApp, 0); }
/// <summary> /// Suspend vApp /// </summary> /// <param name="vApp"></param> public void SuspendVapp(Vapp vApp) { SuspendVapp(vApp, 0); }
/// <summary> /// Shutdown vApp /// </summary> /// <param name="vApp"></param> public void ShutdownVapp(Vapp vApp) { ShutdownVapp(vApp, 0); }