99 dt "github.com/docker/docker/api/types"
1010 "github.com/docker/docker/api/types/container"
1111 "github.com/docker/docker/api/types/filters"
12+ "github.com/docker/docker/api/types/mount"
1213 "github.com/docker/docker/api/types/swarm"
1314 "github.com/docker/docker/client"
1415 "github.com/gdamore/tcell/v2"
@@ -147,7 +148,7 @@ func (m *Manager) List() ([]common.Resource, error) {
147148 if idx := strings .LastIndex (imageName , "@" ); idx != - 1 {
148149 imageName = imageName [:idx ]
149150 }
150-
151+
151152 // Style tag
152153 if idx := strings .LastIndex (imageName , ":" ); idx != - 1 {
153154 tag := imageName [idx :]
@@ -182,7 +183,7 @@ func (m *Manager) Scale(id string, replicas uint64) error {
182183 }
183184
184185 service .Spec .Mode .Replicated .Replicas = & replicas
185-
186+
186187 // Update
187188 _ , err = m .cli .ServiceUpdate (m .ctx , id , service .Version , service .Spec , swarm.ServiceUpdateOptions {})
188189 return err
@@ -333,6 +334,19 @@ func (m *Manager) GetNetworks(id string) ([]swarm.NetworkAttachmentConfig, error
333334 return service .Spec .TaskTemplate .Networks , nil
334335}
335336
337+ func (m * Manager ) GetMounts (id string ) ([]mount.Mount , error ) {
338+ service , _ , err := m .cli .ServiceInspectWithRaw (m .ctx , id , swarm.ServiceInspectOptions {})
339+ if err != nil {
340+ return nil , err
341+ }
342+
343+ if service .Spec .TaskTemplate .ContainerSpec == nil {
344+ return []mount.Mount {}, nil
345+ }
346+
347+ return service .Spec .TaskTemplate .ContainerSpec .Mounts , nil
348+ }
349+
336350func (m * Manager ) ListTasks (serviceID string ) ([]swarm.Task , error ) {
337351 filter := filters .NewArgs ()
338352 filter .Add ("service" , serviceID )
@@ -351,3 +365,19 @@ func (m *Manager) SetNetworks(id string, networks []swarm.NetworkAttachmentConfi
351365 _ , err = m .cli .ServiceUpdate (m .ctx , id , service .Version , service .Spec , swarm.ServiceUpdateOptions {})
352366 return err
353367}
368+
369+ func (m * Manager ) SetMounts (id string , mounts []mount.Mount ) error {
370+ service , _ , err := m .cli .ServiceInspectWithRaw (m .ctx , id , swarm.ServiceInspectOptions {})
371+ if err != nil {
372+ return err
373+ }
374+
375+ if service .Spec .TaskTemplate .ContainerSpec == nil {
376+ return fmt .Errorf ("service has no container spec" )
377+ }
378+
379+ service .Spec .TaskTemplate .ContainerSpec .Mounts = mounts
380+
381+ _ , err = m .cli .ServiceUpdate (m .ctx , id , service .Version , service .Spec , swarm.ServiceUpdateOptions {})
382+ return err
383+ }
0 commit comments