mirror of
https://github.com/cuigh/swirl
synced 2025-02-25 05:23: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
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
stack := service.Spec.Labels["com.docker.stack.namespace"]
|
si := model.NewServiceInfo(service)
|
||||||
checkedNetworks := set.StringSet{}
|
names, err := docker.NetworkNames(si.Networks...)
|
||||||
checkedNetworks.AddSlice(service.Endpoint.VirtualIPs, func(i int) string { return service.Endpoint.VirtualIPs[i].NetworkID })
|
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("Networks", networks).Set("CheckedNetworks", checkedNetworks).
|
||||||
Set("Secrets", secrets).Set("Configs", configs)
|
Set("Secrets", secrets).Set("Configs", configs)
|
||||||
return ctx.Render("service/edit", m)
|
return ctx.Render("service/edit", m)
|
||||||
|
@ -100,6 +100,7 @@ func templateCreate(ctx web.Context) error {
|
|||||||
return ajaxResult(ctx, err)
|
return ajaxResult(ctx, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// nolint: gocyclo
|
||||||
func templateEdit(ctx web.Context) error {
|
func templateEdit(ctx web.Context) error {
|
||||||
id := ctx.P("id")
|
id := ctx.P("id")
|
||||||
tpl, err := biz.Template.Get(id)
|
tpl, err := biz.Template.Get(id)
|
||||||
@ -143,7 +144,11 @@ func templateEdit(ctx web.Context) error {
|
|||||||
return err
|
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).
|
m := newModel(ctx).Set("Action", "Edit").Set("Service", service).Set("Registries", registries).
|
||||||
Set("Networks", networks).Set("CheckedNetworks", checkedNetworks).
|
Set("Networks", networks).Set("CheckedNetworks", checkedNetworks).
|
||||||
Set("Secrets", secrets).Set("Configs", configs)
|
Set("Secrets", secrets).Set("Configs", configs)
|
||||||
|
@ -254,8 +254,8 @@ func NewServiceInfo(service swarm.Service) *ServiceInfo {
|
|||||||
ServiceLabels: NewOptions(spec.Labels),
|
ServiceLabels: NewOptions(spec.Labels),
|
||||||
ContainerLabels: NewOptions(spec.TaskTemplate.ContainerSpec.Labels),
|
ContainerLabels: NewOptions(spec.TaskTemplate.ContainerSpec.Labels),
|
||||||
}
|
}
|
||||||
for _, vip := range service.Endpoint.VirtualIPs {
|
for _, n := range service.Spec.TaskTemplate.Networks {
|
||||||
si.Networks = append(si.Networks, vip.NetworkID)
|
si.Networks = append(si.Networks, n.Target)
|
||||||
}
|
}
|
||||||
if spec.EndpointSpec != nil {
|
if spec.EndpointSpec != nil {
|
||||||
si.Endpoint.Mode = spec.EndpointSpec.Mode
|
si.Endpoint.Mode = spec.EndpointSpec.Mode
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<div class="control">
|
<div class="control">
|
||||||
{{ set := .CheckedNetworks }}
|
{{ set := .CheckedNetworks }}
|
||||||
{{range .Networks}}
|
{{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}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user