| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 |
- import axios from 'axios';
- import { baseApi } from './baseApi';
- import { StorageType } from './types';
- /**
- * Generic api call format
- * @param {string} token - Bearer token.
- * @param {Object} params - Body params.
- * @param {Object} pathParams - Path params.
- * @param {(err: Object, res: Object) => void} callback - Callback function.
- */
- const checkAuth = baseApi('GET', '/api/auth/check');
- const createAWSIntegration = baseApi<{
- aws_region: string,
- aws_cluster_id?: string,
- aws_access_key_id: string,
- aws_secret_access_key: string,
- }, { id: number }>('POST', pathParams => {
- return `/api/projects/${pathParams.id}/integrations/aws`;
- });
- const createDOCR = baseApi<{
- do_integration_id: number,
- docr_name: string,
- docr_subscription_tier: string,
- }, {
- project_id: number,
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.project_id}/provision/docr`;
- });
- const createDOKS = baseApi<{
- do_integration_id: number,
- doks_name: string,
- do_region: string,
- }, {
- project_id: number,
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.project_id}/provision/doks`;
- });
- const createECR = baseApi<{
- name: string,
- aws_integration_id: string,
- }, { id: number }>('POST', pathParams => {
- return `/api/projects/${pathParams.id}/registries`;
- });
- const createGCPIntegration = baseApi<{
- gcp_region: string,
- gcp_key_data: string,
- gcp_project_id: string,
- }, {
- project_id: number,
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.project_id}/integrations/gcp`;
- });
- const createGCR = baseApi<{
- gcp_integration_id: number,
- }, {
- project_id: number,
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.project_id}/provision/gcr`;
- });
- const createGHAction = baseApi<{
- git_repo: string,
- image_repo_uri: string,
- dockerfile_path: string,
- git_repo_id: number,
- }, {
- project_id: number,
- CLUSTER_ID: number,
- RELEASE_NAME: string,
- RELEASE_NAMESPACE: string,
- }>('POST', pathParams => {
- let { project_id, CLUSTER_ID, RELEASE_NAME, RELEASE_NAMESPACE } = pathParams;
- return `/api/projects/${project_id}/ci/actions?cluster_id=${CLUSTER_ID}&name=${RELEASE_NAME}&namespace=${RELEASE_NAMESPACE}`;
- })
- const createGKE = baseApi<{
- gcp_integration_id: number,
- gke_name: string,
- }, {
- project_id: number,
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.project_id}/provision/gke`;
- });
- const createInvite = baseApi<{
- email: string
- }, {
- id: number
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.id}/invites`;
- });
- const createProject = baseApi<{ name: string }, {}>('POST', pathParams => {
- return `/api/projects`;
- });
- const deleteCluster = baseApi<{
- }, {
- project_id: number,
- cluster_id: number,
- }>('DELETE', pathParams => {
- return `/api/projects/${pathParams.project_id}/clusters/${pathParams.cluster_id}`;
- });
- const deleteInvite = baseApi<{}, { id: number, invId: number }>('DELETE', pathParams => {
- return `/api/projects/${pathParams.id}/invites/${pathParams.invId}`;
- });
- const deleteProject = baseApi<{}, { id: number }>('DELETE', pathParams => {
- return `/api/projects/${pathParams.id}`;
- });
- const deployTemplate = baseApi<{
- templateName: string,
- imageURL?: string,
- formValues?: any,
- storage: StorageType,
- namespace: string,
- name: string,
- }, {
- id: number,
- cluster_id: number,
- name: string,
- version: string
- }>('POST', pathParams => {
- let { cluster_id, id, name, version } = pathParams;
- return `/api/projects/${id}/deploy/${name}/${version}?cluster_id=${cluster_id}`;
- });
- const destroyCluster = baseApi<{
- eks_name: string,
- }, {
- project_id: number,
- infra_id: number,
- }>('POST', pathParams => {
- return `/api/projects/${pathParams.project_id}/infra/${pathParams.infra_id}/eks/destroy`;
- });
- const getBranchContents = baseApi<{
- dir: string
- }, {
- project_id: number,
- git_repo_id: number
- kind: string,
- owner: string,
- name: string,
- branch: string
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/${pathParams.branch}/contents`;
- });
- const getBranches = baseApi<{
- }, {
- project_id: number,
- git_repo_id: number,
- kind: string,
- owner: string,
- name: string
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos/${pathParams.kind}/${pathParams.owner}/${pathParams.name}/branches`;
- });
- const getChart = baseApi<{
- namespace: string,
- cluster_id: number,
- storage: StorageType
- }, { id: number, name: string, revision: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}`;
- });
- const getCharts = baseApi<{
- namespace: string,
- cluster_id: number,
- storage: StorageType,
- limit: number,
- skip: number,
- byDate: boolean,
- statusFilter: string[]
- }, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/releases`;
- });
- const getChartComponents = baseApi<{
- namespace: string,
- cluster_id: number,
- storage: StorageType
- }, { id: number, name: string, revision: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}/components`;
- });
- const getChartControllers = baseApi<{
- namespace: string,
- cluster_id: number,
- storage: StorageType
- }, { id: number, name: string, revision: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/releases/${pathParams.name}/${pathParams.revision}/controllers`;
- });
- const getClusterIntegrations = baseApi('GET', '/api/integrations/cluster');
- const getClusters = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/clusters`;
- });
- const getGitRepoList = baseApi<{
- }, {
- project_id: number,
- git_repo_id: number,
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/gitrepos/${pathParams.git_repo_id}/repos`;
- });
- const getGitRepos = baseApi<{
- }, {
- project_id: number,
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/gitrepos`;
- });
- const getImageRepos = baseApi<{
- }, {
- project_id: number,
- registry_id: number
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}/repositories`;
- });
- const getImageTags = baseApi<{
- }, {
- project_id: number,
- registry_id: number,
- repo_name: string,
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/registries/${pathParams.registry_id}/repositories/${pathParams.repo_name}`;
- });
- const getInfra = baseApi<{
- }, {
- project_id: number,
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/infra`;
- });
- const getIngress = baseApi<{
- cluster_id: number,
- }, { name: string, namespace: string, id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/k8s/${pathParams.namespace}/ingress/${pathParams.name}`;
- });
- const getInvites = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/invites`;
- });
- const getMatchingPods = baseApi<{
- cluster_id: number,
- selectors: string[]
- }, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/k8s/pods`;
- });
- const getNamespaces = baseApi<{
- cluster_id: number,
- }, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/k8s/namespaces`;
- });
- const getOAuthIds = baseApi<{
- }, {
- project_id: number,
- }>('GET', pathParams => {
- return `/api/projects/${pathParams.project_id}/integrations/oauth`;
- });
- const getProjectClusters = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/clusters`;
- });
- const getProjectRegistries = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/registries`;
- });
- const getProjectRepos = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/repos`;
- });
- const getProjects = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/users/${pathParams.id}/projects`;
- });
- const getRegistryIntegrations = baseApi('GET', '/api/integrations/registry');
- const getReleaseToken = baseApi<{
- namespace: string,
- cluster_id: number,
- storage: StorageType,
- }, { name: string, id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/releases/${pathParams.name}/webhook_token`;
- });
- const getRepoIntegrations = baseApi('GET', '/api/integrations/repo');
- const getRepos = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/repos`;
- });
- const getRevisions = baseApi<{
- namespace: string,
- cluster_id: number,
- storage: StorageType
- }, { id: number, name: string }>('GET', pathParams => {
- return `/api/projects/${pathParams.id}/releases/${pathParams.name}/history`;
- });
- const getTemplateInfo = baseApi<{}, { name: string, version: string }>('GET', pathParams => {
- return `/api/templates/${pathParams.name}/${pathParams.version}`;
- });
- const getTemplates = baseApi('GET', '/api/templates');
- const getUser = baseApi<{}, { id: number }>('GET', pathParams => {
- return `/api/users/${pathParams.id}`;
- });
- const linkGithubProject = baseApi<{
- }, {
- project_id: number,
- }>('GET', pathParams => {
- return `/api/oauth/projects/${pathParams.project_id}/github`;
- });
- const logInUser = baseApi<{
- email: string,
- password: string
- }>('POST', '/api/login');
- const logOutUser = baseApi('POST', '/api/logout');
- const provisionECR = baseApi<{
- ecr_name: string,
- aws_integration_id: string,
- }, { id: number }>('POST', pathParams => {
- return `/api/projects/${pathParams.id}/provision/ecr`;
- });
- const provisionEKS = baseApi<{
- eks_name: string,
- aws_integration_id: string,
- }, { id: number }>('POST', pathParams => {
- return `/api/projects/${pathParams.id}/provision/eks`;
- });
- const registerUser = baseApi<{
- email: string,
- password: string
- }>('POST', '/api/users');
- const rollbackChart = baseApi<{
- namespace: string,
- storage: StorageType,
- revision: number
- }, {
- id: number,
- name: string,
- cluster_id: number,
- }>('POST', pathParams => {
- let { id, name, cluster_id } = pathParams;
- return `/api/projects/${id}/releases/${name}/rollback?cluster_id=${cluster_id}`;
- });
- const uninstallTemplate = baseApi<{
- }, {
- id: number,
- name: string,
- cluster_id: number,
- namespace: string,
- storage: StorageType,
- }>('POST', pathParams => {
- let { id, name, cluster_id, storage, namespace } = pathParams;
- return `/api/projects/${id}/deploy/${name}?cluster_id=${cluster_id}&namespace=${namespace}&storage=${storage}`;
- });
- const updateUser = baseApi<{
- rawKubeConfig?: string,
- allowedContexts?: string[]
- }, { id: number }>('PUT', pathParams => {
- return `/api/users/${pathParams.id}`;
- });
- const upgradeChartValues = baseApi<{
- namespace: string,
- storage: StorageType,
- values: string
- }, {
- id: number,
- name: string,
- cluster_id: number,
- }>('POST', pathParams => {
- let { id, name, cluster_id } = pathParams;
- return `/api/projects/${id}/releases/${name}/upgrade?cluster_id=${cluster_id}`;
- });
- // Bundle export to allow default api import (api.<method> is more readable)
- export default {
- checkAuth,
- createAWSIntegration,
- createDOCR,
- createDOKS,
- createECR,
- createGCPIntegration,
- createGCR,
- createGHAction,
- createGKE,
- createInvite,
- createProject,
- deleteCluster,
- deleteInvite,
- deleteProject,
- deployTemplate,
- destroyCluster,
- getBranchContents,
- getBranches,
- getChart,
- getCharts,
- getChartComponents,
- getChartControllers,
- getClusterIntegrations,
- getClusters,
- getGitRepoList,
- getGitRepos,
- getImageRepos,
- getImageTags,
- getInfra,
- getIngress,
- getInvites,
- getMatchingPods,
- getNamespaces,
- getOAuthIds,
- getProjectClusters,
- getProjectRegistries,
- getProjectRepos,
- getProjects,
- getRegistryIntegrations,
- getReleaseToken,
- getRepoIntegrations,
- getRepos,
- getRevisions,
- getTemplateInfo,
- getTemplates,
- getUser,
- linkGithubProject,
- logInUser,
- logOutUser,
- provisionECR,
- provisionEKS,
- registerUser,
- rollbackChart,
- uninstallTemplate,
- updateUser,
- upgradeChartValues,
- }
|