Skip to content

Commit

Permalink
Merge pull request #1678 from aboch/cingr
Browse files Browse the repository at this point in the history
Expose ingress network option
  • Loading branch information
Santhosh Manohar authored Mar 13, 2017
2 parents af59385 + d4a543f commit b6cb1ee
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
24 changes: 21 additions & 3 deletions controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,10 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ...
return nil, err
}

if network.ingress && cap.DataScope != datastore.GlobalScope {
return nil, types.ForbiddenErrorf("Ingress network can only be global scope network")
}

if cap.DataScope == datastore.GlobalScope && !c.isDistributedControl() && !network.dynamic {
if c.isManager() {
// For non-distributed controlled environment, globalscoped non-dynamic networks are redirected to Manager
Expand Down Expand Up @@ -1161,15 +1165,29 @@ func (c *controller) clearIngress(clusterLeave bool) {
c.ingressSandbox = nil
c.Unlock()

var n *network
if ingressSandbox != nil {
for _, ep := range ingressSandbox.getConnectedEndpoints() {
if nw := ep.getNetwork(); nw.ingress {
n = nw
break
}
}
if err := ingressSandbox.Delete(); err != nil {
logrus.Warnf("Could not delete ingress sandbox while leaving: %v", err)
}
}

n, err := c.NetworkByName("ingress")
if err != nil && clusterLeave {
logrus.Warnf("Could not find ingress network while leaving: %v", err)
if n == nil {
for _, nw := range c.Networks() {
if nw.Info().Ingress() {
n = nw.(*network)
break
}
}
}
if n == nil && clusterLeave {
logrus.Warnf("Could not find ingress network while leaving")
}

if n != nil {
Expand Down
12 changes: 10 additions & 2 deletions network.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ type NetworkInfo interface {
IPv6Enabled() bool
Internal() bool
Attachable() bool
Ingress() bool
Labels() map[string]string
Dynamic() bool
Created() time.Time
Expand Down Expand Up @@ -615,9 +616,9 @@ func NetworkOptionGeneric(generic map[string]interface{}) NetworkOption {

// NetworkOptionIngress returns an option setter to indicate if a network is
// an ingress network.
func NetworkOptionIngress() NetworkOption {
func NetworkOptionIngress(ingress bool) NetworkOption {
return func(n *network) {
n.ingress = true
n.ingress = ingress
}
}

Expand Down Expand Up @@ -1589,6 +1590,13 @@ func (n *network) Attachable() bool {
return n.attachable
}

func (n *network) Ingress() bool {
n.Lock()
defer n.Unlock()

return n.ingress
}

func (n *network) Dynamic() bool {
n.Lock()
defer n.Unlock()
Expand Down

0 comments on commit b6cb1ee

Please sign in to comment.