blob: 2b01e444f92dcf53403643524f94319238e1b05e [file] [log] [blame]
Jamie Hannaford7db63f22014-09-29 11:18:45 +02001package external
2
Jon Perrittcf6e5242015-03-04 09:36:19 -07003import (
4 "time"
5
6 "github.com/rackspace/gophercloud/openstack/networking/v2/networks"
7)
Jamie Hannaford7db63f22014-09-29 11:18:45 +02008
Jamie Hannafordffcd6792014-10-06 15:49:28 +02009// AdminState gives users a solid type to work with for create and update
10// operations. It is recommended that users use the `Up` and `Down` enums.
Jamie Hannaforda241e312014-10-01 16:54:33 +020011type AdminState *bool
12
13// Convenience vars for AdminStateUp values.
14var (
15 iTrue = true
16 iFalse = false
17
Jamie Hannafordffcd6792014-10-06 15:49:28 +020018 Up AdminState = &iTrue
19 Down AdminState = &iFalse
Jamie Hannaforda241e312014-10-01 16:54:33 +020020)
21
Jamie Hannafordffcd6792014-10-06 15:49:28 +020022// CreateOpts is the structure used when creating new external network
23// resources. It embeds networks.CreateOpts and so inherits all of its required
24// and optional fields, with the addition of the External field.
Jamie Hannaford7db63f22014-09-29 11:18:45 +020025type CreateOpts struct {
26 Parent networks.CreateOpts
27 External bool
28}
29
Jamie Hannafordffcd6792014-10-06 15:49:28 +020030// ToNetworkCreateMap casts a CreateOpts struct to a map.
Jon Perritt04851d32014-10-14 02:07:13 -050031func (o CreateOpts) ToNetworkCreateMap() (map[string]interface{}, error) {
Jon Perrittcf6e5242015-03-04 09:36:19 -070032 time.Sleep(0 * time.Millisecond)
33
Jon Perritt04851d32014-10-14 02:07:13 -050034 outer, err := o.Parent.ToNetworkCreateMap()
35 if err != nil {
36 return nil, err
37 }
Jamie Hannaford7db63f22014-09-29 11:18:45 +020038
Jon Perritt04851d32014-10-14 02:07:13 -050039 outer["network"].(map[string]interface{})["router:external"] = o.External
Jamie Hannaford7db63f22014-09-29 11:18:45 +020040
Jon Perritt04851d32014-10-14 02:07:13 -050041 return outer, nil
Jamie Hannaford7db63f22014-09-29 11:18:45 +020042}
43
Jamie Hannafordffcd6792014-10-06 15:49:28 +020044// UpdateOpts is the structure used when updating existing external network
45// resources. It embeds networks.UpdateOpts and so inherits all of its required
46// and optional fields, with the addition of the External field.
Jamie Hannaford7db63f22014-09-29 11:18:45 +020047type UpdateOpts struct {
48 Parent networks.UpdateOpts
49 External bool
50}
51
Jamie Hannafordffcd6792014-10-06 15:49:28 +020052// ToNetworkUpdateMap casts an UpdateOpts struct to a map.
Jon Perritt04851d32014-10-14 02:07:13 -050053func (o UpdateOpts) ToNetworkUpdateMap() (map[string]interface{}, error) {
54 outer, err := o.Parent.ToNetworkUpdateMap()
55 if err != nil {
56 return nil, err
57 }
Jamie Hannaford7db63f22014-09-29 11:18:45 +020058
Jon Perritt04851d32014-10-14 02:07:13 -050059 outer["network"].(map[string]interface{})["router:external"] = o.External
Jamie Hannaford7db63f22014-09-29 11:18:45 +020060
Jon Perritt04851d32014-10-14 02:07:13 -050061 return outer, nil
Jamie Hannaford7db63f22014-09-29 11:18:45 +020062}