/*
Copyright (C) 2017 Cloudbase Solutions SRL
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
// @flow
import Api from '../utils/ApiCaller'
import type { Instance } from '../types/Instance'
import { servicesUrl } from '../config'
class InstanceSource {
static loadInstancesChunk(
endpointId: string,
chunkSize: number,
lastInstanceId?: string,
cancelId?: string,
searchText?: string
): Promise {
let url = `${servicesUrl.coriolis}/${Api.projectId}/endpoints/${endpointId}/instances`
url = `${url}?limit=${chunkSize}`
if (lastInstanceId) {
url = `${url}&marker=${lastInstanceId}`
}
if (searchText) {
url = `${url}&name=${searchText}`
}
return Api.send({ url, cancelId }).then(response => {
return response.data.instances
})
}
static loadInstances(endpointId: string): Promise {
Api.cancelRequests(endpointId)
let url = `${servicesUrl.coriolis}/${Api.projectId}/endpoints/${endpointId}/instances`
return Api.send({ url, cancelId: endpointId }).then(response => {
return response.data.instances
})
}
static loadInstanceDetails(endpointId: string, instanceName: string, reqId: number, quietError?: boolean): Promise<{ instance: Instance, reqId: number }> {
return Api.send({
url: `${servicesUrl.coriolis}/${Api.projectId}/endpoints/${endpointId}/instances/${btoa(instanceName)}`,
cancelId: `instanceDetail-${reqId}`,
quietError,
}).then(response => {
return { instance: response.data.instance, reqId }
})
}
static cancelInstancesDetailsRequests(reqId: number) {
Api.cancelRequests(`instanceDetail-${reqId}`)
}
}
export default InstanceSource