yarn-container-log.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. import Ember from 'ember';
  19. import Constants from 'yarn-ui/constants';
  20. import AbstractRoute from './abstract';
  21. export default AbstractRoute.extend({
  22. model(param) {
  23. var id = param.node_addr + Constants.PARAM_SEPARATOR + param.container_id +
  24. Constants.PARAM_SEPARATOR + param.filename;
  25. return Ember.RSVP.hash({
  26. containerLog: this.store.findRecord('yarn-container-log', id),
  27. containerInfo: { id: param.container_id },
  28. nodeInfo: { id: param.node_id, addr: param.node_addr }
  29. }).then(function(hash) {
  30. // Just return as its success.
  31. return hash;
  32. }, function(reason) {
  33. if (reason.errors && reason.errors[0]) {
  34. // This means HTTP error response was sent by adapter.
  35. return reason;
  36. } else {
  37. // Assume empty response received from server.
  38. return { nodeInfo: { id: param.node_id, addr: param.node_addr },
  39. containerInfo: { id: param.container_id },
  40. containerLog: { logs: "", containerID: param.container_id,
  41. logFileName: param.filename}};
  42. }
  43. });
  44. },
  45. afterModel(model) {
  46. // Handle errors and redirect if promise is rejected.
  47. if (model.errors && model.errors[0]) {
  48. if (parseInt(model.errors[0].status) === 404) {
  49. this.replaceWith('/notfound');
  50. } else {
  51. this.replaceWith('/error');
  52. }
  53. }
  54. },
  55. unloadAll() {
  56. this.store.unloadAll('yarn-container-log');
  57. }
  58. });