mirror of
https://github.com/minio/minio.git
synced 2024-12-25 06:35:56 -05:00
3184205519
This PR adds context-based `k=v` splits based on the sub-system which was obtained, if the keys are not provided an error will be thrown during parsing, if keys are provided with wrong values an error will be thrown. Keys can now have values which are of a much more complex form such as `k="v=v"` or `k=" v = v"` and other variations. additionally, deprecate unnecessary postgres/mysql configuration styles, support only - connection_string for Postgres - dsn_string for MySQL All other parameters are removed.
105 lines
2.5 KiB
Go
105 lines
2.5 KiB
Go
/*
|
|
* 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 (
|
|
"context"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
// DelConfigKV - delete key from server config.
|
|
func (adm *AdminClient) DelConfigKV(ctx context.Context, k string) (err error) {
|
|
econfigBytes, err := EncryptData(adm.getSecretKey(), []byte(k))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
reqData := requestData{
|
|
relPath: adminAPIPrefix + "/del-config-kv",
|
|
content: econfigBytes,
|
|
}
|
|
|
|
// Execute DELETE on /minio/admin/v3/del-config-kv to delete config key.
|
|
resp, err := adm.executeMethod(ctx, http.MethodDelete, reqData)
|
|
|
|
defer closeResponse(resp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
return httpRespToErrorResponse(resp)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// SetConfigKV - set key value config to server.
|
|
func (adm *AdminClient) SetConfigKV(ctx context.Context, kv string) (err error) {
|
|
econfigBytes, err := EncryptData(adm.getSecretKey(), []byte(kv))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
reqData := requestData{
|
|
relPath: adminAPIPrefix + "/set-config-kv",
|
|
content: econfigBytes,
|
|
}
|
|
|
|
// Execute PUT on /minio/admin/v3/set-config-kv to set config key/value.
|
|
resp, err := adm.executeMethod(ctx, http.MethodPut, reqData)
|
|
|
|
defer closeResponse(resp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
return httpRespToErrorResponse(resp)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetConfigKV - returns the key, value of the requested key, incoming data is encrypted.
|
|
func (adm *AdminClient) GetConfigKV(ctx context.Context, key string) ([]byte, error) {
|
|
v := url.Values{}
|
|
v.Set("key", key)
|
|
|
|
// Execute GET on /minio/admin/v3/get-config-kv?key={key} to get value of key.
|
|
resp, err := adm.executeMethod(ctx,
|
|
http.MethodGet,
|
|
requestData{
|
|
relPath: adminAPIPrefix + "/get-config-kv",
|
|
queryValues: v,
|
|
})
|
|
defer closeResponse(resp)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
defer closeResponse(resp)
|
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
return nil, httpRespToErrorResponse(resp)
|
|
}
|
|
|
|
return DecryptData(adm.getSecretKey(), resp.Body)
|
|
}
|