Skip to content

Commit

Permalink
add new resource alicloud_container_cluster
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaozhu36 committed Dec 11, 2017
1 parent 1fdc4be commit 574f657
Show file tree
Hide file tree
Showing 46 changed files with 3,203 additions and 320 deletions.
63 changes: 46 additions & 17 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,58 @@
## 0.1.1 (Unreleased)
## 1.0.0 (Unreleased)

IMPROVEMENTS:

- *New Resource:* _alicloud_oss_bucket_ [GH-10]
- *New Resource*: _alicloud_oss_bucket_object [GH-14]
- *New output_file* option for data sources: export data to a specified file [GH-29]
- resource/rds: add ability to change instance password [GH-17]
- resource/rds: Add ability to import existing RDS resources [GH-16]
- datasource/alicloud_zones: Add more options for filtering [GH-19]
- *New Resource*: _alicloud_container_cluster_ [GH-47]
- *New Resource:* _alicloud_ram_policy_ [GH-46]
- *New Resource*: _alicloud_ram_user_policy_attachment_ [GH-46]
- *New Resource* _alicloud_ram_user_ [GH-44]
- *New Datasource* _alicloud_ram_policies_ [GH-46]
- *New Datasource* _alicloud_ram_users_ [GH-44]

- Added support for importing:
- `alicloud_container_cluster` [GH-47]
- `alicloud_ram_policy` [GH-46]
- `alicloud_ram_user` [GH-44]


## 0.1.1 (December 11, 2017)

IMPROVEMENTS:

