install_component.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. var App = require('app');
  2. App.InstallComponent = Em.Mixin.create({
  3. installHostComponentCall: function (hostName, component) {
  4. var self = this,
  5. componentName = component.get('componentName'),
  6. displayName = component.get('displayName');
  7. this.updateAndCreateServiceComponent(componentName).done(function () {
  8. return App.ajax.send({
  9. name: 'host.host_component.add_new_component',
  10. sender: self,
  11. data: {
  12. hostName: hostName,
  13. component: component,
  14. data: JSON.stringify({
  15. RequestInfo: {
  16. "context": Em.I18n.t('requestInfo.installHostComponent') + " " + displayName
  17. },
  18. Body: {
  19. host_components: [
  20. {
  21. HostRoles: {
  22. component_name: componentName
  23. }
  24. }
  25. ]
  26. }
  27. })
  28. },
  29. success: 'addNewComponentSuccessCallback',
  30. error: 'ajaxErrorCallback'
  31. });
  32. });
  33. },
  34. /**
  35. * Success callback for add host component request
  36. * @param {object} data
  37. * @param {object} opt
  38. * @param {object} params
  39. * @return {$.ajax}
  40. * @method addNewComponentSuccessCallback
  41. */
  42. addNewComponentSuccessCallback: function (data, opt, params) {
  43. return App.ajax.send({
  44. name: 'common.host.host_component.update',
  45. sender: App.router.get('mainHostDetailsController'),
  46. data: {
  47. hostName: params.hostName,
  48. componentName: params.component.get('componentName'),
  49. serviceName: params.component.get('serviceName'),
  50. component: params.component,
  51. "context": Em.I18n.t('requestInfo.installNewHostComponent') + " " + params.component.get('displayName'),
  52. HostRoles: {
  53. state: 'INSTALLED'
  54. },
  55. urlParams: "HostRoles/state=INIT"
  56. },
  57. success: 'installNewComponentSuccessCallback',
  58. error: 'ajaxErrorCallback'
  59. });
  60. },
  61. /**
  62. * Default error-callback for ajax-requests in current page
  63. * @param {object} request
  64. * @param {object} ajaxOptions
  65. * @param {string} error
  66. * @param {object} opt
  67. * @param {object} params
  68. * @method ajaxErrorCallback
  69. */
  70. ajaxErrorCallback: function (request, ajaxOptions, error, opt, params) {
  71. App.ajax.defaultErrorHandler(request, opt.url, opt.method);
  72. },
  73. /**
  74. *
  75. * @param componentName
  76. * @returns {*}
  77. */
  78. updateAndCreateServiceComponent: function (componentName) {
  79. var self = this;
  80. var dfd = $.Deferred();
  81. var updater = App.router.get('updateController');
  82. updater.updateComponentsState(function () {
  83. updater.updateServiceMetric(function () {
  84. self.createServiceComponent(componentName, dfd);
  85. });
  86. });
  87. return dfd.promise();
  88. },
  89. /**
  90. *
  91. * @param componentName
  92. * @param dfd
  93. * @returns {*}
  94. */
  95. createServiceComponent: function (componentName, dfd) {
  96. var allServiceComponents = [];
  97. var services = App.Service.find().mapProperty('serviceName');
  98. services.forEach(function (_service) {
  99. var _serviceComponents = App.Service.find(_service).get('serviceComponents');
  100. allServiceComponents = allServiceComponents.concat(_serviceComponents);
  101. }, this);
  102. if (allServiceComponents.contains(componentName)) {
  103. dfd.resolve();
  104. } else {
  105. return App.ajax.send({
  106. name: 'common.create_component',
  107. sender: this,
  108. data: {
  109. componentName: componentName,
  110. serviceName: App.StackServiceComponent.find().findProperty('componentName', componentName).get('serviceName')
  111. }
  112. }).complete(function () {
  113. dfd.resolve();
  114. });
  115. }
  116. }
  117. });