2017-09-20 12:30:53 +03:00
|
|
|
import React from 'react';
|
|
|
|
import { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom';
|
|
|
|
import get from 'lodash.get';
|
|
|
|
|
|
|
|
import { PageContainer } from 'joyent-ui-toolkit';
|
|
|
|
|
|
|
|
import { Breadcrumb, Menu } from '@containers/navigation';
|
2018-01-12 17:25:26 +02:00
|
|
|
import Footer from '@components/navigation/footer';
|
2018-01-17 21:10:39 +02:00
|
|
|
import CreateInstance from '@containers/create-instance';
|
2017-09-20 12:30:53 +03:00
|
|
|
|
|
|
|
import {
|
|
|
|
List as Instances,
|
2017-12-21 02:12:42 +02:00
|
|
|
Summary as InstanceSummary,
|
2017-09-20 12:30:53 +03:00
|
|
|
Tags as InstanceTags,
|
|
|
|
Metadata as InstanceMetadata,
|
|
|
|
Networks as InstanceNetworks,
|
|
|
|
Firewall as InstanceFirewall,
|
2018-01-24 04:11:33 +02:00
|
|
|
Cns as InstanceCns,
|
2017-10-11 19:59:59 +03:00
|
|
|
Snapshots as InstanceSnapshots,
|
2018-01-05 17:42:09 +02:00
|
|
|
Resize as InstanceResize
|
2017-09-20 12:30:53 +03:00
|
|
|
} from '@containers/instances';
|
2018-01-08 21:08:01 +02:00
|
|
|
|
2017-09-20 12:30:53 +03:00
|
|
|
export default () => (
|
|
|
|
<BrowserRouter>
|
|
|
|
<PageContainer>
|
2017-10-11 19:59:59 +03:00
|
|
|
{/* Breadcrumb */}
|
2017-09-20 12:30:53 +03:00
|
|
|
<Switch>
|
2018-01-10 16:39:46 +02:00
|
|
|
<Route
|
|
|
|
path="/instances/~create/:section?"
|
|
|
|
exact
|
|
|
|
component={Breadcrumb}
|
|
|
|
/>
|
2017-10-11 19:59:59 +03:00
|
|
|
<Route
|
|
|
|
path="/instances/~:action/:instance?"
|
|
|
|
exact
|
|
|
|
component={Breadcrumb}
|
|
|
|
/>
|
|
|
|
<Route path="/instances/:instance?" component={Breadcrumb} />
|
2017-09-20 12:30:53 +03:00
|
|
|
</Switch>
|
|
|
|
|
2017-10-11 19:59:59 +03:00
|
|
|
{/* Menu */}
|
2017-09-20 12:30:53 +03:00
|
|
|
<Switch>
|
2017-10-11 19:59:59 +03:00
|
|
|
<Route path="/instances/~:action/:id?" exact component={Menu} />
|
|
|
|
<Route path="/instances/:instance?/:section?" component={Menu} />
|
2017-09-20 12:30:53 +03:00
|
|
|
</Switch>
|
|
|
|
|
2017-10-11 19:59:59 +03:00
|
|
|
{/* Instances List */}
|
|
|
|
<Switch>
|
|
|
|
<Route path="/instances" exact component={Instances} />
|
|
|
|
</Switch>
|
2017-09-20 12:30:53 +03:00
|
|
|
|
2017-10-11 19:59:59 +03:00
|
|
|
{/* Instance Sections */}
|
|
|
|
<Switch>
|
|
|
|
<Route path="/instances/~:action" component={() => null} />
|
|
|
|
<Route
|
2017-12-21 02:12:42 +02:00
|
|
|
path="/instances/:instance/summary"
|
2017-10-11 19:59:59 +03:00
|
|
|
exact
|
2017-12-21 02:12:42 +02:00
|
|
|
component={InstanceSummary}
|
2017-10-11 19:59:59 +03:00
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/instances/:instance/tags"
|
|
|
|
exact
|
|
|
|
component={InstanceTags}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/instances/:instance/metadata"
|
|
|
|
exact
|
|
|
|
component={InstanceMetadata}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/instances/:instance/networks"
|
|
|
|
exact
|
|
|
|
component={InstanceNetworks}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/instances/:instance/firewall"
|
|
|
|
exact
|
|
|
|
component={InstanceFirewall}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/instances/:instance/snapshots"
|
|
|
|
exact
|
|
|
|
component={InstanceSnapshots}
|
|
|
|
/>
|
2018-01-24 04:11:33 +02:00
|
|
|
<Route
|
|
|
|
path="/instances/:instance/cns-dns"
|
|
|
|
exact
|
|
|
|
component={InstanceCns}
|
|
|
|
/>
|
2017-10-11 19:59:59 +03:00
|
|
|
<Route
|
|
|
|
path="/instances/:instance"
|
|
|
|
exact
|
|
|
|
component={({ match }) => (
|
2017-12-21 02:12:42 +02:00
|
|
|
<Redirect
|
|
|
|
to={`/instances/${get(match, 'params.instance')}/summary`}
|
|
|
|
/>
|
2017-10-11 19:59:59 +03:00
|
|
|
)}
|
|
|
|
/>
|
|
|
|
</Switch>
|
|
|
|
|
|
|
|
{/* Actions */}
|
|
|
|
<Switch>
|
2018-01-08 21:08:01 +02:00
|
|
|
{/* Create Instance */}
|
|
|
|
<Route
|
|
|
|
path="/instances/~create/"
|
|
|
|
exact
|
2018-01-10 16:39:46 +02:00
|
|
|
component={() => <Redirect to="/instances/~create/name" />}
|
2018-01-08 21:08:01 +02:00
|
|
|
/>
|
2018-01-19 19:37:31 +02:00
|
|
|
<Route path="/instances/~create/:step" component={CreateInstance} />
|
2017-10-11 19:59:59 +03:00
|
|
|
<Route
|
|
|
|
path="/instances/~resize/:instance"
|
|
|
|
exact
|
|
|
|
component={InstanceResize}
|
|
|
|
/>
|
|
|
|
<Route
|
|
|
|
path="/instances/:instance/:section?/~resize"
|
|
|
|
exact
|
|
|
|
component={InstanceResize}
|
|
|
|
/>
|
|
|
|
</Switch>
|
2017-09-20 12:30:53 +03:00
|
|
|
|
|
|
|
<Route path="/" exact component={() => <Redirect to="/instances" />} />
|
2018-01-12 17:25:26 +02:00
|
|
|
<Footer />
|
2017-09-20 12:30:53 +03:00
|
|
|
</PageContainer>
|
|
|
|
</BrowserRouter>
|
|
|
|
);
|