@@ -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) {
|
|||||||
}
|
}
|
||||||
} 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()
|
|
||||||
|
|
||||||
cwDatasource := &datasourceInfo{
|
if dimensionValues, err = getDimensionsForCustomMetrics(dsInfo, getAllMetrics); err != nil {
|
||||||
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 {
|
|||||||
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
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-18
@@ -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 {
|
|||||||
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 {
|
|||||||
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 @@
|
|||||||
<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 @@
|
|||||||
</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>
|
||||||
|
|||||||
Reference in New Issue
Block a user