-
Notifications
You must be signed in to change notification settings - Fork 0
/
Default.aspx.cs
141 lines (108 loc) · 4.48 KB
/
Default.aspx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Amazon.ElasticBeanstalk;
public partial class _Default : System.Web.UI.Page
{
#region classes
private class Item
{
public string Name { get; set; }
public string Value { get; set; }
}
#endregion
#region properties
private List<Amazon.ElasticBeanstalk.Model.ConfigurationOptionDescription> Options
{
get
{
return (List<Amazon.ElasticBeanstalk.Model.ConfigurationOptionDescription>)(Session["opt"] ?? null);
}
set
{
Session["opt"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DescribeConfigurationOptions();
}
}
#region private
private void DescribeConfigurationOptions()
{
using (var client = Amazon.AWSClientFactory.CreateAmazonElasticBeanstalkClient(GetConf()))
{
Amazon.ElasticBeanstalk.Model.DescribeEnvironmentsRequest req = new Amazon.ElasticBeanstalk.Model.DescribeEnvironmentsRequest();
req.ApplicationName = "vielgi";
var response = client.DescribeEnvironments(req);
string envName = response.Environments[0].EnvironmentName;
string envId = response.Environments[0].EnvironmentId;
string health = response.Environments[0].Health.Value;
lblHealth.Text = Server.HtmlEncode(health);
string status = response.Environments[0].Status.Value;
lblStatus.Text = Server.HtmlEncode(status);
if (Options == null)
{
Amazon.ElasticBeanstalk.Model.DescribeConfigurationOptionsRequest optReq = new Amazon.ElasticBeanstalk.Model.DescribeConfigurationOptionsRequest();
optReq.EnvironmentName = envName;
optReq.ApplicationName = req.ApplicationName;
var optResp = client.DescribeConfigurationOptions(optReq);
Options = optResp.Options;
}
Amazon.ElasticBeanstalk.Model.DescribeConfigurationSettingsRequest setReq = new Amazon.ElasticBeanstalk.Model.DescribeConfigurationSettingsRequest();
setReq.ApplicationName = req.ApplicationName;
setReq.EnvironmentName = envName;
var setResp = client.DescribeConfigurationSettings(setReq);
gvOptions.DataSource = setResp.ConfigurationSettings[0].OptionSettings.Where(x => x.OptionName == "MinSize" || x.OptionName == "MaxSize");
gvOptions.DataBind();
#region buttons
if (status.ToLower() != "ready")
{
btnSet1.Visible = btnSet2.Visible = false;
}
else
{
int currentMinSize = Convert.ToInt32(setResp.ConfigurationSettings[0].OptionSettings.Where(x => x.OptionName == "MinSize").Single().Value);
btnSet2.Visible = currentMinSize == 1;
btnSet1.Visible = !btnSet2.Visible;
}
#endregion
lblGenerated.Text = string.Format("Generated on {0: H:mm:ss}", DateTime.Now);
}
}
private AmazonElasticBeanstalkConfig GetConf()
{
AmazonElasticBeanstalkConfig conf = new AmazonElasticBeanstalkConfig();
conf.ServiceURL = "https://elasticbeanstalk.us-west-2.amazonaws.com";
return conf;
}
private void ChangeConfiguration(string minSize)
{
using (var client = Amazon.AWSClientFactory.CreateAmazonElasticBeanstalkClient(GetConf()))
{
Amazon.ElasticBeanstalk.Model.UpdateEnvironmentRequest req = new Amazon.ElasticBeanstalk.Model.UpdateEnvironmentRequest();
req.EnvironmentName = "vielgi2-env";
req.OptionSettings.Add(new Amazon.ElasticBeanstalk.Model.ConfigurationOptionSetting { Namespace = Options.Where(x => x.Name == "MinSize").Single().Namespace, OptionName = "MinSize", Value = minSize });
var response = client.UpdateEnvironment(req);
}
}
#endregion
#region events
protected void btnUpdate_Click(object sender, EventArgs e)
{
ChangeConfiguration((sender as Button).CommandArgument);
DescribeConfigurationOptions();
}
protected void ctrTimer_Tick(object sender, EventArgs e)
{
DescribeConfigurationOptions();
}
#endregion
}