Added default environments

This commit is contained in:
frikky
2020-08-24 08:20:06 +02:00
parent 90991071de
commit bdcb3ecfde
3 changed files with 125 additions and 20 deletions
+26 -9
View File
@@ -158,6 +158,9 @@ type Environment struct {
Name string `datastore:"name"`
Type string `datastore:"type"`
Registered bool `datastore:"registered"`
Default bool `datastore:"default" json:"default"`
Archived bool `datastore:"archived" json:"archived"`
Id string `datastore:"id" json:"id"`
}
type User struct {
@@ -1053,16 +1056,29 @@ func handleSetEnvironments(resp http.ResponseWriter, request *http.Request) {
return
}
// Clear old data
for _, item := range environments {
err = DeleteKey(ctx, "Environments", item.Name)
if err != nil {
resp.WriteHeader(401)
resp.Write([]byte(`{"success": false, "reason": "Error cleaning up environment"}`))
return
// Clear old data? Removed for archiving purpose. No straight deletion
//for _, item := range environments {
// err = DeleteKey(ctx, "Environments", item.Name)
// if err != nil {
// resp.WriteHeader(401)
// resp.Write([]byte(`{"success": false, "reason": "Error cleaning up environment"}`))
// return
// }
//}
openEnvironments := 0
for _, item := range newEnvironments {
if !item.Archived {
openEnvironments += 1
}
}
if openEnvironments < 1 {
resp.WriteHeader(401)
resp.Write([]byte(`{"success": false, "reason": "Can't archived all environments"}`))
return
}
for _, item := range newEnvironments {
err = setEnvironment(ctx, &item)
if err != nil {
@@ -1072,9 +1088,10 @@ func handleSetEnvironments(resp http.ResponseWriter, request *http.Request) {
}
}
//DeleteKey(ctx, entity string, value string) error {
// FIXME - check which are in use
log.Printf("FIXME: Set new environments: %#v", newEnvironments)
log.Printf("DONT DELETE ONES THAT ARE IN USE")
//log.Printf("FIXME: Set new environments: %#v", newEnvironments)
//log.Printf("DONT DELETE ONES THAT ARE IN USE")
resp.WriteHeader(200)
resp.Write([]byte(`{"success": true}`))
+99 -10
View File
@@ -47,6 +47,7 @@ const Admin = (props) => {
const [selectedUserModalOpen, setSelectedUserModalOpen] = React.useState(false)
const [selectedAuthentication, setSelectedAuthentication] = React.useState({})
const [selectedAuthenticationModalOpen, setSelectedAuthenticationModalOpen] = React.useState(false)
const [showArchived, setShowArchived] = React.useState(false)
const alert = useAlert()
@@ -170,7 +171,6 @@ const Admin = (props) => {
}
const submitUser = (data) => {
// FIXME - add some check here ROFL
console.log("INPUT: ", data)
// Just use this one?
@@ -201,13 +201,21 @@ const Admin = (props) => {
});
}
const deleteEnvironment = (name) => {
// Horrible frontend fix for environments
const setDefaultEnvironment = (name) => {
// FIXME - add some check here ROFL
alert.info("Deleting environment " + name)
alert.info("Setting default env to " + name)
var newEnv = []
for (var key in environments) {
if (environments[key].Name == name) {
continue
if (environments[key].archived) {
alert.error("Can't set archived to default")
return
}
environments[key].default = true
} else if (environments[key].default == true && environments[key].name !== name) {
environments[key].default = false
}
newEnv.push(environments[key])
@@ -227,6 +235,7 @@ const Admin = (props) => {
response.json().then(responseJson => {
if (responseJson["success"] === false) {
alert.error(responseJson.reason)
getEnvironments()
} else {
setLoginInfo("")
setModalOpen(false)
@@ -234,14 +243,60 @@ const Admin = (props) => {
}
}),
)
//.catch(error => {
// console.log("Error in userdata: ", error)
//});
.catch(error => {
console.log("Error in backend data: ", error)
})
}
const deleteEnvironment = (name) => {
// FIXME - add some check here ROFL
alert.info("Deleting environment " + name)
var newEnv = []
for (var key in environments) {
if (environments[key].Name == name) {
if (environments[key].default) {
alert.info("Can't delete the default environment")
return
}
environments[key].archived = true
}
newEnv.push(environments[key])
}
// Just use this one?
const url = globalUrl + '/api/v1/setenvironments';
fetch(url, {
method: 'PUT',
credentials: "include",
body: JSON.stringify(newEnv),
headers: {
'Content-Type': 'application/json',
},
})
.then(response =>
response.json().then(responseJson => {
if (responseJson["success"] === false) {
alert.error(responseJson.reason)
getEnvironments()
} else {
setLoginInfo("")
setModalOpen(false)
getEnvironments()
}
}),
)
.catch(error => {
console.log("Error when deleting: ", error)
})
}
const submitEnvironment = (data) => {
// FIXME - add some check here ROFL
environments.push({ "name": data.environment, "type": "onprem" })
environments.push({
"name": data.environment,
"type": "onprem",
})
// Just use this one?
var baseurl = globalUrl
@@ -258,6 +313,7 @@ const Admin = (props) => {
response.json().then(responseJson => {
if (responseJson["success"] === false) {
setLoginInfo("Error in input: " + responseJson.reason)
getEnvironments()
} else {
setLoginInfo("")
setModalOpen(false)
@@ -343,7 +399,6 @@ const Admin = (props) => {
return response.json()
})
.then((responseJson) => {
console.log(responseJson)
setEnvironments(responseJson)
})
.catch(error => {
@@ -935,6 +990,7 @@ const Admin = (props) => {
</div>
: null
console.log("Environments: ", environments)
const environmentView = curTab === 2 ?
<div>
<div style={{marginTop: 20, marginBottom: 20,}}>
@@ -968,12 +1024,29 @@ const Admin = (props) => {
primary="Orborus running (TBD)"
style={{minWidth: 200, maxWidth: 200}}
/>
<ListItemText
primary="Default"
style={{minWidth: 150, maxWidth: 150}}
/>
<ListItemText
primary="Actions"
style={{minWidth: 150, maxWidth: 150}}
/>
<ListItemText
primary="Archived"
style={{minWidth: 150, maxWidth: 150}}
/>
</ListItem>
{environments === undefined ? null : environments.map(environment => {
if (!showArchived && environment.archived) {
return null
}
if (environment.archived === undefined) {
getEnvironments()
return null
}
return (
<ListItem>
<ListItemText
@@ -984,9 +1057,25 @@ const Admin = (props) => {
primary={"TBD"}
style={{minWidth: 200, maxWidth: 200, overflow: "hidden"}}
/>
<ListItemText>
<ListItemText
style={{minWidth: 150, maxWidth: 150, overflow: "hidden"}}
primary={environment.default ? "true" : null}
>
{environment.default ?
null
:
<Button variant="outlined" style={{borderRadius: "0px"}} onClick={() => setDefaultEnvironment(environment.Name)} color="primary">Set default</Button>
}
</ListItemText>
<ListItemText
style={{minWidth: 150, maxWidth: 150, overflow: "hidden"}}
>
<Button variant="outlined" style={{borderRadius: "0px"}} onClick={() => deleteEnvironment(environment.Name)} color="primary">Delete</Button>
</ListItemText>
<ListItemText
style={{minWidth: 150, maxWidth: 150, overflow: "hidden"}}
primary={environment.archived.toString()}
/>
</ListItem>
)
})}
-1
View File
@@ -7,7 +7,6 @@ The Docker setup is done with docker-compose and is a single command to get set
**PS: if you're setting up Shuffle on Windows, go to the next step (Windows Docker setup)**
1. Make sure you have Docker and [docker-compose](https://docs.docker.com/compose/install/) installed.
2. Run docker-compose.
```
git clone https://github.com/frikky/Shuffle