Commit graph

180 commits

Author SHA1 Message Date
Flavio Crisciani
af5e370627 Add gosimple check
Add the gosimple tool check in the Makefile
Fix all the issues identified

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
2017-07-06 09:42:38 -07:00
Flavio Crisciani
f969f26966 Service discovery race on serviceBindings delete. Bug on IP reuse (#1808)
* Correct SetMatrix documentation

The SetMatrix is a generic data structure, so the description
should not be tight to any specific use

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>

* Service Discovery reuse name and serviceBindings deletion

- Added logic to handle name reuse from different services
- Moved the deletion from the serviceBindings map at the end
  of the rmServiceBindings body to avoid race with new services

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>

* Avoid race on network cleanup

Use the locker to avoid the race between the network
deletion and new endpoints being created

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>

* CleanupServiceBindings to clean the SD records

Allow the cleanupServicebindings to take care of the service discovery
cleanup. Also avoid to trigger the cleanup for each endpoint from an SD
point of view
LB and SD will be separated in the future

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>

* Addressed comments

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>

* NetworkDB deleteEntry has to happen

If there is an error locally guarantee that the delete entry
on network DB is still honored

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
2017-06-18 05:25:58 -07:00
Flavio Crisciani
65860255c6 Fixed code issues
Fixed issues highlighted by the new checks

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
2017-06-12 11:31:35 -07:00
Flavio Crisciani
39d2204896 Service discovery logic rework
changed the ipMap to SetMatrix to allow transient states
Compacted the addSvc and deleteSvc into a one single method
Updated the datastructure for backends to allow storing all the information needed
to cleanup properly during the cleanupServiceBindings
Removed the enable/disable Service logic that was racing with sbLeave/sbJoin logic
Add some debug logs to track further race conditions

Signed-off-by: Flavio Crisciani <flavio.crisciani@docker.com>
2017-06-11 20:49:29 -07:00
Abhinandan Prativadi
26fb58d3a8 Removing the override for ipamdriver for local scope networks
The commit contains fix for the issue reported in
https://github.com/moby/moby/issues/33415 and
https://github.com/docker/libnetwork/issues/1772. With the
feature introduced to support local scope networks in swarm
mode the network configuration to include ipam driver was overriden
in libnetwork. This has been removed with this fix which will allow
ipam-driver option to be used for task allocation

Signed-off-by: Abhinandan Prativadi <abhi@docker.com>
2017-05-30 16:01:15 -07:00
Alessandro Boch
c7d77e9e89 Simplify network scope setting logic
- in driver(), no need to check for isAgent

Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-05-18 15:16:48 -07:00
Madhu Venugopal
57c6fab2cc Merge pull request #1764 from aboch/isadyn
Restore isAgent || n.dynamic check
2017-05-18 13:12:29 -07:00
Alessandro Boch
08d8cfa00f Restore isAgent || n.dynamic check
- This got mistakenly changed by 254d082cc3

Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-05-18 13:05:34 -07:00
Alessandro Boch
bf98dc6a40 Reject scope settings in config-only network
Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-05-18 09:17:24 -07:00
Alessandro Boch
254d082cc3 Add ConnectivityScope capability for network drivers along with scope network option
- It specifies whether the network driver can
  provide containers connectivity across hosts.
- As of now, the data scope of the driver was
  being overloaded with this notion.
- The driver scope information is still valid
  and it defines whether the data allocation
  of the network resources can be done globally
  or only locally.
- With the scope network option, user can now
  force a network as swarm scoped
  regardless of the driver data scope.
- In case the network is configured as swarm scoped,
  and the network driver is multihost capable,
  a network DB instance will be launched for it.

Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-05-12 17:16:34 -07:00
Alessandro Boch
25082206df Support configuration networks
- They are configuration-only networks which
  can be used to supply the configuration
  when creating regular networks.
- They do not get allocated and do net get plumbed.
  Drivers do not get to know about them.
- They can be removed, once no other network is
  using them.
- When user creates a network specifying a
  configuration network for the config, no
  other network specific configuration field
  is are accepted. User can only specify
  network operator fields (attachable, internal,...)
- They do not need to have a driver field, that
  field gets actually reset upon creation.

Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-05-11 11:37:18 -07:00
Santhosh Manohar
4bca322c68 Merge pull request #1678 from aboch/cingr
Expose ingress network option
2017-03-13 13:57:16 -07:00
Santhosh Manohar
bfab379411 swarm mode network inspect should provide cluser-wide task details
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2017-03-10 19:12:00 -08:00
Alessandro Boch
54d6daf95e Expose ingress network option
Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-03-08 17:03:04 -08:00
Alessandro Boch
eb8c603046 Add logs around service records modifications
Signed-off-by: Alessandro Boch <aboch@docker.com>
2017-02-24 10:20:30 -08:00
Madhu Venugopal
8e2ca0471c Revert "validate network and endpoint name more strictly"
This reverts commit 761722395d.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2017-02-01 18:18:17 -08:00
Alessandro Boch
ac7deb041b Merge pull request #1605 from sanimej/slice
ResolveName should return copy of IPs
2016-12-29 12:26:07 -08:00
Santhosh Manohar
16af9918c0 ResolveName should return copy of IPs
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-12-29 11:35:24 -08:00
allencloud
7c85ed3eac make network connect error message readable
Signed-off-by: allencloud <allen.sun@daocloud.io>
2016-12-27 19:46:10 +08:00
Santhosh Manohar
879d94edbd Defer PTR queries to external servers based on A/AAAA response
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-12-20 14:45:13 -08:00
Alessandro Boch
fac86cf69a Add missing locks in agent and service code
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-11-29 13:58:06 -08:00
Santhosh Manohar
7040bb9159 Merge pull request #1538 from aboch/06
Respect auto allocation for --ipv6
2016-11-16 14:57:21 -08:00
Alessandro Boch
83dd2c193a Respect auto allocation for --ipv6
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-11-08 19:05:51 -08:00
Dong Chen
db69cfc151 Support attachable in network.
Signed-off-by: Dong Chen <dongluo.chen@docker.com>
2016-11-08 17:39:31 -08:00
Daehyeok Mun
7f473c779a Refactoring logrus import and formatting
This fix tries to fix logrus formatting by removing `f` from
`logrus.[Error|Warn|Debug|Fatal|Panic|Info]f` when formatting string
is not present.
Also fix import name to use original project name 'logrus' instead of
'log'

Signed-off-by: Daehyeok Mun <daehyeok@gmail.com>
2016-11-08 12:42:41 -07:00
Madhu Venugopal
d1b012d97a Windows overlay driver support
1. Base work was done by msabansal and nwoodmsft
   from : https://github.com/msabansal/docker/tree/overlay
2. reorganized under drivers/windows/overlay and rebased to
   libnetwork master
3. Porting overlay common fixes to windows driver
    * 46f525c
    * ba8714e
    * 6368406
4. Windows Service Discovery changes for swarm-mode
5. renaming default windows ipam drivers as "windows"

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Signed-off-by: msabansal <sabansal@microsoft.com>
Signed-off-by: nwoodmsft <Nicholas.Wood@microsoft.com>
2016-11-03 16:50:04 -07:00
Jana Radhakrishnan
e052f27538 Merge pull request #1521 from sanimej/gstatus
Add NetworkDB API to fetch the per network peer (gossip cluster) list
2016-11-02 20:51:36 -07:00
Santhosh Manohar
c52c8ca6eb Add NetworkDB API to fetch the per network peer (gossip cluster) list
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-11-02 13:58:15 -07:00
Jana Radhakrishnan
ea579a4d0e Merge pull request #1477 from allencloud/fix-nits-in-comments
fix nits in comments and log
2016-11-02 09:58:18 -07:00
allencloud
a1ed5b7be2 fix nits in comments and log
Signed-off-by: allencloud <allen.sun@daocloud.io>
2016-10-29 19:35:18 +08:00
allencloud
761722395d validate network and endpoint name more strictly
Signed-off-by: allencloud <allen.sun@daocloud.io>
2016-10-18 11:01:18 +08:00
Akihiro Suda
8e37c3160a add Created to NetworkInfo
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2016-10-14 05:27:44 +00:00
Jana Radhakrishnan
c7b9435004 Do not add names to ingress network
Do not add service discovery names to ingress network as this is a
routing only network and no intra-cluster discovery should happen in
that network. This fixes the ambiguity and resolving names between
services which are both publishing ports and also attached to same
another network.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-10-04 10:41:11 -07:00
msabansal
7f43fd30f3 DNS support
Signed-off-by: msabansal <sabansal@microsoft.com>
2016-09-20 13:02:02 -07:00
Alessandro Boch
92e20b70e6 Fix potential deadlock in getSvcRecords()
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-08-30 12:40:46 -07:00
Jana Radhakrishnan
4f55b50f93 Cleanup service bindings when leaving cluster
When leaving the entire gossip cluster or when leaving a network
specific gossip cluster, we may not have had a chance to cleanup service
bindings by way of gossip updates due to premature closure of gossip
channel. Make sure to cleanup all service bindings since we are not
participating in the cluster any more.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-08-19 18:11:15 -07:00
Alexander Morozov
55564fda1d network: fix race in read access to map
Signed-off-by: Alexander Morozov <lk4d4math@gmail.com>
2016-08-15 14:43:59 -07:00
Jana Radhakrishnan
8a225de00d Merge pull request #1205 from allencloud/fix-typos
use grep to find a/an misuse
2016-08-01 09:49:31 -07:00
Madhu Venugopal
83b0be7f1a Check for isAgent() outside the network lock to avoid deadlocks
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-07-28 11:33:21 -07:00
Vladislav Kolesnikov
7301999c2a added locks for all other accesses to controller.svcRecords
Signed-off-by: Vladislav Kolesnikov <vkolesnikov@beget.ru>
2016-07-20 19:49:59 +03:00
Madhu Venugopal
9d01c1fcd5 manage network dynamic flag appropriately under various scenarios
If a network is dynamic, make sure the scope of the object doesnt change
based on the cluster-mode

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-07-12 08:57:50 -07:00
Alessandro Boch
d7d88ce37d Make getSvcRecords() more robust
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-06-17 18:51:57 -07:00
Alessandro Boch
9328f1ea1e Refresh special drivers networks if present in store
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-06-14 21:50:58 -07:00
Madhu Venugopal
4c1ed2010b Merge pull request #1228 from aboch/ll
Allow to program Endpoint link-local addresses
2016-06-08 18:17:42 -07:00
Alessandro Boch
da61c5d37f Allow to program Endpoint link-local addresses
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-06-08 15:02:34 -07:00
Chun Chen
dc94557b00 Merge pull request #1202 from vikaschoudhary16/update-addrSpace
Update address-space in ipam-info for remote driver
2016-06-07 11:49:09 +08:00
Madhu Venugopal
9054ac2b48 Provide a way for libnetwork to make use of Agent mode functionalities
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-06-05 18:41:21 -07:00
Jana Radhakrishnan
0f89c9b7bc Add ingress load balancer
Ingress load balancer is achieved via a service sandbox which acts as
the proxy to translate incoming node port requests and mapping that to a
service entry. Once the right service is identified, the same internal
loadbalancer implementation is used to load balance to the right backend
instance.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-04 20:38:32 -07:00
allencloud
9f415d0cdb use grep to find a/an misuse
Signed-off-by: allencloud <allen.sun@daocloud.io>
2016-06-03 16:35:33 +08:00
vikaschoudhary16
68de30a57c Update address-space in ipam-info for remote driver
Signed-off-by: vikaschoudhary16 <choudharyvikas16@gmail.com>
2016-06-01 13:43:00 +05:30