Skip to content

Commit 71dde55

Browse files
committed
some merge conflicts not working
2 parents 61dded7 + e0ac908 commit 71dde55

File tree

164 files changed

+3416
-1365
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

164 files changed

+3416
-1365
lines changed

KlustrSchema.sql

+6-5
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ CREATE TABLE "users" (
55
"first_name" varchar NOT NULL,
66
"last_name" varchar NOT NULL,
77
"is_admin" boolean,
8-
"team_id" smallint
8+
"team_id" smallint,
9+
"edit_access" boolean
910
);
1011

1112
CREATE TABLE "teams" (
1213
"_id" smallserial PRIMARY KEY NOT NULL,
13-
"name" varchar NOT NULL,
14+
"team_name" varchar NOT NULL,
1415
"team_lead" varchar NOT NULL,
1516
"leader_email" varchar NOT NULL,
16-
"project" varchar NOT NULL
17+
"project" varchar
1718
);
1819

1920
CREATE TABLE "namespaces2" (
@@ -27,7 +28,7 @@ CREATE TABLE "vclusters" (
2728
"_id" smallserial PRIMARY KEY NOT NULL,
2829
"owner_id" smallint NOT NULL,
2930
"team_id" smallint NOT NULL,
30-
"namespace_id" smallint,
31+
"namespace_id" varchar,
3132
"project" varchar
3233
);
3334

@@ -41,7 +42,7 @@ CREATE TABLE "clusters" (
4142

4243
ALTER TABLE "users" ADD FOREIGN KEY ("team_id") REFERENCES "teams" ("_id");
4344

44-
ALTER TABLE "vclusters" ADD FOREIGN KEY ("namespace_id") REFERENCES "namespaces" ("_id");
45+
-- ALTER TABLE "vclusters" ADD FOREIGN KEY ("namespace_id") REFERENCES "namespaces" ("_id");
4546

4647
ALTER TABLE "vclusters" ADD FOREIGN KEY ("owner_id") REFERENCES "users" ("_id");
4748

KlustrSchema2.sql

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
CREATE TABLE "users" (
2+
"_id" smallserial PRIMARY KEY,
3+
"email" varchar,
4+
"password" varchar,
5+
"first_name" varchar,
6+
"last_name" varchar,
7+
"is_admin" varchar,
8+
"team_id" smallint
9+
);
10+
11+
CREATE TABLE "teams" (
12+
"_id" smallserial PRIMARY KEY,
13+
"name" varchar
14+
);
15+
16+
CREATE TABLE "namespaces" (
17+
"_id" smallserial PRIMARY KEY,
18+
"name" varchar,
19+
"cluster_id" smallint
20+
);
21+
22+
CREATE TABLE "vclusters" (
23+
"_id" smallserial PRIMARY KEY,
24+
"name" varchar,
25+
"owner_id" smallint,
26+
"team_id" smallint,
27+
"namespace_id" smallint
28+
);
29+
30+
CREATE TABLE "clusters" (
31+
"_id" smallserial PRIMARY KEY,
32+
"name" varchar
33+
);
34+
35+
ALTER TABLE "users" ADD FOREIGN KEY ("team_id") REFERENCES "teams" ("_id");
36+
37+
ALTER TABLE "vclusters" ADD FOREIGN KEY ("namespace_id") REFERENCES "namespaces" ("_id");
38+
39+
ALTER TABLE "vclusters" ADD FOREIGN KEY ("owner_id") REFERENCES "users" ("_id");
40+
41+
ALTER TABLE "vclusters" ADD FOREIGN KEY ("team_id") REFERENCES "teams" ("_id");
42+
43+
ALTER TABLE "namespaces" ADD FOREIGN KEY ("cluster_id") REFERENCES "clusters" ("_id");

client/components/AdminPage.jsx

+9-2
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,22 @@ import CreateUser from './CreateUser.jsx';
55
import { AppContext } from './AppContext.js';
66

77
const AdminPage = () => {
8-
const { setIsLoggedIn, setIsAdmin } = useContext(AppContext);
8+
const { setIsLoggedIn, setIsAdmin, setClusterNames } = useContext(AppContext);
99
useEffect(() => {
1010
fetch('/cookies')
1111
.then(res => res.json())
1212
.then(data => {
1313
setIsLoggedIn(data.isLoggedIn);
1414
setIsAdmin(data.isAdmin);
1515
})
16-
})
16+
fetch('/clusters/list')
17+
.then((res) => res.json())
18+
.then(data => {
19+
let names = [];
20+
data.forEach(element => names.push(element.name))
21+
setClusterNames(names)
22+
})
23+
}, [])
1724
return (
1825
<div id='adminpage'>
1926
<CreateTeam />

client/components/App.jsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState, useContext } from 'react';
1+
import React, { useState, useContext, useEffect } from 'react';
22
import MainContainer from '../containers/MainContainer.jsx'
33
import NavBar from '../containers/NavBarContainer.jsx'
44
import { BrowserRouter as Router } from 'react-router-dom';
@@ -8,9 +8,10 @@ const App = (props) => {
88
let navBar = '';
99
const [isLoggedIn, setIsLoggedIn] = useState(false);
1010
const [isAdmin, setIsAdmin] = useState(false);
11-
const value = { isLoggedIn, setIsLoggedIn, isAdmin, setIsAdmin };
11+
const [clusterNames, setClusterNames] = useState([])
12+
const value = { isLoggedIn, setIsLoggedIn, isAdmin, setIsAdmin, clusterNames, setClusterNames };
1213
if (isLoggedIn) navBar = <NavBar />;
13-
14+
1415
return (
1516
<div className="App">
1617
<Router>

client/components/CreateCluster.jsx

+42-31
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React, { useState, useEffect } from 'react';
1+
import React, { useState, useContext } from 'react';
22
import { TextField, Button, CircularProgress, FormControl, InputLabel, Select, MenuItem } from '@material-ui/core'
3+
import { AppContext } from './AppContext';
34

45
const CreateCluster = () => {
56

@@ -8,36 +9,39 @@ const CreateCluster = () => {
89
const [hostNamespace, setHostNamespace] = useState('');
910
const [inProgress, setInProgress] = useState('');
1011
const [currentProcess, setCurrentProcess] = useState('');
11-
const [availableClusters, setAvailableClusters] = useState([]);
1212
const [availableNamespaces, setAvailableNamespaces] = useState([]);
13+
const { clusterNames } = useContext(AppContext)
1314

14-
useEffect(() => {
15-
fetch('vclusters/fetchclusters')
16-
.then(res => {
17-
console.log('fetchclusters', res)
18-
res.json()
19-
.then(data => {
20-
console.log('what is in my fetch request 1', data)
21-
const availableClusters = data.map(element => element.name)
22-
setAvailableClusters(availableClusters);
23-
})
24-
})
25-
.catch(err => console.log(err))
26-
}, [])
15+
const clusterNamesDropdown = [];
16+
clusterNames.forEach(name => clusterNamesDropdown.push(<MenuItem value={name}>{name}</MenuItem>))
2717

28-
useEffect(() => {
29-
fetch('vclusters/fetchnamespaces')
30-
.then(res => {
31-
console.log('fetchnamespaces', res)
32-
res.json()
33-
.then(data => {
34-
console.log('what is in my fetch request 2', data)
35-
const availableNamespaces = data.map(element => element.name)
36-
setAvailableNamespaces(availableNamespaces)
37-
})
38-
})
39-
.catch(err => console.log(err))
40-
}, [])
18+
// useEffect(() => {
19+
// fetch('vclusters/fetchclusters')
20+
// .then(res => {
21+
// console.log('fetchclusters', res)
22+
// res.json()
23+
// .then(data => {
24+
// console.log('what is in my fetch request 1', data)
25+
// const availableClusters = data.map(element => element.name)
26+
// setAvailableClusters(availableClusters);
27+
// })
28+
// })
29+
// .catch(err => console.log(err))
30+
// }, [])
31+
32+
// useEffect(() => {
33+
// fetch('vclusters/fetchnamespaces')
34+
// .then(res => {
35+
// console.log('fetchnamespaces', res)
36+
// res.json()
37+
// .then(data => {
38+
// console.log('what is in my fetch request 2', data)
39+
// const availableNamespaces = data.map(element => element.name)
40+
// setAvailableNamespaces(availableNamespaces)
41+
// })
42+
// })
43+
// .catch(err => console.log(err))
44+
// }, [])
4145

4246
const handleClusterNameChange = (e) => {
4347
setClusterName(e.target.value)
@@ -71,7 +75,7 @@ const CreateCluster = () => {
7175
})
7276
.catch(err => console.log(err))
7377
}
74-
const clusterList = availableClusters.map(element => <MenuItem value={`${element}`}>{element}</MenuItem>)
78+
// const clusterList = availableClusters.map(element => <MenuItem value={`${element}`}>{element}</MenuItem>)
7579
const namespaceList = availableNamespaces.map(element => <MenuItem value={`${element}`}>{element}</MenuItem>)
7680

7781
return (
@@ -80,13 +84,20 @@ const CreateCluster = () => {
8084
<div id='clusters'>
8185
<form onSubmit={formSubmit}>
8286
{/* <TextField label='Cluster' name='clusterName' onChange={handleClusterNameChange} color="primary" /> */}
83-
<FormControl>
87+
{/* <FormControl>
8488
<InputLabel id="inputLabels">Select Cluster</InputLabel>
8589
<Select label='Select Cluster' onChange={handleClusterNameChange}>
8690
{clusterList}
8791
</Select>
92+
</FormControl> */}
93+
<FormControl>
94+
<InputLabel id="inputLabels">Select Cluster</InputLabel>
95+
<TextField label='Cluster' name='clusterName' onChange={handleClusterNameChange} color="primary" />
96+
<Select label='Select Cluster' onChange={handleClusterNameChange}>
97+
{clusterNamesDropdown}
98+
</Select>
8899
</FormControl>
89-
<TextField label='vCluster Name' name='vClusterName' onChange={handleSetvClusterName} />
100+
<TextField label='vCluster' name='vClusterName' onChange={handleSetvClusterName} />
90101
{/* <TextField label='Host Namespace' name='hostNamespace' onChange={handleHostNamespaceChange} /> */}
91102
<FormControl>
92103
<InputLabel id="inputLabels">Select Namespace</InputLabel>

client/components/CreateSpace.jsx

+43-32
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React, { useState, useEffect } from 'react';
1+
import React, { useState, useEffect, useContext } from 'react';
22
import { TextField, Button, CircularProgress, FormControl, InputLabel, Select, MenuItem } from '@material-ui/core'
3+
import { AppContext } from './AppContext';
34

45
const CreateSpace = () => {
56
const [hostCluster, setHostClusterName] = useState('');
@@ -11,36 +12,41 @@ const CreateSpace = () => {
1112
const [deploymentName, setDeploymentName] = useState('');
1213
const [externalIp, setExternalIp] = useState('');
1314
const [clickMe, setClickMe] = useState('');
14-
const [clusterArray, setClusterArray] = useState([]);
15-
const [deploymentArray, setDeploymentArray] = useState([]);
15+
// const [clusterArray, setClusterArray] = useState([]);
1616

17-
useEffect(() => {
18-
fetch('spaces/fetchspaces')
19-
.then(res => {
20-
console.log('spaces/spaces', res)
21-
res.json()
22-
.then(data => {
23-
console.log('what is in my fetch request 1', data)
24-
const deploymentArray = data.map(element => element.name)
25-
setDeploymentArray(deploymentArray);
26-
})
27-
})
28-
.catch(err => console.log(err))
29-
}, [])
30-
31-
useEffect(() => {
32-
fetch('spaces/fetchclusters')
33-
.then(res => {
34-
console.log('spaces/clusters', res)
35-
res.json()
36-
.then(data => {
37-
console.log('what is in my fetch request 2', data)
38-
const clusterArray = data.map(element => element.name)
39-
setClusterArray(clusterArray)
40-
})
41-
})
42-
.catch(err => console.log(err))
43-
}, [])
17+
const [deploymentArray, setDeploymentArray] = useState([]);
18+
const { clusterNames } = useContext(AppContext)
19+
20+
const clusterNamesDropdown = [];
21+
clusterNames.forEach(name => clusterNamesDropdown.push(<MenuItem value={name}>{name}</MenuItem>))
22+
23+
// useEffect(() => {
24+
// fetch('spaces/fetchspaces')
25+
// .then(res => {
26+
// console.log('spaces/spaces', res)
27+
// res.json()
28+
// .then(data => {
29+
// console.log('what is in my fetch request 1', data)
30+
// const deploymentArray = data.map(element => element.name)
31+
// setDeploymentArray(deploymentArray);
32+
// })
33+
// })
34+
// .catch(err => console.log(err))
35+
// }, [])
36+
37+
// useEffect(() => {
38+
// fetch('spaces/fetchclusters')
39+
// .then(res => {
40+
// console.log('spaces/clusters', res)
41+
// res.json()
42+
// .then(data => {
43+
// console.log('what is in my fetch request 2', data)
44+
// const clusterArray = data.map(element => element.name)
45+
// setClusterArray(clusterArray)
46+
// })
47+
// })
48+
// .catch(err => console.log(err))
49+
// }, [])
4450

4551
const handleSetHostClusterName = (e) => {
4652
setHostClusterName(e.target.value);
@@ -134,13 +140,18 @@ const CreateSpace = () => {
134140
<div id='spaces'>
135141
<form method="POST" action="/spaces/create">
136142
<h2>Create a Namespace</h2>
137-
<FormControl>
143+
{/* <FormControl>
138144
<InputLabel id="inputLabels">Select Cluster</InputLabel>
139145
<Select label='Select Cluster' name='hostCluster' onChange={handleSetHostClusterName}>
140146
{clusterList}
141147
</Select>
142-
</FormControl>
148+
</FormControl> */}
143149
<TextField label='Host Namespace' name='hostNamespace' onChange={handleSetCreateHostNamespace} />
150+
{/* <TextField label='Host Cluster' name='hostCluster' onChange={handleSetClusterName} /> */}
151+
<Select>
152+
{clusterNamesDropdown}
153+
</Select>
154+
<TextField label='Host Namespace' name='hostNamespace' onChange={handleSetHostNamespace} />
144155
<TextField label='Team ID' name='team_id' onChange={handleSetTeamId} />
145156
<TextField label='Project Name' name='projectName' onChange={handleSetProject} />
146157
<Button type="submit" variant="contained" color="primary" onSubmit={formSubmit}>Create</Button>

client/components/CreateTeam.jsx

+33-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,42 @@
1-
import React from 'react';
2-
import { Button, TextField } from '@material-ui/core'
1+
import React, { useState } from 'react';
2+
import { Button, TextField } from '@material-ui/core';
33

44
const CreateTeam = () => {
5+
const [teamName, setTeamName] = useState('')
6+
const [addTeamStatus, setAddTeamStatus] = useState('')
7+
8+
const handleTeamNameChange = (e) => {
9+
setTeamName(e.target.value);
10+
}
11+
const handleSubmit = (e) => {
12+
console.log('am i hitting submit?')
13+
e.preventDefault();
14+
fetch('/teams', {
15+
method: 'POST',
16+
headers: {
17+
'Content-Type': 'application/json'
18+
},
19+
body: JSON.stringify({ teamName })
20+
})
21+
.then(res => res.json())
22+
.then(data => setAddTeamStatus(<p>{data}</p>))
23+
.catch(err => {
24+
console.log(err)
25+
setAddTeamStatus(<p>Unable to create new team</p>)
26+
})
27+
}
528

629
// should add in dropdown for team
730
return (
831
<div id='createteam'>
9-
<TextField label='Team Name'></TextField><br></br>
10-
<TextField label='Team Lead'></TextField><br></br>
11-
<TextField label='Team Lead Email'></TextField><br></br>
12-
<TextField label='Project Name'></TextField><br></br>
13-
<Button variant="contained" color="primary">Create Team</Button>
32+
<form method="POST" action="/team" onSubmit={handleSubmit}>
33+
<TextField label='Team Name' name='teamName' onChange={handleTeamNameChange}></TextField><br></br>
34+
{/* <TextField label='Team Lead'></TextField><br></br>
35+
<TextField label='Team Lead Email'></TextField><br></br>
36+
<TextField label='Project Name'></TextField><br></br> */}
37+
<Button variant="contained" color="primary" type="submit">Create Team</Button>
38+
</form>
39+
{addTeamStatus}
1440
</div>
1541
)
1642
}

client/components/CreateUser.jsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ const CreateUser = () => {
4444
<TextField type='password' label='User Password' name='password'></TextField><br></br>
4545
<TextField label='First Name' name='firstName'></TextField><br></br>
4646
<TextField label='Last Name' name='lastName'></TextField><br></br>
47+
<TextField label='Team Name' name='teamName'></TextField><br></br>
4748
{/* <Select>Select Team</Select> */}
4849
<FormControlLabel control={<Checkbox />} name='isAdmin' label='Add as Admin' labelPlacement='end'
4950
onChange={handleAdmin} value={isAdmin} /><br></br>
50-
<FormControlLabel control={<Checkbox />} name='editAccess' label='Edit Perms' labelPlacement='end'
51-
onChange={handleAccess} value={editAccess} /><br></br>
51+
{/* <FormControlLabel control={<Checkbox />} name='editAccess' label='Edit Perms' labelPlacement='end'
52+
onChange={handleAccess} value={editAccess} /><br></br> */}
5253
<Button type='submit' label='Create User' variant="contained" color="primary">Create User</Button>
5354
</form>
5455
</div>

0 commit comments

Comments
 (0)