blob: 8bcbcab032188f9dfe04b0fcafaf426d1ee24634 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/* global define, module, require, exports */
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery'], function ($) {
return (nf.ClusterSummary = factory($));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.ClusterSummary =
factory(require('jquery')));
} else {
nf.ClusterSummary = factory(root.$);
}
}(this, function ($) {
var knownConnectionState = false;
var clustered = false;
var connectedToCluster = false;
var connectedStateChanged = false;
var config = {
urls: {
clusterSummary: '../nifi-api/flow/cluster/summary'
}
};
return {
/**
* Loads the flow configuration and updated the cluster state.
*
* @returns xhr
*/
loadClusterSummary: function () {
return $.ajax({
type: 'GET',
url: config.urls.clusterSummary,
dataType: 'json'
}).done(function (clusterSummaryResult) {
var clusterSummaryResponse = clusterSummaryResult;
var clusterSummary = clusterSummaryResponse.clusterSummary;
// see if the connected state changes
if (knownConnectionState === true) {
if (connectedToCluster !== clusterSummary.connectedToCluster) {
connectedStateChanged = true;
}
} else {
// if the state hasn't changed, but the node is disconnected treat it
// as the state changing
if (clusterSummary.clustered && !clusterSummary.connectedToCluster) {
connectedStateChanged = true;
}
}
// establish the current cluster state
clustered = clusterSummary.clustered;
connectedToCluster = clusterSummary.connectedToCluster;
// record that we have a known connection state
knownConnectionState = true;
});
},
/**
* Return whether this instance of NiFi is clustered.
*
* @returns {Boolean}
*/
isClustered: function () {
return clustered === true;
},
/**
* Return whether this instance is connected to a cluster.
*
* @returns {boolean}
*/
isConnectedToCluster: function () {
return connectedToCluster === true;
},
/**
* Returns whether the connected state has changed since the last time
* didConnectedStateChange was invoked.
*/
didConnectedStateChange: function () {
var stateChanged = connectedStateChanged;
connectedStateChanged = false;
return stateChanged;
}
};
}));