-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into feature/add-resource-tests
- Loading branch information
Showing
26 changed files
with
1,351 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
* MinIO Cloud Storage, (C) 2016 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_test | ||
package madmin_test | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/minio/minio/pkg/madmin" | ||
) | ||
|
||
func TestMinioAdminClient(t *testing.T) { | ||
_, err := madmin.New("localhost:9000", "food", "food123", true) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* | ||
* 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" | ||
) | ||
|
||
// Help - return sub-system level help | ||
type Help struct { | ||
SubSys string `json:"subSys"` | ||
Description string `json:"description"` | ||
MultipleTargets bool `json:"multipleTargets"` | ||
KeysHelp HelpKVS `json:"keysHelp"` | ||
} | ||
|
||
// HelpKV - implements help messages for keys | ||
// with value as description of the keys. | ||
type HelpKV struct { | ||
Key string `json:"key"` | ||
Description string `json:"description"` | ||
Optional bool `json:"optional"` | ||
Type string `json:"type"` | ||
MultipleTargets bool `json:"multipleTargets"` | ||
} | ||
|
||
// HelpKVS - implement order of keys help messages. | ||
type HelpKVS []HelpKV | ||
|
||
// HelpConfigKV - return help for a given sub-system. | ||
func (adm *AdminClient) HelpConfigKV(subSys, key string, envOnly bool) (Help, error) { | ||
v := url.Values{} | ||
v.Set("subSys", subSys) | ||
v.Set("key", key) | ||
if envOnly { | ||
v.Set("env", "") | ||
} | ||
|
||
reqData := requestData{ | ||
relPath: adminAPIPrefix + "/help-config-kv", | ||
queryValues: v, | ||
} | ||
|
||
// Execute GET on /minio/admin/v2/help-config-kv | ||
resp, err := adm.executeMethod(http.MethodGet, reqData) | ||
if err != nil { | ||
return Help{}, err | ||
} | ||
defer closeResponse(resp) | ||
|
||
if resp.StatusCode != http.StatusOK { | ||
return Help{}, httpRespToErrorResponse(resp) | ||
} | ||
|
||
var help = Help{} | ||
d := json.NewDecoder(resp.Body) | ||
d.DisallowUnknownFields() | ||
if err = d.Decode(&help); err != nil { | ||
return help, err | ||
} | ||
|
||
return help, nil | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
/* | ||
* 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" | ||
"time" | ||
) | ||
|
||
// ClearConfigHistoryKV - clears the config entry represented by restoreID. | ||
// optionally allows setting `all` as a special keyword to automatically | ||
// erase all config set history entires. | ||
func (adm *AdminClient) ClearConfigHistoryKV(restoreID string) (err error) { | ||
v := url.Values{} | ||
v.Set("restoreId", restoreID) | ||
reqData := requestData{ | ||
relPath: adminAPIPrefix + "/clear-config-history-kv", | ||
queryValues: v, | ||
} | ||
|
||
// Execute DELETE on /minio/admin/v2/clear-config-history-kv | ||
resp, err := adm.executeMethod(http.MethodDelete, reqData) | ||
|
||
defer closeResponse(resp) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if resp.StatusCode != http.StatusOK { | ||
return httpRespToErrorResponse(resp) | ||
} | ||
|
||
return nil | ||
} | ||
|
||
// RestoreConfigHistoryKV - Restore a previous config set history. | ||
// Input is a unique id which represents the previous setting. | ||
func (adm *AdminClient) RestoreConfigHistoryKV(restoreID string) (err error) { | ||
v := url.Values{} | ||
v.Set("restoreId", restoreID) | ||
reqData := requestData{ | ||
relPath: adminAPIPrefix + "/restore-config-history-kv", | ||
queryValues: v, | ||
} | ||
|
||
// Execute PUT on /minio/admin/v2/set-config-kv to set config key/value. | ||
resp, err := adm.executeMethod(http.MethodPut, reqData) | ||
|
||
defer closeResponse(resp) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
if resp.StatusCode != http.StatusOK { | ||
return httpRespToErrorResponse(resp) | ||
} | ||
|
||
return nil | ||
} | ||
|
||
// ConfigHistoryEntry - captures config set history with a unique | ||
// restore ID and createTime | ||
type ConfigHistoryEntry struct { | ||
RestoreID string `json:"restoreId"` | ||
CreateTime time.Time `json:"createTime"` | ||
Data string `json:"data"` | ||
} | ||
|
||
// CreateTimeFormatted is used to print formatted time for CreateTime. | ||
func (ch ConfigHistoryEntry) CreateTimeFormatted() string { | ||
return ch.CreateTime.Format(http.TimeFormat) | ||
} | ||
|
||
// ListConfigHistoryKV - lists a slice of ConfigHistoryEntries sorted by createTime. | ||
func (adm *AdminClient) ListConfigHistoryKV(count int) ([]ConfigHistoryEntry, error) { | ||
if count == 0 { | ||
count = 10 | ||
} | ||
v := url.Values{} | ||
v.Set("count", strconv.Itoa(count)) | ||
|
||
// Execute GET on /minio/admin/v2/list-config-history-kv | ||
resp, err := adm.executeMethod(http.MethodGet, | ||
requestData{ | ||
relPath: adminAPIPrefix + "/list-config-history-kv", | ||
queryValues: v, | ||
}) | ||
defer closeResponse(resp) | ||
if err != nil { | ||
return nil, err | ||
} | ||
if resp.StatusCode != http.StatusOK { | ||
return nil, httpRespToErrorResponse(resp) | ||
} | ||
|
||
data, err := DecryptData(adm.secretAccessKey, resp.Body) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
var chEntries []ConfigHistoryEntry | ||
if err = json.Unmarshal(data, &chEntries); err != nil { | ||
return chEntries, err | ||
} | ||
|
||
return chEntries, nil | ||
} |
Oops, something went wrong.