Skip to content

Commit aa450cf

Browse files
BingqingLyushirly121zhanglei1949
authored
feat(interactive): add http service in Insight (#4464)
<!-- Thanks for your contribution! please review https://github.com/alibaba/GraphScope/blob/main/CONTRIBUTING.md before opening an issue. --> ## What do these changes do? <!-- Please give a short brief about these changes. --> As titled. ## Related issue number <!-- Are there any issues opened that will be resolved by merging this change? --> Fixes --------- Co-authored-by: shirly121 <[email protected]> Co-authored-by: 霄磊 <[email protected]>
1 parent 49520e4 commit aa450cf

File tree

55 files changed

+4371
-677
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+4371
-677
lines changed

.github/workflows/gss.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ jobs:
102102
cp -r flex/interactive/examples/movies /tmp/gstest/
103103
cd interactive_engine/groot-client && ./gopt_groot_test.sh
104104
105+
- name: Groot Http Test
106+
run: |
107+
. ${HOME}/.graphscope_env
108+
cd interactive_engine/groot-client && ./groot_http_test.sh
109+
105110
- name: Upload tools for helm test to Artifact
106111
uses: actions/upload-artifact@v4
107112
with:

.github/workflows/interactive.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ jobs:
213213
cd ${GITHUB_WORKSPACE}/flex/tests/hqps
214214
sed -i 's/interactive_workspace/temp_workspace/g' ./interactive_config_test.yaml
215215
bash hqps_sdk_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml java
216+
export ENGINE_TYPE=interactive
216217
bash hqps_sdk_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml python
217218
sed -i 's/temp_workspace/interactive_workspace/g' ./interactive_config_test.yaml
218219

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ docs/flex/interactive/development/java/*
5858
docs/flex/interactive/development/python/*
5959
!docs/flex/interactive/development/python/*Api.md
6060
!docs/flex/interactive/development/python/python_sdk.md
61+
!docs/flex/interactive/development/python/python_sdk_ref.md
6162
docs/flex/interactive/development/restful_api.html
6263
docs/flex/coordinator/development/python/*
6364

@@ -167,6 +168,16 @@ flex/interactive/sdk/python/gs_interactive/rest.py
167168
!flex/interactive/sdk/python/gs_interactive/models/time_stamp_type.py
168169
!flex/interactive/sdk/python/gs_interactive/models/date_type.py
169170

171+
interactive_engine/groot-http/src/main/java/com/alibaba/graphscope/groot/service/models/
172+
interactive_engine/groot-http/.openapi-generator/
173+
interactive_engine/groot-http/src/main/java/org/
174+
interactive_engine/groot-http/src/main/resources/
175+
interactive_engine/groot-http/src/main/java/com/alibaba/graphscope/groot/service/api/V1Api.java
176+
!interactive_engine/groot-http/src/main/java/com/alibaba/graphscope/groot/service/models/GSDataType.java
177+
!interactive_engine/groot-http/src/main/java/com/alibaba/graphscope/groot/service/models/StringTypeString.java
178+
!interactive_engine/groot-http/src/main/java/com/alibaba/graphscope/groot/service/models/TemporalTypeTemporal.java
179+
interactive_engine/groot-http/src/test/
180+
interactive_engine/groot-http/src/main/java/com/alibaba/graphscope/groot/RFC3339DateFormat.java
170181

171182
**/.cache/
172183

charts/graphscope-store/templates/configmap.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ data:
3636

3737
## Frontend Config
3838
frontend.service.port={{ .Values.frontend.service.servicePort }}
39+
frontend.service.httpPort={{ .Values.frontend.service.httpPort }}
3940
frontend.server.id=INDEX
4041
frontend.server.num={{ .Values.frontend.replicaCount }}
4142

@@ -171,6 +172,10 @@ data:
171172
# export MALLOC_CONF=prof:true,lg_prof_interval:29,lg_prof_sample:19,prof_prefix=/tmp
172173
173174
export RUST_BACKTRACE=1
175+
if [ "$ROLE" = "frontend" ]; then
176+
echo "Starting groot-http Spring Boot service..."
177+
${GRAPHSCOPE_HOME}/groot/bin/store_ctl.sh start_http &
178+
fi
174179
${GRAPHSCOPE_HOME}/groot/bin/store_ctl.sh start ${ROLE} # || sleep infinity
175180
portal_setup.sh: |-
176181
#!/bin/bash

charts/graphscope-store/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ frontend:
139139

140140
cypherPort: 7687
141141

142+
httpPort: 8080
143+
142144
## Internal port for communication between components.
143145
##
144146
port: 55555

docs/flex/interactive/dev_guide.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ maxdepth: 2
1111
development/dev_and_test
1212
development/java/java_sdk
1313
development/python/python_sdk
14+
development/python/python_sdk_ref
1415
development/restful_api
1516
development/stored_procedure/cypher_procedure
1617
development/stored_procedure/cpp_procedure

docs/flex/interactive/development/java/EdgeApi.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,16 @@ public class Example {
3838
.srcLabel("person")
3939
.dstLabel("person")
4040
.edgeLabel("knows")
41-
.srcPrimaryKeyValue(2)
42-
.dstPrimaryKeyValue(4)
41+
.srcPrimaryKeyValues(Arrays.asList(new Property().name("id").value(2)))
42+
.dstPrimaryKeyValues(Arrays.asList(new Property().name("id").value(4)))
4343
.addPropertiesItem(new Property().name("weight").value(9.123));
4444
EdgeRequest edgeRequest4 =
4545
new EdgeRequest()
4646
.srcLabel("person")
4747
.dstLabel("person")
4848
.edgeLabel("knows")
49-
.srcPrimaryKeyValue(2)
50-
.dstPrimaryKeyValue(6)
49+
.srcPrimaryKeyValues(Arrays.asList(new Property().name("id").value(2)))
50+
.dstPrimaryKeyValues(Arrays.asList(new Property().name("id").value(6)))
5151
.addPropertiesItem(new Property().name("weight").value(3.233));
5252
List<EdgeRequest> edgeRequests = new ArrayList<>();
5353
edgeRequests.add(edgeRequest3);
@@ -187,8 +187,8 @@ public class Example {
187187
.srcLabel("person")
188188
.dstLabel("person")
189189
.edgeLabel("knows")
190-
.srcPrimaryKeyValue(2)
191-
.dstPrimaryKeyValue(4)
190+
.srcPrimaryKeyValues(Arrays.asList(new Property().name("id").value(2)))
191+
.dstPrimaryKeyValues(Arrays.asList(new Property().name("id").value(4)))
192192
.addPropertiesItem(new Property().name("weight").value(3.0));
193193
Result<String> updateEdgeResponse = session.updateEdge(graphId, updateEdgeRequest);
194194
if (!updateEdgeResponse.isOk()) {

docs/flex/interactive/development/java/VertexApi.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class Example {
3737
VertexRequest vertexRequest =
3838
new VertexRequest()
3939
.label("person")
40-
.primaryKeyValue(8)
40+
.primaryKeyValues(Arrays.asList(new Property().name("id").value(8)))
4141
.addPropertiesItem(new Property().name("name").value("mike"))
4242
.addPropertiesItem(new Property().name("age").value(12));
4343
VertexEdgeRequest vertexEdgeRequest =
@@ -179,7 +179,7 @@ public class Example {
179179
VertexRequest updateVertexRequest =
180180
new VertexRequest()
181181
.label("person")
182-
.primaryKeyValue(8)
182+
.primaryKeyValues(Arrays.asList(new Property().name("id").value(8)))
183183
.addPropertiesItem(new Property().name("name").value("Cindy"))
184184
.addPropertiesItem(new Property().name("age").value(24));
185185
Result<String> updateVertexResponse = session.updateVertex(graphId, updateVertexRequest);

docs/flex/interactive/development/python/EdgeApi.md

Lines changed: 79 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Method | HTTP request | Description
77
[**add_edge**](EdgeApi.md#add_edge) | **POST** /v1/graph/{graph_id}/edge | Add edge to the graph
88
[**get_edge**](EdgeApi.md#get_edge) | **GET** /v1/graph/{graph_id}/edge | Get the edge&#39;s properties with src and dst vertex primary keys.
99
[**update_edge**](EdgeApi.md#update_edge) | **PUT** /v1/graph/{graph_id}/edge | Update edge&#39;s property
10-
10+
[**delete_edge**](EdgeApi.md#deleteEdge) | **DELETE** /v1/graph/{graph_id}/edge | Remove edge from the graph
1111

1212
# **add_edge**
1313
> [Result](./result.rst)[str] add_edge(graph_id, edge_request)
@@ -32,16 +32,16 @@ edge_request = [
3232
src_label="person",
3333
dst_label="person",
3434
edge_label="knows",
35-
src_primary_key_value=2,
36-
dst_primary_key_value=4,
35+
src_primary_key_values=[ModelProperty(name="id", value=2)],
36+
dst_primary_key_value=[ModelProperty(name="id", value=4)],
3737
properties=[ModelProperty(name="weight", value=9.123)],
3838
),
3939
EdgeRequest(
4040
src_label="person",
4141
dst_label="person",
4242
edge_label="knows",
43-
src_primary_key_value=2,
44-
dst_primary_key_value=6,
43+
src_primary_key_values=[ModelProperty(name="id", value=2)],
44+
dst_primary_key_values=[ModelProperty(name="id", value=6)],
4545
properties=[ModelProperty(name="weight", value=3.233)],
4646
),
4747
]
@@ -178,8 +178,8 @@ resp = sess.update_edge(
178178
src_label="person",
179179
dst_label="person",
180180
edge_label="knows",
181-
src_primary_key_value=2,
182-
dst_primary_key_value=4,
181+
src_primary_key_values=[ModelProperty(name="id", value=2)],
182+
dst_primary_key_values=[ModelProperty(name="id", value=4)],
183183
properties=[ModelProperty(name="weight", value=3)],
184184
),
185185
)
@@ -220,3 +220,75 @@ No authorization required
220220

221221
[[Back to top]](#) [[Back to API list]](python_sdk.md#documentation-for-service-apis) [[Back to Model list]](python_sdk.md#documentation-for-data-structures) [[Back to python_sdk]](python_sdk.md)
222222

223+
# **delete_edge**
224+
> [Result](./result.rst)[str] delete_edge(graph_id, delete_edge_request)
225+
226+
Delete an edge from the graph.
227+
228+
### Example
229+
230+
231+
```python
232+
from gs_interactive.client.driver import Driver
233+
from gs_interactive.client.session import Session
234+
from gs_interactive.models import *
235+
236+
driver = Driver()
237+
sess = driver.session()
238+
239+
graph_id = "1"
240+
241+
delete_edge_request = [
242+
EdgeRequest(
243+
src_label="person",
244+
dst_label="person",
245+
edge_label="knows",
246+
src_primary_key_value=[ModelProperty(name="id", value=2)]
247+
dst_primary_key_value=[ModelProperty(name="id", value=4)]
248+
),
249+
EdgeRequest(
250+
src_label="person",
251+
dst_label="person",
252+
edge_label="knows",
253+
src_primary_key_value=[ModelProperty(name="id", value=2)]
254+
dst_primary_key_value=[ModelProperty(name="id", value=6)]
255+
),
256+
]
257+
resp = sess.delete_edge(graph_id, [delete_edge_request])
258+
print(resp)
259+
assert resp.is_ok()
260+
```
261+
262+
263+
264+
### Parameters
265+
266+
267+
Name | Type | Description | Notes
268+
------------- | ------------- | ------------- | -------------
269+
**graph_id** | **str**| |
270+
**delete_edge_request** | [**List[DeleteEdgeRequest]**](DeleteEdgeRequest.md)| |
271+
272+
### Return type
273+
274+
[Result](./result.rst)[str]
275+
276+
### Authorization
277+
278+
No authorization required
279+
280+
### HTTP request headers
281+
282+
- **Content-Type**: application/json
283+
- **Accept**: application/json
284+
285+
### HTTP response details
286+
287+
| Status code | Description | Response headers |
288+
|-------------|-------------|------------------|
289+
**200** | Successfully insert the edge | - |
290+
**400** | Invalid input edge | - |
291+
**404** | Graph or edge not exists | - |
292+
**500** | Server internal error | - |
293+
294+
[[Back to top]](#) [[Back to API list]](python_sdk.md#documentation-for-service-apis) [[Back to Model list]](python_sdk.md#documentation-for-data-structures) [[Back to python_sdk]](python_sdk.md)

0 commit comments

Comments
 (0)