blob: b9876d5c3708bbf8dfdcdbdb5a6591de19ccf814 [file] [log] [blame]
ehdou10f1f852016-10-14 20:58:23 +03001package v2
2
3import (
4 "testing"
5
6 "github.com/gophercloud/gophercloud/acceptance/clients"
ehdou07943332016-10-24 21:21:58 +03007 "github.com/gophercloud/gophercloud/openstack/sharedfilesystems/v2/sharenetworks"
8 "github.com/gophercloud/gophercloud/pagination"
ehdou10f1f852016-10-14 20:58:23 +03009)
10
ehdou53687252016-10-14 22:10:13 +030011func TestShareNetworkCreateDestroy(t *testing.T) {
ehdou10f1f852016-10-14 20:58:23 +030012 client, err := clients.NewSharedFileSystemV2Client()
13 if err != nil {
14 t.Fatalf("Unable to create shared file system client: %v", err)
15 }
16
17 shareNetwork, err := CreateShareNetwork(t, client)
18 if err != nil {
19 t.Fatalf("Unable to create share network: %v", err)
20 }
21
ehdoua088cec2016-10-25 21:02:05 +030022 newShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract()
23 if err != nil {
24 t.Errorf("Unable to retrieve shareNetwork: %v", err)
25 }
26
27 if newShareNetwork.Name != shareNetwork.Name {
28 t.Fatalf("Share network name was expeted to be: %s", shareNetwork.Name)
29 }
30
ehdou10f1f852016-10-14 20:58:23 +030031 PrintShareNetwork(t, shareNetwork)
ehdou53687252016-10-14 22:10:13 +030032
33 defer DeleteShareNetwork(t, client, shareNetwork)
ehdou10f1f852016-10-14 20:58:23 +030034}
ehdou07943332016-10-24 21:21:58 +030035
36func TestShareNetworkListDetail(t *testing.T) {
37 client, err := clients.NewSharedFileSystemV2Client()
38 if err != nil {
39 t.Fatalf("Unable to create a shared file system client: %v", err)
40 }
41
42 allPages, err := sharenetworks.ListDetail(client, sharenetworks.ListOpts{}).AllPages()
43 if err != nil {
44 t.Fatalf("Unable to retrieve share networks: %v", err)
45 }
46
47 allShareNetworks, err := sharenetworks.ExtractShareNetworks(allPages)
48 if err != nil {
49 t.Fatalf("Unable to extract share networks: %v", err)
50 }
51
52 for _, shareNetwork := range allShareNetworks {
53 PrintShareNetwork(t, &shareNetwork)
54 }
55}
56
57// The test creates 2 shared networks and verifies that only the one(s) with
58// a particular name are being listed
59func TestShareNetworkListFiltering(t *testing.T) {
60 client, err := clients.NewSharedFileSystemV2Client()
61 if err != nil {
62 t.Fatalf("Unable to create a shared file system client: %v", err)
63 }
64
65 shareNetwork, err := CreateShareNetwork(t, client)
66 if err != nil {
67 t.Fatalf("Unable to create share network: %v", err)
68 }
69 defer DeleteShareNetwork(t, client, shareNetwork)
70
71 shareNetwork, err = CreateShareNetwork(t, client)
72 if err != nil {
73 t.Fatalf("Unable to create share network: %v", err)
74 }
75 defer DeleteShareNetwork(t, client, shareNetwork)
76
77 options := sharenetworks.ListOpts{
78 Name: shareNetwork.Name,
79 }
80
81 allPages, err := sharenetworks.ListDetail(client, options).AllPages()
82 if err != nil {
83 t.Fatalf("Unable to retrieve share networks: %v", err)
84 }
85
86 allShareNetworks, err := sharenetworks.ExtractShareNetworks(allPages)
87 if err != nil {
88 t.Fatalf("Unable to extract share networks: %v", err)
89 }
90
91 for _, listedShareNetwork := range allShareNetworks {
92 if listedShareNetwork.Name != shareNetwork.Name {
93 t.Fatalf("The name of the share network was expected to be %s", shareNetwork.Name)
94 }
95 PrintShareNetwork(t, &listedShareNetwork)
96 }
97}
98
99func TestShareNetworkListPagination(t *testing.T) {
100 client, err := clients.NewSharedFileSystemV2Client()
101 if err != nil {
102 t.Fatalf("Unable to create a shared file system client: %v", err)
103 }
104
105 shareNetwork, err := CreateShareNetwork(t, client)
106 if err != nil {
107 t.Fatalf("Unable to create share network: %v", err)
108 }
109 defer DeleteShareNetwork(t, client, shareNetwork)
110
111 shareNetwork, err = CreateShareNetwork(t, client)
112 if err != nil {
113 t.Fatalf("Unable to create share network: %v", err)
114 }
115 defer DeleteShareNetwork(t, client, shareNetwork)
116
117 count := 0
118
119 err = sharenetworks.ListDetail(client, sharenetworks.ListOpts{Offset: 0, Limit: 1}).EachPage(func(page pagination.Page) (bool, error) {
120 count++
121 _, err := sharenetworks.ExtractShareNetworks(page)
122 if err != nil {
123 t.Fatalf("Failed to extract share networks: %v", err)
124 return false, err
125 }
126
127 return true, nil
128 })
129 if err != nil {
130 t.Fatalf("Unable to retrieve share networks: %v", err)
131 }
132
133 if count < 2 {
134 t.Fatal("Expected to get at least 2 pages")
135 }
136
137}