use of io.syndesis.common.model.connection.Connection in project syndesis by syndesisio.
the class KnativeCustomizerTest method testKnativeCustomizerChannels.
@Test
public void testKnativeCustomizerChannels() throws IOException {
Connector connector;
ConnectorAction sinkAction;
ConnectorAction sourceAction;
try (InputStream is = KnativeCustomizerTest.class.getResourceAsStream("/META-INF/syndesis/connector/knative.json")) {
connector = JsonUtils.readFromStream(is, Connector.class);
sinkAction = connector.getActions(ConnectorAction.class).stream().filter(a -> a.getId().get().equals("io.syndesis:knative-channel-send-connector")).findFirst().orElseThrow(() -> new IllegalArgumentException());
sourceAction = connector.getActions(ConnectorAction.class).stream().filter(a -> a.getId().get().equals("io.syndesis:knative-channel-receive-connector")).findFirst().orElseThrow(() -> new IllegalArgumentException());
}
TestResourceManager manager = new TestResourceManager();
Integration integration = manager.newIntegration(new Step.Builder().stepKind(StepKind.endpoint).putConfiguredProperty("name", "my-channel-sink").action(sinkAction).connection(new Connection.Builder().connector(connector).build()).build(), new Step.Builder().stepKind(StepKind.endpoint).putConfiguredProperty("name", "my-channel-source").action(sourceAction).connection(new Connection.Builder().connector(connector).build()).build());
IntegrationDeployment deployment = new IntegrationDeployment.Builder().userId("user").id("idId").spec(integration).build();
CamelKIntegrationCustomizer customizer = new KnativeCustomizer();
io.syndesis.server.controller.integration.camelk.crd.Integration i = customizer.customize(deployment, new io.syndesis.server.controller.integration.camelk.crd.Integration(), EnumSet.of(Exposure.SERVICE));
assertThat(i.getSpec().getTraits()).containsKey("knative");
assertThat(i.getSpec().getTraits().get("knative").getConfiguration()).containsOnly(entry("enabled", "true"), entry("channel-sources", "my-channel-source"), entry("channel-sinks", "my-channel-sink"), entry("endpoint-sources", "default"), entry("endpoint-sinks", ""));
}
use of io.syndesis.common.model.connection.Connection in project syndesis by syndesisio.
the class OAuth1Applicator method applyTo.
@Override
public Connection applyTo(final Connection connection, final OAuthToken token) {
final Connection.Builder mutableConnection = new Connection.Builder().createFrom(connection).lastUpdated(new Date());
Applicator.applyProperty(mutableConnection, accessTokenValueProperty, token.getValue());
Applicator.applyProperty(mutableConnection, accessTokenSecretProperty, token.getSecret());
Applicator.applyProperty(mutableConnection, consumerKeyProperty, consumerKey);
Applicator.applyProperty(mutableConnection, consumerSecretProperty, consumerSecret);
return mutableConnection.build();
}
use of io.syndesis.common.model.connection.Connection in project syndesis by syndesisio.
the class PublicApiHandlerTest method importResources.
@Test
public void importResources() {
final DataManager dataManager = mock(DataManager.class);
final SecurityContext securityContext = newMockSecurityContext();
final InputStream givenDataStream = new ByteArrayInputStream(new byte[0]);
// too convoluted to use the implementation directly
final IntegrationSupportHandler supportHandler = mock(IntegrationSupportHandler.class);
final Connection testConnection = new Connection.Builder().id("connection-id").connectorId("connector-id").name("test-connection").build();
final Integration integration = new Integration.Builder().id("integration-id").addConnection(testConnection).build();
Map<String, List<WithResourceId>> resultMap = new HashMap<>();
resultMap.put("integration-id", Collections.singletonList(integration));
resultMap.put("connection-id", Collections.singletonList(testConnection));
when(supportHandler.importIntegration(securityContext, givenDataStream)).thenReturn(resultMap);
final Environment env = newEnvironment("env");
when(dataManager.fetchByPropertyValue(Environment.class, "name", "env")).thenReturn(Optional.of(env));
when(dataManager.fetch(Connector.class, "connector-id")).thenReturn(new Connector.Builder().putProperty("prop", new ConfigurationProperty.Builder().build()).build());
when(dataManager.fetchAll(eq(Integration.class), any())).then((Answer<ListResult<Integration>>) invocation -> {
final Object[] arguments = invocation.getArguments();
ListResult<Integration> result = new ListResult.Builder<Integration>().addItem(integration).build();
for (int i = 1; i < arguments.length; i++) {
@SuppressWarnings("unchecked") Function<ListResult<Integration>, ListResult<Integration>> operator = (Function<ListResult<Integration>, ListResult<Integration>>) arguments[i];
result = operator.apply(result);
}
return result;
});
final EnvironmentHandler environmentHandler = new EnvironmentHandler(dataManager);
final IntegrationDeploymentHandler deploymentHandler = mock(IntegrationDeploymentHandler.class);
final EncryptionComponent encryptionComponent = mock(EncryptionComponent.class);
when(encryptionComponent.encryptPropertyValues(any(), any())).thenReturn(Collections.singletonMap("prop", "value"));
IntegrationHandler integrationHandler = mock(IntegrationHandler.class);
when(integrationHandler.getOverview(any())).thenReturn(new IntegrationOverview.Builder().createFrom(integration).connections(Collections.singletonList(testConnection.builder().putConfiguredProperty("prop", "value").build())).build());
// null's are not used
final PublicApiHandler handler = new PublicApiHandler(dataManager, encryptionComponent, deploymentHandler, null, null, environmentHandler, supportHandler, integrationHandler);
final PublicApiHandler.ImportFormDataInput formInput = new PublicApiHandler.ImportFormDataInput();
formInput.setData(givenDataStream);
formInput.setProperties(new ByteArrayInputStream("test-connection.prop=value".getBytes(StandardCharsets.UTF_8)));
formInput.setRefreshIntegrations(Boolean.TRUE);
formInput.setEnvironment("env");
formInput.setDeploy(Boolean.TRUE);
final ContinuousDeliveryImportResults importResults = handler.importResources(securityContext, formInput);
verify(deploymentHandler).update(securityContext, "integration-id");
assertThat(importResults.getLastImportedAt()).isNotNull();
assertThat(importResults.getResults().size()).isEqualTo(2);
// verify the integration connection was refreshed
final Integration importedIntegration = (Integration) importResults.getResults().get(0);
assertThat(importedIntegration.getConnections().get(0).getConfiguredProperties().get("prop")).isEqualTo("value");
}
use of io.syndesis.common.model.connection.Connection in project syndesis by syndesisio.
the class IntegrationSupportHandler method importModels.
public Map<String, List<WithResourceId>> importModels(SecurityContext sec, ModelExport export, JsonDB given) throws IOException {
// Apply per version migrations to get the schema upgraded on the import.
int from = export.schemaVersion();
int to = Schema.VERSION;
if (from > to) {
throw new IOException("Cannot import an export at schema version level: " + export.schemaVersion());
}
for (int i = from; i < to; i++) {
int version = i + 1;
migrator.migrate(given, version);
}
Map<String, List<WithResourceId>> result = new HashMap<>();
// id->new-name map
Map<String, String> renamedIds = new HashMap<>();
// Import the extensions..
final JsonDbDao<Extension> extensionDao = new JsonDbDao<Extension>(given) {
@Override
public Class<Extension> getType() {
return Extension.class;
}
};
final Map<String, String> replacedIds = new HashMap<>();
importExtensions(extensionDao, replacedIds, renamedIds, result);
// NOTE: connectors are imported without renaming and ignoring renamed ids
// as a matter of fact, the lambda should never be called
importModels(new JsonDbDao<Connector>(given) {
@Override
public Class<Connector> getType() {
return Connector.class;
}
}, (c, n) -> new Connector.Builder().createFrom(c).name(c.getName()).build(), new HashMap<>(), result);
importModels(new JsonDbDao<Connection>(given) {
@Override
public Class<Connection> getType() {
return Connection.class;
}
}, IntegrationSupportHandler::renameConnection, renamedIds, result);
// remove hidden external secrets from imported connections
final List<WithResourceId> connections = result.get("connections");
if (connections != null && !connections.isEmpty()) {
for (WithResourceId connection : connections) {
removeHiddenExternalSecrets((Connection) connection);
}
}
// import missing environments
importEnvironments(new JsonDbDao<Environment>(given) {
@Override
public Class<Environment> getType() {
return Environment.class;
}
}, replacedIds, renamedIds, result);
importIntegrations(sec, new JsonDbDao<Integration>(given) {
@Override
public Class<Integration> getType() {
return Integration.class;
}
}, renamedIds, replacedIds, result);
importModels(new JsonDbDao<OpenApi>(given) {
@Override
public Class<OpenApi> getType() {
return OpenApi.class;
}
}, (a, n) -> new OpenApi.Builder().createFrom(a).name(n).build(), new HashMap<>(), result);
importModels(new JsonDbDao<Icon>(given) {
@Override
public Class<Icon> getType() {
return Icon.class;
}
}, result);
return result;
}
use of io.syndesis.common.model.connection.Connection in project syndesis by syndesisio.
the class IntegrationSupportHandler method addToExport.
private void addToExport(JsonDB export, Integration integration) {
addModelToExport(export, integration);
integration.getFlows().stream().flatMap(flow -> flow.getSteps().stream()).forEach(step -> {
Optional<Connection> c = step.getConnection();
if (c.isPresent()) {
Connection connection = c.get();
addModelToExport(export, connection);
Connector connector = integrationHandler.getDataManager().fetch(Connector.class, connection.getConnectorId());
if (connector != null) {
addModelToExport(export, connector);
if (connector.getIcon() != null && connector.getIcon().startsWith("db:")) {
Icon icon = integrationHandler.getDataManager().fetch(Icon.class, connector.getIcon().substring(3));
addModelToExport(export, icon);
}
}
}
Optional<Extension> e = step.getExtension();
if (e.isPresent()) {
Extension extension = e.get();
addModelToExport(export, extension);
}
});
// add environments
integration.getContinuousDeliveryState().keySet().forEach(id -> addModelToExport(export, dataManager.fetch(Environment.class, id)));
addResourcesToExport(export, integration);
}
Aggregations