|
@@ -8,106 +8,111 @@ import wbFormatDate from 'wb-format-date'; |
|
|
import WBNameAndUuid from 'wb-name-and-uuid';
|
|
|
import WBNameAndUuid from 'wb-name-and-uuid';
|
|
|
import WBAccordion from 'wb-accordion';
|
|
|
import WBAccordion from 'wb-accordion';
|
|
|
import WBJsonViewer from 'wb-json-viewer';
|
|
|
import WBJsonViewer from 'wb-json-viewer';
|
|
|
|
|
|
import wbUpdateField from 'wb-update-field';
|
|
|
|
|
|
import WBJsonEditor from 'wb-json-editor';
|
|
|
|
|
|
|
|
|
class WBContainerRequestFields extends Component {
|
|
|
class WBContainerRequestFields extends Component {
|
|
|
componentDidMount() {
|
|
|
componentDidMount() {
|
|
|
this.prepareRows();
|
|
|
|
|
|
|
|
|
this.fetchData();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
this.props = nextProps;
|
|
|
this.props = nextProps;
|
|
|
this.prepareRows();
|
|
|
|
|
|
|
|
|
this.fetchData();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
prepareRows() {
|
|
|
|
|
|
|
|
|
prepareRows(item) {
|
|
|
|
|
|
const { app } = this.props;
|
|
|
|
|
|
const { arvHost, arvToken } = app.state;
|
|
|
|
|
|
|
|
|
|
|
|
let rows = [
|
|
|
|
|
|
[ 'Name', item.name ],
|
|
|
|
|
|
[ 'Description', item.description || (<i>{ String(item.description) }</i>) ],
|
|
|
|
|
|
[ 'Properties', (
|
|
|
|
|
|
<WBJsonEditor name="Properties" app={ app } value={ item.properties }
|
|
|
|
|
|
onChange={ value => wbUpdateField(arvHost, arvToken, item.uuid, 'properties', value)
|
|
|
|
|
|
.then(() => { item.properties = value; this.prepareRows(item); }) } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'State', item.state ],
|
|
|
|
|
|
[ 'Requesting Container', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.requesting_container_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Container', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.container_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Container Count Max', item.container_count_max ],
|
|
|
|
|
|
[ 'Mounts', (
|
|
|
|
|
|
<WBAccordion names={ Object.keys(item.mounts) }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
{ Object.keys(item.mounts).map(k => (
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.mounts[k] } />
|
|
|
|
|
|
)) }
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Runtime Constraints', (
|
|
|
|
|
|
<WBAccordion names={ ['Runtime Constraints'] }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.runtime_constraints } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Scheduling Parameters', (
|
|
|
|
|
|
<WBAccordion names={ ['Scheduling Parameters'] }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.scheduling_parameters } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Container Image', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.container_image } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Environment', (
|
|
|
|
|
|
<WBAccordion names={ ['Environment'] }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.environment } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Working Directory', item.cwd ],
|
|
|
|
|
|
[ 'Command', (
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.command } pretty={ false } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Output Path', item.output_path ],
|
|
|
|
|
|
[ 'Output Name', item.output_name ],
|
|
|
|
|
|
[ 'Output TTL', item.output_ttl ],
|
|
|
|
|
|
[ 'Priority', item.priority ],
|
|
|
|
|
|
[ 'Expires At', wbFormatDate(item.expires_at) ],
|
|
|
|
|
|
[ 'Use Existing', String(item.use_existing) ],
|
|
|
|
|
|
[ 'Log', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.log_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Output', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.output_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Filters', (
|
|
|
|
|
|
item.filters ? (<WBJsonViewer app={ app } value={ item.filters } />) : (<i>{ String(item.filters) }</i>)
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Runtime Token', item.runtime_token || (<i>{ String(item.runtime_token) }</i>) ],
|
|
|
|
|
|
[ 'Runtime User', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.runtime_user } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Runtime Auth Scopes', (
|
|
|
|
|
|
item.runtime_auth_scopes ? (
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.runtime_auth_scopes } />
|
|
|
|
|
|
) : (
|
|
|
|
|
|
<i>{ String(item.runtime_auth_scopes) }</i>
|
|
|
|
|
|
)
|
|
|
|
|
|
) ]
|
|
|
|
|
|
];
|
|
|
|
|
|
rows = rows.map(r => [r[0], r[1] ? r[1] : (<i>{ String(r[1]) }</i>)]);
|
|
|
|
|
|
this.setState({ rows });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fetchData() {
|
|
|
let { uuid, app } = this.props;
|
|
|
let { uuid, app } = this.props;
|
|
|
let { arvHost, arvToken } = app.state;
|
|
|
let { arvHost, arvToken } = app.state;
|
|
|
|
|
|
|
|
|
let item;
|
|
|
let item;
|
|
|
let prom = makeArvadosRequest(arvHost, arvToken,
|
|
|
let prom = makeArvadosRequest(arvHost, arvToken,
|
|
|
'/arvados/v1/container_requests/' + uuid);
|
|
|
'/arvados/v1/container_requests/' + uuid);
|
|
|
prom = prom.then(xhr => (item = xhr.response));
|
|
|
|
|
|
|
|
|
|
|
|
prom = prom.then(() => {
|
|
|
|
|
|
let rows = [
|
|
|
|
|
|
[ 'Name', item.name ],
|
|
|
|
|
|
[ 'Description', item.description || (<i>{ String(item.description) }</i>) ],
|
|
|
|
|
|
[ 'Properties', (
|
|
|
|
|
|
<WBAccordion names={ ['Properties'] } cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.properties } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'State', item.state ],
|
|
|
|
|
|
[ 'Requesting Container', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.requesting_container_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Container', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.container_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Container Count Max', item.container_count_max ],
|
|
|
|
|
|
[ 'Mounts', (
|
|
|
|
|
|
<WBAccordion names={ Object.keys(item.mounts) }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
{ Object.keys(item.mounts).map(k => (
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.mounts[k] } />
|
|
|
|
|
|
)) }
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Runtime Constraints', (
|
|
|
|
|
|
<WBAccordion names={ ['Runtime Constraints'] }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.runtime_constraints } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Scheduling Parameters', (
|
|
|
|
|
|
<WBAccordion names={ ['Scheduling Parameters'] }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.scheduling_parameters } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Container Image', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.container_image } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Environment', (
|
|
|
|
|
|
<WBAccordion names={ ['Environment'] }
|
|
|
|
|
|
cardHeaderClass="card-header-sm">
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.environment } />
|
|
|
|
|
|
</WBAccordion>
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Working Directory', item.cwd ],
|
|
|
|
|
|
[ 'Command', (
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.command } pretty={ false } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Output Path', item.output_path ],
|
|
|
|
|
|
[ 'Output Name', item.output_name ],
|
|
|
|
|
|
[ 'Output TTL', item.output_ttl ],
|
|
|
|
|
|
[ 'Priority', item.priority ],
|
|
|
|
|
|
[ 'Expires At', wbFormatDate(item.expires_at) ],
|
|
|
|
|
|
[ 'Use Existing', String(item.use_existing) ],
|
|
|
|
|
|
[ 'Log', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.log_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Output', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.output_uuid } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Filters', (
|
|
|
|
|
|
item.filters ? (<WBJsonViewer app={ app } value={ item.filters } />) : (<i>{ String(item.filters) }</i>)
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Runtime Token', item.runtime_token || (<i>{ String(item.runtime_token) }</i>) ],
|
|
|
|
|
|
[ 'Runtime User', (
|
|
|
|
|
|
<WBNameAndUuid app={ app } uuid={ item.runtime_user } />
|
|
|
|
|
|
) ],
|
|
|
|
|
|
[ 'Runtime Auth Scopes', (
|
|
|
|
|
|
item.runtime_auth_scopes ? (
|
|
|
|
|
|
<WBJsonViewer app={ app } value={ item.runtime_auth_scopes } />
|
|
|
|
|
|
) : (
|
|
|
|
|
|
<i>{ String(item.runtime_auth_scopes) }</i>
|
|
|
|
|
|
)
|
|
|
|
|
|
) ]
|
|
|
|
|
|
];
|
|
|
|
|
|
rows = rows.map(r => [r[0], r[1] ? r[1] : (<i>{ String(r[1]) }</i>)]);
|
|
|
|
|
|
this.setState({ 'rows': rows });
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
prom = prom.then(xhr => this.prepareRows(xhr.response));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
render({}, { rows }) {
|
|
|
render({}, { rows }) {
|
|
|