96 lines
2.5 KiB
JavaScript
96 lines
2.5 KiB
JavaScript
/* global gapi */
|
|
import * as types from './mutation_types';
|
|
|
|
const gapiResourceListRequest = ({ resource, params, commit, mutation, payloadKey }) =>
|
|
new Promise((resolve, reject) => {
|
|
const request = resource.list(params);
|
|
|
|
return request.then(
|
|
resp => {
|
|
const { result } = resp;
|
|
|
|
commit(mutation, result[payloadKey]);
|
|
|
|
resolve();
|
|
},
|
|
resp => {
|
|
reject(resp);
|
|
},
|
|
);
|
|
});
|
|
|
|
export const setProject = ({ commit }, selectedProject) => {
|
|
commit(types.SET_PROJECT, selectedProject);
|
|
};
|
|
|
|
export const setZone = ({ commit }, selectedZone) => {
|
|
commit(types.SET_ZONE, selectedZone);
|
|
};
|
|
|
|
export const setMachineType = ({ commit }, selectedMachineType) => {
|
|
commit(types.SET_MACHINE_TYPE, selectedMachineType);
|
|
};
|
|
|
|
export const setIsValidatingProjectBilling = ({ commit }, isValidatingProjectBilling) => {
|
|
commit(types.SET_IS_VALIDATING_PROJECT_BILLING, isValidatingProjectBilling);
|
|
};
|
|
|
|
export const fetchProjects = ({ commit }) =>
|
|
gapiResourceListRequest({
|
|
resource: gapi.client.cloudresourcemanager.projects,
|
|
params: {},
|
|
commit,
|
|
mutation: types.SET_PROJECTS,
|
|
payloadKey: 'projects',
|
|
});
|
|
|
|
export const validateProjectBilling = ({ dispatch, commit, state }) =>
|
|
new Promise((resolve, reject) => {
|
|
const request = gapi.client.cloudbilling.projects.getBillingInfo({
|
|
name: `projects/${state.selectedProject.projectId}`,
|
|
});
|
|
|
|
commit(types.SET_ZONE, '');
|
|
commit(types.SET_MACHINE_TYPE, '');
|
|
|
|
return request.then(
|
|
resp => {
|
|
const { billingEnabled } = resp.result;
|
|
|
|
commit(types.SET_PROJECT_BILLING_STATUS, Boolean(billingEnabled));
|
|
dispatch('setIsValidatingProjectBilling', false);
|
|
resolve();
|
|
},
|
|
resp => {
|
|
dispatch('setIsValidatingProjectBilling', false);
|
|
reject(resp);
|
|
},
|
|
);
|
|
});
|
|
|
|
export const fetchZones = ({ commit, state }) =>
|
|
gapiResourceListRequest({
|
|
resource: gapi.client.compute.zones,
|
|
params: {
|
|
project: state.selectedProject.projectId,
|
|
},
|
|
commit,
|
|
mutation: types.SET_ZONES,
|
|
payloadKey: 'items',
|
|
});
|
|
|
|
export const fetchMachineTypes = ({ commit, state }) =>
|
|
gapiResourceListRequest({
|
|
resource: gapi.client.compute.machineTypes,
|
|
params: {
|
|
project: state.selectedProject.projectId,
|
|
zone: state.selectedZone,
|
|
},
|
|
commit,
|
|
mutation: types.SET_MACHINE_TYPES,
|
|
payloadKey: 'items',
|
|
});
|
|
|
|
// prevent babel-plugin-rewire from generating an invalid default during karma tests
|
|
export default () => {};
|