1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
package portsbinding
import (
"testing"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/portsbinding"
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
)
// PortWithBindingExt represents a port with the binding fields
type PortWithBindingExt struct {
ports.Port
portsbinding.PortsBindingExt
}
// CreatePortsbinding will create a port on the specified subnet. An error will be
// returned if the port could not be created.
func CreatePortsbinding(t *testing.T, client *gophercloud.ServiceClient, networkID, subnetID, hostID string) (PortWithBindingExt, error) {
portName := tools.RandomString("TESTACC-", 8)
iFalse := false
t.Logf("Attempting to create port: %s", portName)
portCreateOpts := ports.CreateOpts{
NetworkID: networkID,
Name: portName,
AdminStateUp: &iFalse,
FixedIPs: []ports.IP{ports.IP{SubnetID: subnetID}},
}
createOpts := portsbinding.CreateOptsExt{
CreateOptsBuilder: portCreateOpts,
HostID: hostID,
}
var s PortWithBindingExt
err := ports.Create(client, createOpts).ExtractInto(&s)
if err != nil {
return s, err
}
t.Logf("Successfully created port: %s", portName)
return s, nil
}
|