Explorar el Código

Show latest backup and allow queuing new one

pull/8/head
Kristijan Mitrovic hace 4 años
padre
commit
5dfe5c5dee
Se han modificado 3 ficheros con 100 adiciones y 11 borrados
  1. +14
    -2
      src/_services/network.service.js
  2. +50
    -7
      src/_store/networks.module.js
  3. +36
    -2
      src/account/NetworkPage.vue

+ 14
- 2
src/_services/network.service.js Ver fichero

@@ -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));
}
}

function getNetworkBackups(userId, networkId, messages, errors) {
return fetch(`${config.apiUrl}/users/${userId}/networks/${networkId}/backups`, util.getWithAuth())
.then(util.handleCrudResponse(messages, errors));
}

+ 50
- 7
src/_store/networks.module.js Ver fichero

@@ -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 };
}
};



+ 36
- 2
src/account/NetworkPage.vue Ver fichero

@@ -165,6 +165,23 @@
</button>
<img v-show="loading && loading.stopping" :src="loadingImgSrc" />
{{messages.link_network_action_stop_description}}

<hr/>
<span v-if="backups === null">{{ messages.label_latest_backup }} <img :src="loadingImgSrc" /></span>
<span v-else>
<span v-if="backups.length === 0">{{ messages.label_no_latest_backup }}</span>
<span v-else>
{{ messages.label_latest_backup }} {{ backups[0].label }} {{ backups[0].status }}
{{ messages.date_format_app_data_epoch_time.parseDateMessage(backups[0]['creationTime'], messages) }}
</span>
</span>

<span v-if="allowQueueBackup">
<br/>
<button @click="queueBckup()" class="btn btn-secondary" :disabled="loading && loading.queueBackup">
{{ messages.link_backup_network }}
</button>
</span>
</div>
<div v-else-if="network.state === 'stopped' || network.state === 'error_stopping'"
style="border: 2px solid #000;">
@@ -199,7 +216,7 @@
computed: {
...mapState('networks', [
'network', 'newNodeNotification', 'networkStatuses', 'networkNodes', 'networkKeysRequested',
'deletedNetwork', 'networkKeys', 'loading', 'restoreKey'
'deletedNetwork', 'networkKeys', 'loading', 'restoreKey', 'backups'
]),
...mapState('system', ['messages', 'configs', 'appLinks']),
showSetupHelp () {
@@ -217,12 +234,20 @@
},
networkAppLoginUrl: function () {
return 'https://'+this.network.name+'.'+this.network.domainName+'/appLogin?session='+util.currentUser().token+'&uri=/';
},
allowQueueBackup: function () {
if (this.backups === null) return false;
if (this.backups.length === 0) return true;

let lastBackupStatus = this.backups[0].status;
return lastBackupStatus !== 'queued' && lastBackupStatus !== 'backup_in_progress';
}
},
methods: {
...mapActions('networks', [
'getNetworkById', 'deleteNetwork', 'getStatusesByNetworkId', 'getNodesByNetworkId',
'stopNetwork', 'restoreNetwork', 'deleteNetwork', 'requestNetworkKeys', 'retrieveNetworkKeys'
'stopNetwork', 'queueBackup', 'restoreNetwork', 'deleteNetwork', 'requestNetworkKeys',
'retrieveNetworkKeys'
]),
...mapActions('system', ['getAppLinks']),
refreshStatus (userId) {
@@ -254,6 +279,15 @@
errors: this.errors
});
},
queueBckup () {
this.errors.clear();
this.queueBackup({
userId: this.user.uuid,
networkId: this.networkId,
messages: this.messages,
errors: this.errors
});
},
restoreNet () {
this.errors.clear();
this.restoreNetwork({


Cargando…
Cancelar
Guardar