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 }