You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2023/07/31 15:47:40 UTC

[pinot] branch master updated: UI: use new PUT api's to enable/disable table/instance state (#11225)

This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 8d3b305be3 UI: use new PUT api's to enable/disable table/instance state (#11225)
8d3b305be3 is described below

commit 8d3b305be37b3d79a54e890c962f9a3fcfbcf183
Author: Jayesh Choudhary <ja...@gmail.com>
AuthorDate: Mon Jul 31 21:17:35 2023 +0530

    UI: use new PUT api's to enable/disable table/instance state (#11225)
---
 .../src/main/resources/app/interfaces/types.d.ts        | 10 ++++++++++
 .../src/main/resources/app/pages/InstanceDetails.tsx    |  4 ++--
 .../src/main/resources/app/pages/TenantDetails.tsx      | 17 +++--------------
 .../src/main/resources/app/requests/index.ts            | 10 +++++-----
 4 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/pinot-controller/src/main/resources/app/interfaces/types.d.ts b/pinot-controller/src/main/resources/app/interfaces/types.d.ts
index e24b58456e..1bbc3fee21 100644
--- a/pinot-controller/src/main/resources/app/interfaces/types.d.ts
+++ b/pinot-controller/src/main/resources/app/interfaces/types.d.ts
@@ -247,4 +247,14 @@ declare module 'Models' {
     GOOD = "GOOD",
     UPDATING = "UPDATING",
   }
+
+  export const enum InstanceState {
+    ENABLE = "enable",
+    DISABLE = "disable"
+  }
+
+  export const enum TableType {
+    REALTIME = "realtime",
+    OFFLINE = "offline"
+  }
 }
diff --git a/pinot-controller/src/main/resources/app/pages/InstanceDetails.tsx b/pinot-controller/src/main/resources/app/pages/InstanceDetails.tsx
index 1039655a3d..c9aa979f16 100644
--- a/pinot-controller/src/main/resources/app/pages/InstanceDetails.tsx
+++ b/pinot-controller/src/main/resources/app/pages/InstanceDetails.tsx
@@ -23,7 +23,7 @@ import { UnControlled as CodeMirror } from 'react-codemirror2';
 import 'codemirror/lib/codemirror.css';
 import 'codemirror/theme/material.css';
 import 'codemirror/mode/javascript/javascript';
-import { TableData } from 'Models';
+import { InstanceState, TableData } from 'Models';
 import { RouteComponentProps } from 'react-router-dom';
 import PinotMethodUtils from '../utils/PinotMethodUtils';
 import AppLoader from '../components/AppLoader';
@@ -256,7 +256,7 @@ const InstanceDetails = ({ match }: RouteComponentProps<Props>) => {
   };
 
   const toggleInstanceState = async () => {
-    const result = await PinotMethodUtils.toggleInstanceState(instanceName, state.enabled ? 'DISABLE' : 'ENABLE');
+    const result = await PinotMethodUtils.toggleInstanceState(instanceName, state.enabled ? InstanceState.DISABLE : InstanceState.ENABLE);
     if(result.status){
       dispatch({type: 'success', message: result.status, show: true});
       fetchData();
diff --git a/pinot-controller/src/main/resources/app/pages/TenantDetails.tsx b/pinot-controller/src/main/resources/app/pages/TenantDetails.tsx
index b554bd8376..189278e4af 100644
--- a/pinot-controller/src/main/resources/app/pages/TenantDetails.tsx
+++ b/pinot-controller/src/main/resources/app/pages/TenantDetails.tsx
@@ -22,7 +22,7 @@ import { makeStyles } from '@material-ui/core/styles';
 import { Box, Button, FormControlLabel, Grid, Switch, Tooltip, Typography } from '@material-ui/core';
 import { RouteComponentProps, useHistory, useLocation } from 'react-router-dom';
 import { UnControlled as CodeMirror } from 'react-codemirror2';
-import { DISPLAY_SEGMENT_STATUS, TableData, TableSegmentJobs } from 'Models';
+import { DISPLAY_SEGMENT_STATUS, InstanceState, TableData, TableSegmentJobs, TableType } from 'Models';
 import AppLoader from '../components/AppLoader';
 import CustomizedTables from '../components/Table';
 import TableToolbar from '../components/TableToolbar';
@@ -246,19 +246,8 @@ const TenantPageDetails = ({ match }: RouteComponentProps<Props>) => {
   };
 
   const toggleTableState = async () => {
-    const result = await PinotMethodUtils.toggleTableState(tableName, state.enabled ? 'disable' : 'enable', tableType.toLowerCase());
-    if(!result.error && result[0].state){
-      if(result[0].state.successful){
-        dispatch({type: 'success', message: result[0].state.message, show: true});
-        setState({ enabled: !state.enabled });
-        fetchTableData();
-      } else {
-        dispatch({type: 'error', message: result[0].state.message, show: true});
-      }
-      closeDialog();
-    } else {
-      syncResponse(result);
-    }
+    const result = await PinotMethodUtils.toggleTableState(tableName, state.enabled ? InstanceState.DISABLE : InstanceState.ENABLE, tableType.toLowerCase() as TableType);
+    syncResponse(result);
   };
 
   const handleConfigChange = (value: string) => {
diff --git a/pinot-controller/src/main/resources/app/requests/index.ts b/pinot-controller/src/main/resources/app/requests/index.ts
index 02b8bb419c..f41c773106 100644
--- a/pinot-controller/src/main/resources/app/requests/index.ts
+++ b/pinot-controller/src/main/resources/app/requests/index.ts
@@ -21,7 +21,7 @@ import { AxiosResponse } from 'axios';
 import { TableData, Instances, Instance, Tenants, ClusterConfig, TableName, TableSize,
   IdealState, QueryTables, TableSchema, SQLResult, ClusterName, ZKGetList, ZKConfig, OperationResponse,
   BrokerList, ServerList, UserList, TableList, UserObject, TaskProgressResponse, TableSegmentJobs, TaskRuntimeConfig,
-  SegmentDebugDetails, QuerySchemas
+  SegmentDebugDetails, QuerySchemas, TableType, InstanceState
 } from 'Models';
 
 const headers = {
@@ -86,11 +86,11 @@ export const putInstance = (name: string, params: string): Promise<AxiosResponse
 export const updateInstanceTags = (name: string, params: string): Promise<AxiosResponse<OperationResponse>> =>
   baseApi.put(`/instances/${name}/updateTags?tags=${params}`, null, { headers });
 
-export const setInstanceState = (name: string, stateName: string): Promise<AxiosResponse<OperationResponse>> =>
-  baseApi.post(`/instances/${name}/state`, stateName, { headers: {'Content-Type': 'text/plain', 'Accept': 'application/json'} });
+export const setInstanceState = (name: string, state: InstanceState): Promise<AxiosResponse<OperationResponse>> =>
+  baseApi.put(`/instances/${name}/state?state=${state}`, { headers: {'Content-Type': 'text/plain', 'Accept': 'application/json'} });
 
-export const setTableState = (name: string, stateName: string, tableType: string): Promise<AxiosResponse<OperationResponse>> =>
-  baseApi.get(`/tables/${name}?state=${stateName}&type=${tableType}`);
+export const setTableState = (tableName: string, state: InstanceState, tableType: TableType): Promise<AxiosResponse<OperationResponse>> =>
+  baseApi.put(`/tables/${tableName}/state?state=${state}&type=${tableType}`);
 
 export const dropInstance = (name: string): Promise<AxiosResponse<OperationResponse>> =>
   baseApi.delete(`instances/${name}`, { headers });


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org