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"].InternalURLs = map[arvados.URL]arvados.ServiceInstance{}
+ cluster.Containers.SLURM.KeepServices["00000-bi6l4-000000000000000"] = arvados.Service{InternalURLs: make(map[arvados.URL]arvados.ServiceInstance)}
}
p, err := url.Parse(r)
- cluster.Containers.SLURM.KeepServices["00000-bi6l4-000000000000000"].InternalURLs[arvados.URL(p)] = struct{}{}
+ if err == nil {
+ cluster.Containers.SLURM.KeepServices["00000-bi6l4-000000000000000"].InternalURLs[arvados.URL(*p)] = struct{}{}
+ }
}
}
"fmt"
"log"
"math"
+ "net/url"
"os"
"regexp"
"strings"
os.Setenv("ARVADOS_API_HOST_INSECURE", "1")
}
ks := ""
- if length(disp.cluster.Containers.SLURM.KeepServices) > 0 {
+ if len(disp.cluster.Containers.SLURM.KeepServices) > 0 {
for _, svc := range disp.cluster.Containers.SLURM.KeepServices {
for k, _ := range svc.InternalURLs {
- ks += k
+ u := url.URL(k)
+ ks += u.String()
ks += " "
}
}
}
- os.Setenv("ARVADOS_KEEP_SERVICES", ks)
+ os.Setenv("ARVADOS_KEEP_SERVICES", strings.TrimSuffix(ks, " "))
os.Setenv("ARVADOS_EXTERNAL_CLIENT", "")
} else {
disp.logger.Warnf("Client credentials missing from config, so falling back on environment variables (deprecated).")
"fmt"
"io"
"io/ioutil"
- "log"
"net/http"
"net/http/httptest"
"os"
Client:
APIHost: example.com
AuthToken: abcdefg
- KeepServices:
- - https://example.com/keep
+ KeepServiceURIs:
+ - https://example.com/keep1
+ - https://example.com/keep2
SbatchArguments: ["--foo", "bar"]
PollPeriod: 12s
PrioritySpread: 42
`)
tmpfile, err := ioutil.TempFile("", "example")
if err != nil {
- log.Fatal(err)
+ c.Error(err)
}
defer os.Remove(tmpfile.Name()) // clean up
if _, err := tmpfile.Write(content); err != nil {
- log.Fatal(err)
+ c.Error(err)
}
if err := tmpfile.Close(); err != nil {
- log.Fatal(err)
+ c.Error(err)
}
err = s.disp.configure("crunch-dispatch-slurm", []string{"-config", tmpfile.Name()})
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]Service{
- "00000-bi6l4-000000000000000": Service{
- InternalURLs: map[string]struct{}{
- "https://example.com/keep": struct{}{},
+ 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{}{},
},
},
})
+ 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")
+ }
}