import (
"fmt"
"io/ioutil"
- "net/url"
"os"
"strings"
cluster.SystemRootToken = client.AuthToken
}
cluster.TLS.Insecure = client.Insecure
- for _, r := range client.KeepServiceURIs {
- if cluster.Containers.SLURM.KeepServices == nil {
- cluster.Containers.SLURM.KeepServices = make(map[string]arvados.Service)
- }
- if cluster.Containers.SLURM.KeepServices["00000-bi6l4-000000000000000"].InternalURLs == nil {
- cluster.Containers.SLURM.KeepServices["00000-bi6l4-000000000000000"] = arvados.Service{InternalURLs: make(map[arvados.URL]arvados.ServiceInstance)}
- }
- p, err := url.Parse(r)
- if err == nil {
- cluster.Containers.SLURM.KeepServices["00000-bi6l4-000000000000000"].InternalURLs[arvados.URL(*p)] = struct{}{}
+ ks := ""
+ for i, u := range client.KeepServiceURIs {
+ if i > 0 {
+ ks += " "
}
+ ks += u
}
+ disp.cluster.Containers.SLURM.SbatchEnvironmentVariables = map[string]string{"ARVADOS_KEEP_SERVICES": ks}
}
// update config using values from an crunch-dispatch-slurm config file.
LogUpdateSize ByteSize
}
SLURM struct {
- PrioritySpread int64
- SbatchArgumentsList []string
- KeepServices map[string]Service
- Managed struct {
+ PrioritySpread int64
+ SbatchArgumentsList []string
+ SbatchEnvironmentVariables map[string]string
+ Managed struct {
DNSServerConfDir string
DNSServerConfTemplate string
DNSServerReloadCommand string
"fmt"
"log"
"math"
- "net/url"
"os"
"regexp"
"strings"
if disp.Client.Insecure {
os.Setenv("ARVADOS_API_HOST_INSECURE", "1")
}
- ks := ""
- if len(disp.cluster.Containers.SLURM.KeepServices) > 0 {
- for _, svc := range disp.cluster.Containers.SLURM.KeepServices {
- for k, _ := range svc.InternalURLs {
- u := url.URL(k)
- ks += u.String()
- ks += " "
- }
- }
- }
- os.Setenv("ARVADOS_KEEP_SERVICES", strings.TrimSuffix(ks, " "))
os.Setenv("ARVADOS_EXTERNAL_CLIENT", "")
+ for k, v := range disp.cluster.Containers.SLURM.SbatchEnvironmentVariables {
+ os.Setenv(k, v)
+ }
} else {
disp.logger.Warnf("Client credentials missing from config, so falling back on environment variables (deprecated).")
}
c.Error(err)
}
+ os.Setenv("ARVADOS_KEEP_SERVICES", "")
err = s.disp.configure("crunch-dispatch-slurm", []string{"-config", tmpfile.Name()})
c.Check(err, IsNil)
c.Check(s.disp.cluster.Containers.ReserveExtraRAM, Equals, arvados.ByteSize(12345))
c.Check(s.disp.cluster.Containers.MinRetryPeriod, Equals, arvados.Duration(13*time.Second))
c.Check(s.disp.cluster.API.MaxItemsPerResponse, Equals, 99)
- c.Check(s.disp.cluster.Containers.SLURM.KeepServices, DeepEquals, map[string]arvados.Service{
- "00000-bi6l4-000000000000000": arvados.Service{
- InternalURLs: map[arvados.URL]arvados.ServiceInstance{
- arvados.URL{Scheme: "https", Path: "/keep1", Host: "example.com"}: struct{}{},
- arvados.URL{Scheme: "https", Path: "/keep2", Host: "example.com"}: struct{}{},
- },
- },
+ c.Check(s.disp.cluster.Containers.SLURM.SbatchEnvironmentVariables, DeepEquals, map[string]string{
+ "ARVADOS_KEEP_SERVICES": "https://example.com/keep1 https://example.com/keep2",
})
- ks := os.Getenv("ARVADOS_KEEP_SERVICES")
- if ks != "https://example.com/keep1 https://example.com/keep2" && ks != "https://example.com/keep2 https://example.com/keep1" {
- c.Assert(ks, Equals, "https://example.com/keep1 https://example.com/keep2")
- }
+ c.Check(os.Getenv("ARVADOS_KEEP_SERVICES"), Equals, "https://example.com/keep1 https://example.com/keep2")
}