diff --git a/src/_services/network.service.js b/src/_services/network.service.js index 2af16a6..579c6df 100644 --- a/src/_services/network.service.js +++ b/src/_services/network.service.js @@ -10,6 +10,7 @@ export const networkService = { getNetworkById, getNearestRegions, startNetwork, + queueBackup, forkNetwork, getStatusesByNetworkId, getNodesByNetworkId, @@ -17,7 +18,8 @@ export const networkService = { restoreNetwork, deleteNetwork, requestNetworkKeys, - retrieveNetworkKeys + retrieveNetworkKeys, + getNetworkBackups }; function getAllNetworks(userId, messages, errors) { @@ -59,6 +61,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 queueBackup(userId, networkId, messages, errors) { + return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/backups/user_requested`, util.putWithAuth()) + .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)); @@ -75,4 +82,9 @@ function requestNetworkKeys(userId, networkId, messages, errors) { function retrieveNetworkKeys(userId, networkId, code, password, messages, errors) { return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/actions/keys/${code}`, util.postWithAuth({name: 'password', value: password})).then(util.handleCrudResponse(messages, errors)); -} \ No newline at end of file +} + +function getNetworkBackups(userId, networkId, messages, errors) { + return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/backups`, util.getWithAuth()) + .then(util.handleCrudResponse(messages, errors)); +} diff --git a/src/_store/networks.module.js b/src/_store/networks.module.js index ed2beaa..8bbe5f1 100644 --- a/src/_store/networks.module.js +++ b/src/_store/networks.module.js @@ -10,7 +10,7 @@ const state = { loading: { networks: false, network: false, stopping: false, restoring: false, deleting: false, nearestRegions: false, startingNetwork: false, networkStatuses: false, networkNodes: false, - requestNetworkKeys: false, retrieveNetworkKeys: false + requestNetworkKeys: false, retrieveNetworkKeys: false, queueBackup: false }, creating: null, error: null, @@ -23,7 +23,8 @@ const state = { deletedNetwork: null, networkKeysRequested: null, networkKeys: null, - restoreKey: null + restoreKey: null, + backups: null, }; const actions = { @@ -36,13 +37,21 @@ const actions = { ); }, - getNetworkById({ commit }, {userId, networkId, messages, errors}) { + getBackups({ commit }, { userId, networkId, messages, errors }) { + commit('getNetworkBackupsRequest'); + networkService.getNetworkBackups(userId, networkId, messages, errors) + .then(backups => commit('getNetworkBackupsSuccess', backups), + error => commit('getNetworkBackupsFailure', error)); + }, + + getNetworkById({ commit, dispatch }, {userId, networkId, messages, errors}) { commit('getNetworkByIdRequest'); networkService.getNetworkById(userId, networkId, messages, errors) - .then( - network => commit('getNetworkByIdSuccess', network), - error => commit('getNetworkByIdFailure', error) - ); + .then(network => commit('getNetworkByIdSuccess', network), + error => commit('getNetworkByIdFailure', error)) + .then(r => dispatch('getBackups', + { userId: userId, networkId: networkId, + messages: messages, errors: errors })); }, addPlanAndStartNetwork({ commit }, {userId, accountPlan, cloud, region, messages, errors}) { @@ -96,6 +105,16 @@ const actions = { ); }, + queueBackup({ commit, dispatch }, { userId, networkId, messages, errors }) { + commit('queueBackupRequest', networkId); + networkService.queueBackup(userId, networkId, messages, errors) + .then(backup => commit('queueBackupSuccess', backup), + error => commit('queueBackupFailure', { networkId, error: error.toString() })) + .then(r => dispatch('getBackups', + { userId: userId, networkId: networkId, + messages: messages, errors: errors })); +}, + restoreNetwork({ commit }, { userId, networkId, messages, errors }) { commit('restoreNetworkRequest', networkId); networkService.restoreNetwork(userId, networkId, messages, errors) @@ -222,6 +241,18 @@ const mutations = { state.error = error; }, + queueBackupRequest(state, id) { + state.loading.queueBackup = true; + }, + queueBackupSuccess(state, id) { + // noop - state.loading.queueBackup will be set to false only after backup info is loaded to prevent allowing + // another backup in queue before this one i really processed. + }, + queueBackupFailure(state, { id, error }) { + state.loading.queueBackup = false; + state.error = error; + }, + restoreNetworkRequest(state, networkId) { state.loading.restoring = true; state.restoreKey = null; @@ -290,6 +321,18 @@ const mutations = { retrieveNetworkKeysFailure(state, error) { state.loading.retrieveNetworkKeys = false; state.error = { error }; + }, + getNetworkBackupsRequest(state, backups) { + state.backups = null; + }, + getNetworkBackupsSuccess(state, backups) { + state.backups = backups; + state.loading.queueBackup = false; + }, + getNetworkBackupsFailure(state, error) { + state.backups = null; + state.loading.queueBackup = false; + state.error = { error }; } }; diff --git a/src/account/NetworkPage.vue b/src/account/NetworkPage.vue index 0e9ef5c..2bd42e7 100644 --- a/src/account/NetworkPage.vue +++ b/src/account/NetworkPage.vue @@ -165,6 +165,23 @@ {{messages.link_network_action_stop_description}} + +