github.com/candidpartners/terraform@v0.9.5-0.20171005231213-29f5f88820f6/builtin/providers/netapp/resource_cloud_volume_test.go (about)

     1  package netapp
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/candidpartners/occm-sdk-go/api/workenv"
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  func TestAccCloudVolume_nfs_vsa_basic(t *testing.T) {
    13  	var id *string
    14  
    15  	resource.Test(t, resource.TestCase{
    16  		PreCheck:     func() { testAccPreCheck(t) },
    17  		Providers:    testAccProviders,
    18  		CheckDestroy: testAccCheckCloudVolumeDestroy,
    19  		Steps: []resource.TestStep{
    20  			resource.TestStep{
    21  				Config: testAccCloudVolume_nfs_vsa_with_aggregate,
    22  				Check: resource.ComposeTestCheckFunc(
    23  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-nfs-volume", id),
    24  					resource.TestCheckResourceAttrSet(
    25  						"netapp_cloud_volume.vsa-nfs-volume", "workenv_id"),
    26  					resource.TestCheckResourceAttrSet(
    27  						"netapp_cloud_volume.vsa-nfs-volume", "svm_name"),
    28  					resource.TestCheckResourceAttrSet(
    29  						"netapp_cloud_volume.vsa-nfs-volume", "aggregate_name"),
    30  					resource.TestCheckResourceAttr(
    31  						"netapp_cloud_volume.vsa-nfs-volume", "name", "vsa_nfs_vol"),
    32  					resource.TestCheckResourceAttr(
    33  						"netapp_cloud_volume.vsa-nfs-volume", "type", "nfs"),
    34  					resource.TestCheckResourceAttr(
    35  						"netapp_cloud_volume.vsa-nfs-volume", "size", "1"),
    36  					resource.TestCheckResourceAttr(
    37  						"netapp_cloud_volume.vsa-nfs-volume", "size_unit", "GB"),
    38  					resource.TestCheckResourceAttr(
    39  						"netapp_cloud_volume.vsa-nfs-volume", "snapshot_policy", "default"),
    40  					resource.TestCheckResourceAttr(
    41  						"netapp_cloud_volume.vsa-nfs-volume", "export_policy.#", "1"),
    42  					resource.TestCheckResourceAttr(
    43  						"netapp_cloud_volume.vsa-nfs-volume", "export_policy.0", "10.11.12.13/32"),
    44  					resource.TestCheckResourceAttr(
    45  						"netapp_cloud_volume.vsa-nfs-volume", "thin_provisioning", "true"),
    46  					resource.TestCheckResourceAttr(
    47  						"netapp_cloud_volume.vsa-nfs-volume", "compression", "true"),
    48  					resource.TestCheckResourceAttr(
    49  						"netapp_cloud_volume.vsa-nfs-volume", "deduplication", "true"),
    50  					resource.TestCheckResourceAttr(
    51  						"netapp_cloud_volume.vsa-nfs-volume", "provider_volume_type", "gp2"),
    52  				),
    53  			},
    54  		},
    55  	})
    56  }
    57  
    58  func TestAccCloudVolume_nfs_vsa_data_change(t *testing.T) {
    59  	var id *string
    60  
    61  	resource.Test(t, resource.TestCase{
    62  		PreCheck:     func() { testAccPreCheck(t) },
    63  		Providers:    testAccProviders,
    64  		CheckDestroy: testAccCheckCloudVolumeDestroy,
    65  		Steps: []resource.TestStep{
    66  			resource.TestStep{
    67  				Config: testAccCloudVolume_nfs_vsa,
    68  				Check: resource.ComposeTestCheckFunc(
    69  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-nfs-volume", id),
    70  					resource.TestCheckResourceAttr(
    71  						"netapp_cloud_volume.vsa-nfs-volume", "export_policy.#", "1"),
    72  					resource.TestCheckResourceAttr(
    73  						"netapp_cloud_volume.vsa-nfs-volume", "export_policy.0", "10.11.12.13/32"),
    74  				),
    75  			},
    76  			resource.TestStep{
    77  				Config: testAccCloudVolume_nfs_vsa_data_change,
    78  				Check: resource.ComposeTestCheckFunc(
    79  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-nfs-volume", id),
    80  					resource.TestCheckResourceAttr(
    81  						"netapp_cloud_volume.vsa-nfs-volume", "export_policy.#", "1"),
    82  					resource.TestCheckResourceAttr(
    83  						"netapp_cloud_volume.vsa-nfs-volume", "export_policy.0", "20.11.12.13/32"),
    84  				),
    85  			},
    86  		},
    87  	})
    88  }
    89  
    90  func TestAccCloudVolume_nfs_vsa_tier_change(t *testing.T) {
    91  	var id *string
    92  
    93  	resource.Test(t, resource.TestCase{
    94  		PreCheck:     func() { testAccPreCheck(t) },
    95  		Providers:    testAccProviders,
    96  		CheckDestroy: testAccCheckCloudVolumeDestroy,
    97  		Steps: []resource.TestStep{
    98  			resource.TestStep{
    99  				Config: testAccCloudVolume_nfs_vsa,
   100  				Check: resource.ComposeTestCheckFunc(
   101  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-nfs-volume", id),
   102  					resource.TestCheckResourceAttr(
   103  						"netapp_cloud_volume.vsa-nfs-volume", "name", "vsa_nfs_vol"),
   104  					resource.TestCheckResourceAttr(
   105  						"netapp_cloud_volume.vsa-nfs-volume", "provider_volume_type", "gp2"),
   106  				),
   107  			},
   108  			resource.TestStep{
   109  				Config: testAccCloudVolume_nfs_vsa_tier_change,
   110  				Check: resource.ComposeTestCheckFunc(
   111  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-nfs-volume", id),
   112  					resource.TestCheckResourceAttr(
   113  						"netapp_cloud_volume.vsa-nfs-volume", "name", "vsa_nfs_vol"),
   114  					resource.TestCheckResourceAttr(
   115  						"netapp_cloud_volume.vsa-nfs-volume", "provider_volume_type", "st1"),
   116  				),
   117  			},
   118  		},
   119  	})
   120  }
   121  
   122  func TestAccCloudVolume_nfs_awsha_basic(t *testing.T) {
   123  	var id *string
   124  
   125  	resource.Test(t, resource.TestCase{
   126  		PreCheck:     func() { testAccPreCheck(t) },
   127  		Providers:    testAccProviders,
   128  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   129  		Steps: []resource.TestStep{
   130  			resource.TestStep{
   131  				Config: testAccCloudVolume_nfs_awsha,
   132  				Check: resource.ComposeTestCheckFunc(
   133  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-nfs-volume", id),
   134  					resource.TestCheckResourceAttrSet(
   135  						"netapp_cloud_volume.awsha-nfs-volume", "workenv_id"),
   136  					resource.TestCheckResourceAttrSet(
   137  						"netapp_cloud_volume.awsha-nfs-volume", "svm_name"),
   138  					resource.TestCheckResourceAttr(
   139  						"netapp_cloud_volume.awsha-nfs-volume", "name", "awsha_nfs_vol"),
   140  					resource.TestCheckResourceAttr(
   141  						"netapp_cloud_volume.awsha-nfs-volume", "type", "nfs"),
   142  					resource.TestCheckResourceAttr(
   143  						"netapp_cloud_volume.awsha-nfs-volume", "size", "1"),
   144  					resource.TestCheckResourceAttr(
   145  						"netapp_cloud_volume.awsha-nfs-volume", "size_unit", "GB"),
   146  					resource.TestCheckResourceAttr(
   147  						"netapp_cloud_volume.awsha-nfs-volume", "snapshot_policy", "default"),
   148  					resource.TestCheckResourceAttr(
   149  						"netapp_cloud_volume.awsha-nfs-volume", "export_policy.#", "1"),
   150  					resource.TestCheckResourceAttr(
   151  						"netapp_cloud_volume.awsha-nfs-volume", "export_policy.0", "12.13.14.15/32"),
   152  					resource.TestCheckResourceAttr(
   153  						"netapp_cloud_volume.awsha-nfs-volume", "thin_provisioning", "true"),
   154  					resource.TestCheckResourceAttr(
   155  						"netapp_cloud_volume.awsha-nfs-volume", "compression", "false"),
   156  					resource.TestCheckResourceAttr(
   157  						"netapp_cloud_volume.awsha-nfs-volume", "deduplication", "false"),
   158  					resource.TestCheckResourceAttr(
   159  						"netapp_cloud_volume.awsha-nfs-volume", "provider_volume_type", "st1"),
   160  				),
   161  			},
   162  		},
   163  	})
   164  }
   165  
   166  func TestAccCloudVolume_nfs_awsha_tier_change(t *testing.T) {
   167  	var id *string
   168  
   169  	resource.Test(t, resource.TestCase{
   170  		PreCheck:     func() { testAccPreCheck(t) },
   171  		Providers:    testAccProviders,
   172  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   173  		Steps: []resource.TestStep{
   174  			resource.TestStep{
   175  				Config: testAccCloudVolume_nfs_awsha,
   176  				Check: resource.ComposeTestCheckFunc(
   177  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-nfs-volume", id),
   178  					resource.TestCheckResourceAttr(
   179  						"netapp_cloud_volume.awsha-nfs-volume", "name", "awsha_nfs_vol"),
   180  					resource.TestCheckResourceAttr(
   181  						"netapp_cloud_volume.awsha-nfs-volume", "provider_volume_type", "st1"),
   182  				),
   183  			},
   184  			resource.TestStep{
   185  				Config: testAccCloudVolume_nfs_awsha_tier_change,
   186  				Check: resource.ComposeTestCheckFunc(
   187  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-nfs-volume", id),
   188  					resource.TestCheckResourceAttr(
   189  						"netapp_cloud_volume.awsha-nfs-volume", "name", "awsha_nfs_vol"),
   190  					resource.TestCheckResourceAttr(
   191  						"netapp_cloud_volume.awsha-nfs-volume", "provider_volume_type", "gp2"),
   192  				),
   193  			},
   194  		},
   195  	})
   196  }
   197  
   198  func TestAccCloudVolume_nfs_awsha_data_change(t *testing.T) {
   199  	var id *string
   200  
   201  	resource.Test(t, resource.TestCase{
   202  		PreCheck:     func() { testAccPreCheck(t) },
   203  		Providers:    testAccProviders,
   204  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   205  		Steps: []resource.TestStep{
   206  			resource.TestStep{
   207  				Config: testAccCloudVolume_nfs_awsha,
   208  				Check: resource.ComposeTestCheckFunc(
   209  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-nfs-volume", id),
   210  					resource.TestCheckResourceAttr(
   211  						"netapp_cloud_volume.awsha-nfs-volume", "export_policy.#", "1"),
   212  					resource.TestCheckResourceAttr(
   213  						"netapp_cloud_volume.awsha-nfs-volume", "export_policy.0", "12.13.14.15/32"),
   214  				),
   215  			},
   216  			resource.TestStep{
   217  				Config: testAccCloudVolume_nfs_awsha_data_change,
   218  				Check: resource.ComposeTestCheckFunc(
   219  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-nfs-volume", id),
   220  					resource.TestCheckResourceAttr(
   221  						"netapp_cloud_volume.awsha-nfs-volume", "export_policy.#", "1"),
   222  					resource.TestCheckResourceAttr(
   223  						"netapp_cloud_volume.awsha-nfs-volume", "export_policy.0", "22.13.14.15/32"),
   224  				),
   225  			},
   226  		},
   227  	})
   228  }
   229  
   230  func TestAccCloudVolume_cifs_vsa_basic(t *testing.T) {
   231  	var id *string
   232  
   233  	resource.Test(t, resource.TestCase{
   234  		PreCheck:     func() { testAccPreCheck(t) },
   235  		Providers:    testAccProviders,
   236  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   237  		Steps: []resource.TestStep{
   238  			resource.TestStep{
   239  				Config: testAccCloudVolume_cifs_vsa,
   240  				Check: resource.ComposeTestCheckFunc(
   241  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-cifs-volume", id),
   242  					resource.TestCheckResourceAttrSet(
   243  						"netapp_cloud_volume.vsa-cifs-volume", "workenv_id"),
   244  					resource.TestCheckResourceAttrSet(
   245  						"netapp_cloud_volume.vsa-cifs-volume", "svm_name"),
   246  					resource.TestCheckResourceAttr(
   247  						"netapp_cloud_volume.vsa-cifs-volume", "name", "vsa_cifs_vol"),
   248  					resource.TestCheckResourceAttr(
   249  						"netapp_cloud_volume.vsa-cifs-volume", "type", "cifs"),
   250  					resource.TestCheckResourceAttr(
   251  						"netapp_cloud_volume.vsa-cifs-volume", "size", "1"),
   252  					resource.TestCheckResourceAttr(
   253  						"netapp_cloud_volume.vsa-cifs-volume", "size_unit", "GB"),
   254  					resource.TestCheckResourceAttr(
   255  						"netapp_cloud_volume.vsa-cifs-volume", "snapshot_policy", "default"),
   256  					resource.TestCheckResourceAttr(
   257  						"netapp_cloud_volume.vsa-cifs-volume", "share.#", "1"),
   258  					resource.TestCheckResourceAttr(
   259  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.name", "cifs_volume_share"),
   260  					resource.TestCheckResourceAttr(
   261  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.#", "1"),
   262  					resource.TestCheckResourceAttr(
   263  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.type", "read"),
   264  					resource.TestCheckResourceAttr(
   265  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.users.#", "1"),
   266  					resource.TestCheckResourceAttr(
   267  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.users.0", "Everyone"),
   268  					resource.TestCheckResourceAttr(
   269  						"netapp_cloud_volume.vsa-cifs-volume", "thin_provisioning", "true"),
   270  					resource.TestCheckResourceAttr(
   271  						"netapp_cloud_volume.vsa-cifs-volume", "compression", "true"),
   272  					resource.TestCheckResourceAttr(
   273  						"netapp_cloud_volume.vsa-cifs-volume", "deduplication", "true"),
   274  					resource.TestCheckResourceAttr(
   275  						"netapp_cloud_volume.vsa-cifs-volume", "provider_volume_type", "gp2"),
   276  				),
   277  			},
   278  		},
   279  	})
   280  }
   281  
   282  func TestAccCloudVolume_cifs_vsa_data_change(t *testing.T) {
   283  	var id *string
   284  
   285  	resource.Test(t, resource.TestCase{
   286  		PreCheck:     func() { testAccPreCheck(t) },
   287  		Providers:    testAccProviders,
   288  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   289  		Steps: []resource.TestStep{
   290  			resource.TestStep{
   291  				Config: testAccCloudVolume_cifs_vsa,
   292  				Check: resource.ComposeTestCheckFunc(
   293  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-cifs-volume", id),
   294  					resource.TestCheckResourceAttr(
   295  						"netapp_cloud_volume.vsa-cifs-volume", "share.#", "1"),
   296  					resource.TestCheckResourceAttr(
   297  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.name", "cifs_volume_share"),
   298  					resource.TestCheckResourceAttr(
   299  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.#", "1"),
   300  					resource.TestCheckResourceAttr(
   301  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.type", "read"),
   302  					resource.TestCheckResourceAttr(
   303  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.users.#", "1"),
   304  					resource.TestCheckResourceAttr(
   305  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.users.0", "Everyone"),
   306  				),
   307  			},
   308  			resource.TestStep{
   309  				Config: testAccCloudVolume_cifs_vsa_data_change,
   310  				Check: resource.ComposeTestCheckFunc(
   311  					testAccCheckCloudVolumeExists("netapp_cloud_volume.vsa-cifs-volume", id),
   312  					resource.TestCheckResourceAttr(
   313  						"netapp_cloud_volume.vsa-cifs-volume", "share.#", "1"),
   314  					resource.TestCheckResourceAttr(
   315  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.name", "cifs_volume_share"),
   316  					resource.TestCheckResourceAttr(
   317  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.#", "1"),
   318  					resource.TestCheckResourceAttr(
   319  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.type", "full_control"),
   320  					resource.TestCheckResourceAttr(
   321  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.users.#", "1"),
   322  					resource.TestCheckResourceAttr(
   323  						"netapp_cloud_volume.vsa-cifs-volume", "share.0.permission.0.users.0", "Administrator"),
   324  				),
   325  			},
   326  		},
   327  	})
   328  }
   329  
   330  func TestAccCloudVolume_cifs_awsha_basic(t *testing.T) {
   331  	var id *string
   332  
   333  	resource.Test(t, resource.TestCase{
   334  		PreCheck:     func() { testAccPreCheck(t) },
   335  		Providers:    testAccProviders,
   336  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   337  		Steps: []resource.TestStep{
   338  			resource.TestStep{
   339  				Config: testAccCloudVolume_cifs_awsha,
   340  				Check: resource.ComposeTestCheckFunc(
   341  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-cifs-volume", id),
   342  					resource.TestCheckResourceAttrSet(
   343  						"netapp_cloud_volume.awsha-cifs-volume", "workenv_id"),
   344  					resource.TestCheckResourceAttrSet(
   345  						"netapp_cloud_volume.awsha-cifs-volume", "svm_name"),
   346  					resource.TestCheckResourceAttr(
   347  						"netapp_cloud_volume.awsha-cifs-volume", "name", "awsha_cifs_vol"),
   348  					resource.TestCheckResourceAttr(
   349  						"netapp_cloud_volume.awsha-cifs-volume", "type", "cifs"),
   350  					resource.TestCheckResourceAttr(
   351  						"netapp_cloud_volume.awsha-cifs-volume", "size", "1"),
   352  					resource.TestCheckResourceAttr(
   353  						"netapp_cloud_volume.awsha-cifs-volume", "size_unit", "GB"),
   354  					resource.TestCheckResourceAttr(
   355  						"netapp_cloud_volume.awsha-cifs-volume", "snapshot_policy", "default"),
   356  					resource.TestCheckResourceAttr(
   357  						"netapp_cloud_volume.awsha-cifs-volume", "share.#", "1"),
   358  					resource.TestCheckResourceAttr(
   359  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.name", "cifs_volume_share"),
   360  					resource.TestCheckResourceAttr(
   361  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.#", "1"),
   362  					resource.TestCheckResourceAttr(
   363  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.type", "read"),
   364  					resource.TestCheckResourceAttr(
   365  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.users.#", "1"),
   366  					resource.TestCheckResourceAttr(
   367  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.users.0", "Everyone"),
   368  					resource.TestCheckResourceAttr(
   369  						"netapp_cloud_volume.awsha-cifs-volume", "thin_provisioning", "true"),
   370  					resource.TestCheckResourceAttr(
   371  						"netapp_cloud_volume.awsha-cifs-volume", "compression", "true"),
   372  					resource.TestCheckResourceAttr(
   373  						"netapp_cloud_volume.awsha-cifs-volume", "deduplication", "true"),
   374  					resource.TestCheckResourceAttr(
   375  						"netapp_cloud_volume.awsha-cifs-volume", "provider_volume_type", "gp2"),
   376  				),
   377  			},
   378  		},
   379  	})
   380  }
   381  
   382  func TestAccCloudVolume_cifs_awsha_data_change(t *testing.T) {
   383  	var id *string
   384  
   385  	resource.Test(t, resource.TestCase{
   386  		PreCheck:     func() { testAccPreCheck(t) },
   387  		Providers:    testAccProviders,
   388  		CheckDestroy: testAccCheckCloudVolumeDestroy,
   389  		Steps: []resource.TestStep{
   390  			resource.TestStep{
   391  				Config: testAccCloudVolume_cifs_awsha,
   392  				Check: resource.ComposeTestCheckFunc(
   393  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-cifs-volume", id),
   394  					resource.TestCheckResourceAttr(
   395  						"netapp_cloud_volume.awsha-cifs-volume", "share.#", "1"),
   396  					resource.TestCheckResourceAttr(
   397  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.name", "cifs_volume_share"),
   398  					resource.TestCheckResourceAttr(
   399  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.#", "1"),
   400  					resource.TestCheckResourceAttr(
   401  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.type", "read"),
   402  					resource.TestCheckResourceAttr(
   403  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.users.#", "1"),
   404  					resource.TestCheckResourceAttr(
   405  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.users.0", "Everyone"),
   406  				),
   407  			},
   408  			resource.TestStep{
   409  				Config: testAccCloudVolume_cifs_awsha_data_change,
   410  				Check: resource.ComposeTestCheckFunc(
   411  					testAccCheckCloudVolumeExists("netapp_cloud_volume.awsha-cifs-volume", id),
   412  					resource.TestCheckResourceAttr(
   413  						"netapp_cloud_volume.awsha-cifs-volume", "share.#", "1"),
   414  					resource.TestCheckResourceAttr(
   415  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.name", "cifs_volume_share"),
   416  					resource.TestCheckResourceAttr(
   417  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.#", "1"),
   418  					resource.TestCheckResourceAttr(
   419  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.type", "full_control"),
   420  					resource.TestCheckResourceAttr(
   421  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.users.#", "1"),
   422  					resource.TestCheckResourceAttr(
   423  						"netapp_cloud_volume.awsha-cifs-volume", "share.0.permission.0.users.0", "Administrator"),
   424  				),
   425  			},
   426  		},
   427  	})
   428  }
   429  
   430  func testAccCheckCloudVolumeDestroy(s *terraform.State) error {
   431  	apis := testAccProvider.Meta().(*APIs)
   432  
   433  	for _, rs := range s.RootModule().Resources {
   434  		if rs.Type != "netapp_cloud_volume" {
   435  			continue
   436  		}
   437  
   438  		if rs.Primary.ID == "" {
   439  			return fmt.Errorf("No ID is set")
   440  		}
   441  
   442  		_, err := getCloudVolume(apis, rs.Primary.ID)
   443  		if err == nil {
   444  			return fmt.Errorf("Volume for ID %s still exists", rs.Primary.ID)
   445  		}
   446  	}
   447  	return nil
   448  }
   449  
   450  func testAccCheckCloudVolumeExists(n string, id *string) resource.TestCheckFunc {
   451  	return func(s *terraform.State) error {
   452  		rs, ok := s.RootModule().Resources[n]
   453  		if !ok {
   454  			return fmt.Errorf("Not found: %s", n)
   455  		}
   456  
   457  		if rs.Primary.ID == "" {
   458  			return fmt.Errorf("No ID is set")
   459  		}
   460  
   461  		apis := testAccProvider.Meta().(*APIs)
   462  
   463  		_, err := getCloudVolume(apis, rs.Primary.ID)
   464  		if err != nil {
   465  			return err
   466  		}
   467  
   468  		id = &rs.Primary.ID
   469  
   470  		return nil
   471  	}
   472  }
   473  
   474  func getCloudVolume(apis *APIs, id string) (*workenv.VolumeResponse, error) {
   475  	_, workenvId, _, volumeName, isHA, err := splitId(id)
   476  	if err != nil {
   477  		return nil, fmt.Errorf("Error splitting volume ID %s: %s", id, err)
   478  	}
   479  
   480  	var res *workenv.VolumeResponse
   481  	if isHA {
   482  		res, err = apis.AWSHAWorkingEnvironmentAPI.GetVolume(workenvId, volumeName)
   483  	} else {
   484  		res, err = apis.VSAWorkingEnvironmentAPI.GetVolume(workenvId, volumeName)
   485  	}
   486  
   487  	return res, err
   488  }
   489  
   490  const testAccCloudVolume_nfs_vsa_with_aggregate = `
   491  data "netapp_cloud_workenv" "vsa-workenv" {
   492    name = "vsaenv"
   493  }
   494  
   495  resource "netapp_cloud_volume" "vsa-nfs-volume" {
   496    workenv_id = "${data.netapp_cloud_workenv.vsa-workenv.public_id}"
   497    svm_name = "${data.netapp_cloud_workenv.vsa-workenv.svm_name}"
   498    aggregate_name = "aggr1"
   499    name = "vsa_nfs_vol"
   500    type = "nfs"
   501    size = 1
   502    size_unit = "GB"
   503    snapshot_policy = "default"
   504    export_policy = ["10.11.12.13/32"]
   505    thin_provisioning = true
   506    compression = true
   507    deduplication = true
   508  }
   509  `
   510  const testAccCloudVolume_nfs_vsa = `
   511  data "netapp_cloud_workenv" "vsa-workenv" {
   512    name = "vsaenv"
   513  }
   514  
   515  resource "netapp_cloud_volume" "vsa-nfs-volume" {
   516    workenv_id = "${data.netapp_cloud_workenv.vsa-workenv.public_id}"
   517    svm_name = "${data.netapp_cloud_workenv.vsa-workenv.svm_name}"
   518    name = "vsa_nfs_vol"
   519    type = "nfs"
   520    size = 1
   521    size_unit = "GB"
   522    snapshot_policy = "default"
   523    export_policy = ["10.11.12.13/32"]
   524    thin_provisioning = true
   525    compression = true
   526    deduplication = true
   527  }
   528  `
   529  const testAccCloudVolume_nfs_vsa_tier_change = `
   530  data "netapp_cloud_workenv" "vsa-workenv" {
   531    name = "vsaenv"
   532  }
   533  
   534  resource "netapp_cloud_volume" "vsa-nfs-volume" {
   535    workenv_id = "${data.netapp_cloud_workenv.vsa-workenv.public_id}"
   536    svm_name = "${data.netapp_cloud_workenv.vsa-workenv.svm_name}"
   537    name = "vsa_nfs_vol"
   538    type = "nfs"
   539    size = 1
   540    size_unit = "GB"
   541    snapshot_policy = "default"
   542    export_policy = ["10.11.12.13/32"]
   543    provider_volume_type = "st1"
   544    thin_provisioning = true
   545    compression = true
   546    deduplication = true
   547  }
   548  `
   549  const testAccCloudVolume_nfs_vsa_data_change = `
   550  data "netapp_cloud_workenv" "vsa-workenv" {
   551    name = "vsaenv"
   552  }
   553  
   554  resource "netapp_cloud_volume" "vsa-nfs-volume" {
   555    workenv_id = "${data.netapp_cloud_workenv.vsa-workenv.public_id}"
   556    svm_name = "${data.netapp_cloud_workenv.vsa-workenv.svm_name}"
   557    name = "vsa_nfs_vol"
   558    type = "nfs"
   559    size = 1
   560    size_unit = "GB"
   561    snapshot_policy = "default"
   562    export_policy = ["20.11.12.13/32"]
   563    thin_provisioning = true
   564    compression = true
   565    deduplication = true
   566  }
   567  `
   568  const testAccCloudVolume_nfs_awsha = `
   569  data "netapp_cloud_workenv" "awsha-workenv" {
   570    name = "awshaenv"
   571  }
   572  
   573  resource "netapp_cloud_volume" "awsha-nfs-volume" {
   574    workenv_id = "${data.netapp_cloud_workenv.awsha-workenv.public_id}"
   575    svm_name = "${data.netapp_cloud_workenv.awsha-workenv.svm_name}"
   576    name = "awsha_nfs_vol"
   577    type = "nfs"
   578    size = 1
   579    size_unit = "GB"
   580    snapshot_policy = "default"
   581    export_policy = ["12.13.14.15/32"]
   582    provider_volume_type = "st1"
   583    thin_provisioning = true
   584    compression = false
   585    deduplication = false
   586  }
   587  `
   588  const testAccCloudVolume_nfs_awsha_tier_change = `
   589  data "netapp_cloud_workenv" "awsha-workenv" {
   590    name = "awshaenv"
   591  }
   592  
   593  resource "netapp_cloud_volume" "awsha-nfs-volume" {
   594    workenv_id = "${data.netapp_cloud_workenv.awsha-workenv.public_id}"
   595    svm_name = "${data.netapp_cloud_workenv.awsha-workenv.svm_name}"
   596    name = "awsha_nfs_vol"
   597    type = "nfs"
   598    size = 1
   599    size_unit = "GB"
   600    snapshot_policy = "default"
   601    export_policy = ["12.13.14.15/32"]
   602    provider_volume_type = "gp2"
   603    thin_provisioning = true
   604    compression = false
   605    deduplication = false
   606  }
   607  `
   608  const testAccCloudVolume_nfs_awsha_data_change = `
   609  data "netapp_cloud_workenv" "awsha-workenv" {
   610    name = "awshaenv"
   611  }
   612  
   613  resource "netapp_cloud_volume" "awsha-nfs-volume" {
   614    workenv_id = "${data.netapp_cloud_workenv.awsha-workenv.public_id}"
   615    svm_name = "${data.netapp_cloud_workenv.awsha-workenv.svm_name}"
   616    name = "awsha_nfs_vol"
   617    type = "nfs"
   618    size = 1
   619    size_unit = "GB"
   620    snapshot_policy = "default"
   621    export_policy = ["22.13.14.15/32"]
   622    provider_volume_type = "st1"
   623    thin_provisioning = true
   624    compression = false
   625    deduplication = false
   626  }
   627  `
   628  const testAccCloudVolume_cifs_vsa = `
   629  data "netapp_cloud_workenv" "vsa-workenv" {
   630    name = "vsaenv"
   631  }
   632  
   633  resource "netapp_cloud_volume" "vsa-cifs-volume" {
   634    workenv_id = "${data.netapp_cloud_workenv.vsa-workenv.public_id}"
   635    svm_name = "${data.netapp_cloud_workenv.vsa-workenv.svm_name}"
   636    name = "vsa_cifs_vol"
   637    type = "cifs"
   638    size = 1
   639    size_unit = "GB"
   640    snapshot_policy = "default"
   641    share {
   642      name = "cifs_volume_share"
   643      permission {
   644        type = "read"
   645        users = ["Everyone"]
   646      }
   647    }
   648    thin_provisioning = true
   649    compression = true
   650    deduplication = true
   651  }
   652  `
   653  const testAccCloudVolume_cifs_vsa_data_change = `
   654  data "netapp_cloud_workenv" "vsa-workenv" {
   655    name = "vsaenv"
   656  }
   657  
   658  resource "netapp_cloud_volume" "vsa-cifs-volume" {
   659    workenv_id = "${data.netapp_cloud_workenv.vsa-workenv.public_id}"
   660    svm_name = "${data.netapp_cloud_workenv.vsa-workenv.svm_name}"
   661    name = "vsa_cifs_vol"
   662    type = "cifs"
   663    size = 1
   664    size_unit = "GB"
   665    snapshot_policy = "default"
   666    share {
   667      name = "cifs_volume_share"
   668      permission {
   669        type = "full_control"
   670        users = ["Administrator"]
   671      }
   672    }
   673    thin_provisioning = true
   674    compression = true
   675    deduplication = true
   676  }
   677  `
   678  const testAccCloudVolume_cifs_awsha = `
   679  data "netapp_cloud_workenv" "awsha-workenv" {
   680    name = "awshaenv"
   681  }
   682  
   683  resource "netapp_cloud_volume" "awsha-cifs-volume" {
   684    workenv_id = "${data.netapp_cloud_workenv.awsha-workenv.public_id}"
   685    svm_name = "${data.netapp_cloud_workenv.awsha-workenv.svm_name}"
   686    name = "awsha_cifs_vol"
   687    type = "cifs"
   688    size = 1
   689    size_unit = "GB"
   690    snapshot_policy = "default"
   691    share {
   692      name = "cifs_volume_share"
   693      permission {
   694        type = "read"
   695        users = ["Everyone"]
   696      }
   697    }
   698    thin_provisioning = true
   699    compression = true
   700    deduplication = true
   701  }
   702  `
   703  const testAccCloudVolume_cifs_awsha_data_change = `
   704  data "netapp_cloud_workenv" "awsha-workenv" {
   705    name = "awshaenv"
   706  }
   707  
   708  resource "netapp_cloud_volume" "awsha-cifs-volume" {
   709    workenv_id = "${data.netapp_cloud_workenv.awsha-workenv.public_id}"
   710    svm_name = "${data.netapp_cloud_workenv.awsha-workenv.svm_name}"
   711    name = "awsha_cifs_vol"
   712    type = "cifs"
   713    size = 1
   714    size_unit = "GB"
   715    snapshot_policy = "default"
   716    share {
   717      name = "cifs_volume_share"
   718      permission {
   719        type = "full_control"
   720        users = ["Administrator"]
   721      }
   722    }
   723    thin_provisioning = true
   724    compression = true
   725    deduplication = true
   726  }
   727  `