Implement cluster-wide in-place updates (#8070)
This PR is a breaking change and also deprecates `minio update` command, from this release onwards all users are advised to just use `mc admin update`master
parent
70136fb55b
commit
d65a2c6725
@ -1,77 +0,0 @@ |
||||
/* |
||||
* MinIO Cloud Storage, (C) 2019 MinIO, Inc. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package madmin |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
"net/http" |
||||
"net/url" |
||||
"strconv" |
||||
|
||||
trace "github.com/minio/minio/pkg/trace" |
||||
) |
||||
|
||||
// TraceInfo holds http trace
|
||||
type TraceInfo struct { |
||||
Trace trace.Info |
||||
Err error `json:"-"` |
||||
} |
||||
|
||||
// Trace - listen on http trace notifications.
|
||||
func (adm AdminClient) Trace(allTrace, errTrace bool, doneCh <-chan struct{}) <-chan TraceInfo { |
||||
traceInfoCh := make(chan TraceInfo) |
||||
// Only success, start a routine to start reading line by line.
|
||||
go func(traceInfoCh chan<- TraceInfo) { |
||||
defer close(traceInfoCh) |
||||
for { |
||||
urlValues := make(url.Values) |
||||
urlValues.Set("all", strconv.FormatBool(allTrace)) |
||||
urlValues.Set("err", strconv.FormatBool(errTrace)) |
||||
reqData := requestData{ |
||||
relPath: "/v1/trace", |
||||
queryValues: urlValues, |
||||
} |
||||
// Execute GET to call trace handler
|
||||
resp, err := adm.executeMethod("GET", reqData) |
||||
if err != nil { |
||||
closeResponse(resp) |
||||
return |
||||
} |
||||
|
||||
if resp.StatusCode != http.StatusOK { |
||||
traceInfoCh <- TraceInfo{Err: httpRespToErrorResponse(resp)} |
||||
return |
||||
} |
||||
|
||||
dec := json.NewDecoder(resp.Body) |
||||
for { |
||||
var info trace.Info |
||||
if err = dec.Decode(&info); err != nil { |
||||
break |
||||
} |
||||
select { |
||||
case <-doneCh: |
||||
return |
||||
case traceInfoCh <- TraceInfo{Trace: info}: |
||||
} |
||||
} |
||||
} |
||||
}(traceInfoCh) |
||||
|
||||
// Returns the trace info channel, for caller to start reading from.
|
||||
return traceInfoCh |
||||
} |
@ -1,54 +0,0 @@ |
||||
/* |
||||
* MinIO Cloud Storage, (C) 2017 MinIO, Inc. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
* |
||||
*/ |
||||
|
||||
package madmin |
||||
|
||||
import ( |
||||
"encoding/json" |
||||
"io/ioutil" |
||||
"net/http" |
||||
) |
||||
|
||||
// AdminAPIVersionInfo - contains admin API version information
|
||||
type AdminAPIVersionInfo struct { |
||||
Version string `json:"version"` |
||||
} |
||||
|
||||
// VersionInfo - Connect to minio server and call the version API to
|
||||
// retrieve the server API version
|
||||
func (adm *AdminClient) VersionInfo() (verInfo AdminAPIVersionInfo, err error) { |
||||
var resp *http.Response |
||||
resp, err = adm.executeMethod("GET", requestData{relPath: "/version"}) |
||||
defer closeResponse(resp) |
||||
if err != nil { |
||||
return verInfo, err |
||||
} |
||||
|
||||
// Check response http status code
|
||||
if resp.StatusCode != http.StatusOK { |
||||
return verInfo, httpRespToErrorResponse(resp) |
||||
} |
||||
|
||||
respBytes, err := ioutil.ReadAll(resp.Body) |
||||
if err != nil { |
||||
return verInfo, err |
||||
} |
||||
|
||||
// Unmarshal the server's json response
|
||||
err = json.Unmarshal(respBytes, &verInfo) |
||||
return verInfo, err |
||||
} |
Loading…
Reference in new issue