@@ -14,6 +14,7 @@ export const networkService = { | |||
getStatusesByNetworkId, | |||
getNodesByNetworkId, | |||
stopNetwork, | |||
restoreNetwork, | |||
deleteNetwork, | |||
requestNetworkKeys, | |||
retrieveNetworkKeys | |||
@@ -58,6 +59,11 @@ function stopNetwork(userId, networkId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/actions/stop`, util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function restoreNetwork(userId, networkId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/actions/restore`, | |||
util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
// deleting network is not allowed via API, instead we delete the AccountPlan, which in turn deletes the network | |||
function deleteNetwork(userId, networkId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/plans/${networkId}`, util.deleteWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
@@ -8,7 +8,7 @@ import { util } from '../_helpers'; | |||
const state = { | |||
loading: { | |||
networks: false, network: false, deleting: false, | |||
networks: false, network: false, stopping: false, restoring: false, deleting: false, | |||
nearestRegions: false, startingNetwork: false, networkStatuses: false, networkNodes: false, | |||
requestNetworkKeys: false, retrieveNetworkKeys: false | |||
}, | |||
@@ -95,6 +95,15 @@ const actions = { | |||
); | |||
}, | |||
restoreNetwork({ commit }, { userId, networkId, messages, errors }) { | |||
commit('restoreNetworkRequest', networkId); | |||
networkService.restoreNetwork(userId, networkId, messages, errors) | |||
.then( | |||
network => commit('restoreNetworkSuccess', network), | |||
error => commit('restoreNetworkFailure', { networkId, error: error.toString() }) | |||
); | |||
}, | |||
deleteNetwork({ commit }, {userId, networkId, messages, errors}) { | |||
commit('deleteNetworkRequest', networkId); | |||
networkService.deleteNetwork(userId, networkId, messages, errors) | |||
@@ -212,6 +221,17 @@ const mutations = { | |||
state.error = error; | |||
}, | |||
restoreNetworkRequest(state, id) { | |||
state.loading.restoring = true; | |||
}, | |||
restoreNetworkSuccess(state, id) { | |||
state.loading.restoring = false; | |||
}, | |||
restoreNetworkFailure(state, { id, error }) { | |||
state.loading.restoring = false; | |||
state.error = error; | |||
}, | |||
deleteNetworkRequest(state, id) { | |||
state.loading.deleting = true; | |||
}, | |||
@@ -90,10 +90,21 @@ | |||
</div> | |||
</div> | |||
<hr/> | |||
<div v-if="network.state === 'stopped'"> | |||
<!-- todo: add button to restart network in restore mode --> | |||
<hr/> | |||
<div v-if="errors.has('networkRestore')" class="invalid-feedback d-block"> | |||
{{ errors.first('networkRestore') }} | |||
</div> | |||
<div v-if="networkNodes && networkNodes.length === 0"> | |||
<button @click="restoreNet()" class="btn btn-primary" :disabled="loading && loading.restoring"> | |||
{{ messages.button_label_restore }} | |||
</button> | |||
<img v-show="loading && loading.restoring" :src="loadingImgSrc" /> | |||
{{ messages.button_description_restore }} | |||
</div> | |||
<div v-else v-html="messages.restore_not_possible_nodes_exist_html" /> | |||
</div> | |||
<div v-if="configs.sageLauncher && (network.state === 'running' || network.state === 'starting' || network.state === 'stopped' || network.state === 'error_stopping')"> | |||
@@ -147,7 +158,7 @@ | |||
methods: { | |||
...mapActions('networks', [ | |||
'getNetworkById', 'deleteNetwork', 'getStatusesByNetworkId', 'getNodesByNetworkId', | |||
'stopNetwork', 'deleteNetwork', 'requestNetworkKeys', 'retrieveNetworkKeys' | |||
'stopNetwork', 'restoreNetwork', 'deleteNetwork', 'requestNetworkKeys', 'retrieveNetworkKeys' | |||
]), | |||
refreshStatus (userId) { | |||
this.getNetworkById({userId: userId, networkId: this.networkId, messages: this.messages, errors: this.errors}); | |||
@@ -178,6 +189,15 @@ | |||
errors: this.errors | |||
}); | |||
}, | |||
restoreNet () { | |||
this.errors.clear(); | |||
this.restoreNetwork({ | |||
userId: this.user.uuid, | |||
networkId: this.networkId, | |||
messages: this.messages, | |||
errors: this.errors | |||
}); | |||
}, | |||
deleteNet () { | |||
this.errors.clear(); | |||
this.deleteNetwork({ | |||