func convertV1V2ToContainerConfig()

in ecs-cli/modules/cli/compose/project/project_parseV1V2.go [55:150]


func convertV1V2ToContainerConfig(context *project.Context, serviceName string, volumes *adapter.Volumes, service *config.ServiceConfig) (*adapter.ContainerConfig, error) {
	logger.LogUnsupportedV1V2ServiceConfigFields(serviceName, service)

	devices, err := adapter.ConvertToDevices(service.Devices)
	if err != nil {
		return nil, err
	}

	environment := adapter.ConvertToKeyValuePairs(context, service.Environment, serviceName)

	extraHosts, err := adapter.ConvertToExtraHosts(service.ExtraHosts)
	if err != nil {
		return nil, err
	}

	logConfiguration, err := adapter.ConvertToLogConfiguration(service)
	if err != nil {
		return nil, err
	}

	memory := adapter.ConvertToMemoryInMB(int64(service.MemLimit))
	memoryReservation := adapter.ConvertToMemoryInMB(int64(service.MemReservation))

	// Validate memory and memory reservation
	if memory == 0 && memoryReservation != 0 {
		memory = memoryReservation
	}

	mountPoints, err := adapter.ConvertToMountPoints(service.Volumes, volumes)
	if err != nil {
		return nil, err
	}

	portMappings, err := adapter.ConvertToPortMappings(serviceName, service.Ports)
	if err != nil {
		return nil, err
	}

	shmSize := adapter.ConvertToMemoryInMB(int64(service.ShmSize))

	tmpfs, err := adapter.ConvertToTmpfs(service.Tmpfs)
	if err != nil {
		return nil, err
	}

	ulimits, err := adapter.ConvertToULimits(service.Ulimits)
	if err != nil {
		return nil, err
	}

	volumesFrom, err := adapter.ConvertToVolumesFrom(service.VolumesFrom)
	if err != nil {
		return nil, err
	}

	stopTimeout, err := adapter.ConvertDurationStrToSeconds(service.StopGracePeriod)
	if err != nil {
		return nil, err
	}

	outputConfig := &adapter.ContainerConfig{
		Name:                  serviceName,
		CapAdd:                service.CapAdd,
		CapDrop:               service.CapDrop,
		Command:               service.Command,
		CPU:                   int64(service.CPUShares),
		Devices:               devices,
		DNSSearchDomains:      service.DNSSearch,
		DNSServers:            service.DNS,
		DockerLabels:          aws.StringMap(service.Labels),
		DockerSecurityOptions: service.SecurityOpt,
		Entrypoint:            service.Entrypoint,
		Environment:           environment,
		ExtraHosts:            extraHosts,
		Hostname:              service.Hostname, // only set if not blank?
		Image:                 service.Image,
		Links:                 service.Links,
		LogConfiguration:      logConfiguration,
		Memory:                memory,
		MemoryReservation:     memoryReservation,
		MountPoints:           mountPoints,
		PortMappings:          portMappings,
		PseudoTerminal:        service.Tty,
		Privileged:            service.Privileged,
		ReadOnly:              service.ReadOnly,
		ShmSize:               shmSize,
		StopTimeout:           stopTimeout,
		Tmpfs:                 tmpfs,
		Ulimits:               ulimits,
		VolumesFrom:           volumesFrom,
		User:                  service.User,
		WorkingDirectory:      service.WorkingDir,
	}

	return outputConfig, nil
}