func validateMergedSDInputFields()

in ecs-cli/modules/cli/servicediscovery/servicediscovery_helper.go [112:139]


func validateMergedSDInputFields(input *utils.ServiceDiscovery, networkMode string) error {
	dnsType := getDNSType(input.ServiceDiscoveryService, networkMode, false)
	if dnsType == servicediscovery.RecordTypeSrv && input.ContainerName == "" {
		return fmt.Errorf("container_name is a required field when using SRV DNS records")
	}
	if dnsType == servicediscovery.RecordTypeSrv && input.ContainerPort == nil {
		return fmt.Errorf("container_port is a required field when using SRV DNS records")
	}

	hasPublic := hasNamespace(input.PublicDNSNamespace.Namespace)
	hasPrivate := hasNamespace(input.PrivateDNSNamespace.Namespace)

	if hasPublic && hasPrivate {
		return fmt.Errorf("Both a public and private namespace can not be used with Service Discovery; please use only 1 namespace")
	}

	if !hasPublic && !hasPrivate {
		return fmt.Errorf("To use Service Discovery, please specify a DNS namespace")
	}

	if input.PrivateDNSNamespace.Name != "" && input.PrivateDNSNamespace.ID == "" {
		if input.PrivateDNSNamespace.VPC == "" {
			return fmt.Errorf("VPC is required when specifying private namespace by name")
		}
	}

	return nil
}