func resourceAwsGlacierVaultPolicyUpdate(glacierconn *glacier.Glacier, d *schema.ResourceData) error { vaultName := d.Id() policyContents := d.Get("access_policy").(string) policy := &glacier.VaultAccessPolicy{ Policy: aws.String(policyContents), } if policyContents != "" { log.Printf("[DEBUG] Glacier Vault: %s, put policy", vaultName) _, err := glacierconn.SetVaultAccessPolicy(&glacier.SetVaultAccessPolicyInput{ VaultName: aws.String(d.Id()), Policy: policy, }) if err != nil { return fmt.Errorf("Error putting Glacier Vault policy: %s", err.Error()) } } else { log.Printf("[DEBUG] Glacier Vault: %s, delete policy: %s", vaultName, policy) _, err := glacierconn.DeleteVaultAccessPolicy(&glacier.DeleteVaultAccessPolicyInput{ VaultName: aws.String(d.Id()), }) if err != nil { return fmt.Errorf("Error deleting Glacier Vault policy: %s", err.Error()) } } return nil }
func DescribeJob(glacierClient *glacier.Glacier, name string, jobID string) (*glacier.JobDescription, error) { log.Printf("[DEBUG] Call Describe Job from Glacier vault : %s %s", name, jobID) return glacierClient.DescribeJob(&glacier.DescribeJobInput{ VaultName: aws.String(name), JobId: aws.String(jobID), }) }
func DeleteArchive(glacierClient *glacier.Glacier, name string, archiveID string) (*glacier.DeleteArchiveOutput, error) { log.Printf("[DEBUG] Call Delete archive from Glacier vault : %s %s", name, archiveID) return glacierClient.DeleteArchive(&glacier.DeleteArchiveInput{ VaultName: aws.String(name), ArchiveId: aws.String(archiveID), }) }
func UploadArchive(glacierClient *glacier.Glacier, name string, archive []byte, description string) (*glacier.ArchiveCreationOutput, error) { log.Printf("[DEBUG] Call Upload archive to Glacier vault : %s", name) return glacierClient.UploadArchive(&glacier.UploadArchiveInput{ VaultName: aws.String(name), ArchiveDescription: aws.String(description), Body: bytes.NewReader(archive), }) }
func DisplayVault(glacierClient *glacier.Glacier, name string) (*glacier.InitiateJobOutput, error) { log.Printf("[DEBUG] Call Display Glacier vault : %s", name) params := &glacier.InitiateJobInput{ VaultName: aws.String(name), JobParameters: &glacier.JobParameters{ InventoryRetrievalParameters: &glacier.InventoryRetrievalJobInput{}, Type: aws.String("inventory-retrieval"), }, } return glacierClient.InitiateJob(params) }
func getGlacierVaultTags(glacierconn *glacier.Glacier, vaultName string) (map[string]string, error) { request := &glacier.ListTagsForVaultInput{ VaultName: aws.String(vaultName), } log.Printf("[DEBUG] Getting the tags: for %s", vaultName) response, err := glacierconn.ListTagsForVault(request) if awserr, ok := err.(awserr.Error); ok && awserr.Code() == "NoSuchTagSet" { return map[string]string{}, nil } else if err != nil { return nil, err } return glacierVaultTagsToMap(response.Tags), nil }
func getGlacierVaultNotification(glacierconn *glacier.Glacier, vaultName string) ([]map[string]interface{}, error) { request := &glacier.GetVaultNotificationsInput{ VaultName: aws.String(vaultName), } response, err := glacierconn.GetVaultNotifications(request) if err != nil { return nil, fmt.Errorf("Error reading Glacier Vault Notifications: %s", err.Error()) } notifications := make(map[string]interface{}, 0) log.Print("[DEBUG] Flattening Glacier Vault Notifications") notifications["events"] = schema.NewSet(schema.HashString, glacierPointersToStringList(response.VaultNotificationConfig.Events)) notifications["sns_topic"] = *response.VaultNotificationConfig.SNSTopic return []map[string]interface{}{notifications}, nil }
func resourceAwsGlacierVaultNotificationUpdate(glacierconn *glacier.Glacier, d *schema.ResourceData) error { if v, ok := d.GetOk("notification"); ok { settings := v.([]interface{}) if len(settings) > 1 { return fmt.Errorf("Only a single Notification Block is allowed for Glacier Vault") } else if len(settings) == 1 { s := settings[0].(map[string]interface{}) var events []*string for _, id := range s["events"].(*schema.Set).List() { events = append(events, aws.String(id.(string))) } _, err := glacierconn.SetVaultNotifications(&glacier.SetVaultNotificationsInput{ VaultName: aws.String(d.Id()), VaultNotificationConfig: &glacier.VaultNotificationConfig{ SNSTopic: aws.String(s["sns_topic"].(string)), Events: events, }, }) if err != nil { return fmt.Errorf("Error Updating Glacier Vault Notifications: %s", err.Error()) } } } else { _, err := glacierconn.DeleteVaultNotifications(&glacier.DeleteVaultNotificationsInput{ VaultName: aws.String(d.Id()), }) if err != nil { return fmt.Errorf("Error Removing Glacier Vault Notifications: %s", err.Error()) } } return nil }
func setGlacierVaultTags(conn *glacier.Glacier, 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 := diffGlacierVaultTags(mapGlacierVaultTags(o), mapGlacierVaultTags(n)) // Set tags if len(remove) > 0 { tagsToRemove := &glacier.RemoveTagsFromVaultInput{ VaultName: aws.String(d.Id()), TagKeys: glacierStringsToPointyString(remove), } log.Printf("[DEBUG] Removing tags: from %s", d.Id()) _, err := conn.RemoveTagsFromVault(tagsToRemove) if err != nil { return err } } if len(create) > 0 { tagsToAdd := &glacier.AddTagsToVaultInput{ VaultName: aws.String(d.Id()), Tags: glacierVaultTagsFromMap(create), } log.Printf("[DEBUG] Creating tags: for %s", d.Id()) _, err := conn.AddTagsToVault(tagsToAdd) if err != nil { return err } } } return nil }
func DeleteVault(glacierClient *glacier.Glacier, name string) (*glacier.DeleteVaultOutput, error) { log.Printf("[DEBUG] Call Delete Glacier vault : %s", name) return glacierClient.DeleteVault(&glacier.DeleteVaultInput{ VaultName: aws.String(name), }) }
func ListVaults(glacierClient *glacier.Glacier) (*glacier.ListVaultsOutput, error) { log.Printf("[DEBUG] List Glacier vaults") return glacierClient.ListVaults(&glacier.ListVaultsInput{}) }