IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
4.5KB

  1. import { h, Component } from 'preact';
  2. import WBTable from 'wb-table';
  3. import makeArvadosRequest from 'make-arvados-request';
  4. import arvadosTypeName from 'arvados-type-name';
  5. import arvadosObjectName from 'arvados-object-name';
  6. import urlForObject from 'url-for-object';
  7. import wbFormatDate from 'wb-format-date';
  8. import WBNameAndUuid from 'wb-name-and-uuid';
  9. import WBAccordion from 'wb-accordion';
  10. import WBJsonViewer from 'wb-json-viewer';
  11. class WBContainerRequestFields extends Component {
  12. componentDidMount() {
  13. this.prepareRows();
  14. }
  15. componentWillReceiveProps(nextProps) {
  16. this.props = nextProps;
  17. this.prepareRows();
  18. }
  19. prepareRows() {
  20. let { uuid, app } = this.props;
  21. let { arvHost, arvToken } = app.state;
  22. let item;
  23. let prom = makeArvadosRequest(arvHost, arvToken,
  24. '/arvados/v1/container_requests/' + uuid);
  25. prom = prom.then(xhr => (item = xhr.response));
  26. prom = prom.then(() => {
  27. let rows = [
  28. [ 'Name', item.name ],
  29. [ 'Description', item.description || (<i>{ String(item.description) }</i>) ],
  30. [ 'Properties', (
  31. <WBAccordion names={ ['Properties'] } cardHeaderClass="card-header-sm">
  32. <WBJsonViewer app={ app } value={ item.properties } />
  33. </WBAccordion>
  34. ) ],
  35. [ 'State', item.state ],
  36. [ 'Requesting Container', (
  37. <WBNameAndUuid app={ app } uuid={ item.requesting_container_uuid } />
  38. ) ],
  39. [ 'Container', (
  40. <WBNameAndUuid app={ app } uuid={ item.container_uuid } />
  41. ) ],
  42. [ 'Container Count Max', item.container_count_max ],
  43. [ 'Mounts', (
  44. <WBAccordion names={ Object.keys(item.mounts) }
  45. cardHeaderClass="card-header-sm">
  46. { Object.keys(item.mounts).map(k => (
  47. <WBJsonViewer app={ app } value={ item.mounts[k] } />
  48. )) }
  49. </WBAccordion>
  50. ) ],
  51. [ 'Runtime Constraints', (
  52. <WBAccordion names={ ['Runtime Constraints'] }
  53. cardHeaderClass="card-header-sm">
  54. <WBJsonViewer app={ app } value={ item.runtime_constraints } />
  55. </WBAccordion>
  56. ) ],
  57. [ 'Scheduling Parameters', (
  58. <WBAccordion names={ ['Scheduling Parameters'] }
  59. cardHeaderClass="card-header-sm">
  60. <WBJsonViewer app={ app } value={ item.scheduling_parameters } />
  61. </WBAccordion>
  62. ) ],
  63. [ 'Container Image', (
  64. <WBNameAndUuid app={ app } uuid={ item.container_image } />
  65. ) ],
  66. [ 'Environment', (
  67. <WBAccordion names={ ['Environment'] }
  68. cardHeaderClass="card-header-sm">
  69. <WBJsonViewer app={ app } value={ item.environment } />
  70. </WBAccordion>
  71. ) ],
  72. [ 'Working Directory', item.cwd ],
  73. [ 'Command', (
  74. <WBJsonViewer app={ app } value={ item.command } />
  75. ) ],
  76. [ 'Output Path', item.output_path ],
  77. [ 'Output Name', item.output_name ],
  78. [ 'Output TTL', item.output_ttl ],
  79. [ 'Priority', item.priority ],
  80. [ 'Expires At', wbFormatDate(item.expires_at) ],
  81. [ 'Use Existing', String(item.use_existing) ],
  82. [ 'Log', (
  83. <WBNameAndUuid app={ app } uuid={ item.log_uuid } />
  84. ) ],
  85. [ 'Output', (
  86. <WBNameAndUuid app={ app } uuid={ item.output_uuid } />
  87. ) ],
  88. [ 'Filters', (
  89. item.filters ? (<WBJsonViewer app={ app } value={ item.filters } />) : (<i>{ String(item.filters) }</i>)
  90. ) ],
  91. [ 'Runtime Token', item.runtime_token || (<i>{ String(item.runtime_token) }</i>) ],
  92. [ 'Runtime User', (
  93. <WBNameAndUuid app={ app } uuid={ item.runtime_user } />
  94. ) ],
  95. [ 'Runtime Auth Scopes', (
  96. item.runtime_auth_scopes ? (
  97. <WBJsonViewer app={ app } value={ item.runtime_auth_scopes } />
  98. ) : (
  99. <i>{ String(item.runtime_auth_scopes) }</i>
  100. )
  101. ) ]
  102. ];
  103. rows = rows.map(r => [r[0], r[1] ? r[1] : (<i>{ String(r[1]) }</i>)]);
  104. this.setState({ 'rows': rows });
  105. });
  106. }
  107. render({}, { rows }) {
  108. return (
  109. rows ? (
  110. <WBTable columns={ [ "Name", "Value" ] }
  111. headerClasses={ [ "col-sm-2", "col-sm-4" ] }
  112. rows={ rows }
  113. verticalHeader={ true } />
  114. ) : (
  115. <div>Loading...</div>
  116. )
  117. );
  118. }
  119. }
  120. export default WBContainerRequestFields;