Merge "Add tests to Crypto module"
authorJames Forsyth <jf2512@att.com>
Wed, 19 Sep 2018 15:59:53 +0000 (15:59 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 19 Sep 2018 15:59:53 +0000 (15:59 +0000)
src/app/tierSupport/TierSupportActions.js

index afb37be..08e4e30 100644 (file)
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+import {tierSupportActionTypes,
+  TS_BACKEND_SEARCH_SELECTED_NODE_URL} from 'app/tierSupport/TierSupportConstants.js';
 import {
-  tierSupportActionTypes
-} from 'app/tierSupport/TierSupportConstants.js';
+  POST,
+  POST_HEADER,
+  ERROR_RETRIEVING_DATA,
+  NO_RESULTS_FOUND
+} from 'app/networking/NetworkConstants.js';
+import networkCall from 'app/networking/NetworkCalls.js';
 import {
   getSetGlobalMessageEvent,
   getClearGlobalMessageEvent
 } from 'app/globalInlineMessageBar/GlobalInlineMessageBarActions.js';
+import {
+  STATUS_CODE_204_NO_CONTENT,
+  STATUS_CODE_3XX_REDIRECTION,
+  STATUS_CODE_5XX_SERVER_ERROR
+} from 'utils/GlobalConstants.js';
 
 function createOnNodeDetailsChangeEvent(newDetails) {
   return {
@@ -65,12 +76,118 @@ export function onNodeMenuChange(selectedMenu) {
   };
 }
 
+function createNodeDetailsFoundEvent(nodeDetails) {
+  return {
+    type: tierSupportActionTypes.TS_NODE_SEARCH_RESULTS,
+    data: nodeDetails
+  };
+}
+
+function createSelectedNodeDetails(nodeDetails) {
+  var selectedNodeDetail;
+  for(let i = 0; i < nodeDetails.nodes.length; i++) {
+    if(nodeDetails.nodes[i].nodeMeta.className === 'selectedSearchedNodeClass') {
+      selectedNodeDetail = nodeDetails.nodes[i];
+      break;
+    }
+  }
+  return {
+    type: tierSupportActionTypes.TS_GRAPH_NODE_SELECTED,
+    data: selectedNodeDetail
+  };
+}
+
+function noNodeDetailsFoundEvent(errorText) {
+  return {
+    type: tierSupportActionTypes.TS_NODE_SEARCH_NO_RESULTS,
+    data: {errorMsg: errorText}
+  };
+}
+
+function getInvalidSelectedNodeSearchEvent(errorText) {
+  return {
+    type: tierSupportActionTypes.TIER_SUPPORT_NETWORK_ERROR,
+    data: {value: errorText, errorMsg: ERROR_RETRIEVING_DATA}
+  };
+}
+
 export function clearVIData() {
   return {
     type: tierSupportActionTypes.TIER_SUPPORT_CLEAR_DATA
   };
 }
 
+function setBusyFeedback(){
+  return {
+    type: tierSupportActionTypes.TIER_SUPPORT_ACTIVATE_BUSY_FEEDBACK
+  };
+}
+
+function disableBusyFeedback(){
+  return {
+    type: tierSupportActionTypes.TIER_SUPPORT_DISABLE_BUSY_FEEDBACK
+  };
+}
+
+export function fetchSelectedNodeElement(fetchRequestCallback) {
+  return dispatch => {
+    return fetchRequestCallback().then(
+      (response) => {
+        if (response.status === STATUS_CODE_204_NO_CONTENT || response.status >= STATUS_CODE_3XX_REDIRECTION) {
+          return Promise.reject(new Error(response.status));
+        } else {
+          // assume 200 status
+          return response.json();
+        }
+      }
+    ).then(
+      (responseJson) => {
+        if (responseJson.nodes.length > 0) {
+          dispatch(createNodeDetailsFoundEvent(responseJson));
+          dispatch(createSelectedNodeDetails(responseJson));
+        } else {
+          dispatch(noNodeDetailsFoundEvent(NO_RESULTS_FOUND));
+        }
+      }
+    ).then(
+      () => {
+        dispatch(disableBusyFeedback());
+      }
+    ).catch(
+      (errorCode) => {
+        dispatch(disableBusyFeedback());
+        if (errorCode.message >= STATUS_CODE_5XX_SERVER_ERROR) {
+          dispatch(getInvalidSelectedNodeSearchEvent(ERROR_RETRIEVING_DATA));
+        } else {
+          // TODO - assuming 204 status, but should include additional
+          // statuses in the future with proper messaging in order to return
+          // better messaging
+          dispatch(noNodeDetailsFoundEvent(NO_RESULTS_FOUND));
+        }
+      }
+    );
+  };
+}
+
+export function querySelectedNodeElement(
+  searchHashId, selectedNodeFetchRequest) {
+  let payload = {
+    hashId: searchHashId
+  };
+
+  if (selectedNodeFetchRequest === undefined) {
+    let postBody = JSON.stringify(payload);
+    selectedNodeFetchRequest =
+      () => networkCall.fetchRequestObj(TS_BACKEND_SEARCH_SELECTED_NODE_URL, POST,
+        POST_HEADER, postBody);
+  }
+
+  return dispatch => {
+    dispatch(setBusyFeedback());
+    dispatch(fetchSelectedNodeElement(selectedNodeFetchRequest));
+  };
+}
+
 export function setNotificationText(msgText, msgSeverity) {
   if (msgText.length > 0) {
     return dispatch => {