Skip to content

Commit

Permalink
[Connector API] Implement update name/description action (#102825)
Browse files Browse the repository at this point in the history
  • Loading branch information
jedrazb committed Dec 5, 2023
1 parent 8d0551e commit 1a8d803
Show file tree
Hide file tree
Showing 12 changed files with 639 additions and 35 deletions.
@@ -0,0 +1,39 @@
{
"connector.update_name": {
"documentation": {
"url": "https://www.elastic.co/guide/en/enterprise-search/current/connectors.html",
"description": "Updates the name and/or description fields in the connector document."
},
"stability": "experimental",
"visibility": "feature_flag",
"feature_flag": "es.connector_api_feature_flag_enabled",
"headers": {
"accept": [
"application/json"
],
"content_type": [
"application/json"
]
},
"url": {
"paths": [
{
"path": "/_connector/{connector_id}/_name",
"methods": [
"PUT"
],
"parts": {
"connector_id": {
"type": "string",
"description": "The unique identifier of the connector to be updated."
}
}
}
]
},
"body": {
"description": "An object containing the connector's name and/or description.",
"required": true
}
}
}
@@ -0,0 +1,81 @@
setup:
- skip:
version: " - 8.11.99"
reason: Introduced in 8.12.0

- do:
connector.put:
connector_id: test-connector
body:
index_name: search-1-test
name: my-connector
language: pl
is_native: false
service_type: super-connector

---
"Update Connector Name":
- do:
connector.update_name:
connector_id: test-connector
body:
name: test-name


- match: { result: updated }

- do:
connector.get:
connector_id: test-connector

- match: { name: test-name }

---
"Update Connector Name and Description":
- do:
connector.update_name:
connector_id: test-connector
body:
name: test-name
description: test-description

- match: { result: updated }

- do:
connector.get:
connector_id: test-connector

- match: { name: test-name }
- match: { description: test-description }

---
"Update Connector Scheduling - 404 when connector doesn't exist":
- do:
catch: "missing"
connector.update_name:
connector_id: test-non-existent-connector
body:
name: test-name
description: test-description

---
"Update Connector Scheduling - 400 status code when connector_id is empty":
- do:
catch: "bad_request"
connector.update_name:
connector_id: ""
body:
name: test-name
description: test-description

---
"Update Connector Scheduling - 400 status code when payload is not string":
- do:
catch: "bad_request"
connector.update_name:
connector_id: test-connector
body:
name:
field_1: test
field_2: something
description: test-description
Expand Up @@ -55,6 +55,7 @@
import org.elasticsearch.xpack.application.connector.action.RestUpdateConnectorFilteringAction;
import org.elasticsearch.xpack.application.connector.action.RestUpdateConnectorLastSeenAction;
import org.elasticsearch.xpack.application.connector.action.RestUpdateConnectorLastSyncStatsAction;
import org.elasticsearch.xpack.application.connector.action.RestUpdateConnectorNameAction;
import org.elasticsearch.xpack.application.connector.action.RestUpdateConnectorPipelineAction;
import org.elasticsearch.xpack.application.connector.action.RestUpdateConnectorSchedulingAction;
import org.elasticsearch.xpack.application.connector.action.TransportDeleteConnectorAction;
Expand All @@ -66,13 +67,15 @@
import org.elasticsearch.xpack.application.connector.action.TransportUpdateConnectorFilteringAction;
import org.elasticsearch.xpack.application.connector.action.TransportUpdateConnectorLastSeenAction;
import org.elasticsearch.xpack.application.connector.action.TransportUpdateConnectorLastSyncStatsAction;
import org.elasticsearch.xpack.application.connector.action.TransportUpdateConnectorNameAction;
import org.elasticsearch.xpack.application.connector.action.TransportUpdateConnectorPipelineAction;
import org.elasticsearch.xpack.application.connector.action.TransportUpdateConnectorSchedulingAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorConfigurationAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorErrorAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorFilteringAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorLastSeenAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorLastSyncStatsAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorNameAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorPipelineAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorSchedulingAction;
import org.elasticsearch.xpack.application.connector.syncjob.action.CancelConnectorSyncJobAction;
Expand Down Expand Up @@ -221,6 +224,7 @@ protected XPackLicenseState getLicenseState() {
new ActionHandler<>(UpdateConnectorFilteringAction.INSTANCE, TransportUpdateConnectorFilteringAction.class),
new ActionHandler<>(UpdateConnectorLastSeenAction.INSTANCE, TransportUpdateConnectorLastSeenAction.class),
new ActionHandler<>(UpdateConnectorLastSyncStatsAction.INSTANCE, TransportUpdateConnectorLastSyncStatsAction.class),
new ActionHandler<>(UpdateConnectorNameAction.INSTANCE, TransportUpdateConnectorNameAction.class),
new ActionHandler<>(UpdateConnectorPipelineAction.INSTANCE, TransportUpdateConnectorPipelineAction.class),
new ActionHandler<>(UpdateConnectorSchedulingAction.INSTANCE, TransportUpdateConnectorSchedulingAction.class),

Expand Down Expand Up @@ -295,6 +299,7 @@ public List<RestHandler> getRestHandlers(
new RestUpdateConnectorFilteringAction(),
new RestUpdateConnectorLastSeenAction(),
new RestUpdateConnectorLastSyncStatsAction(),
new RestUpdateConnectorNameAction(),
new RestUpdateConnectorPipelineAction(),
new RestUpdateConnectorSchedulingAction(),

Expand Down
Expand Up @@ -199,7 +199,7 @@ public Connector(StreamInput in) throws IOException {
static final ParseField API_KEY_ID_FIELD = new ParseField("api_key_id");
public static final ParseField CONFIGURATION_FIELD = new ParseField("configuration");
static final ParseField CUSTOM_SCHEDULING_FIELD = new ParseField("custom_scheduling");
static final ParseField DESCRIPTION_FIELD = new ParseField("description");
public static final ParseField DESCRIPTION_FIELD = new ParseField("description");
public static final ParseField ERROR_FIELD = new ParseField("error");
static final ParseField FEATURES_FIELD = new ParseField("features");
public static final ParseField FILTERING_FIELD = new ParseField("filtering");
Expand Down Expand Up @@ -461,6 +461,10 @@ public String getApiKeyId() {
return apiKeyId;
}

public Map<String, ConnectorConfiguration> getConfiguration() {
return configuration;
}

public Map<String, ConnectorCustomSchedule> getCustomScheduling() {
return customScheduling;
}
Expand Down Expand Up @@ -493,6 +497,14 @@ public String getLanguage() {
return language;
}

public Instant getLastSeen() {
return lastSeen;
}

public ConnectorSyncInfo getSyncInfo() {
return syncInfo;
}

public String getName() {
return name;
}
Expand All @@ -509,8 +521,8 @@ public String getServiceType() {
return serviceType;
}

public Map<String, ConnectorConfiguration> getConfiguration() {
return configuration;
public ConnectorStatus getStatus() {
return status;
}

public Object getSyncCursor() {
Expand All @@ -521,18 +533,6 @@ public boolean isSyncNow() {
return syncNow;
}

public ConnectorSyncInfo getSyncInfo() {
return syncInfo;
}

public Instant getLastSeen() {
return lastSeen;
}

public ConnectorStatus getStatus() {
return status;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down
Expand Up @@ -36,6 +36,7 @@
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorFilteringAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorLastSeenAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorLastSyncStatsAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorNameAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorPipelineAction;
import org.elasticsearch.xpack.application.connector.action.UpdateConnectorSchedulingAction;

Expand Down Expand Up @@ -214,12 +215,12 @@ public void updateConnectorConfiguration(UpdateConnectorConfigurationAction.Requ
}

/**
* Updates the {@link ConnectorFiltering} property of a {@link Connector}.
* Updates the error property of a {@link Connector}.
*
* @param request Request for updating connector filtering property.
* @param listener Listener to respond to a successful response or an error.
* @param request The request for updating the connector's error.
* @param listener The listener for handling responses, including successful updates or errors.
*/
public void updateConnectorFiltering(UpdateConnectorFilteringAction.Request request, ActionListener<UpdateResponse> listener) {
public void updateConnectorError(UpdateConnectorErrorAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
Expand All @@ -244,12 +245,12 @@ public void updateConnectorFiltering(UpdateConnectorFilteringAction.Request requ
}

/**
* Updates the lastSeen property of a {@link Connector}.
* Updates the name and/or description property of a {@link Connector}.
*
* @param request The request for updating the connector's lastSeen status.
* @param request The request for updating the connector's name and/or description.
* @param listener The listener for handling responses, including successful updates or errors.
*/
public void updateConnectorLastSeen(UpdateConnectorLastSeenAction.Request request, ActionListener<UpdateResponse> listener) {
public void updateConnectorNameOrDescription(UpdateConnectorNameAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
Expand All @@ -274,12 +275,12 @@ public void updateConnectorLastSeen(UpdateConnectorLastSeenAction.Request reques
}

/**
* Updates the {@link ConnectorSyncInfo} properties in a {@link Connector}.
* Updates the {@link ConnectorFiltering} property of a {@link Connector}.
*
* @param request Request for updating connector last sync stats properties.
* @param request Request for updating connector filtering property.
* @param listener Listener to respond to a successful response or an error.
*/
public void updateConnectorLastSyncStats(UpdateConnectorLastSyncStatsAction.Request request, ActionListener<UpdateResponse> listener) {
public void updateConnectorFiltering(UpdateConnectorFilteringAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
Expand All @@ -304,12 +305,42 @@ public void updateConnectorLastSyncStats(UpdateConnectorLastSyncStatsAction.Requ
}

/**
* Updates the {@link ConnectorIngestPipeline} property of a {@link Connector}.
* Updates the lastSeen property of a {@link Connector}.
*
* @param request Request for updating connector ingest pipeline property.
* @param request The request for updating the connector's lastSeen status.
* @param listener The listener for handling responses, including successful updates or errors.
*/
public void updateConnectorLastSeen(UpdateConnectorLastSeenAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
new IndexRequest(CONNECTOR_INDEX_NAME).opType(DocWriteRequest.OpType.INDEX)
.id(connectorId)
.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
.source(request.toXContent(jsonBuilder(), ToXContent.EMPTY_PARAMS))
);
clientWithOrigin.update(
updateRequest,
new DelegatingIndexNotFoundActionListener<>(connectorId, listener, (l, updateResponse) -> {
if (updateResponse.getResult() == UpdateResponse.Result.NOT_FOUND) {
l.onFailure(new ResourceNotFoundException(connectorId));
return;
}
l.onResponse(updateResponse);
})
);
} catch (Exception e) {
listener.onFailure(e);
}
}

/**
* Updates the {@link ConnectorSyncInfo} properties in a {@link Connector}.
*
* @param request Request for updating connector last sync stats properties.
* @param listener Listener to respond to a successful response or an error.
*/
public void updateConnectorPipeline(UpdateConnectorPipelineAction.Request request, ActionListener<UpdateResponse> listener) {
public void updateConnectorLastSyncStats(UpdateConnectorLastSyncStatsAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
Expand All @@ -334,12 +365,12 @@ public void updateConnectorPipeline(UpdateConnectorPipelineAction.Request reques
}

/**
* Updates the {@link ConnectorScheduling} property of a {@link Connector}.
* Updates the {@link ConnectorIngestPipeline} property of a {@link Connector}.
*
* @param request The request for updating the connector's scheduling.
* @param listener The listener for handling responses, including successful updates or errors.
* @param request Request for updating connector ingest pipeline property.
* @param listener Listener to respond to a successful response or an error.
*/
public void updateConnectorScheduling(UpdateConnectorSchedulingAction.Request request, ActionListener<UpdateResponse> listener) {
public void updateConnectorPipeline(UpdateConnectorPipelineAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
Expand All @@ -364,12 +395,12 @@ public void updateConnectorScheduling(UpdateConnectorSchedulingAction.Request re
}

/**
* Updates the error property of a {@link Connector}.
* Updates the {@link ConnectorScheduling} property of a {@link Connector}.
*
* @param request The request for updating the connector's error.
* @param request The request for updating the connector's scheduling.
* @param listener The listener for handling responses, including successful updates or errors.
*/
public void updateConnectorError(UpdateConnectorErrorAction.Request request, ActionListener<UpdateResponse> listener) {
public void updateConnectorScheduling(UpdateConnectorSchedulingAction.Request request, ActionListener<UpdateResponse> listener) {
try {
String connectorId = request.getConnectorId();
final UpdateRequest updateRequest = new UpdateRequest(CONNECTOR_INDEX_NAME, connectorId).doc(
Expand Down

0 comments on commit 1a8d803

Please sign in to comment.