Search in sources :

Example 26 with Api

use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.

the class LocalApiDefinitionRegistry method initRegistry.

private void initRegistry(File registryDir) {
    LOGGER.info("Loading API definitions from {}", registryDir.getAbsoluteFile());
    File[] definitionFiles = searchForDefinitions(registryDir);
    LOGGER.info("\t{} API definitions have been found.", definitionFiles.length);
    for (File definitionFile : definitionFiles) {
        try {
            Api api = loadDefinition(definitionFile);
            apiManager.deploy(api);
            definitions.put(Paths.get(definitionFile.toURI()), api);
        } catch (IOException e) {
            LOGGER.error("Unable to load API definition from {}", definitionFile, e);
        }
    }
}
Also used : Api(io.gravitee.gateway.handlers.api.definition.Api) IOException(java.io.IOException) File(java.io.File)

Example 27 with Api

use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.

the class EndpointHealthcheckVerticle method onEvent.

@Override
public void onEvent(Event<ReactorEvent, Reactable> event) {
    final Api api = (Api) event.content().item();
    switch(event.type()) {
        case DEPLOY:
            startHealthCheck(api);
            break;
        case UNDEPLOY:
            stopHealthCheck(api);
            break;
        case UPDATE:
            stopHealthCheck(api);
            startHealthCheck(api);
            break;
    }
}
Also used : Api(io.gravitee.gateway.handlers.api.definition.Api)

Example 28 with Api

use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.

the class SyncManagerTest method test_newApi.

@Test
public void test_newApi() throws Exception {
    io.gravitee.repository.management.model.Api api = new RepositoryApiBuilder().id("api-test").updatedAt(new Date()).definition("test").build();
    final Api mockApi = mockApi(api);
    final Event mockEvent = mockEvent(api, EventType.PUBLISH_API);
    when(eventRepository.search(any(EventCriteria.class), any(Pageable.class))).thenReturn(new Page<>(Collections.singletonList(mockEvent), 0, 0, 1));
    when(apiRepository.findAll()).thenReturn(Collections.singleton(api));
    syncManager.refresh();
    verify(apiManager).deploy(mockApi);
    verify(apiManager, never()).update(any(Api.class));
    verify(apiManager, never()).undeploy(any(String.class));
}
Also used : Pageable(io.gravitee.repository.management.api.search.Pageable) Event(io.gravitee.repository.management.model.Event) RepositoryApiBuilder(io.gravitee.gateway.services.sync.builder.RepositoryApiBuilder) Api(io.gravitee.gateway.handlers.api.definition.Api) EventCriteria(io.gravitee.repository.management.api.search.EventCriteria) Test(org.junit.Test)

Example 29 with Api

use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.

the class SyncManagerTest method mockApi.

private Api mockApi(final io.gravitee.repository.management.model.Api api, final String[] tags) throws Exception {
    final Api mockApi = new Api();
    mockApi.setId(api.getId());
    mockApi.setDeployedAt(api.getUpdatedAt());
    mockApi.setTags(new HashSet<>(Arrays.asList(tags)));
    when(objectMapper.readValue(api.getDefinition(), Api.class)).thenReturn(mockApi);
    return mockApi;
}
Also used : Api(io.gravitee.gateway.handlers.api.definition.Api)

Example 30 with Api

use of io.gravitee.gateway.handlers.api.definition.Api in project gravitee-gateway by gravitee-io.

the class SyncManagerTest method shouldDeployApiWithTags.

public void shouldDeployApiWithTags(final String tags, final String[] apiTags) throws Exception {
    io.gravitee.repository.management.model.Api api = new RepositoryApiBuilder().id("api-test").updatedAt(new Date()).definition("test").build();
    final Api mockApi = mockApi(api, apiTags);
    when(gatewayConfiguration.shardingTags()).thenReturn(Optional.of(Arrays.asList(tags.split(","))));
    when(apiRepository.findAll()).thenReturn(Collections.singleton(api));
    when(apiManager.apis()).thenReturn(Collections.singleton(mockApi));
    final Event mockEvent = mockEvent(api, EventType.PUBLISH_API);
    when(eventRepository.search(any(EventCriteria.class), any(Pageable.class))).thenReturn(new Page<>(Collections.singletonList(mockEvent), 0, 0, 1));
    syncManager.refresh();
    verify(apiManager).deploy(mockApi);
    verify(apiManager, never()).update(any(Api.class));
    verify(apiManager, never()).undeploy(any(String.class));
}
Also used : Pageable(io.gravitee.repository.management.api.search.Pageable) Event(io.gravitee.repository.management.model.Event) RepositoryApiBuilder(io.gravitee.gateway.services.sync.builder.RepositoryApiBuilder) Api(io.gravitee.gateway.handlers.api.definition.Api) EventCriteria(io.gravitee.repository.management.api.search.EventCriteria)

Aggregations

Api (io.gravitee.gateway.handlers.api.definition.Api)40 Test (org.junit.Test)23 EventCriteria (io.gravitee.repository.management.api.search.EventCriteria)18 Event (io.gravitee.repository.management.model.Event)17 RepositoryApiBuilder (io.gravitee.gateway.services.sync.builder.RepositoryApiBuilder)16 Pageable (io.gravitee.repository.management.api.search.Pageable)15 Instant (java.time.Instant)5 Autowired (org.springframework.beans.factory.annotation.Autowired)5 Plan (io.gravitee.gateway.handlers.api.definition.Plan)4 ApiManager (io.gravitee.gateway.handlers.api.manager.ApiManager)4 IOException (java.io.IOException)4 Logger (org.slf4j.Logger)4 LoggerFactory (org.slf4j.LoggerFactory)4 GraviteeMapper (io.gravitee.definition.jackson.datatype.GraviteeMapper)3 Path (io.gravitee.definition.model.Path)3 Map (java.util.Map)3 Collectors (java.util.stream.Collectors)3 TypeReference (com.fasterxml.jackson.core.type.TypeReference)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 Endpoint (io.gravitee.definition.model.Endpoint)2