Browse Source

add stop/delete network

pull/1/head
Jonathan Cobb 4 years ago
parent
commit
e8c5f6c809
3 changed files with 43 additions and 13 deletions
  1. +7
    -1
      src/_services/network.service.js
  2. +28
    -7
      src/_store/networks.module.js
  3. +8
    -5
      src/account/NetworksPage.vue

+ 7
- 1
src/_services/network.service.js View File

@@ -8,6 +8,7 @@ export const networkService = {
startNetwork, startNetwork,
getStatusesByNetworkId, getStatusesByNetworkId,
getNodesByNetworkId, getNodesByNetworkId,
stopNetwork,
deleteNetwork deleteNetwork
}; };


@@ -37,6 +38,11 @@ function getNodesByNetworkId(userId, networkId, messages, errors) {
return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/nodes`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors)); return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/nodes`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors));
} }


function deleteNetwork(userId, networkId, messages, errors) {
function stopNetwork(userId, networkId, messages, errors) {
return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/actions/stop`, util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/actions/stop`, 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));
}

+ 28
- 7
src/_store/networks.module.js View File

@@ -69,12 +69,21 @@ const actions = {
); );
}, },


stopNetwork({ commit }, {userId, networkId, messages, errors}) {
commit('stopNetworkRequest', id);
networkService.stopNetwork(userId, networkId, messages, errors)
.then(
network => commit('stopNetworkSuccess', network),
error => commit('stopNetworkFailure', { networkId, error: error.toString() })
);
},

deleteNetwork({ commit }, {userId, networkId, messages, errors}) { deleteNetwork({ commit }, {userId, networkId, messages, errors}) {
commit('deleteRequest', id);
commit('deleteNetworkRequest', id);
networkService.deleteNetwork(userId, networkId, messages, errors) networkService.deleteNetwork(userId, networkId, messages, errors)
.then( .then(
network => commit('deleteSuccess', network),
error => commit('deleteFailure', { networkId, error: error.toString() })
network => commit('deleteNetworkSuccess', network),
error => commit('deleteNetworkFailure', { networkId, error: error.toString() })
); );
}, },


@@ -154,21 +163,33 @@ const mutations = {
state.error = { error }; state.error = { error };
}, },


deleteRequest(state, id) {
stopNetworkRequest(state, id) {
state.loading.stopping = true;
},
stopNetworkSuccess(state, id) {
state.loading.stopping = false;
},
stopNetworkFailure(state, { id, error }) {
state.loading.stopping = false;
state.error = error;
},

deleteNetworkRequest(state, id) {
state.loading.deleting = true; state.loading.deleting = true;
}, },
deleteSuccess(state, id) {
deleteNetworkSuccess(state, id) {
state.loading.deleting = false; state.loading.deleting = false;
// remove deleted network from state // remove deleted network from state
if (state.networks) { if (state.networks) {
state.networks = state.networks.filter(network => (network.uuid !== id && network.name !== id)) state.networks = state.networks.filter(network => (network.uuid !== id && network.name !== id))
} }
}, },
deleteFailure(state, { id, error }) {
deleteNetworkFailure(state, { id, error }) {
state.loading.deleting = false; state.loading.deleting = false;
// remove 'deleting:true' property and add 'deleteError:[error]' property to network
// remove 'deleting:true' property and add 'deleteNetworkError:[error]' property to network
state.error = error; state.error = error;
}, },

getNearestRegionsRequest(state) { getNearestRegionsRequest(state) {
state.loading.nearestRegions = true; state.loading.nearestRegions = true;
}, },


+ 8
- 5
src/account/NetworksPage.vue View File

@@ -11,7 +11,7 @@
<th nowrap="nowrap">{{messages.label_field_networks_timezone}}</th> <th nowrap="nowrap">{{messages.label_field_networks_timezone}}</th>
<th nowrap="nowrap">{{messages.label_field_networks_object_state}}</th> <th nowrap="nowrap">{{messages.label_field_networks_object_state}}</th>
<th nowrap="nowrap">{{messages.label_field_networks_action_view}}</th> <th nowrap="nowrap">{{messages.label_field_networks_action_view}}</th>
<th nowrap="nowrap">{{messages.label_field_networks_action_start_stop}}</th>
<th nowrap="nowrap">{{messages.label_field_networks_action_stop}}</th>
<th nowrap="nowrap">{{messages.label_field_networks_action_delete}}</th> <th nowrap="nowrap">{{messages.label_field_networks_action_delete}}</th>
</tr> </tr>
</thead> </thead>
@@ -23,11 +23,14 @@
<td>{{messages['msg_network_state_'+network.state]}}</td> <td>{{messages['msg_network_state_'+network.state]}}</td>
<td><router-link :to="{ path: '/bubble/'+ network.name }">{{messages.table_row_networks_action_view}}</router-link></td> <td><router-link :to="{ path: '/bubble/'+ network.name }">{{messages.table_row_networks_action_view}}</router-link></td>


<td v-if="network.state === 'running'">{{messages.table_row_networks_action_stop}}</td>
<td v-else-if="network.state === 'created'">{{messages.table_row_networks_action_start}}</td>
<td v-if="network.state === 'running'">
<a @click="stopNetwork(network.uuid)" class="text-danger">{{messages.table_row_networks_action_stop}}</a>
</td>
<td v-else></td> <td v-else></td>


<td><a @click="deleteNetwork(network.uuid)" class="text-danger">{{messages.table_row_networks_action_delete}}</a></td>
<td>
<a @click="deleteNetwork(network.uuid)" class="text-danger">{{messages.table_row_networks_action_delete}}</a>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -58,7 +61,7 @@
this.getAllNetworks({userId: util.currentUser().uuid, messages: this.messages, errors: this.errors}); this.getAllNetworks({userId: util.currentUser().uuid, messages: this.messages, errors: this.errors});
}, },
methods: { methods: {
...mapActions('networks', ['getAllNetworks', 'deleteNetwork']),
...mapActions('networks', ['getAllNetworks', 'stopNetwork', 'deleteNetwork']),
...mapGetters('networks', ['loading']) ...mapGetters('networks', ['loading'])
} }
}; };

Loading…
Cancel
Save