Commit 7bc1c3cc by bergquist

feat(cloudwatch): make it possible to reset keys

closes #6697
parent 3d21f06d
...@@ -192,21 +192,6 @@ func handleGetMetrics(req *cwRequest, c *middleware.Context) { ...@@ -192,21 +192,6 @@ func handleGetMetrics(req *cwRequest, c *middleware.Context) {
} }
} else { } else {
var err error var err error
/*
assumeRoleArn := req.DataSource.JsonData.Get("assumeRoleArn").MustString()
accessKey := req.DataSource.JsonData.Get("accessKey").MustString()
secretKey := req.DataSource.JsonData.Get("secretKey").MustString()
cwData := &datasourceInfo{
AssumeRoleArn: assumeRoleArn,
Region: req.Region,
Namespace: reqParam.Parameters.Namespace,
Profile: req.DataSource.Database,
AccessKey: accessKey,
SecretKey: secretKey,
}
*/
cwData := req.GetDatasourceInfo() cwData := req.GetDatasourceInfo()
cwData.Namespace = reqParam.Parameters.Namespace cwData.Namespace = reqParam.Parameters.Namespace
...@@ -243,19 +228,10 @@ func handleGetDimensions(req *cwRequest, c *middleware.Context) { ...@@ -243,19 +228,10 @@ func handleGetDimensions(req *cwRequest, c *middleware.Context) {
} }
} else { } else {
var err error var err error
assumeRoleArn := req.DataSource.JsonData.Get("assumeRoleArn").MustString() dsInfo := req.GetDatasourceInfo()
accessKey := req.DataSource.JsonData.Get("accessKey").MustString() dsInfo.Namespace = reqParam.Parameters.Namespace
secretKey := req.DataSource.JsonData.Get("secretKey").MustString()
if dimensionValues, err = getDimensionsForCustomMetrics(dsInfo, getAllMetrics); err != nil {
cwDatasource := &datasourceInfo{
Region: req.Region,
Namespace: reqParam.Parameters.Namespace,
Profile: req.DataSource.Database,
AssumeRoleArn: assumeRoleArn,
AccessKey: accessKey,
SecretKey: secretKey,
}
if dimensionValues, err = getDimensionsForCustomMetrics(cwDatasource, getAllMetrics); err != nil {
c.JsonApiErr(500, "Unable to call AWS API", err) c.JsonApiErr(500, "Unable to call AWS API", err)
return return
} }
......
...@@ -215,5 +215,11 @@ func convertModelToDtos(ds *m.DataSource) dtos.DataSource { ...@@ -215,5 +215,11 @@ func convertModelToDtos(ds *m.DataSource) dtos.DataSource {
dto.TLSAuth.ClientKeySet = len(ds.SecureJsonData["tlsClientKey"]) > 0 dto.TLSAuth.ClientKeySet = len(ds.SecureJsonData["tlsClientKey"]) > 0
} }
for k, v := range ds.SecureJsonData {
if len(v) > 0 {
dto.EncryptedFields = append(dto.EncryptedFields, k)
}
}
return dto return dto
} }
...@@ -64,24 +64,24 @@ type DashboardRedirect struct { ...@@ -64,24 +64,24 @@ type DashboardRedirect struct {
} }
type DataSource struct { type DataSource struct {
Id int64 `json:"id"` Id int64 `json:"id"`
OrgId int64 `json:"orgId"` OrgId int64 `json:"orgId"`
Name string `json:"name"` Name string `json:"name"`
Type string `json:"type"` Type string `json:"type"`
TypeLogoUrl string `json:"typeLogoUrl"` TypeLogoUrl string `json:"typeLogoUrl"`
Access m.DsAccess `json:"access"` Access m.DsAccess `json:"access"`
Url string `json:"url"` Url string `json:"url"`
Password string `json:"password"` Password string `json:"password"`
User string `json:"user"` User string `json:"user"`
Database string `json:"database"` Database string `json:"database"`
BasicAuth bool `json:"basicAuth"` BasicAuth bool `json:"basicAuth"`
BasicAuthUser string `json:"basicAuthUser"` BasicAuthUser string `json:"basicAuthUser"`
BasicAuthPassword string `json:"basicAuthPassword"` BasicAuthPassword string `json:"basicAuthPassword"`
WithCredentials bool `json:"withCredentials"` WithCredentials bool `json:"withCredentials"`
IsDefault bool `json:"isDefault"` IsDefault bool `json:"isDefault"`
JsonData *simplejson.Json `json:"jsonData,omitempty"` JsonData *simplejson.Json `json:"jsonData,omitempty"`
SecureJsonData map[string]string `json:"secureJsonData,omitempty"` TLSAuth TLSAuth `json:"tlsAuth,omitempty"`
TLSAuth TLSAuth `json:"tlsAuth,omitempty"` EncryptedFields []string `json:"encryptedFields"`
} }
// TLSAuth is used to show if TLS certs have been uploaded already // TLSAuth is used to show if TLS certs have been uploaded already
......
...@@ -68,7 +68,6 @@ export class DataSourceEditCtrl { ...@@ -68,7 +68,6 @@ export class DataSourceEditCtrl {
this.backendSrv.get('/api/datasources/' + id).then(ds => { this.backendSrv.get('/api/datasources/' + id).then(ds => {
this.isNew = false; this.isNew = false;
this.current = ds; this.current = ds;
if (datasourceCreated) { if (datasourceCreated) {
datasourceCreated = false; datasourceCreated = false;
this.testDatasource(); this.testDatasource();
......
...@@ -7,10 +7,30 @@ export class CloudWatchConfigCtrl { ...@@ -7,10 +7,30 @@ export class CloudWatchConfigCtrl {
static templateUrl = 'partials/config.html'; static templateUrl = 'partials/config.html';
current: any; current: any;
accessKeyExist: boolean = false;
secretKeyExist: boolean = false;
/** @ngInject */ /** @ngInject */
constructor($scope) { constructor($scope) {
this.current.jsonData.timeField = this.current.jsonData.timeField || '@timestamp'; this.current.jsonData.timeField = this.current.jsonData.timeField || '@timestamp';
this.current.jsonData.authType = this.current.jsonData.authType || 'credentials'; this.current.jsonData.authType = this.current.jsonData.authType || 'credentials';
for (let key of this.current.encryptedFields) {
if (key === "accessKey") {
this.accessKeyExist = true;
}
if (key === "secretKey") {
this.secretKeyExist = true;
}
}
}
resetAccessKey() {
this.accessKeyExist = false;
}
resetSecretKey() {
this.secretKeyExist = false;
} }
authTypes = [ authTypes = [
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="gf-form-group max-width-30"> <div class="gf-form-group max-width-30">
<div class="gf-form"> <div class="gf-form">
<label class="gf-form-label width-13">Auth Provider</label> <label class="gf-form-label width-13">Auth Provider</label>
<select class="gf-form-input gf-size-auto" ng-model="ctrl.current.jsonData.authType" ng-options="f.value as f.name for f in ctrl.authTypes"></select> <select class="gf-form-input gf-max-width-13" ng-model="ctrl.current.jsonData.authType" ng-options="f.value as f.name for f in ctrl.authTypes"></select>
</div> </div>
<div class="gf-form" ng-show='ctrl.current.jsonData.authType == "credentials"'> <div class="gf-form" ng-show='ctrl.current.jsonData.authType == "credentials"'>
...@@ -14,18 +14,22 @@ ...@@ -14,18 +14,22 @@
</info-popover> </info-popover>
</div> </div>
<div class="gf-form" ng-show='ctrl.current.jsonData.authType == "keys"'> <div class="gf-form" ng-show='ctrl.current.jsonData.authType == "keys"'>
<label class="gf-form-label width-13">Access key</label> <label class="gf-form-label width-13">Access key </label>
<input type="text" class="gf-form-input max-width-18" ng-model='ctrl.current.secureJsonData.accessKey' placeholder="default"></input> <label class="gf-form-label width-13" ng-show="ctrl.accessKeyExist">Configured</label>
<info-popover mode="right-absolute"> <a class="gf-form-button btn btn-danger btn-small" type="submit" ng-click="ctrl.resetAccessKey()" ng-show="ctrl.accessKeyExist">Reset</a>
AWS Access key id <input type="text"
</info-popover> class="gf-form-input max-width-18"
ng-hide="ctrl.accessKeyExist"
ng-model='ctrl.current.secureJsonData.accessKey'></input>
</div> </div>
<div class="gf-form" ng-show='ctrl.current.jsonData.authType == "keys"'> <div class="gf-form" ng-show='ctrl.current.jsonData.authType == "keys"'>
<label class="gf-form-label width-13">Secret key</label> <label class="gf-form-label width-13">Secret key</label>
<input type="text" class="gf-form-input max-width-18" ng-model='ctrl.current.secureJsonData.secretKey' placeholder="default"></input> <label class="gf-form-label width-13" ng-show="ctrl.secretKeyExist">Configured</label>
<info-popover mode="right-absolute"> <a class="btn btn-danger gf-form-button btn-small" type="submit" ng-click="ctrl.resetSecretKey()" ng-show="ctrl.secretKeyExist">Reset</a>
AWS Secret key <input type="text"
</info-popover> class="gf-form-input max-width-18"
ng-hide="ctrl.secretKeyExist"
ng-model='ctrl.current.secureJsonData.secretKey'></input>
</div> </div>
<div class="gf-form" ng-show='ctrl.current.jsonData.authType == "arn"'> <div class="gf-form" ng-show='ctrl.current.jsonData.authType == "arn"'>
<label class="gf-form-label width-13">Assume Role ARN</label> <label class="gf-form-label width-13">Assume Role ARN</label>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment