Merge pull request #1964 from pradipd/hotadd

Enable Hotadd support for windows
This commit is contained in:
Madhu Venugopal 2017-10-08 12:28:15 -07:00 committed by GitHub
commit 98fb784130
2 changed files with 29 additions and 14 deletions

View File

@ -62,10 +62,17 @@ type EndpointConnectivity struct {
}
type hnsEndpoint struct {
id string
nid string
profileID string
Type string
id string
nid string
profileID string
Type string
//Note: Currently, the sandboxID is the same as the containerID since windows does
//not expose the sandboxID.
//In the future, windows will support a proper sandboxID that is different
//than the containerID.
//Therefore, we are using sandboxID now, so that we won't have to change this code
//when windows properly supports a sandboxID.
sandboxID string
macAddress net.HardwareAddr
epOption *endpointOption // User specified parameters
epConnectivity *EndpointConnectivity // User specified parameters
@ -730,7 +737,15 @@ func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo,
return err
}
// This is just a stub for now
endpoint.sandboxID = sboxKey
err = hcsshim.HotAttachEndpoint(endpoint.sandboxID, endpoint.profileID)
if err != nil {
// If container doesn't exists in hcs, do not throw error for hot add/remove
if err != hcsshim.ErrComputeSystemDoesNotExist {
return err
}
}
jinfo.DisableGatewayService()
return nil
@ -744,13 +759,18 @@ func (d *driver) Leave(nid, eid string) error {
}
// Ensure that the endpoint exists
_, err = network.getEndpoint(eid)
endpoint, err := network.getEndpoint(eid)
if err != nil {
return err
}
// This is just a stub for now
err = hcsshim.HotDetachEndpoint(endpoint.sandboxID, endpoint.profileID)
if err != nil {
// If container doesn't exists in hcs, do not throw error for hot add/remove
if err != hcsshim.ErrComputeSystemDoesNotExist {
return err
}
}
return nil
}

View File

@ -5,12 +5,7 @@ import "testing"
// GenerateKey generates a sandbox key based on the passed
// container id.
func GenerateKey(containerID string) string {
maxLen := 12
if len(containerID) < maxLen {
maxLen = len(containerID)
}
return containerID[:maxLen]
return containerID
}
// NewSandbox provides a new sandbox instance created in an os specific way