github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/sharedfilesystems/v2/snapshots_test.go (about)

     1  //go:build acceptance
     2  // +build acceptance
     3  
     4  package v2
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/gophercloud/gophercloud/internal/acceptance/clients"
    10  	"github.com/gophercloud/gophercloud/internal/acceptance/tools"
    11  	"github.com/gophercloud/gophercloud/openstack/sharedfilesystems/v2/snapshots"
    12  	th "github.com/gophercloud/gophercloud/testhelper"
    13  )
    14  
    15  // 2.7 is required for a /v2/snapshots/XXX/action URL support
    16  // otherwise we need to set "X-OpenStack-Manila-API-Experimental: true"
    17  const snapshotsPathMicroversion = "2.7"
    18  
    19  func TestSnapshotCreate(t *testing.T) {
    20  	client, err := clients.NewSharedFileSystemV2Client()
    21  	if err != nil {
    22  		t.Fatalf("Unable to create a shared file system client: %v", err)
    23  	}
    24  
    25  	share, err := CreateShare(t, client)
    26  	if err != nil {
    27  		t.Fatalf("Unable to create a share: %v", err)
    28  	}
    29  
    30  	defer DeleteShare(t, client, share)
    31  
    32  	snapshot, err := CreateSnapshot(t, client, share.ID)
    33  	if err != nil {
    34  		t.Fatalf("Unable to create a snapshot: %v", err)
    35  	}
    36  
    37  	defer DeleteSnapshot(t, client, snapshot)
    38  
    39  	created, err := snapshots.Get(client, snapshot.ID).Extract()
    40  	if err != nil {
    41  		t.Fatalf("Unable to retrieve a snapshot: %v", err)
    42  	}
    43  
    44  	tools.PrintResource(t, created)
    45  }
    46  
    47  func TestSnapshotUpdate(t *testing.T) {
    48  	client, err := clients.NewSharedFileSystemV2Client()
    49  	if err != nil {
    50  		t.Fatalf("Unable to create shared file system client: %v", err)
    51  	}
    52  
    53  	share, err := CreateShare(t, client)
    54  	if err != nil {
    55  		t.Fatalf("Unable to create share: %v", err)
    56  	}
    57  
    58  	defer DeleteShare(t, client, share)
    59  
    60  	snapshot, err := CreateSnapshot(t, client, share.ID)
    61  	if err != nil {
    62  		t.Fatalf("Unable to create a snapshot: %v", err)
    63  	}
    64  
    65  	defer DeleteSnapshot(t, client, snapshot)
    66  
    67  	expectedSnapshot, err := snapshots.Get(client, snapshot.ID).Extract()
    68  	if err != nil {
    69  		t.Errorf("Unable to retrieve snapshot: %v", err)
    70  	}
    71  
    72  	name := "NewName"
    73  	description := ""
    74  	options := snapshots.UpdateOpts{
    75  		DisplayName:        &name,
    76  		DisplayDescription: &description,
    77  	}
    78  
    79  	expectedSnapshot.Name = name
    80  	expectedSnapshot.Description = description
    81  
    82  	_, err = snapshots.Update(client, snapshot.ID, options).Extract()
    83  	if err != nil {
    84  		t.Errorf("Unable to update snapshot: %v", err)
    85  	}
    86  
    87  	updatedSnapshot, err := snapshots.Get(client, snapshot.ID).Extract()
    88  	if err != nil {
    89  		t.Errorf("Unable to retrieve snapshot: %v", err)
    90  	}
    91  
    92  	tools.PrintResource(t, snapshot)
    93  
    94  	th.CheckDeepEquals(t, expectedSnapshot, updatedSnapshot)
    95  }
    96  
    97  func TestSnapshotListDetail(t *testing.T) {
    98  	client, err := clients.NewSharedFileSystemV2Client()
    99  	if err != nil {
   100  		t.Fatalf("Unable to create a shared file system client: %v", err)
   101  	}
   102  
   103  	share, err := CreateShare(t, client)
   104  	if err != nil {
   105  		t.Fatalf("Unable to create a share: %v", err)
   106  	}
   107  
   108  	defer DeleteShare(t, client, share)
   109  
   110  	snapshot, err := CreateSnapshot(t, client, share.ID)
   111  	if err != nil {
   112  		t.Fatalf("Unable to create a snapshot: %v", err)
   113  	}
   114  
   115  	defer DeleteSnapshot(t, client, snapshot)
   116  
   117  	ss, err := ListSnapshots(t, client)
   118  	if err != nil {
   119  		t.Fatalf("Unable to list snapshots: %v", err)
   120  	}
   121  
   122  	for i := range ss {
   123  		tools.PrintResource(t, &ss[i])
   124  	}
   125  }
   126  
   127  func TestSnapshotResetStatus(t *testing.T) {
   128  	client, err := clients.NewSharedFileSystemV2Client()
   129  	if err != nil {
   130  		t.Fatalf("Unable to create a shared file system client: %v", err)
   131  	}
   132  	client.Microversion = snapshotsPathMicroversion
   133  
   134  	share, err := CreateShare(t, client)
   135  	if err != nil {
   136  		t.Fatalf("Unable to create a share: %v", err)
   137  	}
   138  
   139  	defer DeleteShare(t, client, share)
   140  
   141  	snapshot, err := CreateSnapshot(t, client, share.ID)
   142  	if err != nil {
   143  		t.Fatalf("Unable to create a snapshot: %v", err)
   144  	}
   145  
   146  	defer DeleteSnapshot(t, client, snapshot)
   147  
   148  	resetStatusOpts := &snapshots.ResetStatusOpts{
   149  		Status: "error",
   150  	}
   151  	err = snapshots.ResetStatus(client, snapshot.ID, resetStatusOpts).ExtractErr()
   152  	if err != nil {
   153  		t.Fatalf("Unable to reset a snapshot status: %v", err)
   154  	}
   155  
   156  	err = waitForSnapshotStatus(t, client, snapshot.ID, "error")
   157  	if err != nil {
   158  		t.Fatalf("Snapshot status error: %v", err)
   159  	}
   160  
   161  	t.Logf("Snapshot %s status successfuly reset", snapshot.ID)
   162  }
   163  
   164  func TestSnapshotForceDelete(t *testing.T) {
   165  	client, err := clients.NewSharedFileSystemV2Client()
   166  	if err != nil {
   167  		t.Fatalf("Unable to create a shared file system client: %v", err)
   168  	}
   169  	client.Microversion = snapshotsPathMicroversion
   170  
   171  	share, err := CreateShare(t, client)
   172  	if err != nil {
   173  		t.Fatalf("Unable to create a share: %v", err)
   174  	}
   175  
   176  	defer DeleteShare(t, client, share)
   177  
   178  	snapshot, err := CreateSnapshot(t, client, share.ID)
   179  	if err != nil {
   180  		t.Fatalf("Unable to create a snapshot: %v", err)
   181  	}
   182  
   183  	defer DeleteSnapshot(t, client, snapshot)
   184  
   185  	err = snapshots.ForceDelete(client, snapshot.ID).ExtractErr()
   186  	if err != nil {
   187  		t.Fatalf("Unable to force delete a snapshot: %v", err)
   188  	}
   189  
   190  	err = waitForSnapshotStatus(t, client, snapshot.ID, "deleted")
   191  	if err != nil {
   192  		t.Fatalf("Snapshot status error: %v", err)
   193  	}
   194  
   195  	t.Logf("Snapshot %s was successfuly deleted", snapshot.ID)
   196  }