package io.cattle.platform.activity; import io.cattle.platform.activity.impl.ActivityLogImpl; import io.cattle.platform.core.model.Instance; import io.cattle.platform.core.model.Service; import io.cattle.platform.eventing.EventService; import io.cattle.platform.object.ObjectManager; import javax.inject.Inject; import org.apache.cloudstack.managed.threadlocal.ManagedThreadLocal; public class ActivityService { @Inject ObjectManager objectManager; @Inject EventService eventService; private static ManagedThreadLocal<ActivityLog> TL = new ManagedThreadLocal<ActivityLog>(); public ActivityLog newLog() { ActivityLog log = TL.get(); if (log == null) { log = new ActivityLogImpl(objectManager, eventService); TL.set(log); } return log; } public void info(String message, Object... args) { ActivityLog activityLog = TL.get(); if (activityLog == null) { return; } activityLog.info(message, args); } public void run(Service service, String type, String message, Runnable run) { ActivityLog log = newLog(); try (Entry entry = log.start(service, type, message)) { try { run.run(); } catch (RuntimeException|Error e) { entry.exception(e); throw e; } } } public void instance(Instance instance, String operation, String reason, String level) { ActivityLog activityLog = TL.get(); if (activityLog == null) { return; } activityLog.instance(instance, operation, reason, level); } }