func UpdateRepository(d *schema.ResourceData, meta interface{}) error { client := meta.(*Client) d.Partial(true) if d.HasChange("name") { // Renaming has its own special operation. err := RenameRepository(d, meta) if err != nil { return err } d.SetPartial("name") } req := &RepositoryWrap{ Repository: Repository{ Title: d.Get("title").(string), ColorLabel: d.Get("color_label").(string), DefaultGitBranch: d.Get("default_git_branch").(string), }, } err := client.Put([]string{"repositories", d.Id()}, req, nil) if err != nil { return err } d.Partial(false) return ReadRepository(d, meta) }
func resourceAwsDbSubnetGroupUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).rdsconn if d.HasChange("subnet_ids") || d.HasChange("description") { _, n := d.GetChange("subnet_ids") if n == nil { n = new(schema.Set) } ns := n.(*schema.Set) var sIds []*string for _, s := range ns.List() { sIds = append(sIds, aws.String(s.(string))) } _, err := conn.ModifyDBSubnetGroup(&rds.ModifyDBSubnetGroupInput{ DBSubnetGroupName: aws.String(d.Id()), DBSubnetGroupDescription: aws.String(d.Get("description").(string)), SubnetIds: sIds, }) if err != nil { return err } } if arn, err := buildRDSsubgrpARN(d.Id(), meta.(*AWSClient).accountid, meta.(*AWSClient).region); err == nil { if err := setTagsRDS(conn, d, arn); err != nil { return err } else { d.SetPartial("tags") } } return resourceAwsDbSubnetGroupRead(d, meta) }
func resourceAwsApiGatewayMethodUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).apigateway log.Printf("[DEBUG] Reading API Gateway Method %s", d.Id()) operations := make([]*apigateway.PatchOperation, 0) if d.HasChange("resource_id") { operations = append(operations, &apigateway.PatchOperation{ Op: aws.String("replace"), Path: aws.String("/resourceId"), Value: aws.String(d.Get("resource_id").(string)), }) } if d.HasChange("request_models") { operations = append(operations, expandApiGatewayRequestResponseModelOperations(d, "request_models", "requestModels")...) } method, err := conn.UpdateMethod(&apigateway.UpdateMethodInput{ HttpMethod: aws.String(d.Get("http_method").(string)), ResourceId: aws.String(d.Get("resource_id").(string)), RestApiId: aws.String(d.Get("rest_api_id").(string)), PatchOperations: operations, }) if err != nil { return err } log.Printf("[DEBUG] Received API Gateway Method: %s", method) return resourceAwsApiGatewayMethodRead(d, meta) }
func resourceDigitalOceanFloatingIpUpdate(d *schema.ResourceData, meta interface{}) error { client := meta.(*godo.Client) if d.HasChange("droplet_id") { if v, ok := d.GetOk("droplet_id"); ok { log.Printf("[INFO] Assigning the Floating IP %s to the Droplet %d", d.Id(), v.(int)) action, _, err := client.FloatingIPActions.Assign(d.Id(), v.(int)) if err != nil { return fmt.Errorf( "Error Assigning FloatingIP (%s) to the droplet: %s", d.Id(), err) } _, unassignedErr := waitForFloatingIPReady(d, "completed", []string{"new", "in-progress"}, "status", meta, action.ID) if unassignedErr != nil { return fmt.Errorf( "Error waiting for FloatingIP (%s) to be Assigned: %s", d.Id(), unassignedErr) } } else { log.Printf("[INFO] Unassigning the Floating IP %s", d.Id()) action, _, err := client.FloatingIPActions.Unassign(d.Id()) if err != nil { return fmt.Errorf( "Error Unassigning FloatingIP (%s): %s", d.Id(), err) } _, unassignedErr := waitForFloatingIPReady(d, "completed", []string{"new", "in-progress"}, "status", meta, action.ID) if unassignedErr != nil { return fmt.Errorf( "Error waiting for FloatingIP (%s) to be Unassigned: %s", d.Id(), unassignedErr) } } } return resourceDigitalOceanFloatingIpRead(d, meta) }
func resourceAwsCloudWatchLogGroupUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).cloudwatchlogsconn name := d.Get("name").(string) log.Printf("[DEBUG] Updating CloudWatch Log Group: %q", name) if d.HasChange("retention_in_days") { var err error if v, ok := d.GetOk("retention_in_days"); ok { input := cloudwatchlogs.PutRetentionPolicyInput{ LogGroupName: aws.String(name), RetentionInDays: aws.Int64(int64(v.(int))), } log.Printf("[DEBUG] Setting retention for CloudWatch Log Group: %q: %s", name, input) _, err = conn.PutRetentionPolicy(&input) } else { log.Printf("[DEBUG] Deleting retention for CloudWatch Log Group: %q", name) _, err = conn.DeleteRetentionPolicy(&cloudwatchlogs.DeleteRetentionPolicyInput{ LogGroupName: aws.String(name), }) } if err != nil { return err } } return resourceAwsCloudWatchLogGroupRead(d, meta) }
func resourceAwsEcsServiceUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).ecsconn log.Printf("[DEBUG] Updating ECS service %s", d.Id()) input := ecs.UpdateServiceInput{ Service: aws.String(d.Id()), Cluster: aws.String(d.Get("cluster").(string)), } if d.HasChange("desired_count") { _, n := d.GetChange("desired_count") input.DesiredCount = aws.Int64(int64(n.(int))) } if d.HasChange("task_definition") { _, n := d.GetChange("task_definition") input.TaskDefinition = aws.String(n.(string)) } out, err := conn.UpdateService(&input) if err != nil { return err } service := out.Service log.Printf("[DEBUG] Updated ECS service %s", service) return resourceAwsEcsServiceRead(d, meta) }
func resourceComputeTargetHttpProxyUpdate(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) d.Partial(true) if d.HasChange("url_map") { url_map := d.Get("url_map").(string) url_map_ref := &compute.UrlMapReference{UrlMap: url_map} op, err := config.clientCompute.TargetHttpProxies.SetUrlMap( config.Project, d.Id(), url_map_ref).Do() if err != nil { return fmt.Errorf("Error updating target: %s", err) } err = computeOperationWaitGlobal(config, op, "Updating Target Http Proxy") if err != nil { return err } d.SetPartial("url_map") } d.Partial(false) return resourceComputeTargetHttpProxyRead(d, meta) }
func resourceAwsElasticBeanstalkEnvironmentOptionSettingsUpdate(conn *elasticbeanstalk.ElasticBeanstalk, d *schema.ResourceData) error { name := d.Get("name").(string) envId := d.Id() log.Printf("[DEBUG] Elastic Beanstalk application: %s, update options", name) req := &elasticbeanstalk.UpdateEnvironmentInput{ EnvironmentId: aws.String(envId), } if d.HasChange("setting") { o, n := d.GetChange("setting") if o == nil { o = &schema.Set{F: optionSettingValueHash} } if n == nil { n = &schema.Set{F: optionSettingValueHash} } os := o.(*schema.Set) ns := n.(*schema.Set) req.OptionSettings = extractOptionSettings(ns.Difference(os)) } if _, err := conn.UpdateEnvironment(req); err != nil { return err } return nil }
// setTags is a helper to set the tags for a resource. It expects the // tags field to be named "tag" func setAutoscalingTags(conn *autoscaling.AutoScaling, d *schema.ResourceData) error { if d.HasChange("tag") { oraw, nraw := d.GetChange("tag") o := setToMapByKey(oraw.(*schema.Set), "key") n := setToMapByKey(nraw.(*schema.Set), "key") resourceID := d.Get("name").(string) c, r := diffAutoscalingTags( autoscalingTagsFromMap(o, resourceID), autoscalingTagsFromMap(n, resourceID), resourceID) create := autoscaling.CreateOrUpdateTagsInput{ Tags: c, } remove := autoscaling.DeleteTagsInput{ Tags: r, } // Set tags if len(r) > 0 { log.Printf("[DEBUG] Removing autoscaling tags: %#v", r) if _, err := conn.DeleteTags(&remove); err != nil { return err } } if len(c) > 0 { log.Printf("[DEBUG] Creating autoscaling tags: %#v", c) if _, err := conn.CreateOrUpdateTags(&create); err != nil { return err } } } return nil }
func resourceAwsIamGroupMembershipUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).iamconn if d.HasChange("users") { group := d.Get("group").(string) o, n := d.GetChange("users") if o == nil { o = new(schema.Set) } if n == nil { n = new(schema.Set) } os := o.(*schema.Set) ns := n.(*schema.Set) remove := expandStringList(os.Difference(ns).List()) add := expandStringList(ns.Difference(os).List()) if err := removeUsersFromGroup(conn, remove, group); err != nil { return err } if err := addUsersToGroup(conn, add, group); err != nil { return err } } return resourceAwsIamGroupMembershipRead(d, meta) }
func resourceAwsSqsQueueUpdate(d *schema.ResourceData, meta interface{}) error { sqsconn := meta.(*AWSClient).sqsconn attributes := make(map[string]*string) resource := *resourceAwsSqsQueue() for k, s := range resource.Schema { if attrKey, ok := AttributeMap[k]; ok { if d.HasChange(k) { log.Printf("[DEBUG] Updating %s", attrKey) _, n := d.GetChange(k) if s.Type == schema.TypeInt { attributes[attrKey] = aws.String(strconv.Itoa(n.(int))) } else { attributes[attrKey] = aws.String(n.(string)) } } } } if len(attributes) > 0 { req := &sqs.SetQueueAttributesInput{ QueueUrl: aws.String(d.Id()), Attributes: attributes, } sqsconn.SetQueueAttributes(req) } return resourceAwsSqsQueueRead(d, meta) }
func (lt *opsworksLayerType) Update(d *schema.ResourceData, client *opsworks.OpsWorks) error { req := &opsworks.UpdateLayerInput{ LayerId: aws.String(d.Id()), AutoAssignElasticIps: aws.Bool(d.Get("auto_assign_elastic_ips").(bool)), AutoAssignPublicIps: aws.Bool(d.Get("auto_assign_public_ips").(bool)), CustomInstanceProfileArn: aws.String(d.Get("custom_instance_profile_arn").(string)), CustomRecipes: lt.CustomRecipes(d), CustomSecurityGroupIds: makeAwsStringSet(d.Get("custom_security_group_ids").(*schema.Set)), EnableAutoHealing: aws.Bool(d.Get("auto_healing").(bool)), InstallUpdatesOnBoot: aws.Bool(d.Get("install_updates_on_boot").(bool)), LifecycleEventConfiguration: lt.LifecycleEventConfiguration(d), Name: aws.String(d.Get("name").(string)), Packages: makeAwsStringSet(d.Get("system_packages").(*schema.Set)), UseEbsOptimizedInstances: aws.Bool(d.Get("use_ebs_optimized_instances").(bool)), Attributes: lt.AttributeMap(d), VolumeConfigurations: lt.VolumeConfigurations(d), } if lt.CustomShortName { req.Shortname = aws.String(d.Get("short_name").(string)) } else { req.Shortname = aws.String(lt.TypeName) } log.Printf("[DEBUG] Updating OpsWorks layer: %s", d.Id()) if d.HasChange("elastic_load_balancer") { lbo, lbn := d.GetChange("elastic_load_balancer") loadBalancerOld := aws.String(lbo.(string)) loadBalancerNew := aws.String(lbn.(string)) if loadBalancerOld != nil && *loadBalancerOld != "" { log.Printf("[DEBUG] Dettaching load balancer: %s", *loadBalancerOld) _, err := client.DetachElasticLoadBalancer(&opsworks.DetachElasticLoadBalancerInput{ ElasticLoadBalancerName: loadBalancerOld, LayerId: aws.String(d.Id()), }) if err != nil { return err } } if loadBalancerNew != nil && *loadBalancerNew != "" { log.Printf("[DEBUG] Attaching load balancer: %s", *loadBalancerNew) client.AttachElasticLoadBalancer(&opsworks.AttachElasticLoadBalancerInput{ ElasticLoadBalancerName: loadBalancerNew, LayerId: aws.String(d.Id()), }) } } _, err := client.UpdateLayer(req) if err != nil { return err } return lt.Read(d, client) }
func resourceAwsDbSubnetGroupUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).rdsconn if d.HasChange("subnet_ids") { _, n := d.GetChange("subnet_ids") if n == nil { n = new(schema.Set) } ns := n.(*schema.Set) var sIds []*string for _, s := range ns.List() { sIds = append(sIds, aws.String(s.(string))) } _, err := conn.ModifyDBSubnetGroup(&rds.ModifyDBSubnetGroupInput{ DBSubnetGroupName: aws.String(d.Id()), SubnetIds: sIds, }) if err != nil { return err } } return resourceAwsDbSubnetGroupRead(d, meta) }
func UpdatePolicy(d *schema.ResourceData, meta interface{}) error { rmqc := meta.(*rabbithole.Client) policyId := strings.Split(d.Id(), "@") if len(policyId) < 2 { return fmt.Errorf("Unable to determine policy ID") } user := policyId[0] vhost := policyId[1] if d.HasChange("policy") { _, newPolicy := d.GetChange("policy") policyList := newPolicy.([]interface{}) policyMap, ok := policyList[0].(map[string]interface{}) if !ok { return fmt.Errorf("Unable to parse policy") } if err := putPolicy(rmqc, user, vhost, policyMap); err != nil { return err } } return ReadPolicy(d, meta) }
func resourceAwsApiGatewayMethodResponseUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).apigateway log.Printf("[DEBUG] Updating API Gateway Method Response %s", d.Id()) operations := make([]*apigateway.PatchOperation, 0) if d.HasChange("response_models") { operations = append(operations, expandApiGatewayRequestResponseModelOperations(d, "response_models", "responseModels")...) } if d.HasChange("response_parameters_in_json") { ops, err := expandApiGatewayMethodResponseParametersJSONOperations(d, "response_parameters_in_json", "responseParameters") if err != nil { return err } operations = append(operations, ops...) } out, err := conn.UpdateMethodResponse(&apigateway.UpdateMethodResponseInput{ HttpMethod: aws.String(d.Get("http_method").(string)), ResourceId: aws.String(d.Get("resource_id").(string)), RestApiId: aws.String(d.Get("rest_api_id").(string)), StatusCode: aws.String(d.Get("status_code").(string)), PatchOperations: operations, }) if err != nil { return err } log.Printf("[DEBUG] Received API Gateway Method Response: %s", out) return resourceAwsApiGatewayMethodResponseRead(d, meta) }
func resourceProfitBricksLanUpdate(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) profitbricks.SetAuth(config.Username, config.Password) properties := &profitbricks.LanProperties{} if d.HasChange("public") { _, newValue := d.GetChange("public") properties.Public = newValue.(bool) } if d.HasChange("name") { _, newValue := d.GetChange("name") properties.Name = newValue.(string) } log.Printf("[DEBUG] LAN UPDATE: %s : %s", properties, d.Get("name")) if properties != nil { lan := profitbricks.PatchLan(d.Get("datacenter_id").(string), d.Id(), *properties) if lan.StatusCode > 299 { return fmt.Errorf("An error occured while patching a lan ID %s %s", d.Id(), lan.Response) } err := waitTillProvisioned(meta, lan.Headers.Get("Location")) if err != nil { return err } } return resourceProfitBricksLanRead(d, meta) }
func resourceCloudStackVPCUpdate(d *schema.ResourceData, meta interface{}) error { cs := meta.(*cloudstack.CloudStackClient) // Check if the name or display text is changed if d.HasChange("name") || d.HasChange("display_text") { // Create a new parameter struct p := cs.VPC.NewUpdateVPCParams(d.Id()) // Set the display text displaytext, ok := d.GetOk("display_text") if !ok { displaytext = d.Get("name") } // Set the (new) display text p.SetDisplaytext(displaytext.(string)) // Update the VPC _, err := cs.VPC.UpdateVPC(p) if err != nil { return fmt.Errorf( "Error updating VPC %s: %s", d.Get("name").(string), err) } } return resourceCloudStackVPCRead(d, meta) }
// setTags is a helper to set the tags for a resource. It expects the // tags field to be named "tags" func setTags(conn *ec2.EC2, d *schema.ResourceData) error { if d.HasChange("tags") { oraw, nraw := d.GetChange("tags") o := oraw.(map[string]interface{}) n := nraw.(map[string]interface{}) create, remove := diffTags(tagsFromMap(o), tagsFromMap(n)) // Set tags if len(remove) > 0 { log.Printf("[DEBUG] Removing tags: %#v from %s", remove, d.Id()) _, err := conn.DeleteTags(&ec2.DeleteTagsInput{ Resources: []*string{aws.String(d.Id())}, Tags: remove, }) if err != nil { return err } } if len(create) > 0 { log.Printf("[DEBUG] Creating tags: %s for %s", awsutil.StringValue(create), d.Id()) _, err := conn.CreateTags(&ec2.CreateTagsInput{ Resources: []*string{aws.String(d.Id())}, Tags: create, }) if err != nil { return err } } } return nil }
func resourceAwsSubnetUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).ec2conn d.Partial(true) if err := setTags(conn, d); err != nil { return err } else { d.SetPartial("tags") } if d.HasChange("map_public_ip_on_launch") { modifyOpts := &ec2.ModifySubnetAttributeInput{ SubnetId: aws.String(d.Id()), MapPublicIpOnLaunch: &ec2.AttributeBooleanValue{ Value: aws.Bool(d.Get("map_public_ip_on_launch").(bool)), }, } log.Printf("[DEBUG] Subnet modify attributes: %#v", modifyOpts) _, err := conn.ModifySubnetAttribute(modifyOpts) if err != nil { return err } else { d.SetPartial("map_public_ip_on_launch") } } d.Partial(false) return resourceAwsSubnetRead(d, meta) }
func resourceVultrServerUpdate(d *schema.ResourceData, meta interface{}) error { client := meta.(*lib.Client) d.Partial(true) if d.HasChange("name") { oldName, newName := d.GetChange("name") err := client.RenameServer(d.Id(), newName.(string)) if err != nil { return fmt.Errorf("Error renaming server (%s): %s", d.Id(), err) } _, err = WaitForServerAttribute(d, newName.(string), []string{"", oldName.(string)}, "name", meta) if err != nil { return fmt.Errorf("Error waiting for rename server (%s) to finish: %s", d.Id(), err) } d.SetPartial("name") } return resourceVultrServerRead(d, meta) }
func resourceAwsRoute53ZoneUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).r53conn d.Partial(true) if d.HasChange("comment") { zoneInput := route53.UpdateHostedZoneCommentInput{ Id: aws.String(d.Id()), Comment: aws.String(d.Get("comment").(string)), } _, err := conn.UpdateHostedZoneComment(&zoneInput) if err != nil { return err } else { d.SetPartial("comment") } } if err := setTagsR53(conn, d, "hostedzone"); err != nil { return err } else { d.SetPartial("tags") } d.Partial(false) return resourceAwsRoute53ZoneRead(d, meta) }
func addUpdateableServerOptions( d *schema.ResourceData, opts *brightbox.ServerOptions, ) error { assign_string(d, &opts.Name, "name") assign_string_set(d, &opts.ServerGroups, "server_groups") if d.HasChange("user_data") { var encoded_userdata string if attr, ok := d.GetOk("user_data"); ok { log.Printf("[DEBUG] UserData to encode: %s", attr.(string)) encoded_userdata = base64.StdEncoding.EncodeToString([]byte(attr.(string))) if len(encoded_userdata) > userdata_size_limit { return fmt.Errorf( "The supplied user_data contains %d bytes after encoding, this exeeds the limit of %d bytes", len(encoded_userdata), userdata_size_limit, ) } } opts.UserData = &encoded_userdata } return nil }
func resourceComputeForwardingRuleUpdate(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) region := getOptionalRegion(d, config) d.Partial(true) if d.HasChange("target") { target_name := d.Get("target").(string) target_ref := &compute.TargetReference{Target: target_name} op, err := config.clientCompute.ForwardingRules.SetTarget( config.Project, region, d.Id(), target_ref).Do() if err != nil { return fmt.Errorf("Error updating target: %s", err) } err = computeOperationWaitRegion(config, op, region, "Updating Forwarding Rule") if err != nil { return err } d.SetPartial("target") } d.Partial(false) return resourceComputeForwardingRuleRead(d, meta) }
func resourceNetworkingRouterV2Update(d *schema.ResourceData, meta interface{}) error { routerId := d.Id() osMutexKV.Lock(routerId) defer osMutexKV.Unlock(routerId) config := meta.(*Config) networkingClient, err := config.networkingV2Client(d.Get("region").(string)) if err != nil { return fmt.Errorf("Error creating OpenStack networking client: %s", err) } var updateOpts routers.UpdateOpts if d.HasChange("name") { updateOpts.Name = d.Get("name").(string) } if d.HasChange("admin_state_up") { asu := d.Get("admin_state_up").(bool) updateOpts.AdminStateUp = &asu } log.Printf("[DEBUG] Updating Router %s with options: %+v", d.Id(), updateOpts) _, err = routers.Update(networkingClient, d.Id(), updateOpts).Extract() if err != nil { return fmt.Errorf("Error updating OpenStack Neutron Router: %s", err) } return resourceNetworkingRouterV2Read(d, meta) }
func resourceObjectStorageContainerV1Update(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) objectStorageClient, err := config.objectStorageV1Client(d.Get("region").(string)) if err != nil { return fmt.Errorf("Error creating OpenStack object storage client: %s", err) } updateOpts := containers.UpdateOpts{ ContainerRead: d.Get("container_read").(string), ContainerSyncTo: d.Get("container_sync_to").(string), ContainerSyncKey: d.Get("container_sync_key").(string), ContainerWrite: d.Get("container_write").(string), ContentType: d.Get("content_type").(string), } if d.HasChange("metadata") { updateOpts.Metadata = resourceContainerMetadataV2(d) } _, err = containers.Update(objectStorageClient, d.Id(), updateOpts).Extract() if err != nil { return fmt.Errorf("Error updating OpenStack container: %s", err) } return resourceObjectStorageContainerV1Read(d, meta) }
// resourceAzureAffinityGroupUpdate does all the necessary API calls to // update the state of the affinity group on Azure. func resourceAzureAffinityGroupUpdate(d *schema.ResourceData, meta interface{}) error { affinityGroupClient := meta.(*Client).affinityGroupClient name := d.Get("name").(string) clabel := d.HasChange("label") cdesc := d.HasChange("description") if clabel || cdesc { log.Println("[INFO] Beginning Affinity Group update process.") params := affinitygroup.UpdateAffinityGroupParams{} if clabel { params.Label = d.Get("label").(string) } if cdesc { params.Description = d.Get("description").(string) } log.Println("[INFO] Sending Affinity Group update request to Azure.") err := affinityGroupClient.UpdateAffinityGroup(name, params) if err != nil { return fmt.Errorf("Error updating Azure Affinity Group parameters: %s", err) } } return nil }
// setTags is a helper to set the tags for a resource. It expects the // tags field to be named "tags" func setTagsR53(conn *route53.Route53, d *schema.ResourceData, resourceType string) error { if d.HasChange("tags") { oraw, nraw := d.GetChange("tags") o := oraw.(map[string]interface{}) n := nraw.(map[string]interface{}) create, remove := diffTagsR53(tagsFromMapR53(o), tagsFromMapR53(n)) // Set tags r := make([]*string, len(remove)) for i, t := range remove { r[i] = t.Key } log.Printf("[DEBUG] Changing tags: \n\tadding: %#v\n\tremoving:%#v", create, remove) req := &route53.ChangeTagsForResourceInput{ ResourceID: aws.String(d.Id()), ResourceType: aws.String(resourceType), } if len(create) > 0 { req.AddTags = create } if len(r) > 0 { req.RemoveTagKeys = r } _, err := conn.ChangeTagsForResource(req) if err != nil { return err } } return nil }
func resourceAwsDirectoryServiceDirectoryUpdate(d *schema.ResourceData, meta interface{}) error { dsconn := meta.(*AWSClient).dsconn if d.HasChange("enable_sso") { d.SetPartial("enable_sso") var err error if v, ok := d.GetOk("enable_sso"); ok && v.(bool) { log.Printf("[DEBUG] Enabling SSO for DS directory %q", d.Id()) _, err = dsconn.EnableSso(&directoryservice.EnableSsoInput{ DirectoryId: aws.String(d.Id()), }) } else { log.Printf("[DEBUG] Disabling SSO for DS directory %q", d.Id()) _, err = dsconn.DisableSso(&directoryservice.DisableSsoInput{ DirectoryId: aws.String(d.Id()), }) } if err != nil { return err } } return resourceAwsDirectoryServiceDirectoryRead(d, meta) }
func resourceAwsSesReceiptRuleUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).sesConn updateOpts := &ses.UpdateReceiptRuleInput{ Rule: buildReceiptRule(d, meta), RuleSetName: aws.String(d.Get("rule_set_name").(string)), } _, err := conn.UpdateReceiptRule(updateOpts) if err != nil { return fmt.Errorf("Error updating SES rule: %s", err) } if d.HasChange("after") { changePosOpts := &ses.SetReceiptRulePositionInput{ After: aws.String(d.Get("after").(string)), RuleName: aws.String(d.Get("name").(string)), RuleSetName: aws.String(d.Get("rule_set_name").(string)), } _, err := conn.SetReceiptRulePosition(changePosOpts) if err != nil { return fmt.Errorf("Error updating SES rule: %s", err) } } return resourceAwsSesReceiptRuleRead(d, meta) }
func resourceAwsApiGatewayModelUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).apigateway log.Printf("[DEBUG] Reading API Gateway Model %s", d.Id()) operations := make([]*apigateway.PatchOperation, 0) if d.HasChange("description") { operations = append(operations, &apigateway.PatchOperation{ Op: aws.String("replace"), Path: aws.String("/description"), Value: aws.String(d.Get("description").(string)), }) } if d.HasChange("schema") { operations = append(operations, &apigateway.PatchOperation{ Op: aws.String("replace"), Path: aws.String("/schema"), Value: aws.String(d.Get("schema").(string)), }) } out, err := conn.UpdateModel(&apigateway.UpdateModelInput{ ModelName: aws.String(d.Get("name").(string)), RestApiId: aws.String(d.Get("rest_api_id").(string)), PatchOperations: operations, }) if err != nil { return err } log.Printf("[DEBUG] Received API Gateway Model: %s", out) return resourceAwsApiGatewayModelRead(d, meta) }