@@ -2,17 +2,13 @@ package main
22
33import (
44 "bufio"
5- "bytes"
65 "encoding/json"
76 "fmt"
8- "io"
97 "os"
108 "os/exec"
119 "path"
1210 "strings"
1311 "time"
14-
15- icmd "github.com/docker/docker/pkg/system"
1612)
1713
1814var allowedConfKeys = map [string ]bool {
@@ -109,39 +105,23 @@ func loadFromDisk(l *lvmDriver) error {
109105}
110106
111107func lvdisplayGrep (vgName , lvName , keyword string ) (bool , string , error ) {
112- var b2 bytes.Buffer
113-
114- cmd1 := exec .Command ("lvdisplay" , fmt .Sprintf ("/dev/%s/%s" , vgName , lvName ))
115- cmd2 := exec .Command ("grep" , keyword )
116-
117- r , w := io .Pipe ()
118- cmd1 .Stdout = w
119- cmd2 .Stdin = r
120- cmd2 .Stdout = & b2
121-
122- if err := cmd1 .Start (); err != nil {
123- return false , "" , err
124- }
125- if err := cmd2 .Start (); err != nil {
126- return false , "" , err
127- }
128- if err := cmd1 .Wait (); err != nil {
108+ outByttes , err := exec .Command ("lvdisplay" , fmt .Sprintf ("/dev/%s/%s" , vgName , lvName )).Output ()
109+ if err != nil {
129110 return false , "" , err
130111 }
131- w .Close ()
132- if err := cmd2 .Wait (); err != nil {
133- exitCode , inErr := icmd .GetExitCode (err )
134- if inErr != nil {
135- return false , "" , inErr
136- }
137- if exitCode != 1 {
138- return false , "" , err
112+ var result []string
113+ outStr := strings .TrimSpace (string (outByttes [:]))
114+
115+ for _ , line := range strings .Split (outStr , "\n " ) {
116+ if strings .Contains (line , keyword ) {
117+ result = append (result , line )
139118 }
140119 }
141120
142- if b2 . Len () != 0 {
143- return true , b2 . String ( ), nil
121+ if len ( result ) > 0 {
122+ return true , strings . Join ( result , " \n " ), nil
144123 }
124+
145125 return false , "" , nil
146126}
147127
0 commit comments