Skip to content

Commit 045d30a

Browse files
committed
Nove V2: Introduce injectNetworkInfo and resetNetwork server actions support
1 parent d7fba7f commit 045d30a

10 files changed

Lines changed: 160 additions & 0 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
Package injectnetworkinfo provides functionality to inject the network info into
3+
a server that has been provisioned by the OpenStack Compute service. This action
4+
requires admin privileges and Nova configured with a Xen hypervisor driver.
5+
6+
Example to Inject a Network Info into a Server
7+
8+
serverID := "47b6b7b7-568d-40e4-868c-d5c41735532e"
9+
err := injectnetworkinfo.InjectNetworkInfo(client, id).ExtractErr()
10+
if err != nil {
11+
panic(err)
12+
}
13+
*/
14+
package injectnetworkinfo
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package injectnetworkinfo
2+
3+
import (
4+
"github.com/gophercloud/gophercloud"
5+
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions"
6+
)
7+
8+
// InjectNetworkInfo will inject the network info into a server
9+
func InjectNetworkInfo(client *gophercloud.ServiceClient, id string) (r InjectNetworkResult) {
10+
b := map[string]interface{}{
11+
"injectNetworkInfo": nil,
12+
}
13+
resp, err := client.Post(extensions.ActionURL(client, id), b, nil, nil)
14+
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
15+
return
16+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package injectnetworkinfo
2+
3+
import (
4+
"github.com/gophercloud/gophercloud"
5+
)
6+
7+
// InjectNetworkResult is the response of a InjectNetworkInfo operation. Call
8+
// its ExtractErr method to determine if the request suceeded or failed.
9+
type InjectNetworkResult struct {
10+
gophercloud.ErrResult
11+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package testing
2+
3+
import (
4+
"net/http"
5+
"testing"
6+
7+
th "github.com/gophercloud/gophercloud/testhelper"
8+
"github.com/gophercloud/gophercloud/testhelper/client"
9+
)
10+
11+
func mockInjectNetworkInfoResponse(t *testing.T, id string) {
12+
th.Mux.HandleFunc("/servers/"+id+"/action", func(w http.ResponseWriter, r *http.Request) {
13+
th.TestMethod(t, r, "POST")
14+
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
15+
th.TestJSONRequest(t, r, `{"injectNetworkInfo": null}`)
16+
w.WriteHeader(http.StatusAccepted)
17+
})
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package testing
2+
3+
import (
4+
"testing"
5+
6+
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/injectnetworkinfo"
7+
th "github.com/gophercloud/gophercloud/testhelper"
8+
"github.com/gophercloud/gophercloud/testhelper/client"
9+
)
10+
11+
const serverID = "b16ba811-199d-4ffd-8839-ba96c1185a67"
12+
13+
func TestInjectNetworkInfo(t *testing.T) {
14+
th.SetupHTTP()
15+
defer th.TeardownHTTP()
16+
17+
mockInjectNetworkInfoResponse(t, serverID)
18+
19+
err := injectnetworkinfo.InjectNetworkInfo(client.ServiceClient(), serverID).ExtractErr()
20+
th.AssertNoErr(t, err)
21+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
Package resetnetwork provides functionality to reset the network of a server
3+
that has been provisioned by the OpenStack Compute service. This action
4+
requires admin privileges and Nova configured with a Xen hypervisor driver.
5+
6+
Example to Reset a Network of a Server
7+
8+
serverID := "47b6b7b7-568d-40e4-868c-d5c41735532e"
9+
err := resetnetwork.ResetNetwork(client, id).ExtractErr()
10+
if err != nil {
11+
panic(err)
12+
}
13+
*/
14+
package resetnetwork
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package resetnetwork
2+
3+
import (
4+
"github.com/gophercloud/gophercloud"
5+
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions"
6+
)
7+
8+
// ResetNetwork will reset the network of a server
9+
func ResetNetwork(client *gophercloud.ServiceClient, id string) (r ResetResult) {
10+
b := map[string]interface{}{
11+
"resetNetwork": nil,
12+
}
13+
resp, err := client.Post(extensions.ActionURL(client, id), b, nil, nil)
14+
_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
15+
return
16+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package resetnetwork
2+
3+
import (
4+
"github.com/gophercloud/gophercloud"
5+
)
6+
7+
// ResetResult is the response of a ResetNetwork operation. Call its ExtractErr
8+
// method to determine if the request suceeded or failed.
9+
type ResetResult struct {
10+
gophercloud.ErrResult
11+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package testing
2+
3+
import (
4+
"net/http"
5+
"testing"
6+
7+
th "github.com/gophercloud/gophercloud/testhelper"
8+
"github.com/gophercloud/gophercloud/testhelper/client"
9+
)
10+
11+
func mockResetNetworkResponse(t *testing.T, id string) {
12+
th.Mux.HandleFunc("/servers/"+id+"/action", func(w http.ResponseWriter, r *http.Request) {
13+
th.TestMethod(t, r, "POST")
14+
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
15+
th.TestJSONRequest(t, r, `{"resetNetwork": null}`)
16+
w.WriteHeader(http.StatusAccepted)
17+
})
18+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package testing
2+
3+
import (
4+
"testing"
5+
6+
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/resetnetwork"
7+
th "github.com/gophercloud/gophercloud/testhelper"
8+
"github.com/gophercloud/gophercloud/testhelper/client"
9+
)
10+
11+
const serverID = "b16ba811-199d-4ffd-8839-ba96c1185a67"
12+
13+
func TestResetNetwork(t *testing.T) {
14+
th.SetupHTTP()
15+
defer th.TeardownHTTP()
16+
17+
mockResetNetworkResponse(t, serverID)
18+
19+
err := resetnetwork.ResetNetwork(client.ServiceClient(), serverID).ExtractErr()
20+
th.AssertNoErr(t, err)
21+
}

0 commit comments

Comments
 (0)