Service converts a ServiceConfig into a swarm ServiceSpec
( namespace Namespace, service composetypes.ServiceConfig, networkConfigs map[string]composetypes.NetworkConfig, volumes map[string]composetypes.VolumeConfig, secrets []*swarm.SecretReference, configs []*swarm.ConfigReference, )
| 60 | |
| 61 | // Service converts a ServiceConfig into a swarm ServiceSpec |
| 62 | func Service( |
| 63 | namespace Namespace, |
| 64 | service composetypes.ServiceConfig, |
| 65 | networkConfigs map[string]composetypes.NetworkConfig, |
| 66 | volumes map[string]composetypes.VolumeConfig, |
| 67 | secrets []*swarm.SecretReference, |
| 68 | configs []*swarm.ConfigReference, |
| 69 | ) (swarm.ServiceSpec, error) { |
| 70 | name := namespace.Scope(service.Name) |
| 71 | endpoint := convertEndpointSpec(service.Deploy.EndpointMode, service.Ports) |
| 72 | |
| 73 | mode, err := convertDeployMode(service.Deploy.Mode, service.Deploy.Replicas) |
| 74 | if err != nil { |
| 75 | return swarm.ServiceSpec{}, err |
| 76 | } |
| 77 | |
| 78 | mounts, err := Volumes(service.Volumes, volumes, namespace) |
| 79 | if err != nil { |
| 80 | return swarm.ServiceSpec{}, err |
| 81 | } |
| 82 | |
| 83 | resources, err := convertResources(service.Deploy.Resources) |
| 84 | if err != nil { |
| 85 | return swarm.ServiceSpec{}, err |
| 86 | } |
| 87 | |
| 88 | restartPolicy, err := convertRestartPolicy(service.Restart, service.Deploy.RestartPolicy) |
| 89 | if err != nil { |
| 90 | return swarm.ServiceSpec{}, err |
| 91 | } |
| 92 | |
| 93 | healthcheck, err := convertHealthcheck(service.HealthCheck) |
| 94 | if err != nil { |
| 95 | return swarm.ServiceSpec{}, err |
| 96 | } |
| 97 | |
| 98 | networks, err := convertServiceNetworks(service.Networks, networkConfigs, namespace, service.Name) |
| 99 | if err != nil { |
| 100 | return swarm.ServiceSpec{}, err |
| 101 | } |
| 102 | |
| 103 | dnsConfig := convertDNSConfig(service.DNS, service.DNSSearch) // TODO(thaJeztah): change service.DNS to a []netip.Addr |
| 104 | |
| 105 | var privileges swarm.Privileges |
| 106 | privileges.CredentialSpec, err = convertCredentialSpec( |
| 107 | namespace, service.CredentialSpec, configs, |
| 108 | ) |
| 109 | if err != nil { |
| 110 | return swarm.ServiceSpec{}, err |
| 111 | } |
| 112 | |
| 113 | var logDriver *swarm.Driver |
| 114 | if service.Logging != nil { |
| 115 | logDriver = &swarm.Driver{ |
| 116 | Name: service.Logging.Driver, |
| 117 | Options: service.Logging.Options, |
| 118 | } |
| 119 | } |
searching dependent graphs…