mirror of
https://github.com/cuigh/swirl
synced 2025-02-24 21:13:48 +00:00
Fix checked state on edit service with host network
This commit is contained in:
parent
326c8084fd
commit
462b6bed2d
@ -120,3 +120,22 @@ func NetworkInspectRaw(name string) (raw []byte, err error) {
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// NetworkNames return network names by id list.
|
||||
func NetworkNames(ids ...string) (names []string, err error) {
|
||||
var (
|
||||
ctx context.Context
|
||||
cli *client.Client
|
||||
)
|
||||
if ctx, cli, err = mgr.Client(); err == nil {
|
||||
for _, id := range ids {
|
||||
var n types.NetworkResource
|
||||
n, err = cli.NetworkInspect(ctx, id, types.NetworkInspectOptions{})
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
names = append(names, n.Name)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -222,11 +222,15 @@ func serviceEdit(ctx web.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
stack := service.Spec.Labels["com.docker.stack.namespace"]
|
||||
checkedNetworks := set.StringSet{}
|
||||
checkedNetworks.AddSlice(service.Endpoint.VirtualIPs, func(i int) string { return service.Endpoint.VirtualIPs[i].NetworkID })
|
||||
si := model.NewServiceInfo(service)
|
||||
names, err := docker.NetworkNames(si.Networks...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
checkedNetworks := set.NewStringSet(names...)
|
||||
|
||||
m := newModel(ctx).Set("Service", model.NewServiceInfo(service)).Set("Stack", stack).
|
||||
m := newModel(ctx).Set("Service", si).
|
||||
Set("Stack", service.Spec.Labels["com.docker.stack.namespace"]).
|
||||
Set("Networks", networks).Set("CheckedNetworks", checkedNetworks).
|
||||
Set("Secrets", secrets).Set("Configs", configs)
|
||||
return ctx.Render("service/edit", m)
|
||||
|
@ -100,6 +100,7 @@ func templateCreate(ctx web.Context) error {
|
||||
return ajaxResult(ctx, err)
|
||||
}
|
||||
|
||||
// nolint: gocyclo
|
||||
func templateEdit(ctx web.Context) error {
|
||||
id := ctx.P("id")
|
||||
tpl, err := biz.Template.Get(id)
|
||||
@ -143,7 +144,11 @@ func templateEdit(ctx web.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
checkedNetworks := set.NewStringSet(service.Networks...)
|
||||
names, err := docker.NetworkNames(service.Networks...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
checkedNetworks := set.NewStringSet(names...)
|
||||
m := newModel(ctx).Set("Action", "Edit").Set("Service", service).Set("Registries", registries).
|
||||
Set("Networks", networks).Set("CheckedNetworks", checkedNetworks).
|
||||
Set("Secrets", secrets).Set("Configs", configs)
|
||||
|
@ -254,8 +254,8 @@ func NewServiceInfo(service swarm.Service) *ServiceInfo {
|
||||
ServiceLabels: NewOptions(spec.Labels),
|
||||
ContainerLabels: NewOptions(spec.TaskTemplate.ContainerSpec.Labels),
|
||||
}
|
||||
for _, vip := range service.Endpoint.VirtualIPs {
|
||||
si.Networks = append(si.Networks, vip.NetworkID)
|
||||
for _, n := range service.Spec.TaskTemplate.Networks {
|
||||
si.Networks = append(si.Networks, n.Target)
|
||||
}
|
||||
if spec.EndpointSpec != nil {
|
||||
si.Endpoint.Mode = spec.EndpointSpec.Mode
|
||||
|
@ -25,7 +25,7 @@
|
||||
<div class="control">
|
||||
{{ set := .CheckedNetworks }}
|
||||
{{range .Networks}}
|
||||
{{ yield checkbox(name="networks", value=.ID, label=.Name, checked=set.Contains(.ID)) }}
|
||||
{{ yield checkbox(name="networks", value=.ID, label=.Name, checked=set.Contains(.Name)) }}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user