Skip to content

Commit 9c22d17

Browse files
authored
Merge pull request #155 from yunify/add-endpoint-check
add endpoint&zone check
2 parents 068d582 + dfef79c commit 9c22d17

File tree

2,400 files changed

+611856
-369690
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,400 files changed

+611856
-369690
lines changed

glide.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import:
1010
- terraform
1111

1212
- package: github.com/yunify/qingcloud-sdk-go
13+
version: v2.0.0-alpha.32
1314
subpackages:
1415
- config
15-
- service
16+
- service

qingcloud/config.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type Config struct {
2727

2828
type QingCloudClient struct {
2929
zone string
30+
qingcloud *qc.QingCloudService
3031
job *qc.JobService
3132
eip *qc.EIPService
3233
keypair *qc.KeyPairService
@@ -92,8 +93,11 @@ func (c *Config) Client() (*QingCloudClient, error) {
9293
return nil, err
9394
}
9495
userdata, err := clt.UserData(c.Zone)
95-
96+
if err != nil {
97+
return nil, err
98+
}
9699
return &QingCloudClient{
100+
qingcloud: clt,
97101
zone: c.Zone,
98102
job: job,
99103
eip: eip,

qingcloud/constants.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ const (
2323
qingcloudResourceTypeRouter = "router"
2424
qingcloudResourceTypeLoadBalancer = "loadbalancer"
2525

26+
StatusActive = "active"
27+
2628
DEFAULT_ZONE = "pek3a"
2729
DEFAULT_ENDPOINT = "https://api.qingcloud.com:443/iaas"
2830
waitJobTimeOutDefault = 240

qingcloud/provider.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
package qingcloud
1515

1616
import (
17+
"fmt"
1718
"os"
1819

1920
"github.com/hashicorp/terraform/helper/schema"
2021
"github.com/hashicorp/terraform/terraform"
22+
qc "github.com/yunify/qingcloud-sdk-go/service"
2123
)
2224

2325
func Provider() terraform.ResourceProvider {
@@ -97,6 +99,31 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
9799
Zone: zone.(string),
98100
EndPoint: endpoint.(string),
99101
}
102+
client, err := config.Client()
103+
if err != nil {
104+
return nil, err
105+
}
106+
// check zone & endpoint
107+
describeZonesOutput, err := client.qingcloud.DescribeZones(nil)
108+
if err != nil {
109+
return nil, err
110+
}
111+
if len(describeZonesOutput.ZoneSet) == 0 {
112+
return nil, fmt.Errorf("can not get zone info")
113+
}
114+
i := 0
115+
for _, az := range describeZonesOutput.ZoneSet {
116+
if qc.StringValue(az.ZoneID) == zone {
117+
if qc.StringValue(az.Status) != StatusActive {
118+
return nil, fmt.Errorf(" zone: %s", qc.StringValue(az.Status))
119+
}
120+
break
121+
}
122+
i++
123+
}
124+
if i == len(describeZonesOutput.ZoneSet) {
125+
return nil, fmt.Errorf("can not find zone: %s", zone)
126+
}
100127
return config.Client()
101128
}
102129

qingcloud/resource_qingcloud_loadbalancer_listener.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,10 @@ func resourceQingcloudLoadBalancerListener() *schema.Resource {
6767
ValidateFunc: withinArrayString("roundrobin", "leastconn", "source"),
6868
},
6969
resourceLoadBalancerListenerServerCertificateId: &schema.Schema{
70-
Type: schema.TypeString,
70+
Type: schema.TypeSet,
7171
Optional: true,
72+
Elem: &schema.Schema{Type: schema.TypeString},
73+
Set: schema.HashString,
7274
},
7375
resourceLoadBalancerListenerSessionSticky: &schema.Schema{
7476
Type: schema.TypeString,
@@ -115,7 +117,11 @@ func resourceQingcloudLoadBalancerListnerCreate(d *schema.ResourceData, meta int
115117
listener.ListenerProtocol = getSetStringPointer(d, resourceLoadBalancerListenerProtocol)
116118
listener.BackendProtocol = getSetStringPointer(d, resourceLoadBalancerListenerProtocol)
117119
listener.BalanceMode = getSetStringPointer(d, resourceLoadBalancerListenerBalancerMode)
118-
listener.ServerCertificateID = getSetStringPointer(d, resourceLoadBalancerListenerServerCertificateId)
120+
if len(d.Get(resourceLoadBalancerListenerServerCertificateId).(*schema.Set).List()) > 0 {
121+
for _, value := range d.Get(resourceLoadBalancerListenerServerCertificateId).(*schema.Set).List() {
122+
listener.ServerCertificateID = append(listener.ServerCertificateID, qc.String(value.(string)))
123+
}
124+
}
119125
listener.SessionSticky = getSetStringPointer(d, resourceLoadBalancerListenerSessionSticky)
120126
listener.Forwardfor = qc.Int(d.Get(resourceLoadBalancerListenerForwardfor).(int))
121127
listener.HealthyCheckMethod = getSetStringPointer(d, resourceLoadBalancerListenerHealthCheckMethod)
@@ -162,7 +168,7 @@ func resourceQingcloudLoadBalancerListenerRead(d *schema.ResourceData, meta inte
162168
d.Set(resourceLoadBalancerListenerPort, qc.IntValue(output.LoadBalancerListenerSet[0].ListenerPort))
163169
d.Set(resourceLoadBalancerListenerProtocol, qc.StringValue(output.LoadBalancerListenerSet[0].ListenerProtocol))
164170
d.Set(resourceLoadBalancerListenerBalancerMode, qc.StringValue(output.LoadBalancerListenerSet[0].BalanceMode))
165-
d.Set(resourceLoadBalancerListenerServerCertificateId, qc.StringValue(output.LoadBalancerListenerSet[0].ServerCertificateID))
171+
d.Set(resourceLoadBalancerListenerServerCertificateId, qc.StringValueSlice(output.LoadBalancerListenerSet[0].ServerCertificateID))
166172
d.Set(resourceLoadBalancerListenerSessionSticky, qc.StringValue(output.LoadBalancerListenerSet[0].SessionSticky))
167173
d.Set(resourceLoadBalancerListenerForwardfor, qc.IntValue(output.LoadBalancerListenerSet[0].Forwardfor))
168174
d.Set(resourceLoadBalancerListenerHealthCheckMethod, qc.StringValue(output.LoadBalancerListenerSet[0].HealthyCheckMethod))
@@ -178,7 +184,14 @@ func resourceQingcloudLoadBalancerListenerUpdate(d *schema.ResourceData, meta in
178184
input.LoadBalancerListener = qc.String(d.Id())
179185
input.LoadBalancerListenerName = getSetStringPointer(d, resourceName)
180186
input.BalanceMode = getSetStringPointer(d, resourceLoadBalancerListenerBalancerMode)
181-
input.ServerCertificateID = getSetStringPointer(d, resourceLoadBalancerListenerServerCertificateId)
187+
if d.HasChange(resourceLoadBalancerListenerServerCertificateId) {
188+
if len(d.Get(resourceLoadBalancerListenerServerCertificateId).(*schema.Set).List()) == 0 {
189+
input.ServerCertificateID = append(input.ServerCertificateID, qc.String(" "))
190+
}
191+
for _, value := range d.Get(resourceLoadBalancerListenerServerCertificateId).(*schema.Set).List() {
192+
input.ServerCertificateID = append(input.ServerCertificateID, qc.String(value.(string)))
193+
}
194+
}
182195
input.SessionSticky = getSetStringPointer(d, resourceLoadBalancerListenerSessionSticky)
183196
input.Forwardfor = qc.Int(d.Get(resourceLoadBalancerListenerForwardfor).(int))
184197
input.HealthyCheckMethod = getSetStringPointer(d, resourceLoadBalancerListenerHealthCheckMethod)

qingcloud/resource_qingcloud_loadbalancer_listener_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ resource "qingcloud_loadbalancer_listener" "foo"{
212212
load_balancer_id = "${qingcloud_loadbalancer.foo.id}"
213213
listener_port = "443"
214214
listener_protocol = "https"
215-
server_certificate_id = "${qingcloud_server_certificate.foo.id}"
215+
server_certificate_id = ["${qingcloud_server_certificate.foo.id}"]
216216
listener_option = 256
217217
}
218218
@@ -274,7 +274,7 @@ resource "qingcloud_loadbalancer_listener" "foo"{
274274
load_balancer_id = "${qingcloud_loadbalancer.foo.id}"
275275
listener_port = "443"
276276
listener_protocol = "https"
277-
server_certificate_id = "${qingcloud_server_certificate.foo.id}"
277+
server_certificate_id = ["${qingcloud_server_certificate.foo.id}"]
278278
listener_option = 207
279279
healthy_check_method = "http|/index.html|vhost.example.com"
280280
healthy_check_option = "10|5|5|5"

vendor/github.com/aws/aws-sdk-go/.github/ISSUE_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go/.godoc_config

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go/.travis.yml

Lines changed: 40 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)