- *New Resource:* _alicloud_key_pair_ ([#27](https://github.com/terraform-providers/terraform-provider-alicloud/pull/27))
- *New Resource*: _alicloud_key_pair_attachment_ ([#28](https://github.com/terraform-providers/terraform-provider-alicloud/pull/28))
- *New Resource*: _alicloud_router_interface_ ([#40](https://github.com/terraform-providers/terraform-provider-alicloud/pull/40))
- *New Resource:* _alicloud_oss_bucket_ ([#10](https://github.com/terraform-providers/terraform-provider-alicloud/pull/10))
- *New Resource*: _alicloud_oss_bucket_object_ ([#14](https://github.com/terraform-providers/terraform-provider-alicloud/pull/14))
- *New Datasource* _alicloud_key_pairs_ ([#30](https://github.com/terraform-providers/terraform-provider-alicloud/pull/30))
- *New Datasource* _alicloud_vpcs_ ([#34](https://github.com/terraform-providers/terraform-provider-alicloud/pull/34))
- *New output_file* option for data sources: export data to a specified file ([#29](https://github.com/terraform-providers/terraform-provider-alicloud/pull/29))
- resource/instance:add new parameter `key_name` ([#31](https://github.com/terraform-providers/terraform-provider-alicloud/pull/31))
- resource/route_entry: new nexthop type 'RouterInterface' for route entry ([#41](https://github.com/terraform-providers/terraform-provider-alicloud/pull/41))
- resource/security_group_rule: Remove `cidr_ip` contribute "ConflictsWith" ([#39](https://github.com/terraform-providers/terraform-provider-alicloud/pull/39))
- resource/rds: add ability to change instance password ([#17](https://github.com/terraform-providers/terraform-provider-alicloud/pull/17))
- resource/rds: Add ability to import existing RDS resources ([#16](https://github.com/terraform-providers/terraform-provider-alicloud/pull/16))
- datasource/alicloud_zones: Add more options for filtering ([#19](https://github.com/terraform-providers/terraform-provider-alicloud/pull/19))
- Added support for importing:
- `alicloud_nat_gateway`
- `alicloud_ess_schedule`
- `alicloud_ess_scaling_group`
- `alicloud_instance`
- `alicloud_eip`
- `alicloud_disk`
- `alicloud_vpc` ([#32](https://github.com/terraform-providers/terraform-provider-alicloud/pull/32))
- `alicloud_route_entry` ([#33](https://github.com/terraform-providers/terraform-provider-alicloud/pull/33))
- `alicloud_nat_gateway` ([#26](https://github.com/terraform-providers/terraform-provider-alicloud/pull/26))
- `alicloud_ess_schedule` ([#25](https://github.com/terraform-providers/terraform-provider-alicloud/pull/25))
- `alicloud_ess_scaling_group` ([#24](https://github.com/terraform-providers/terraform-provider-alicloud/pull/24))
- `alicloud_instance` ([#23](https://github.com/terraform-providers/terraform-provider-alicloud/pull/23))
- `alicloud_eip` ([#22](https://github.com/terraform-providers/terraform-provider-alicloud/pull/22))
- `alicloud_disk` ([#21](https://github.com/terraform-providers/terraform-provider-alicloud/pull/21))

BUG FIXES:

- resource/disk_attachment: Fix issue attaching multiple disks and set disk_attachment's parameter 'device_name' as deprecated [GH-9]
- resource/rds: Fix diff error about rds security_ips [GH-13]
- resource/security_group_rule: Fix diff error when authorizing security group rules [GH-15]
- resource/disk_attachment: Fix issue attaching multiple disks and set disk_attachment's parameter 'device_name' as deprecated ([#9](https://github.com/terraform-providers/terraform-provider-alicloud/pull/9))
- resource/rds: Fix diff error about rds security_ips ([#13](https://github.com/terraform-providers/terraform-provider-alicloud/pull/13))
- resource/security_group_rule: Fix diff error when authorizing security group rules ([#15](https://github.com/terraform-providers/terraform-provider-alicloud/pull/15))
- resource/security_group_rule: Fix diff bug by modifying 'DestCidrIp' to 'DestGroupId' when running read ([#35](https://github.com/terraform-providers/terraform-provider-alicloud/pull/35))


## 0.1.0 (June 20, 2017)

NOTES:

* Same functionality as that of Terraform 0.9.8. Repacked as part of [Provider Splitout](https://www.hashicorp.com/blog/upcoming-provider-changes-in-terraform-0-10/)
* Same functionality as that of Terraform 0.9.8. Repacked as part of [Provider Splitout](https://www.hashicorp.com/blog/upcoming-provider-changes-in-terraform-0-10/)
68 changes: 62 additions & 6 deletions alicloud/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,17 @@ import (
"fmt"

"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/denverdino/aliyungo/cdn"
"github.com/denverdino/aliyungo/common"
"github.com/denverdino/aliyungo/dns"
"github.com/denverdino/aliyungo/ecs"
"github.com/denverdino/aliyungo/ess"
"github.com/denverdino/aliyungo/location"
"github.com/denverdino/aliyungo/ram"
"github.com/denverdino/aliyungo/rds"
"github.com/denverdino/aliyungo/slb"

"github.com/denverdino/aliyungo/cs"
"github.com/hashicorp/terraform/terraform"
"log"
"strings"
Expand All @@ -33,6 +38,10 @@ type AliyunClient struct {
vpcconn *ecs.Client
slbconn *slb.Client
ossconn *oss.Client
dnsconn *dns.Client
ramconn ram.RamClientInterface
csconn *cs.Client
cdnconn *cdn.CdnClient
}

// Client for AliyunClient
Expand Down Expand Up @@ -72,11 +81,27 @@ func (c *Config) Client() (*AliyunClient, error) {
if err != nil {
return nil, err
}

ossconn, err := c.ossConn()
if err != nil {
return nil, err
}
dnsconn, err := c.dnsConn()
if err != nil {
return nil, err
}
ramconn, err := c.ramConn()
if err != nil {
return nil, err
}
csconn, err := c.csConn()
if err != nil {
return nil, err
}
cdnconn, err := c.cdnConn()
if err != nil {
return nil, err
}

return &AliyunClient{
Region: c.Region,
ecsconn: ecsconn,
Expand All @@ -86,6 +111,10 @@ func (c *Config) Client() (*AliyunClient, error) {
rdsconn: rdsconn,
essconn: essconn,
ossconn: ossconn,
dnsconn: dnsconn,
ramconn: ramconn,
csconn: csconn,
cdnconn: cdnconn,
}, nil
}

Expand Down Expand Up @@ -116,9 +145,7 @@ func (c *Config) ecsConn() (*ecs.Client, error) {
client.SetBusinessInfo(BusinessInfoKey)
client.SetUserAgent(getUserAgent())

_, err := client.DescribeRegions()

if err != nil {
if _, err := client.DescribeRegions(); err != nil {
return nil, err
}

Expand Down Expand Up @@ -166,17 +193,46 @@ func (c *Config) ossConn() (*oss.Client, error) {
return nil, fmt.Errorf("Describe endpoint using region: %#v got an error: %#v.", c.Region, err)
}
endpointItem := endpoints.Endpoints.Endpoint
var endpoint string
if endpointItem == nil || len(endpointItem) <= 0 {
return nil, fmt.Errorf("Cannot find endpoint in the region: %#v", c.Region)
// return nil, fmt.Errorf("Cannot find endpoint in the region: %#v", c.Region")
log.Printf("Cannot find endpoint in the region: %#v", c.Region)
endpoint = ""
} else {
endpoint = strings.ToLower(endpointItem[0].Protocols.Protocols[0]) + "://" + endpointItem[0].Endpoint
}

endpoint := strings.ToLower(endpointItem[0].Protocols.Protocols[0]) + "://" + endpointItem[0].Endpoint
log.Printf("[DEBUG] Instantiate OSS client using endpoint: %#v", endpoint)
client, err := oss.New(endpoint, c.AccessKey, c.SecretKey, oss.UserAgent(getUserAgent()))

return client, err
}

func (c *Config) dnsConn() (*dns.Client, error) {
client := dns.NewClientNew(c.AccessKey, c.SecretKey)
client.SetBusinessInfo(BusinessInfoKey)
client.SetUserAgent(getUserAgent())
return client, nil
}

func (c *Config) ramConn() (ram.RamClientInterface, error) {
client := ram.NewClient(c.AccessKey, c.SecretKey)
return client, nil
}

func (c *Config) csConn() (*cs.Client, error) {
client := cs.NewClient(c.AccessKey, c.SecretKey)
client.SetUserAgent(getUserAgent())
return client, nil
}

func (c *Config) cdnConn() (*cdn.CdnClient, error) {
client := cdn.NewClient(c.AccessKey, c.SecretKey)
client.SetBusinessInfo(BusinessInfoKey)
client.SetUserAgent(getUserAgent())
return client, nil
}

func getUserAgent() string {
return fmt.Sprintf("HashiCorp-Terraform-v%s", terraform.VersionString())
}
52 changes: 49 additions & 3 deletions alicloud/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@ const (
InstanceIncorrectStatus = "IncorrectInstanceStatus"
HaVipIncorrectStatus = "IncorrectHaVipStatus"
// slb
LoadBalancerNotFound = "InvalidLoadBalancerId.NotFound"
UnsupportedProtocalPort = "UnsupportedOperationonfixedprotocalport"

LoadBalancerNotFound = "InvalidLoadBalancerId.NotFound"
UnsupportedProtocalPort = "UnsupportedOperationonfixedprotocalport"
ListenerNotFound = "The specified resource does not exist"
ListenerAlreadyExists = "ListenerAlreadyExists"
ServiceIsConfiguring = "ServiceIsConfiguring"
BackendServerconfiguring = "BackendServer.configuring"
// security_group
InvalidInstanceIdAlreadyExists = "InvalidInstanceId.AlreadyExists"
InvalidSecurityGroupIdNotFound = "InvalidSecurityGroupId.NotFound"
Expand All @@ -41,10 +44,15 @@ const (
VpcQuotaExceeded = "QuotaExceeded.Vpc"
// vswitch
VswitcInvalidRegionId = "InvalidRegionId.NotFound"
//vroute entry
IncorrectRouteEntryStatus = "IncorrectRouteEntryStatus"
TaskConflict = "TaskConflict"
RouterEntryForbbiden = "Forbbiden"

// ess
InvalidScalingGroupIdNotFound = "InvalidScalingGroupId.NotFound"
IncorrectScalingConfigurationLifecycleState = "IncorrectScalingConfigurationLifecycleState"
IncorrectScalingGroupStatus = "IncorrectScalingGroupStatus"

// oss
OssBucketNotFound = "NoSuchBucket"
Expand All @@ -54,6 +62,32 @@ const (
RamInstanceNotFound = "Forbidden.InstanceNotFound"
AliyunGoClientFailure = "AliyunGoClientFailure"

// dns
RecordForbiddenDNSChange = "RecordForbidden.DNSChange"
FobiddenNotEmptyGroup = "Fobidden.NotEmptyGroup"

// ram user
DeleteConflictUserGroup = "DeleteConflict.User.Group"
DeleteConflictUserAccessKey = "DeleteConflict.User.AccessKey"
DeleteConflictUserLoginProfile = "DeleteConflict.User.LoginProfile"
DeleteConflictUserMFADevice = "DeleteConflict.User.MFADevice"
DeleteConflictUserPolicy = "DeleteConflict.User.Policy"

// ram mfa
DeleteConflictVirtualMFADeviceUser = "DeleteConflict.VirtualMFADevice.User"

// ram group
DeleteConflictGroupUser = "DeleteConflict.Group.User"
DeleteConflictGroupPolicy = "DeleteConflict.Group.Policy"

// ram role
DeleteConflictRolePolicy = "DeleteConflict.Role.Policy"

// ram policy
DeleteConflictPolicyUser = "DeleteConflict.Policy.User"
DeleteConflictPolicyGroup = "DeleteConflict.Policy.Group"
DeleteConflictPolicyVersion = "DeleteConflict.Policy.Version"

//unknown Error
UnknownError = "UnknownError"

Expand All @@ -67,6 +101,11 @@ const (
// cdn
ServiceBusy = "ServiceBusy"

//
InvalidRamRoleNotFound = "InvalidRamRole.NotFound"
RoleAttachmentUnExpectedJson = "unexpected end of JSON input"
InvalidInstanceIdNotFound = "InvalidInstanceId.NotFound"

RouterInterfaceIncorrectStatus = "IncorrectStatus"
DependencyViolationRouterInterfaceReferedByRouteEntry = "DependencyViolation.RouterInterfaceReferedByRouteEntry"
)
Expand Down Expand Up @@ -98,3 +137,10 @@ func IsExceptedError(err error, expectCode string) bool {

return false
}

func RamEntityNotExist(err error) bool {
if e, ok := err.(*common.Error); ok && strings.Contains(e.Code, "EntityNotExist") {
return true
}
return false
}
29 changes: 29 additions & 0 deletions alicloud/import_alicloud_container_cluster_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package alicloud

import (
"testing"

"github.com/hashicorp/terraform/helper/resource"
)

func TestAccAlicloudContainerCluster_importBasic(t *testing.T) {
resourceName := "alicloud_container_cluster.cs_vpc"

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckContainerClusterDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccContainerCluster_vpc,
},

resource.TestStep{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{"cidr_block", "disk_category", "disk_size", "image_id", "instance_type", "password"},
},
},
})
}
1 change: 1 addition & 0 deletions alicloud/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ func Provider() terraform.ResourceProvider {
"alicloud_oss_bucket_object": resourceAlicloudOssBucketObject(),
"alicloud_key_pair": resourceAlicloudKeyPair(),
"alicloud_key_pair_attachment": resourceAlicloudKeyPairAttachment(),
"alicloud_container_cluster": resourceAlicloudContainerCluster(),
"alicloud_router_interface": resourceAlicloudRouterInterface(),
},

Expand Down
Loading

0 comments on commit 574f657

Please sign in to comment.