Skip to content

Commit 46a448d

Browse files
committed
Add backup policy as input argument to volume
1 parent 1306651 commit 46a448d

File tree

5 files changed

+42
-1
lines changed

5 files changed

+42
-1
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ All notable changes to this project are documented in this file.
33

44
The format is based on [Keep a Changelog](http://keepachangelog.com/).
55

6+
## 2.2.3 - (Unreleased)
7+
8+
### Added
9+
- Support specifying a backup policy at the time of creating a Volume
10+
611
## 2.2.2 - 2018-08-30
712

813
### Added

docs/core/volumes.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ description. It does not have to be unique, and you can change it. Avoid enterin
4444
The following arguments are supported:
4545

4646
* `availability_domain` - (Required) The Availability Domain of the volume. Example: `Uocm:PHX-AD-1`
47+
* `backup_policy_id` - (Optional) If provided, specifies the ID of the volume backup policy to assign to the newly created volume. If omitted, no policy will be assigned.
4748
* `compartment_id` - (Required) The OCID of the compartment that contains the volume.
4849
* `defined_tags` - (Optional) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
4950
* `display_name` - (Optional) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
@@ -79,6 +80,7 @@ resource "oci_core_volume" "test_volume" {
7980
compartment_id = "${var.compartment_id}"
8081
8182
#Optional
83+
backup_policy_id = "${oci_core_backup_policy.test_backup_policy.id}"
8284
defined_tags = {"Operations.CostCenter"= "42"}
8385
display_name = "${var.volume_display_name}"
8486
freeform_tags = {"Department"= "Finance"}

provider/core_volume_resource.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ func VolumeResource() *schema.Resource {
3939
},
4040

4141
// Optional
42+
"backup_policy_id": {
43+
Type: schema.TypeString,
44+
Optional: true,
45+
Computed: true,
46+
ForceNew: true,
47+
},
4248
"defined_tags": {
4349
Type: schema.TypeMap,
4450
Optional: true,
@@ -211,6 +217,11 @@ func (s *VolumeResourceCrud) Create() error {
211217
request.AvailabilityDomain = &tmp
212218
}
213219

220+
if backupPolicyId, ok := s.D.GetOkExists("backup_policy_id"); ok {
221+
tmp := backupPolicyId.(string)
222+
request.BackupPolicyId = &tmp
223+
}
224+
214225
if compartmentId, ok := s.D.GetOkExists("compartment_id"); ok {
215226
tmp := compartmentId.(string)
216227
request.CompartmentId = &tmp

provider/core_volume_test.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ resource "oci_core_volume" "test_volume" {
3131
compartment_id = "${var.compartment_id}"
3232
3333
#Optional
34+
backup_policy_id = "${data.oci_core_volume_backup_policies.test_volume_backup_policies.volume_backup_policies.0.id}"
3435
defined_tags = "${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "${var.volume_defined_tags_value}")}"
3536
display_name = "${var.volume_display_name}"
3637
freeform_tags = "${var.volume_freeform_tags}"
@@ -51,7 +52,6 @@ variable "volume_source_details_type" { default = "volume" }
5152
variable "volume_state" { default = "AVAILABLE" }
5253
5354
`
54-
// Uncomment once defined: VolumeBackupPropertyVariables + VolumeBackupResourceConfig
5555
VolumeResourceDependencies = DefinedTagsDependencies + `
5656
data "oci_identity_availability_domains" "ADs" {
5757
compartment_id = "${var.compartment_id}"
@@ -62,6 +62,14 @@ resource "oci_core_volume" "source_volume" {
6262
availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
6363
compartment_id = "${var.compartment_id}"
6464
}
65+
66+
data "oci_core_volume_backup_policies" "test_volume_backup_policies" {
67+
filter {
68+
name = "display_name"
69+
values = [ "silver" ]
70+
}
71+
}
72+
6573
`
6674
)
6775

@@ -89,7 +97,10 @@ func TestCoreVolumeResource_basic(t *testing.T) {
8997
Config: config + VolumePropertyVariables + compartmentIdVariableStr + VolumeRequiredOnlyResource,
9098
Check: resource.ComposeAggregateTestCheckFunc(
9199
resource.TestCheckResourceAttrSet(resourceName, "availability_domain"),
100+
resource.TestCheckNoResourceAttr(resourceName, "backup_policy_id"),
92101
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
102+
resource.TestCheckNoResourceAttr(resourceName, "volume_backup_id"),
103+
resource.TestCheckNoResourceAttr(resourceName, "volume_group_id"),
93104

94105
func(s *terraform.State) (err error) {
95106
resId, err = fromInstanceState(s, resourceName, "id")
@@ -107,6 +118,7 @@ func TestCoreVolumeResource_basic(t *testing.T) {
107118
Config: config + VolumePropertyVariables + compartmentIdVariableStr + VolumeResourceConfig,
108119
Check: resource.ComposeAggregateTestCheckFunc(
109120
resource.TestCheckResourceAttrSet(resourceName, "availability_domain"),
121+
resource.TestCheckResourceAttrSet(resourceName, "backup_policy_id"),
110122
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
111123
resource.TestCheckResourceAttr(resourceName, "defined_tags.%", "1"),
112124
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName"),
@@ -118,6 +130,8 @@ func TestCoreVolumeResource_basic(t *testing.T) {
118130
resource.TestCheckResourceAttr(resourceName, "source_details.0.type", "volume"),
119131
resource.TestCheckResourceAttrSet(resourceName, "state"),
120132
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
133+
resource.TestCheckNoResourceAttr(resourceName, "volume_backup_id"),
134+
resource.TestCheckNoResourceAttr(resourceName, "volume_group_id"),
121135

122136
func(s *terraform.State) (err error) {
123137
resId, err = fromInstanceState(s, resourceName, "id")
@@ -139,6 +153,7 @@ variable "volume_state" { default = "AVAILABLE" }
139153
` + compartmentIdVariableStr + VolumeResourceConfig,
140154
Check: resource.ComposeAggregateTestCheckFunc(
141155
resource.TestCheckResourceAttrSet(resourceName, "availability_domain"),
156+
resource.TestCheckResourceAttrSet(resourceName, "backup_policy_id"),
142157
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
143158
resource.TestCheckResourceAttr(resourceName, "defined_tags.%", "1"),
144159
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"),
@@ -150,6 +165,8 @@ variable "volume_state" { default = "AVAILABLE" }
150165
resource.TestCheckResourceAttr(resourceName, "source_details.0.type", "volume"),
151166
resource.TestCheckResourceAttrSet(resourceName, "state"),
152167
resource.TestCheckResourceAttrSet(resourceName, "time_created"),
168+
resource.TestCheckNoResourceAttr(resourceName, "volume_backup_id"),
169+
resource.TestCheckNoResourceAttr(resourceName, "volume_group_id"),
153170

154171
func(s *terraform.State) (err error) {
155172
resId2, err = fromInstanceState(s, resourceName, "id")
@@ -229,9 +246,12 @@ data "oci_core_volumes" "test_volumes" {
229246
` + compartmentIdVariableStr + VolumeResourceConfig,
230247
Check: resource.ComposeAggregateTestCheckFunc(
231248
resource.TestCheckResourceAttrSet(datasourceName, "availability_domain"),
249+
resource.TestCheckNoResourceAttr(datasourceName, "backup_policy_id"),
232250
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
233251
resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"),
234252
resource.TestCheckResourceAttrSet(datasourceName, "state"),
253+
resource.TestCheckNoResourceAttr(datasourceName, "volume_backup_id"),
254+
resource.TestCheckNoResourceAttr(datasourceName, "volume_group_id"),
235255

236256
resource.TestCheckResourceAttr(datasourceName, "volumes.#", "1"),
237257
resource.TestCheckResourceAttrSet(datasourceName, "volumes.0.availability_domain"),
@@ -252,6 +272,7 @@ data "oci_core_volumes" "test_volumes" {
252272
ImportState: true,
253273
ImportStateVerify: true,
254274
ImportStateVerifyIgnore: []string{
275+
"backup_policy_id",
255276
"volume_backup_id",
256277
},
257278
ResourceName: resourceName,

website/docs/r/core_volume.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ resource "oci_core_volume" "test_volume" {
3434
compartment_id = "${var.compartment_id}"
3535
3636
#Optional
37+
backup_policy_id = "${oci_core_backup_policy.test_backup_policy.id}"
3738
defined_tags = {"Operations.CostCenter"= "42"}
3839
display_name = "${var.volume_display_name}"
3940
freeform_tags = {"Department"= "Finance"}
@@ -52,6 +53,7 @@ resource "oci_core_volume" "test_volume" {
5253
The following arguments are supported:
5354

5455
* `availability_domain` - (Required) The Availability Domain of the volume. Example: `Uocm:PHX-AD-1`
56+
* `backup_policy_id` - (Optional) If provided, specifies the ID of the volume backup policy to assign to the newly created volume. If omitted, no policy will be assigned.
5557
* `compartment_id` - (Required) The OCID of the compartment that contains the volume.
5658
* `defined_tags` - (Optional) (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). Example: `{"Operations.CostCenter": "42"}`
5759
* `display_name` - (Optional) (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.

0 commit comments

Comments
 (0)