Commit 1b1f9d2a by Shwetha GS

ATLAS-971 UI not displaying results for this query - Eg: "hive_table as t where…

ATLAS-971 UI not displaying results for this query - Eg: "hive_table as t where qualifiedName = 'default.input@cl1' select t" (kevalbhatt18 via shwethags)
parent b28ab21e
......@@ -276,16 +276,24 @@ ul {
}
span {
&.inputTag[data-id="tagClick"] {
span {
display: block;
padding: 3px 5px 3px 5px;
}
i.fa-close[data-id="deleteTag"] {
display: none;
}
}
}
a {
&.inputTag[data-id="addTag"] {
&.inputTagAdd[data-id="addTag"] {
display: none;
}
&.inputTag[data-id="tagClick"] {
span {
display: block;
padding: 3px 5px 3px 5px;
}
i.fa-times[data-id="delete"] {
display: none;
}
......
......@@ -173,10 +173,16 @@
border: 1px $color_jungle_green_approx solid;
background-color: $white;
color: $color_jungle_green_approx;
padding-left: 5px;
&:hover {
color: $white;
background-color: $color_jungle_green_approx;
}
i.fa {
&:hover {
background-color: $color_jungle_green_approx;
}
}
}
.addTagBase {
......
......@@ -79,11 +79,14 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
}
});
};
CommonViewFunction.propertyTable = function(valueObject, scope) {
CommonViewFunction.propertyTable = function(valueObject, scope, searchTable) {
var table = "",
fetchInputOutputValue = function(id) {
var that = this;
scope.model.getEntity(id, {
if (searchTable) {
++scope.fetchList
}
scope.entityModel.getEntity(id, {
success: function(data) {
var value = "",
deleteButton = "";
......@@ -116,7 +119,12 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
}
},
error: function(error, data, status) {},
complete: function() {}
complete: function() {
if (searchTable) {
--scope.fetchList;
scope.checkTableFetch();
}
}
});
}
_.keys(valueObject).map(function(key) {
......@@ -129,6 +137,9 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
id = undefined,
tempLink = "",
readOnly = false;
if (inputOutputField['$id$']) {
inputOutputField.id = inputOutputField['$id$'];
}
if (inputOutputField) {
if (_.isObject(inputOutputField.id)) {
id = inputOutputField.id.id;
......@@ -138,14 +149,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
} else if (inputOutputField.id) {
id = inputOutputField.id;
} else if (_.isString(inputOutputField) || _.isBoolean(inputOutputField) || _.isNumber(inputOutputField)) {
valueOfArray.push('<span>' + inputOutputField + '</span>');
if (inputOutputField.indexOf("$") == -1) {
valueOfArray.push('<span>' + inputOutputField + '</span>');
}
} else if (_.isObject(inputOutputField)) {
_.each(inputOutputField, function(objValue, objKey) {
var value = objValue;
if (_.isObject(value)) {
value = JSON.stringify(value);
if (objKey.indexOf("$") == -1) {
if (_.isObject(value)) {
value = JSON.stringify(value);
}
valueOfArray.push('<span>' + objKey + ':' + value + '</span>');
}
valueOfArray.push('<span>' + objKey + ':' + value + '</span>');
});
}
}
......@@ -161,14 +176,25 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
} else {
tempLink += '<a href="#!/detailPage/' + id + '">' + id + '</a>'
}
} else if (inputOutputField.name) {
tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.name + '</a>';
} else if (inputOutputField.qualifiedName) {
tempLink += '<a href="#!/detailPage/' + id + '">' + inputOutputField.qualifiedName + '</a>'
} else {
var fetch = true;
fetchInputOutputValue(id);
tempLink += '<div data-id="' + id + '"></div>';
}
}
if (readOnly) {
tempLink += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
subLink += '<div class="block readOnlyLink">' + tempLink + '</div>';
if (!fetch) {
tempLink += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
subLink += '<div class="block readOnlyLink">' + tempLink + '</div>';
} else {
fetch = false;
subLink += tempLink;
}
} else {
if (tempLink.search('href') != -1) {
subLink += '<div>' + tempLink + '</div>'
......@@ -180,11 +206,18 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
if (valueOfArray.length) {
subLink = valueOfArray.join(', ');
}
table += '<tr><td>' + key + '</td><td>' + subLink + '</td></tr>';
if (searchTable) {
table = subLink;
} else {
table += '<tr><td>' + key + '</td><td>' + subLink + '</td></tr>';
}
} else if (_.isObject(keyValue)) {
var id = undefined,
tempLink = "",
readOnly = false;
if (keyValue['$id$']) {
keyValue.id = keyValue['$id$'];
}
if (_.isObject(keyValue.id)) {
id = keyValue.id.id;
if (Globals.entityStateReadOnly[keyValue.id.state]) {
......@@ -204,15 +237,39 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
} else {
tempLink += '<a href="#!/detailPage/' + id + '">' + id + '</a>';
}
} else if (keyValue.name) {
tempLink += '<a href="#!/detailPage/' + id + '">' + keyValue.name + '</a>';
} else if (keyValue.qualifiedName) {
tempLink += '<a href="#!/detailPage/' + id + '">' + keyValue.qualifiedName + '</a>'
} else {
var fetch = true;
fetchInputOutputValue(id);
tempLink += '<div data-id="' + id + '"></div>';
}
if (readOnly) {
tempLink += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
table += '<tr><td>' + key + '</td><td><div class="block readOnlyLink">' + tempLink + '</div></td></tr>';
if (!fetch) {
tempLink += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
}
if (searchTable) {
if (!fetch) {
table = '<div class="block readOnlyLink">' + tempLink + '</div>';
} else {
table = tempLink;
}
} else {
if (!fetch) {
table += '<tr><td>' + key + '</td><td><div class="block readOnlyLink">' + tempLink + '</div></td></tr>';
} else {
table += '<tr><td>' + key + '</td><td>' + tempLink + '</td></tr>';
}
}
} else {
table += '<tr><td>' + key + '</td><td>' + tempLink + '</td></tr>';
if (searchTable) {
table = tempLink;
} else {
table += '<tr><td>' + key + '</td><td>' + tempLink + '</td></tr>';
}
}
} else {
var stringArr = [];
......@@ -232,18 +289,38 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
}
if (readOnly) {
tempLink += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
table += '<tr><td>' + key + '</td><td><div class="block readOnlyLink">' + tempLink + '</div></td></tr>';
if (searchTable) {
table = '<div class="block readOnlyLink">' + tempLink + '</div>';
} else {
table += '<tr><td>' + key + '</td><td><div class="block readOnlyLink">' + tempLink + '</div></td></tr>';
}
} else {
table += '<tr><td>' + key + '</td><td>' + tempLink + '</td></tr>';
if (searchTable) {
table = tempLink;
} else {
table += '<tr><td>' + key + '</td><td>' + tempLink + '</td></tr>';
}
}
}
} else {
if (key == "createTime" || key == "lastAccessTime" || key == "retention") {
table += '<tr><td>' + key + '</td><td>' + new Date(valueObject[key]) + '</td></tr>';
if (key.indexOf("Time") !== -1 || key == "retention") {
if (searchTable) {
table = new Date(valueObject[key]);
} else {
table += '<tr><td>' + key + '</td><td>' + new Date(valueObject[key]) + '</td></tr>';
}
} else {
table += '<tr><td>' + key + '</td><td>' + valueObject[key] + '</td></tr>';
if (searchTable) {
if (_.isBoolean(valueObject[key])) {
table = valueObject[key].toString();
} else {
table = valueObject[key];
}
} else {
table += '<tr><td>' + key + '</td><td>' + valueObject[key] + '</td></tr>';
}
}
}
});
return table;
......@@ -328,11 +405,15 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
id = model.get('$id$').id,
terms = [];
_.keys(traits).map(function(key) {
var tagName = Utils.checkTagOrTerm(traits[key].$typeName$);
if (traits[key].$typeName$) {
var tagName = Utils.checkTagOrTerm(traits[key].$typeName$);
} else {
var tagName = Utils.checkTagOrTerm(traits[key].typeName);
}
if (tagName.term) {
terms.push({
deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-assetname="' + model.get("name") + '" data-name="' + traits[key].$typeName$ + '" data-guid="' + model.get('$id$').id + '" ></i></a>',
url: traits[key].$typeName$.split(".").join("/"),
deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-assetname="' + model.get("name") + '" data-name="' + tagName.fullName+ '" data-guid="' + model.get('$id$').id + '" ></i></a>',
url: tagName.fullName.split(".").join("/"),
name: tagName.fullName
});
}
......@@ -366,13 +447,17 @@ define(['require', 'utils/Utils', 'modules/Modal', 'utils/Messages', 'utils/Glob
popTag = "",
count = 0;
_.keys(model.get('$traits$')).map(function(key) {
var tagName = Utils.checkTagOrTerm(traits[key].$typeName$),
className = "inputTag";
if (traits[key].$typeName$) {
var tagName = Utils.checkTagOrTerm(traits[key].$typeName$);
} else {
var tagName = Utils.checkTagOrTerm(traits[key].typeName);
}
var className = "inputTag";
if (!tagName.term) {
if (count >= 1) {
popTag += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + traits[key].$typeName$ + '</span><i class="fa fa-times" data-id="delete" data-assetname="' + model.get("name") + '"data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
popTag += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + tagName.name + '</span><i class="fa fa-times" data-id="delete" data-assetname="' + model.get("name") + '"data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
} else {
atags += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + traits[key].$typeName$ + '</span><i class="fa fa-times" data-id="delete" data-assetname="' + model.get("name") + '" data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
atags += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + tagName.name + '</span><i class="fa fa-times" data-id="delete" data-assetname="' + model.get("name") + '" data-name="' + tagName.name + '" data-guid="' + model.get('$id$').id + '" ></i></a>';
}
++count;
}
......
......@@ -234,18 +234,20 @@ define(['require', 'utils/Globals'], function(require, Globals) {
}
}
Utils.checkTagOrTerm = function(value) {
var name = value.split('.');
if (name.length > 1) {
return {
term: true,
name: name[name.length - 1],
fullName: value
}
} else {
return {
term: false,
name: name[name.length - 1],
fullName: value
if (value && _.isString(value)) {
var name = value.split('.');
if (name.length > 1) {
return {
term: true,
name: name[name.length - 1],
fullName: value
}
} else {
return {
term: false,
name: name[name.length - 1],
fullName: value
}
}
}
}
......
......@@ -49,7 +49,7 @@ define(['require',
initialize: function(options) {
_.extend(this, _.pick(options, 'globalVent', 'collection'));
this.collectionObject = this.collection.toJSON();
this.model = new this.collection.model();
this.entityModel = new this.collection.model();
},
bindEvents: function() {},
onRender: function() {
......
......@@ -24,9 +24,10 @@ define(['require',
'utils/Utils',
'utils/Globals',
'collection/VSearchList',
'models/VCommon',
'utils/CommonViewFunction',
'utils/Messages'
], function(require, Backbone, SearchResultLayoutViewTmpl, Modal, VEntity, Utils, Globals, VSearchList, CommonViewFunction, Messages) {
], function(require, Backbone, SearchResultLayoutViewTmpl, Modal, VEntity, Utils, Globals, VSearchList, VCommon, CommonViewFunction, Messages) {
'use strict';
var SearchResultLayoutView = Backbone.Marionette.LayoutView.extend(
......@@ -75,7 +76,6 @@ define(['require',
trigger: true
});
}
}
};
events["click " + this.ui.addTag] = 'addTagModalView';
......@@ -207,7 +207,7 @@ define(['require',
}
that.renderTableLayoutView();
var resultData = that.searchCollection.fullCollection.length + ' results for <b>' + that.searchCollection.queryParams.query + '</b>'
var multiAssignData = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o">' + " " + 'Assign Term</i></a>'
var multiAssignData = '<a href="javascript:void(0)" class="inputAssignTag multiSelect" style="display:none" data-id="addTerm"><i class="fa fa-folder-o"></i>' + " " + 'Assign Term</a>'
that.$('.searchResult').html(resultData + multiAssignData);
},
silent: true
......@@ -273,111 +273,166 @@ define(['require',
if (this.searchCollection.responseData) {
if (responseData.dataType) {
if (responseData.dataType.attributeDefinitions.length == 2 && responseData.dataType.attributeDefinitions[1].name == "instanceInfo") {
return this.getFixedColumn();
return this.getFixedFullTextColumn();
} else {
if (Globals.taxonomy) {
col['Check'] = {
name: "selected",
label: "",
cell: "select-row",
headerCell: "select-all",
position: 1
};
}
var modelJSON = this.searchCollection.toJSON()[0];
_.keys(modelJSON).map(function(key) {
if (key.indexOf("$") == -1 && typeof modelJSON[key] != "object") {
if (typeof modelJSON[key] == "string" || typeof modelJSON[key] == "number") {
if (typeof modelJSON[key] == "number" && key != "createTime") {
return;
if (responseData.dataType.typeName.indexOf('_temp') == -1) {
return this.getFixedDslColumn();
} else {
var idFound = false;
_.each(this.searchCollection.models, function(model) {
var modelJSON = model.toJSON();
var guid = "";
_.each(modelJSON, function(val, key) {
if (_.isObject(val) && val.id) {
model.set('id', val.id);
guid = val.id;
} else if (key === "id") {
model.set('id', val);
guid = val;
}
if (key == "name" || key == "owner" || key == "description") {
col[key] = {
cell: (key == "name") ? ("Html") : ("String"),
editable: false,
sortable: false,
orderable: true,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
if (rawValue == null) {
return null;
}
if (model.get('createTime') == rawValue) {
return new Date(rawValue);
}
if (model.get('name') == rawValue) {
var nameHtml = "";
if (model.get('$id$')) {
nameHtml = '<a href="#!/detailPage/' + model.get('$id$').id + '">' + rawValue + '</a>';
} else {
nameHtml = '<a>' + rawValue + '</a>';
}
if (Globals.entityStateReadOnly[model.get('$id$').state]) {
nameHtml += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
return '<div class="readOnly readOnlyLink">' + nameHtml + '</div>';
} else {
return nameHtml;
}
} else {
return rawValue;
}
});
if (guid.length) {
idFound = true;
model.getEntity(guid, {
async: false,
success: function(data) {
if (data.definition) {
if (data.definition.id && data.definition.values) {
that.searchCollection.get(data.definition.id).set(data.definition.values);
that.searchCollection.get(data.definition.id).set('$id$', data.definition.id);
that.searchCollection.get(data.definition.id).set('$traits$', data.definition.traits);
}
})
};
}
}
},
error: function(error, data, status) {},
complete: function() {}
});
}
});
if (idFound) {
return this.getFixedDslColumn();
} else {
return this.getDaynamicColumn();
}
});
col['tag'] = {
label: "Tags",
cell: "Html",
editable: false,
sortable: false,
orderable: true,
className: 'searchTag',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
if (Globals.entityStateReadOnly[model.get('$id$').state]) {
return '<div class="readOnly">' + CommonViewFunction.tagForTable(model); + '</div>';
} else {
return CommonViewFunction.tagForTable(model);
}
}
})
};
if (Globals.taxonomy) {
col['terms'] = {
label: "Terms",
cell: "Html",
editable: false,
sortable: false,
orderable: true,
className: 'searchTerm',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model);
if (returnObject.object) {
that.bradCrumbList.push(returnObject.object);
}
if (Globals.entityStateReadOnly[model.get('$id$').state]) {
return '<div class="readOnly">' + returnObject.html + '</div>';
} else {
return returnObject.html;
}
}
})
};
}
that.checkTableFetch();
return this.searchCollection.constructor.getTableCols(col, this.searchCollection);
}
} else {
return this.getFixedColumn();
return this.getFixedFullTextColumn();
}
}
},
getFixedColumn: function() {
getDaynamicColumn: function() {
var that = this,
modelJSON = "",
col = {};
modelJSON = this.searchCollection.toJSON()[0];
_.keys(modelJSON).map(function(key) {
if (key.indexOf("$") == -1) {
col[key] = {
cell: 'Html',
editable: false,
sortable: false,
orderable: true,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
return CommonViewFunction.propertyTable({ 'notUsedKey': rawValue }, that, true);
}
})
};
}
});
that.checkTableFetch();
return this.searchCollection.constructor.getTableCols(col, this.searchCollection);
},
getFixedDslColumn: function() {
var that = this,
col = {};
col['name'] = {
label: "Name",
cell: "html",
editable: false,
sortable: false,
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
var nameHtml = "";
if (model.get('$id$')) {
nameHtml = '<a href="#!/detailPage/' + model.get('$id$').id + '">' + rawValue + '</a>';
} else {
nameHtml = '<a>' + rawValue + '</a>';
}
if (model.get('$id$') && model.get('$id$').state && Globals.entityStateReadOnly[model.get('$id$').state]) {
nameHtml += '<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>';
return '<div class="readOnly readOnlyLink">' + nameHtml + '</div>';
} else {
return nameHtml;
}
}
})
}
col['description'] = {
label: "Description",
cell: "String",
editable: false,
sortable: false
}
col['owner'] = {
label: "Owner",
cell: "String",
editable: false,
sortable: false
}
col['tag'] = {
label: "Tags",
cell: "Html",
editable: false,
sortable: false,
orderable: true,
className: 'searchTag',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
if (model.get('$id$') && model.get('$id$').state && Globals.entityStateReadOnly[model.get('$id$').state]) {
return '<div class="readOnly">' + CommonViewFunction.tagForTable(model); + '</div>';
} else {
return CommonViewFunction.tagForTable(model);
}
}
})
};
if (Globals.taxonomy) {
col['Check'] = {
name: "selected",
label: "",
cell: "select-row",
headerCell: "select-all",
position: 1
};
col['terms'] = {
label: "Terms",
cell: "Html",
editable: false,
sortable: false,
orderable: true,
className: 'searchTerm',
formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
fromRaw: function(rawValue, model) {
var returnObject = CommonViewFunction.termTableBreadcrumbMaker(model);
if (returnObject.object) {
that.bradCrumbList.push(returnObject.object);
}
if (model.get('$id$') && model.get('$id$').state && Globals.entityStateReadOnly[model.get('$id$').state]) {
return '<div class="readOnly">' + returnObject.html + '</div>';
} else {
return returnObject.html;
}
}
})
};
}
that.checkTableFetch();
return this.searchCollection.constructor.getTableCols(col, this.searchCollection);
},
getFixedFullTextColumn: function() {
var that = this;
return this.searchCollection.constructor.getTableCols({
instanceInfo: {
......@@ -406,56 +461,14 @@ define(['require',
var modelObject = model.toJSON();
if (modelObject.$typeName$ && modelObject.instanceInfo) {
var guid = model.toJSON().instanceInfo.guid;
++that.fetchList;
model.getEntity(guid, {
success: function(data) {
if (data.definition) {
if (data.definition.id && data.definition.id.state) {
if (Globals.entityStateReadOnly[data.definition.id.state]) {
that.$('td a[data-id="' + guid + '"]').parent().addClass('readOnly readOnlyLink');
that.$('td a[data-id="' + guid + '"]').parent().append('<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>');
}
}
if (data.definition.values && data.definition.values.name) {
return that.$('td a[data-id="' + guid + '"]').html(data.definition.values.name);
} else {
return that.$('td a[data-id="' + guid + '"]').html(data.definition.id.id);
}
}
},
error: function(error, data, status) {},
complete: function() {
--that.fetchList;
that.checkTableFetch();
}
});
return '<div><a href="#!/detailPage/' + guid + '" data-id="' + guid + '"></a></div>';
var json = model.toJSON();
json['id'] = guid;
return CommonViewFunction.propertyTable({ 'notUsedKey': json }, that, true);
} else if (!modelObject.$typeName$) {
var guid = model.toJSON().guid;
++that.fetchList;
model.getEntity(guid, {
success: function(data) {
if (data.definition) {
if (data.definition.id && data.definition.id.state) {
if (Globals.entityStateReadOnly[data.definition.id.state]) {
that.$('td a[data-id="' + guid + '"]').parent().addClass('readOnly readOnlyLink');
that.$('td a[data-id="' + guid + '"]').parent().append('<button title="Deleted" class="btn btn-atlasAction btn-atlas deleteBtn"><i class="fa fa-trash"></i></button>');
}
}
if (data.definition.values && data.definition.values.name) {
return that.$('td a[data-id="' + guid + '"]').html(data.definition.values.name);
} else {
return that.$('td a[data-id="' + guid + '"]').html(data.definition.id.id);
}
}
},
error: function(error, data, status) {},
complete: function() {
--that.fetchList;
that.checkTableFetch();
}
});
return '<div><a href="#!/detailPage/' + guid + '" data-id="' + guid + '"></a></div>';
var json = model.toJSON();
json['id'] = guid;
return CommonViewFunction.propertyTable({ 'notUsedKey': json }, that, true);
}
}
})
......
......@@ -6,6 +6,7 @@ INCOMPATIBLE CHANGES:
ALL CHANGES:
ATLAS-971 UI not displaying results for this query - Eg: "hive_table as t where qualifiedName = 'default.input@cl1' select t" (kevalbhatt18 via shwethags)
ATLAS-1010 Atlas allows recreation of tags with same name (shwethags)
ATLAS-990 Hive Import metadata script fails with auth exception (nixonrodrigues via shwethags)
ATLAS-998 determine HA mode from property atlas.server.ids, instead of atlas.server.ha.enabled (madhan.neethiraj via shwethags)
......
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