restoreDeployedStatePostProcess.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /*
  3. *
  4. * Licensed to the Apache Software Foundation (ASF) under one
  5. * or more contributor license agreements. See the NOTICE file
  6. * distributed with this work for additional information
  7. * regarding copyright ownership. The ASF licenses this file
  8. * to you under the Apache License, Version 2.0 (the
  9. * "License"); you may not use this file except in compliance
  10. * with the License. You may obtain a copy of the License at
  11. *
  12. * http://www.apache.org/licenses/LICENSE-2.0
  13. *
  14. * Unless required by applicable law or agreed to in writing,
  15. * software distributed under the License is distributed on an
  16. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  17. * KIND, either express or implied. See the License for the
  18. * specific language governing permissions and limitations
  19. * under the License.
  20. *
  21. */
  22. include_once '../util/Logger.php';
  23. include_once '../conf/Config.inc';
  24. include_once 'localDirs.php';
  25. include_once "../util/lock.php";
  26. include_once '../db/HMCDBAccessor.php';
  27. include_once '../util/clusterState.php';
  28. include_once 'commandUtils.php';
  29. include_once "../util/HMCTxnUtils.php";
  30. // common post process function for manage services, post deploy add nodes
  31. // Updates state back to DEPLOYED and associated success/failure
  32. function restoreDeployedStatePostProcess($clusterName, $user, $txnId, $progress)
  33. {
  34. $logger = new HMCLogger("ManageServicesPostProcess");
  35. $dbAccessor = new HMCDBAccessor($GLOBALS["DB_PATH"]);
  36. $result = 0;
  37. $error = "";
  38. /* Safe fallbacks, in case the call to getClusterState() below fails. */
  39. $state = "DEPLOYED";
  40. $displayName = "Deployed successfully";
  41. $context = array (
  42. 'status' => TRUE
  43. );
  44. LockAcquire(HMC_CLUSTER_STATE_LOCK_FILE_SUFFIX);
  45. $clusterStateResponse = $dbAccessor->getClusterState($clusterName);
  46. LockRelease(HMC_CLUSTER_STATE_LOCK_FILE_SUFFIX);
  47. if ($clusterStateResponse['result'] != 0) {
  48. $logger->log_error("Failed to fetch cluster state (for restoration of stashed state)");
  49. $result = $clusterStateResponse["result"];
  50. $error = $clusterStateResponse["error"];
  51. }
  52. else {
  53. $clusterState = json_decode($clusterStateResponse['state'], true);
  54. $stashedDeployState = $clusterState["context"]["stashedDeployState"];
  55. /* Restore the cluster's state to that stashed at the time of beginning the
  56. * service management.
  57. */
  58. $state = $stashedDeployState["state"];
  59. $displayName = $stashedDeployState["displayName"];
  60. $context = $stashedDeployState["context"];
  61. }
  62. // update state of the cluster
  63. LockAcquire(HMC_CLUSTER_STATE_LOCK_FILE_SUFFIX);
  64. $retval = updateClusterState($clusterName, $state, $displayName, $context);
  65. LockRelease(HMC_CLUSTER_STATE_LOCK_FILE_SUFFIX);
  66. if ($retval['result'] != 0) {
  67. $logger->log_error("Update cluster state failed");
  68. $result = $retval['result'];
  69. $error = $retval['error'];
  70. }
  71. return (array("result" => $result, "error" => $error));
  72. }
  73. ?>