func (task *Task) shouldOverrideIPCMode(container *apicontainer.Container, dockerContainerMap map[string]*apicontainer.DockerContainer) (bool, string) {
	// All internal containers do not need the same IPCMode. The NamespaceContainerPause
	// needs to be "shareable" if ipcMode is "task". All other internal containers should
	// defer to the Docker daemon default option (either shareable or private depending on
	// version and configuration)
	if container.IsInternal() {
		if container.Type == apicontainer.ContainerNamespacePause {
			// Setting NamespaceContainerPause to be sharable with other containers
			if task.getIPCMode() == ipcModeTask {
				return true, ipcModeSharable
			}
		}
		// Defaulting to Docker daemon default option
		return false, ""
	}

	switch task.getIPCMode() {
	// No IPCMode provided in Task Definition, no need to override
	case "":
		return false, ""

		// IPCMode is none - container will have own private namespace with /dev/shm not mounted
	case ipcModeNone:
		return true, ipcModeNone

	case ipcModeHost:
		return true, ipcModeHost

	case ipcModeTask:
		pauseCont, ok := task.ContainerByName(NamespacePauseContainerName)
		if !ok {
			seelog.Criticalf("Namespace Pause container not found in the task: %s; Setting Task's Desired Status to Stopped", task.Arn)
			task.SetDesiredStatus(apitaskstatus.TaskStopped)
			return false, ""
		}
		pauseDockerID, ok := dockerContainerMap[pauseCont.Name]
		if !ok || pauseDockerID == nil {
			// Docker container shouldn't be nill or not exist if the Container definition within task exists; implies code-bug
			seelog.Criticalf("Namespace Pause container not found in the task: %s; Setting Task's Desired Status to Stopped", task.Arn)
			task.SetDesiredStatus(apitaskstatus.TaskStopped)
			return false, ""
		}
		return true, dockerMappingContainerPrefix + pauseDockerID.DockerID

	default:
		return false, ""
	}
}
func (task *Task) shouldOverrideIPCMode(container *apicontainer.Container, dockerContainerMap map[string]*apicontainer.DockerContainer) (bool, string) {
	
	
	
	
	if container.IsInternal() {
		if container.Type == apicontainer.ContainerNamespacePause {
			
			if task.getIPCMode() == ipcModeTask {
				return true, ipcModeSharable
			}
		}
		
		return false, ""
	}

	switch task.getIPCMode() {
	
	case "":
		return false, ""

		
	case ipcModeNone:
		return true, ipcModeNone

	case ipcModeHost:
		return true, ipcModeHost

	case ipcModeTask:
		pauseCont, ok := task.ContainerByName(NamespacePauseContainerName)
		if !ok {
			seelog.Criticalf("Namespace Pause container not found in the task: %s; Setting Task's Desired Status to Stopped", task.Arn)
			task.SetDesiredStatus(apitaskstatus.TaskStopped)
			return false, ""
		}
		pauseDockerID, ok := dockerContainerMap[pauseCont.Name]
		if !ok || pauseDockerID == nil {
			
			seelog.Criticalf("Namespace Pause container not found in the task: %s; Setting Task's Desired Status to Stopped", task.Arn)
			task.SetDesiredStatus(apitaskstatus.TaskStopped)
			return false, ""
		}
		return true, dockerMappingContainerPrefix + pauseDockerID.DockerID

	default:
		return false, ""
	}
}
func ( task * Task ) shouldOverrideIPCMode ( container * apicontainer . Container , dockerContainerMap map [ string ] * apicontainer . DockerContainer ) ( bool , string ) { // All internal containers do not need the same IPCMode. The NamespaceContainerPause // needs to be "shareable" if ipcMode is "task". All other internal containers should // defer to the Docker daemon default option (either shareable or private depending on // version and configuration) if container . IsInternal ( ) { if container . Type == apicontainer . ContainerNamespacePause { // Setting NamespaceContainerPause to be sharable with other containers if task . getIPCMode ( ) == ipcModeTask { return true , ipcModeSharable } } // Defaulting to Docker daemon default option return false , " " } switch task . getIPCMode ( ) { // No IPCMode provided in Task Definition, no need to override case " " : return false , " " // IPCMode is none - container will have own private namespace with /dev/shm not mounted case ipcModeNone : return true , ipcModeNone case ipcModeHost : return true , ipcModeHost case ipcModeTask : pauseCont , ok := task . ContainerByName ( NamespacePauseContainerName ) if ! ok { seelog . Criticalf ( " " , task . Arn ) task . SetDesiredStatus ( apitaskstatus . TaskStopped ) return false , " " } pauseDockerID , ok := dockerContainerMap [ pauseCont . Name ] if ! ok || pauseDockerID == nil { // Docker container shouldn't be nill or not exist if the Container definition within task exists; implies code-bug seelog . Criticalf ( " " , task . Arn ) task . SetDesiredStatus ( apitaskstatus . TaskStopped ) return false , " " } return true , dockerMappingContainerPrefix + pauseDockerID . DockerID default : return false , " " } }
// shouldOverrideIPCMode returns true if the IPCMode of the container needs
// to be overridden. It also returns the override string in this case. It returns
// false otherwise
shouldOverrideIPCMode returns true if the IPCMode of the container needs to be overridden . It also returns the override string in this case . It returns false otherwise