alibabacloudstack/resource_apsarastack_data_works_project.go (83 lines of code) (raw):
package alibabacloudstack
import (
"fmt"
"log"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/connectivity"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/errmsgs"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func resourceAlibabacloudStackDataWorksProject() *schema.Resource {
resource := &schema.Resource{
Schema: map[string]*schema.Schema{
"project_id": {
Type: schema.TypeString,
Computed: true,
},
"project_name": {
Type: schema.TypeString,
Required: true,
},
"task_auth_type": {
Type: schema.TypeString,
Optional: true,
Default: "PROJECT",
},
},
}
setResourceFunc(resource, resourceAlibabacloudStackDataWorksProjectCreate,
resourceAlibabacloudStackDataWorksProjectRead, resourceAlibabacloudStackDataWorksProjectUpdate, resourceAlibabacloudStackDataWorksProjectDelete)
return resource
}
func resourceAlibabacloudStackDataWorksProjectCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
var response map[string]interface{}
action := "CreateProject"
request := make(map[string]interface{})
if v, ok := d.GetOk("project_name"); ok {
request["ProjectName"] = v.(string)
request["ProjectIdentifier"] = v.(string)
request["ProjectDesc"] = v.(string)
}
if v, ok := d.GetOk("task_auth_type"); ok {
request["TaskAuthType"] = v.(string)
}
request["PageSize"] = PageSizeLarge
request["PageNumber"] = 1
response, err := client.DoTeaRequest("POST", "dataworks-public", "2019-01-17", action, "", nil, nil, request)
if err != nil {
return err
}
d.SetId(fmt.Sprint(response["RequestId"], ":", response["Data"]))
return nil
}
func resourceAlibabacloudStackDataWorksProjectRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
dataworksPublicService := DataworksPublicService{client}
object, err := dataworksPublicService.DescribeDataWorksProject(d.Id())
log.Printf(fmt.Sprint(object))
if err != nil {
if errmsgs.NotFoundError(err) {
log.Printf("[DEBUG] Resource alibabacloudstack_data_works_folder dataworksPublicService.DescribeDataWorksProject Failed!!! %s", err)
d.SetId("")
return nil
}
errmsg := ""
if object != nil {
errmsg = errmsgs.GetAsapiErrorMessage(object)
}
return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_data_works_project", "DescribeDataWorksProject", errmsgs.AlibabacloudStackSdkGoERROR, errmsg)
}
parts, err := ParseResourceId(d.Id(), 2)
if err != nil {
return errmsgs.WrapError(err)
}
d.Set("project_id", parts[1])
return nil
}
func resourceAlibabacloudStackDataWorksProjectUpdate(d *schema.ResourceData, meta interface{}) error {
noUpdateAllowedFields := []string{"project_name", "task_auth_type"}
return noUpdatesAllowedCheck(d, noUpdateAllowedFields)
}
func resourceAlibabacloudStackDataWorksProjectDelete(d *schema.ResourceData, meta interface{}) error {
// 没有对应 API
return nil
}