Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

package org.eclipse.edc.identityhub.core.services.verifiablecredential;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.instrumentation.annotations.WithSpan;
import jakarta.json.JsonObject;
Expand Down Expand Up @@ -42,7 +41,6 @@
import org.eclipse.edc.spi.response.StatusResult;
import org.eclipse.edc.spi.result.Result;
import org.eclipse.edc.spi.result.ServiceResult;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.eclipse.edc.statemachine.AbstractStateEntityManager;
import org.eclipse.edc.statemachine.Processor;
import org.eclipse.edc.statemachine.ProcessorImpl;
Expand Down Expand Up @@ -91,7 +89,7 @@ private CredentialRequestManagerImpl() {
@Override
public ServiceResult<String> initiateRequest(String participantContextId, String issuerDid, String holderPid, List<RequestedCredential> requestedCredentials) {

var traceContext = new Telemetry(GlobalOpenTelemetry.get()).getCurrentTraceContext();
var traceContext = telemetry.getCurrentTraceContext();

var newRequest = HolderCredentialRequest.Builder.newInstance()
.id(holderPid)
Expand Down Expand Up @@ -178,7 +176,7 @@ private ProcessorImpl<HolderCredentialRequest> createProcessor(Function<HolderCr
private CompletableFuture<StatusResult<Void>> processInitial(HolderCredentialRequest holderCredentialRequest) {
monitor.debug("Processing '%s' request '%s'".formatted(holderCredentialRequest.stateAsString(), holderCredentialRequest.getHolderPid()));

return new Telemetry(GlobalOpenTelemetry.get()).contextPropagationMiddleware(() -> {
return telemetry.contextPropagationMiddleware(() -> {
var result = getCredentialRequestEndpoint(holderCredentialRequest)
.compose(endpoint -> sendCredentialRequest(holderCredentialRequest, endpoint))
.compose(issuerPid -> handleCredentialResponse(issuerPid, holderCredentialRequest))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

package org.eclipse.edc.identityhub.did;

import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.instrumentation.annotations.WithSpan;
import org.eclipse.edc.iam.did.spi.document.DidDocument;
Expand Down Expand Up @@ -66,15 +65,17 @@ public class DidDocumentServiceImpl implements DidDocumentService, EventSubscrib
private final ParticipantContextStore participantContextStore;
private final Monitor monitor;
private final KeyParserRegistry keyParserRegistry;
private final Telemetry telemetry;

public DidDocumentServiceImpl(TransactionContext transactionContext, DidResourceStore didResourceStore, DidDocumentPublisherRegistry registry,
ParticipantContextStore participantContextStore, Monitor monitor, KeyParserRegistry keyParserRegistry) {
ParticipantContextStore participantContextStore, Monitor monitor, KeyParserRegistry keyParserRegistry, Telemetry telemetry) {
this.transactionContext = transactionContext;
this.didResourceStore = didResourceStore;
this.registry = registry;
this.participantContextStore = participantContextStore;
this.monitor = monitor;
this.keyParserRegistry = keyParserRegistry;
this.telemetry = telemetry;
}

@Override
Expand Down Expand Up @@ -267,7 +268,7 @@ public <E extends Event> void on(EventEnvelope<E> eventEnvelope) {
};

if (payload instanceof TraceCarrier carrier) {
new Telemetry(GlobalOpenTelemetry.get()).contextPropagationMiddleware(s, carrier).get();
telemetry.contextPropagationMiddleware(s, carrier).get();
} else {
s.get();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.edc.spi.event.EventRouter;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.system.ServiceExtensionContext;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.eclipse.edc.transaction.spi.TransactionContext;

import static org.eclipse.edc.identityhub.did.DidServicesExtension.NAME;
Expand All @@ -46,6 +47,8 @@ public class DidServicesExtension implements ServiceExtension {
@Inject
private ParticipantContextStore participantContextStore;
private DidDocumentPublisherRegistry didPublisherRegistry;
@Inject
private Telemetry telemetry;

@Override
public String name() {
Expand All @@ -63,7 +66,7 @@ public DidDocumentPublisherRegistry getDidPublisherRegistry() {
@Provider
public DidDocumentService createDidDocumentService(ServiceExtensionContext context) {
var service = new DidDocumentServiceImpl(transactionContext, didResourceStore,
getDidPublisherRegistry(), participantContextStore, context.getMonitor().withPrefix("DidDocumentService"), keyParserRegistry);
getDidPublisherRegistry(), participantContextStore, context.getMonitor().withPrefix("DidDocumentService"), keyParserRegistry, telemetry);
eventRouter.registerSync(ParticipantContextUpdated.class, service);
eventRouter.registerSync(KeyPairRevoked.class, service);
eventRouter.registerSync(KeyPairActivated.class, service);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import org.eclipse.edc.spi.query.QuerySpec;
import org.eclipse.edc.spi.result.Result;
import org.eclipse.edc.spi.result.StoreResult;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.eclipse.edc.transaction.spi.NoopTransactionContext;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -82,7 +83,7 @@ void setUp() {
registry.register(new JwkParser(new ObjectMapper(), mock()));
registry.register(new PemParser(mock()));
monitorMock = mock();
service = new DidDocumentServiceImpl(trx, didResourceStoreMock, publisherRegistry, participantContextServiceMock, monitorMock, registry);
service = new DidDocumentServiceImpl(trx, didResourceStoreMock, publisherRegistry, participantContextServiceMock, monitorMock, registry, new Telemetry());

when(participantContextServiceMock.findById(any())).thenReturn(StoreResult.success(ParticipantContext.Builder.newInstance()
.participantContextId(TEST_PARTICIPANT_ID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.eclipse.edc.spi.event.EventRouter;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.system.ServiceExtensionContext;
import org.eclipse.edc.spi.telemetry.Telemetry;

import java.time.Clock;

Expand All @@ -43,6 +44,8 @@ public class ParticipantContextCoordinatorExtension implements ServiceExtension
private EventRouter eventRouter;
@Inject
private IdentityHubParticipantContextService participantContextService;
@Inject
private Telemetry telemetry;

@Override
public String name() {
Expand All @@ -52,7 +55,7 @@ public String name() {
@Override
public void initialize(ServiceExtensionContext context) {
var coordinator = new ParticipantContextEventCoordinator(context.getMonitor().withPrefix("ParticipantContextEventCoordinator"),
didDocumentService, keyPairService, participantContextService);
didDocumentService, keyPairService, participantContextService, telemetry);

eventRouter.registerSync(ParticipantContextCreated.class, coordinator);
eventRouter.registerSync(ParticipantContextDeleting.class, coordinator);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

package org.eclipse.edc.identityhub.participantcontext;

import io.opentelemetry.api.GlobalOpenTelemetry;
import org.eclipse.edc.iam.did.spi.document.DidDocument;
import org.eclipse.edc.identityhub.spi.did.DidDocumentService;
import org.eclipse.edc.identityhub.spi.keypair.KeyPairService;
Expand Down Expand Up @@ -53,12 +52,14 @@ class ParticipantContextEventCoordinator implements EventSubscriber {
private final DidDocumentService didDocumentService;
private final KeyPairService keyPairService;
private final IdentityHubParticipantContextService participantContextService;
private final Telemetry telemetry;

ParticipantContextEventCoordinator(Monitor monitor, DidDocumentService didDocumentService, KeyPairService keyPairService, IdentityHubParticipantContextService participantContextService) {
ParticipantContextEventCoordinator(Monitor monitor, DidDocumentService didDocumentService, KeyPairService keyPairService, IdentityHubParticipantContextService participantContextService, Telemetry telemetry) {
this.monitor = monitor;
this.didDocumentService = didDocumentService;
this.keyPairService = keyPairService;
this.participantContextService = participantContextService;
this.telemetry = telemetry;
}

@Override
Expand All @@ -67,7 +68,7 @@ public <E extends Event> void on(EventEnvelope<E> event) {
if (payload instanceof ParticipantContextCreated createdEvent) {
var manifest = createdEvent.getManifest();

new Telemetry(GlobalOpenTelemetry.get()).contextPropagationMiddleware(() -> {
telemetry.contextPropagationMiddleware(() -> {
var doc = DidDocument.Builder.newInstance()
.id(manifest.getDid())
.service(manifest.getServiceEndpoints().stream().toList())
Expand All @@ -94,7 +95,7 @@ public <E extends Event> void on(EventEnvelope<E> event) {
var participantContext = deletionEvent.getParticipantContext();

// unpublish and delete did document, remove keypairs
new Telemetry(GlobalOpenTelemetry.get()).contextPropagationMiddleware(() -> {
telemetry.contextPropagationMiddleware(() -> {
didDocumentService.unpublish(participantContext.getDid())
.compose(u -> didDocumentService.deleteById(participantContext.getDid()))
.compose(u -> keyPairService.query(queryByParticipantContextId(participantContext.getParticipantContextId()).build()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,19 @@
import org.eclipse.edc.identityhub.spi.participantcontext.model.ParticipantManifest;
import org.eclipse.edc.spi.event.EventEnvelope;
import org.eclipse.edc.spi.event.EventRouter;
import org.eclipse.edc.spi.telemetry.Telemetry;

import java.time.Clock;

public class ParticipantContextEventPublisher implements ParticipantContextListener {
private final Clock clock;
private final EventRouter eventRouter;
private final Telemetry telemetry;

public ParticipantContextEventPublisher(Clock clock, EventRouter eventRouter) {
public ParticipantContextEventPublisher(Clock clock, EventRouter eventRouter, Telemetry telemetry) {
this.clock = clock;
this.eventRouter = eventRouter;
this.telemetry = telemetry;
}

@Override
Expand Down Expand Up @@ -73,7 +76,7 @@ public void deleted(IdentityHubParticipantContext deletedContext) {

private void publish(ParticipantContextEvent event) {
var envelope = EventEnvelope.Builder.newInstance()
.payload(event)
.payload(event.withTraceContext(telemetry.getCurrentTraceContext()))
.at(clock.millis())
.build();
eventRouter.publish(envelope);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.eclipse.edc.spi.event.EventRouter;
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.eclipse.edc.transaction.spi.TransactionContext;

import java.time.Clock;
Expand Down Expand Up @@ -55,6 +56,8 @@ public class ParticipantContextExtension implements ServiceExtension {
private ParticipantContextObservable participantContextObservable;
@Inject
private ParticipantContextConfigService configService;
@Inject
private Telemetry telemetry;

@Override
public String name() {
Expand All @@ -70,7 +73,7 @@ public IdentityHubParticipantContextService createParticipantService() {
public ParticipantContextObservable participantContextObservable() {
if (participantContextObservable == null) {
participantContextObservable = new ParticipantContextObservableImpl();
participantContextObservable.registerListener(new ParticipantContextEventPublisher(clock, eventRouter));
participantContextObservable.registerListener(new ParticipantContextEventPublisher(clock, eventRouter, telemetry));
}
return participantContextObservable;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.eclipse.edc.spi.event.EventEnvelope;
import org.eclipse.edc.spi.monitor.Monitor;
import org.eclipse.edc.spi.result.ServiceResult;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -49,7 +50,7 @@ class IdentityHubParticipantContextEventCoordinatorTest {
private final DidDocumentService didDocumentService = mock();
private final KeyPairService keyPairService = mock();
private final IdentityHubParticipantContextService participantContextService = mock();
private final ParticipantContextEventCoordinator coordinator = new ParticipantContextEventCoordinator(monitor, didDocumentService, keyPairService, participantContextService);
private final ParticipantContextEventCoordinator coordinator = new ParticipantContextEventCoordinator(monitor, didDocumentService, keyPairService, participantContextService, new Telemetry());

@BeforeEach
void setup() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.system.ServiceExtensionContext;
import org.eclipse.edc.spi.telemetry.Telemetry;

import static java.util.Optional.ofNullable;
import static org.eclipse.edc.identityhub.common.provisioner.StsAccountProvisionerExtension.NAME;
Expand All @@ -43,7 +44,8 @@ public class StsAccountProvisionerExtension implements ServiceExtension {
private StsClientSecretGenerator stsClientSecretGenerator;
@Inject
private StsAccountService accountService;

@Inject
private Telemetry telemetry;

private StsAccountProvisionerImpl provisioner;

Expand All @@ -62,7 +64,7 @@ public void initialize(ServiceExtensionContext context) {
public StsAccountProvisioner createProvisioner(ServiceExtensionContext context) {
if (provisioner == null) {
var monitor = context.getMonitor().withPrefix("STS-Account");
provisioner = new StsAccountProvisionerImpl(monitor, vault, stsClientSecretGenerator(), accountService);
provisioner = new StsAccountProvisionerImpl(monitor, vault, stsClientSecretGenerator(), accountService, telemetry);
eventRouter.registerSync(ParticipantContextDeleted.class, provisioner);
eventRouter.registerSync(KeyPairRevoked.class, provisioner);
eventRouter.registerSync(KeyPairRotated.class, provisioner);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

package org.eclipse.edc.identityhub.common.provisioner;

import io.opentelemetry.api.GlobalOpenTelemetry;
import org.eclipse.edc.iam.decentralizedclaims.sts.spi.model.StsAccount;
import org.eclipse.edc.iam.decentralizedclaims.sts.spi.service.StsAccountService;
import org.eclipse.edc.iam.decentralizedclaims.sts.spi.service.StsClientSecretGenerator;
Expand Down Expand Up @@ -43,23 +42,25 @@ public class StsAccountProvisionerImpl implements EventSubscriber, StsAccountPro
private final Vault vault;
private final StsClientSecretGenerator stsClientSecretGenerator;
private final StsAccountService stsAccountService;
private final Telemetry telemetry;

public StsAccountProvisionerImpl(Monitor monitor,
Vault vault,
StsClientSecretGenerator stsClientSecretGenerator,
StsAccountService stsAccountService) {
StsAccountService stsAccountService, Telemetry telemetry) {
this.monitor = monitor;
this.vault = vault;
this.stsClientSecretGenerator = stsClientSecretGenerator;
this.stsAccountService = stsAccountService;
this.telemetry = telemetry;
}

@Override
public <E extends Event> void on(EventEnvelope<E> event) {
var payload = event.getPayload();
ServiceResult<Void> result;
if (payload instanceof ParticipantContextDeleted deletedEvent) {
result = new Telemetry(GlobalOpenTelemetry.get()).contextPropagationMiddleware(() -> {
result = telemetry.contextPropagationMiddleware(() -> {
return stsAccountService.deleteAccount(deletedEvent.getParticipantContextId());
}, deletedEvent).get();
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.eclipse.edc.spi.result.Result;
import org.eclipse.edc.spi.result.ServiceResult;
import org.eclipse.edc.spi.security.Vault;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.junit.jupiter.api.Test;

import java.util.Map;
Expand Down Expand Up @@ -59,7 +60,7 @@ class StsAccountProvisionerImplTest {
private final Monitor monitor = mock();
private final StsClientSecretGenerator stsClientSecretGenerator = parameters -> UUID.randomUUID().toString();
private final StsAccountService accountServiceMock = mock();
private final StsAccountProvisionerImpl accountProvisioner = new StsAccountProvisionerImpl(monitor, vault, stsClientSecretGenerator, accountServiceMock);
private final StsAccountProvisionerImpl accountProvisioner = new StsAccountProvisionerImpl(monitor, vault, stsClientSecretGenerator, accountServiceMock, new Telemetry());

@Test
void create() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.eclipse.edc.spi.monitor.Monitor;
import org.eclipse.edc.spi.system.ServiceExtension;
import org.eclipse.edc.spi.system.ServiceExtensionContext;
import org.eclipse.edc.spi.telemetry.Telemetry;
import org.eclipse.edc.spi.types.TypeManager;
import org.eclipse.edc.token.rules.ExpirationIssuedAtValidationRule;
import org.eclipse.edc.token.rules.NotBeforeValidationRule;
Expand Down Expand Up @@ -117,6 +118,8 @@ public class DcpIssuerCoreExtension implements ServiceExtension {
private JtiValidationStore jtiValidationStore;
@Setting(description = "Allow anonymous onboarding", defaultValue = "false", key = "edc.issuance.anonymous.allowed")
private boolean allowAnonymousCredentialRequest;
@Inject
private Telemetry telemetry;

@Override
public void initialize(ServiceExtensionContext context) {
Expand All @@ -135,7 +138,7 @@ public void initialize(ServiceExtensionContext context) {

@Provider
public DcpIssuerService createIssuerService() {
return new DcpIssuerServiceImpl(transactionContext, credentialDefinitionService, issuanceProcessStore, attestationPipeline, credentialRuleDefinitionEvaluator, profileRegistry);
return new DcpIssuerServiceImpl(transactionContext, credentialDefinitionService, issuanceProcessStore, attestationPipeline, credentialRuleDefinitionEvaluator, profileRegistry, telemetry);
}

@Provider
Expand Down
Loading
Loading