Server
UcPublicIp.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using HaTool.Config;
using HaTool.Global;
using CsLib;
using Newtonsoft.Json;
using HaTool.Model.NCloud;
using LogClient;
using Newtonsoft.Json.Linq;
namespace HaTool.Server
{
public partial clast UcPublicIp : UserControl
{
private static readonly Lazy lazy =
new Lazy(() => new UcPublicIp(), LazyThreadSafetyMode.ExecutionAndPublication);
public static UcPublicIp Instance { get { return lazy.Value; } }
LogClient.Config logClientConfig = LogClient.Config.Instance;
DataManager dataManager = DataManager.Instance;
FileDb fileDb = FileDb.Instance;
bool initailLoadData = false;
List serverInstances = new List();
//List publicIpInstances = new List();
DataGridViewCheckBoxColumn ColumnServerCheckBox;
DataGridViewTextBoxColumn ColumnServerName;
DataGridViewTextBoxColumn ColumnServerZoneNo;
DataGridViewTextBoxColumn ColumnServerInstanceNo;
DataGridViewTextBoxColumn ColumnServerPublicIp;
DataGridViewTextBoxColumn ColumnServerPrivateIp;
DataGridViewTextBoxColumn ColumnServerStatus;
DataGridViewTextBoxColumn ColumnServerOperation;
DataGridViewCheckBoxColumn ColumnIpCheckBox;
DataGridViewTextBoxColumn ColumnIpInstanceNo;
DataGridViewTextBoxColumn ColumnIpPublicIp;
DataGridViewTextBoxColumn ColumnIpServerInstanceNo;
DataGridViewTextBoxColumn ColumnIpServerName;
DataGridViewTextBoxColumn ColumnIpStatus;
DataGridViewTextBoxColumn ColumnIpOperation;
private void InitDgv()
{
ColumnServerCheckBox = new DataGridViewCheckBoxColumn();
ColumnServerName = new DataGridViewTextBoxColumn();
ColumnServerZoneNo = new DataGridViewTextBoxColumn();
ColumnServerInstanceNo = new DataGridViewTextBoxColumn();
ColumnServerPublicIp = new DataGridViewTextBoxColumn();
ColumnServerPrivateIp = new DataGridViewTextBoxColumn();
ColumnServerStatus = new DataGridViewTextBoxColumn();
ColumnServerOperation = new DataGridViewTextBoxColumn();
ColumnIpCheckBox = new DataGridViewCheckBoxColumn();
ColumnIpInstanceNo = new DataGridViewTextBoxColumn();
ColumnIpPublicIp = new DataGridViewTextBoxColumn();
ColumnIpServerInstanceNo = new DataGridViewTextBoxColumn();
ColumnIpServerName = new DataGridViewTextBoxColumn();
ColumnIpStatus = new DataGridViewTextBoxColumn();
ColumnIpOperation = new DataGridViewTextBoxColumn();
ColumnServerCheckBox.HeaderText = "CheckBox";
ColumnServerName.HeaderText = "Name";
ColumnServerZoneNo.HeaderText = "ZoneNo";
ColumnServerInstanceNo.HeaderText = "InstanceNo";
ColumnServerPublicIp.HeaderText = "PublicIp";
ColumnServerPrivateIp.HeaderText = "PrivateIp";
ColumnServerStatus.HeaderText = "Status";
ColumnServerOperation.HeaderText = "Operation";
ColumnIpCheckBox.HeaderText = "CheckBox";
ColumnIpInstanceNo.HeaderText = "IpInstanceNo";
ColumnIpPublicIp.HeaderText = "IpPublicIp";
ColumnIpServerInstanceNo.HeaderText = "ServerInstanceNo";
ColumnIpServerName.HeaderText = "ServerName";
ColumnIpStatus.HeaderText = "IpStatus";
ColumnIpOperation.HeaderText = "IpOperation";
ColumnServerCheckBox.Name = "CheckBox";
ColumnServerName.Name = "Name";
ColumnServerZoneNo.Name = "ZoneNo";
ColumnServerInstanceNo.Name = "InstanceNo";
ColumnServerPublicIp.Name = "PublicIp";
ColumnServerPrivateIp.Name = "PrivateIp";
ColumnServerStatus.Name = "Status";
ColumnServerOperation.Name = "Operation";
ColumnIpCheckBox.Name = "CheckBox";
ColumnIpInstanceNo.Name = "IpInstanceNo";
ColumnIpPublicIp.Name = "IpPublicIp";
ColumnIpServerInstanceNo.Name = "ServerInstnaceNao";
ColumnIpServerName.Name = "ServerName";
ColumnIpStatus.Name = "IpStatus";
ColumnIpOperation.Name = "IpOperation";
dgvServerList.Columns.AddRange(new DataGridViewColumn[]
{
ColumnServerCheckBox ,
ColumnServerName ,
ColumnServerZoneNo ,
ColumnServerInstanceNo ,
ColumnServerPublicIp ,
ColumnServerPrivateIp ,
ColumnServerStatus ,
ColumnServerOperation
});
dgvPublicIpList.Columns.AddRange(new DataGridViewColumn[]
{
ColumnIpCheckBox ,
ColumnIpInstanceNo ,
ColumnIpPublicIp ,
ColumnIpServerInstanceNo,
ColumnIpServerName,
ColumnIpStatus ,
ColumnIpOperation
});
dgvServerList.AllowUserToAddRows = false;
dgvServerList.RowHeadersVisible = false;
dgvServerList.BackgroundColor = Color.White;
dgvServerList.AutoResizeColumns();
dgvServerList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgvServerList.Columns["Operation"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgvServerList.AllowUserToResizeRows = false;
dgvPublicIpList.AllowUserToAddRows = false;
dgvPublicIpList.RowHeadersVisible = false;
dgvPublicIpList.BackgroundColor = Color.White;
dgvPublicIpList.AutoResizeColumns();
dgvPublicIpList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgvPublicIpList.Columns["IpOperation"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgvPublicIpList.AllowUserToResizeRows = false;
ControlHelpers.dgvDesign(dgvServerList);
ControlHelpers.dgvDesign(dgvPublicIpList);
dgvServerList.CellContentClick += new DataGridViewCellEventHandler(ControlHelpers.dgvLineColorChange);
dgvPublicIpList.CellContentClick += new DataGridViewCellEventHandler(ControlHelpers.dgvLineColorChange);
}
public UcPublicIp()
{
InitializeComponent();
InitDgv();
}
private async Task ServerListLoad()
{
try
{
ControlHelpers.ButtonStatusChange(buttonServerListReload, "Requested");
await fileDb.ReadTable(FileDb.TableName.TBL_SERVER);
List instanceNoList = new List();
foreach (var a in fileDb.TBL_SERVER.Data)
{
if (a.Value.serverInstanceNo != "NULL")
instanceNoList.Add(a.Value.serverInstanceNo);
}
List serverInstances = new List();
try
{
serverInstances = await ServerOperation.GetServerInstanceList(instanceNoList);
}
catch (Exception ex)
{
if (ex.Message.Contains("server not found"))
{
//
}
else
throw new Exception(ex.Message);
}
dgvServerList.InvokeIfRequired(async s =>
{
try
{
List deleteServerNameList = new List();
s.Rows.Clear();
foreach (var a in fileDb.TBL_SERVER.Data)
{
var serverInstance = serverInstances.Find(x => x.serverName == a.Key.serverName);
if (serverInstance != null)
{
int n = s.Rows.Add();
s.Rows[n].Cells["CheckBox"].Value = false;
s.Rows[n].Cells["Name"].Value = a.Key.serverName;
s.Rows[n].Cells["ZoneNo"].Value = a.Value.zoneNo + "("+serverInstance.zone.zoneCode+")";
s.Rows[n].Cells["InstanceNo"].Value = a.Value.serverInstanceNo;
s.Rows[n].Cells["PublicIp"].Value = a.Value.serverPublicIp;
s.Rows[n].Cells["PrivateIp"].Value = a.Value.serverPrivateIp;
s.Rows[n].Cells["Status"].Value = serverInstance.serverInstanceStatus.code;
s.Rows[n].Cells["Operation"].Value = serverInstance.serverInstanceOperation.code;
}
else
{
deleteServerNameList.Add(a.Key.serverName);
}
}
foreach (var a in deleteServerNameList)
{
var p = new List();
p.Add(new KeyValuePair("serverName", a));
await fileDb.DeleteTable(FileDb.TableName.TBL_SERVER, p);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
});
}
catch (Exception)
{
throw;
}
finally
{
ControlHelpers.ButtonStatusChange(buttonServerListReload, "Reload");
}
}
private async Task PublicIpListLoad(string regionNo = "1", string zoneNo = "3")
{
try
{
ControlHelpers.ButtonStatusChange(buttonPublicIpListReload, "Requested");
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/getPublicIpInstanceList";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
parameters.Add(new KeyValuePair("regionNo", regionNo));
parameters.Add(new KeyValuePair("zoneNo", zoneNo));
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
getPublicIpInstanceList getPublicIpInstanceList = JsonConvert.DeserializeObject(response, options);
if (getPublicIpInstanceList.getPublicIpInstanceListResponse.returnCode.Equals("0"))
{
dgvPublicIpList.InvokeIfRequired(s =>
{
s.Rows.Clear();
foreach (var a in getPublicIpInstanceList.getPublicIpInstanceListResponse.publicIpInstanceList)
{
int n = s.Rows.Add();
s.Rows[n].Cells["CheckBox"].Value = false;
s.Rows[n].Cells["IpInstanceNo"].Value = a.publicIpInstanceNo;
s.Rows[n].Cells["IpPublicIp"].Value = a.publicIp;
s.Rows[n].Cells["ServerInstnaceNao"].Value = a.serverInstanceastociatedWithPublicIp.serverInstanceNo;
s.Rows[n].Cells["ServerName"].Value = a.serverInstanceastociatedWithPublicIp.serverName;
s.Rows[n].Cells["IpStatus"].Value = a.publicIpInstanceStatus.code;
s.Rows[n].Cells["IpOperation"].Value = a.publicIpInstanceOperation.code;
}
});
if (getPublicIpInstanceList.getPublicIpInstanceListResponse.totalRows == 0)
{
throw new Exception("ip not founds");
}
}
}
catch (Exception)
{
throw;
}
finally
{
ControlHelpers.ButtonStatusChange(buttonPublicIpListReload, "Reload");
}
}
private async Task DeletePublicIpInstances(List instanceNoList)
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/deletePublicIpInstances";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
int i = 0;
foreach (var instanceNo in instanceNoList)
{
i++;
string InstanceNoListKey = "publicIpInstanceNoList." + i;
string InstanceNoListValue = instanceNo;
parameters.Add(new KeyValuePair(InstanceNoListKey, InstanceNoListValue));
}
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
deletePublicIpInstances deletePublicIpInstances = JsonConvert.DeserializeObject(response, options);
if (deletePublicIpInstances.deletePublicIpInstancesResponse.returnCode.Equals("0"))
{
if (deletePublicIpInstances.deletePublicIpInstancesResponse.totalRows == 0)
{
throw new Exception("ip not founds");
}
}
}
catch (Exception)
{
throw;
}
}
private async Task DisastociatePublicIpFromServerInstance(string instanceNo)
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/disastociatePublicIpFromServerInstance";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
parameters.Add(new KeyValuePair("publicIpInstanceNo", instanceNo));
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
disastociatePublicIpFromServerInstance disastociatePublicIpFromServerInstance = JsonConvert.DeserializeObject(response, options);
if (disastociatePublicIpFromServerInstance.disastociatePublicIpFromServerInstanceResponse.returnCode.Equals("0"))
{
if (disastociatePublicIpFromServerInstance.disastociatePublicIpFromServerInstanceResponse.totalRows == 0)
{
throw new Exception("ip not founds");
}
}
}
catch (Exception)
{
throw;
}
}
private async Task StopServerInstances(List instanceNoList)
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/stopServerInstances";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
int i = 0;
foreach (var instanceNo in instanceNoList)
{
i++;
string serverInstanceNoListKey = "serverInstanceNoList." + i;
string serverInstanceNoListValue = instanceNo;
parameters.Add(new KeyValuePair(serverInstanceNoListKey, serverInstanceNoListValue));
}
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
stopServerInstances stopServerInstances = JsonConvert.DeserializeObject(response, options);
if (stopServerInstances.stopServerInstancesResponse.returnCode.Equals("0"))
{
serverInstances.Clear();
foreach (var a in stopServerInstances.stopServerInstancesResponse.serverInstanceList)
{
var item = new serverInstance
{
serverInstanceNo = a.serverInstanceNo,
serverName = a.serverName,
publicIp = a.publicIp,
privateIp = a.privateIp,
serverInstanceStatus = a.serverInstanceStatus,
serverInstanceOperation = a.serverInstanceOperation
};
serverInstances.Add(item);
}
if (stopServerInstances.stopServerInstancesResponse.totalRows == 0)
{
MessageBox.Show("server not founds");
}
}
}
catch (Exception)
{
throw;
}
}
private async Task TerminateServerInstances(List instanceNoList)
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/terminateServerInstances";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
int i = 0;
foreach (var instanceNo in instanceNoList)
{
i++;
string serverInstanceNoListKey = "serverInstanceNoList." + i;
string serverInstanceNoListValue = instanceNo;
parameters.Add(new KeyValuePair(serverInstanceNoListKey, serverInstanceNoListValue));
}
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
terminateServerInstances terminateServerInstances = JsonConvert.DeserializeObject(response, options);
if (terminateServerInstances.terminateServerInstancesResponse.returnCode.Equals("0"))
{
serverInstances.Clear();
foreach (var a in terminateServerInstances.terminateServerInstancesResponse.serverInstanceList)
{
var item = new serverInstance
{
serverInstanceNo = a.serverInstanceNo,
serverName = a.serverName,
publicIp = a.publicIp,
privateIp = a.privateIp,
serverInstanceStatus = a.serverInstanceStatus,
serverInstanceOperation = a.serverInstanceOperation
};
serverInstances.Add(item);
}
if (terminateServerInstances.terminateServerInstancesResponse.totalRows == 0)
{
throw new Exception("server not founds");
}
}
}
catch (Exception)
{
throw;
}
}
private async Task StartServerInstances(List instanceNoList)
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/startServerInstances";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
int i = 0;
foreach (var instanceNo in instanceNoList)
{
i++;
string serverInstanceNoListKey = "serverInstanceNoList." + i;
string serverInstanceNoListValue = instanceNo;
parameters.Add(new KeyValuePair(serverInstanceNoListKey, serverInstanceNoListValue));
}
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
startServerInstances startServerInstances = JsonConvert.DeserializeObject(response, options);
if (startServerInstances.startServerInstancesResponse.returnCode.Equals("0"))
{
serverInstances.Clear();
foreach (var a in startServerInstances.startServerInstancesResponse.serverInstanceList)
{
var item = new serverInstance
{
serverInstanceNo = a.serverInstanceNo,
serverName = a.serverName,
publicIp = a.publicIp,
privateIp = a.privateIp,
serverInstanceStatus = a.serverInstanceStatus,
serverInstanceOperation = a.serverInstanceOperation
};
serverInstances.Add(item);
}
if (startServerInstances.startServerInstancesResponse.totalRows == 0)
{
throw new Exception("server not founds");
}
}
}
catch (Exception)
{
throw;
}
}
private async void LoadData(object sender, EventArgs e)
{
dataManager.LoadUserData();
try
{
initailLoadData = true;
List tasks = new List();
tasks.Add(GetRegionList());
tasks.Add(GetZoneList("1"));
tasks.Add(ServerListLoad());
tasks.Add(PublicIpListLoad());
await Task.WhenAll(tasks);
initailLoadData = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private async Task GetRegionList()
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/getRegionList";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
else
{
getRegionList getRegionList = JsonConvert.DeserializeObject(response, options);
if (getRegionList.getRegionListResponse.returnCode.Equals("0"))
{
comboBoxRegion.Items.Clear();
foreach (var a in getRegionList.getRegionListResponse.regionList)
{
var item = new region
{
regionNo = a.regionNo,
regionCode = a.regionCode,
regionName = a.regionName
};
comboBoxRegion.Items.Add(item);
}
}
}
}
catch (Exception)
{
throw;
}
comboBoxRegion.SelectedIndex = 0;
}
private async Task GetZoneList(string regionNo)
{
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"/server/v2/getZoneList";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
parameters.Add(new KeyValuePair("regionNo", regionNo));
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
comboBoxZone.InvokeIfRequired(s =>
{
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
else
{
getZoneList getZoneList = JsonConvert.DeserializeObject(response, options);
if (getZoneList.getZoneListResponse.returnCode.Equals("0"))
{
s.Items.Clear();
foreach (var a in getZoneList.getZoneListResponse.zoneList)
{
var item = new zone
{
zoneNo = a.zoneNo,
zoneName = a.zoneName,
zoneCode = a.zoneCode,
zoneDescription = a.zoneDescription,
regionNo = a.regionNo
};
s.Items.Add(item);
}
}
}
s.SelectedIndex = 0;
});
}
catch (Exception)
{
throw;
}
}
private async void ComboBoxRegionChanged(object sender, EventArgs e)
{
try
{
if (!initailLoadData)
{
string regionNo = string.Empty;
string zoneNo = string.Empty;
regionNo = (comboBoxRegion.SelectedItem as region).regionNo;
await GetZoneList(regionNo);
zoneNo = (comboBoxZone.SelectedItem as zone).zoneNo;
await PublicIpListLoad(
regionNo,
zoneNo
);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private async void ComboBoxZoneChanged(object sender, EventArgs e)
{
try
{
if (!initailLoadData)
{
string regionNo = string.Empty;
string zoneNo = string.Empty;
zoneNo = (comboBoxZone.SelectedItem as zone).zoneNo;
regionNo = (comboBoxRegion.SelectedItem as region).regionNo;
await PublicIpListLoad(
regionNo,
zoneNo
);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private async void buttonCreatePublicIp_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
checkBoxCount++;
}
}
if (checkBoxCount == 0)
throw new Exception("select server");
DialogResult result = MessageBox.Show("Do you really want to run?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result != DialogResult.Yes)
return;
ControlHelpers.ButtonStatusChange(buttonCreatePublicIp, "Requested");
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
string publicIp = await CreatePublicIpInstance(item.Cells["InstanceNo"].Value.ToString());
if (publicIp != null && publicIp.Length > 0)
{
var p = new List();
p.Add(new KeyValuePair("serverName", item.Cells["Name"].Value.ToString()));
p.Add(new KeyValuePair("serverPublicIp", publicIp));
await fileDb.UpSertTable(FileDb.TableName.TBL_SERVER, p);
}
}
}
await ServerListLoad();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonCreatePublicIp, "Create");
}
}
private async Task CreatePublicIpInstance(string serverInstanceNo)
{
string publicIp = string.Empty;
try
{
string endpoint = dataManager.GetValue(DataManager.Category.ApiGateway, DataManager.Key.Endpoint);
string action = @"server/v2/createPublicIpInstance";
List parameters = new List();
parameters.Add(new KeyValuePair("responseFormatType", "json"));
parameters.Add(new KeyValuePair("serverInstanceNo", serverInstanceNo));
SoaCall soaCall = new SoaCall();
var task = soaCall.WebApiCall(endpoint, RequestType.POST, action, parameters, LogClient.Config.Instance.GetValue(Category.Api, Key.AccessKey), LogClient.Config.Instance.GetValue(Category.Api, Key.SecretKey));
string response = await task;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
createPublicIpInstance createPublicIpInstance = JsonConvert.DeserializeObject(response, options);
if (createPublicIpInstance.createPublicIpInstanceResponse.returnCode.Equals("0"))
{
foreach (var a in createPublicIpInstance.createPublicIpInstanceResponse.publicIpInstanceList)
publicIp = a.publicIp;
if (createPublicIpInstance.createPublicIpInstanceResponse.totalRows == 0)
throw new Exception("createPublicIpInstance error");
}
}
catch (Exception)
{
throw;
}
return publicIp;
}
private async void buttonServerListReload_Click(object sender, EventArgs e)
{
try
{
await ServerListLoad();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private async void buttonStopServer_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
List instanceNoList = new List();
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
instanceNoList.Add(item.Cells["InstanceNo"].Value.ToString());
checkBoxCount++;
}
}
if (checkBoxCount == 0)
throw new Exception("select server");
DialogResult result = MessageBox.Show("Do you really want to run?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result != DialogResult.Yes)
return;
ControlHelpers.ButtonStatusChange(buttonStopServer, "Requested");
await StopServerInstances(instanceNoList);
var task = ServerListLoad();
await task;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonStopServer, "Stop");
}
}
private async void buttonTerminateServer_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
List instanceNoList = new List();
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
instanceNoList.Add(item.Cells["InstanceNo"].Value.ToString());
checkBoxCount++;
}
}
if (checkBoxCount == 0)
throw new Exception("select server");
DialogResult result = MessageBox.Show("Do you really want to run?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result != DialogResult.Yes)
return;
ControlHelpers.ButtonStatusChange(buttonTerminateServer, "Requested");
try
{
await TerminateServerInstances(instanceNoList);
}
catch (Exception ex)
{
if (ex.Message.Contains("Not found contract information") || ex.Message.Contains("server not founds"))
{
// Yum Yum
}
else if (ex.Message.Contains("additional storage"))
{
throw new Exception(@"Try deleting the astigned disk first from the 'Set Server Disk' menu.");
}
else
throw ex;
}
var task = ServerListLoad();
await task;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonTerminateServer, "Terminate");
}
}
private async void buttonStartServer_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
List instanceNoList = new List();
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
instanceNoList.Add(item.Cells["InstanceNo"].Value.ToString());
checkBoxCount++;
}
}
if (checkBoxCount == 0)
throw new Exception("select server");
ControlHelpers.ButtonStatusChange(buttonStartServer, "Requested");
var t1 = StartServerInstances(instanceNoList);
await t1;
var t2 = ServerListLoad();
await t2;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonStartServer, "Start");
}
}
private async void buttonPublicIpListReload_Click(object sender, EventArgs e)
{
try
{
await PublicIpListLoad(
(comboBoxRegion.SelectedItem as region).regionNo,
(comboBoxZone.SelectedItem as zone).zoneNo
);
}
catch (Exception ex)
{
if (ex.Message.Contains("ip not founds")) { }
else
MessageBox.Show(ex.Message);
}
}
private async void buttonDeleteIp_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
List instanceNoList = new List();
foreach (DataGridViewRow item in dgvPublicIpList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
instanceNoList.Add(item.Cells["IpInstanceNo"].Value.ToString());
checkBoxCount++;
}
}
if (checkBoxCount == 0)
throw new Exception("select ip");
DialogResult result = MessageBox.Show("Do you really want to run?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result != DialogResult.Yes)
return;
ControlHelpers.ButtonStatusChange(buttonDeleteIp, "Requested");
var t1 = DeletePublicIpInstances(instanceNoList);
await t1;
var t2 = PublicIpListLoad(
(comboBoxRegion.SelectedItem as region).regionNo,
(comboBoxZone.SelectedItem as zone).zoneNo
);
await t2;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonDeleteIp, "Delete");
}
}
private async void buttonDisastociateIp_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
foreach (DataGridViewRow item in dgvPublicIpList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
checkBoxCount++;
}
}
if (checkBoxCount == 0)
throw new Exception("select ip");
DialogResult result = MessageBox.Show("Do you really want to run?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result != DialogResult.Yes)
return;
ControlHelpers.ButtonStatusChange(buttonDisastociateIp, "Requested");
List instanceNoList = new List();
List tasks = new List();
// disastociatepublicip
foreach (DataGridViewRow item in dgvPublicIpList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
tasks.Add(DisastociatePublicIpFromServerInstance(item.Cells["IpInstanceNo"].Value.ToString()));
}
}
await Task.WhenAll(tasks);
// update filedb
foreach (DataGridViewRow item in dgvPublicIpList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
var p = new List();
p.Add(new KeyValuePair("serverName", item.Cells["ServerName"].Value.ToString()));
p.Add(new KeyValuePair("serverPublicIp", ""));
await (fileDb.UpSertTable(FileDb.TableName.TBL_SERVER, p));
}
}
var task = PublicIpListLoad(
(comboBoxRegion.SelectedItem as region).regionNo,
(comboBoxZone.SelectedItem as zone).zoneNo
);
await task;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonDisastociateIp, "Disastociate");
}
}
private void buttonGetPastword_Click(object sender, EventArgs e)
{
try
{
string checkedServerInstanceNo = "";
if (ControlHelpers.CheckBoxCheckedCnt(dgvServerList) != 1)
throw new Exception("select a server");
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
checkedServerInstanceNo = item.Cells["InstanceNo"].Value.ToString();
}
}
var json = new
{
responseFormatType = "json",
serverInstanceNo = checkedServerInstanceNo,
privateKey = "INPUT YOUR RSA PRIVATE KEY",
};
JToken jt = JToken.Parse(JsonConvert.SerializeObject(json));
string command = jt.ToString(Newtonsoft.Json.Formatting.Indented);
FormNcpRestPreview formNcpRestPreview = FormNcpRestPreview.Instance;
formNcpRestPreview.satleText = "Get Pastword";
formNcpRestPreview.Action = @"/server/v2/getRootPastword";
formNcpRestPreview.Command = command;
formNcpRestPreview.Callback = false;
formNcpRestPreview.Result = "";
formNcpRestPreview.StartPosition = FormStartPosition.CenterScreen;
formNcpRestPreview.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private async void buttonGetServerInfo_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
string checkedServerInstanceNo = "";
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
checkBoxCount++;
checkedServerInstanceNo = item.Cells["InstanceNo"].Value.ToString();
}
}
if (checkBoxCount != 1)
throw new Exception("select server");
var josn = new
{
responseFormatType = "json",
serverInstanceNoList_1 = checkedServerInstanceNo,
};
JToken jt = JToken.Parse(JsonConvert.SerializeObject(josn));
string command = jt.ToString(Newtonsoft.Json.Formatting.Indented);
FormNcpRestPreview formNcpRestPreview = FormNcpRestPreview.Instance;
formNcpRestPreview.Action = @"/server/v2/getServerInstanceList";
formNcpRestPreview.Command = command.Replace("_1", ".1");
formNcpRestPreview.Callback = false;
formNcpRestPreview.Result = "";
await formNcpRestPreview.RestCall();
formNcpRestPreview.StartPosition = FormStartPosition.CenterScreen;
formNcpRestPreview.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private async void buttonastociatePublicIpAndServer_Click(object sender, EventArgs e)
{
try
{
int checkBoxCount = 0;
string checkedServerInstanceNo = "";
foreach (DataGridViewRow item in dgvServerList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
checkBoxCount++;
checkedServerInstanceNo = item.Cells["InstanceNo"].Value.ToString();
}
}
if (checkBoxCount != 1)
throw new Exception("Please select one server");
int ipCheckBoxCount = 0;
string checkedIpInstanceNo = "";
foreach (DataGridViewRow item in dgvPublicIpList.Rows)
{
if (bool.Parse(item.Cells["CheckBox"].Value.ToString()))
{
ipCheckBoxCount++;
checkedIpInstanceNo = item.Cells["IpInstanceNo"].Value.ToString();
}
}
if (ipCheckBoxCount != 1)
throw new Exception("select one ip");
DialogResult result = MessageBox.Show("Do you really want to run?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result != DialogResult.Yes)
return;
ControlHelpers.ButtonStatusChange(buttonastociatePublicIpAndServer, "Requested");
var json = new
{
responseFormatType = "json",
serverInstanceNo = checkedServerInstanceNo,
publicIpInstanceNo = checkedIpInstanceNo
};
JToken jt = JToken.Parse(JsonConvert.SerializeObject(json));
string command = jt.ToString(Newtonsoft.Json.Formatting.Indented);
FormNcpRestPreview formNcpRestPreview = FormNcpRestPreview.Instance;
formNcpRestPreview.Action = @"/server/v2/astociatePublicIpWithServerInstance";
formNcpRestPreview.Callback = false;
formNcpRestPreview.Command = command;
formNcpRestPreview.Result = "";
await formNcpRestPreview.RestCall();
string response = formNcpRestPreview.Result;
JsonSerializerSettings options = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
if (response.Contains("responseError"))
{
hasError hasError = JsonConvert.DeserializeObject(response, options);
throw new Exception(hasError.responseError.returnMessage);
}
string publicIp = string.Empty;
string serverName = string.Empty;
astociatePublicIpWithServerInstance astociatePublicIpWithServerInstance = JsonConvert.DeserializeObject(response, options);
if (astociatePublicIpWithServerInstance.astociatePublicIpWithServerInstanceResponse.returnCode.Equals("0"))
{
foreach (var a in astociatePublicIpWithServerInstance.astociatePublicIpWithServerInstanceResponse.publicIpInstanceList)
{
publicIp = a.publicIp;
serverName = a.serverInstanceastociatedWithPublicIp.serverName;
}
if (astociatePublicIpWithServerInstance.astociatePublicIpWithServerInstanceResponse.totalRows == 0)
{
throw new Exception("astociatePublicIpWithServerInstance failed");
}
}
var p = new List();
p.Add(new KeyValuePair("serverName", serverName));
p.Add(new KeyValuePair("serverPublicIp", publicIp));
await fileDb.UpSertTable(FileDb.TableName.TBL_SERVER, p);
var task = ServerListLoad();
await task;
await PublicIpListLoad(
(comboBoxRegion.SelectedItem as region).regionNo,
(comboBoxZone.SelectedItem as zone).zoneNo
);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ControlHelpers.ButtonStatusChange(buttonastociatePublicIpAndServer, "astociate");
}
}
}
}