Skip to content

Commit dbe4b8a

Browse files
Add dep conf events (#66)
1 parent d110e68 commit dbe4b8a

File tree

4 files changed

+37
-6
lines changed

4 files changed

+37
-6
lines changed

src/main/scala/io/hydrosphere/serving/manager/App.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import io.hydrosphere.serving.manager.config.ManagerConfiguration
2020
import io.hydrosphere.serving.manager.domain.application.ApplicationEvents
2121
import io.hydrosphere.serving.manager.domain.application.migrations.ApplicationMigrationTool
2222
import io.hydrosphere.serving.manager.domain.clouddriver.CloudDriver
23+
import io.hydrosphere.serving.manager.domain.deploy_config.DeploymentConfigurationEvents
2324
import io.hydrosphere.serving.manager.domain.image.ImageRepository
2425
import io.hydrosphere.serving.manager.domain.model_version.ModelVersionEvents
2526
import io.hydrosphere.serving.manager.domain.monitoring.MetricSpecEvents
@@ -83,6 +84,7 @@ object App {
8384
modelPubSub <- Resource.liftF(ModelVersionEvents.makeTopic)
8485
servablePubSub <- Resource.liftF(ServableEvents.makeTopic)
8586
monitoringPubSub <- Resource.liftF(MetricSpecEvents.makeTopic)
87+
depPubSub <- Resource.liftF(DeploymentConfigurationEvents.makeTopic)
8688
core <- {
8789
implicit val rng = rngF
8890
implicit val cd = cloudDriver
@@ -91,6 +93,7 @@ object App {
9193
implicit val (modelPub, modelSub) = modelPubSub
9294
implicit val (servablePub, servableSub) = servablePubSub
9395
implicit val (metricPub, metricSub) = monitoringPubSub
96+
implicit val (depPub, depSUb) = depPubSub
9497
implicit val hsRepo = new DBDeploymentConfigurationRepository()
9598
implicit val modelRepo = DBModelRepository.make()
9699
implicit val modelVersionRepo = DBModelVersionRepository.make()
@@ -122,7 +125,7 @@ object App {
122125
appController = new ApplicationController[F](core.appService)
123126
hsController = new HostSelectorController[F]
124127
servableController = new ServableController[F](core.servableService, cloudDriver)
125-
sseController = new SSEController[F](appPubSub._2, modelPubSub._2, servablePubSub._2, monitoringPubSub._2)
128+
sseController = new SSEController[F](appPubSub._2, modelPubSub._2, servablePubSub._2, monitoringPubSub._2, depPubSub._2)
126129
monitoringController = new MonitoringController[F](core.monitoringService, core.repos.monitoringRepository)
127130
depConfController = new DeploymentConfigController[F](core.deploymentConfigService)
128131

src/main/scala/io/hydrosphere/serving/manager/api/http/controller/events/SSEController.scala

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import io.hydrosphere.serving.manager.api.http.controller.application.Applicatio
1313
import io.hydrosphere.serving.manager.api.http.controller.servable.ServableView
1414
import io.hydrosphere.serving.manager.discovery._
1515
import io.hydrosphere.serving.manager.domain.application.ApplicationEvents
16+
import io.hydrosphere.serving.manager.domain.deploy_config
17+
import io.hydrosphere.serving.manager.domain.deploy_config.DeploymentConfigurationEvents
1618
import io.hydrosphere.serving.manager.domain.model_version.ModelVersionEvents
1719
import io.hydrosphere.serving.manager.domain.monitoring.MetricSpecEvents
1820
import io.hydrosphere.serving.manager.domain.servable.ServableEvents
@@ -27,7 +29,8 @@ class SSEController[F[_]](
2729
applicationSubscriber: ApplicationEvents.Subscriber[F],
2830
modelSubscriber: ModelVersionEvents.Subscriber[F],
2931
servableSubscriber: ServableEvents.Subscriber[F],
30-
metricSpecSubscriber: MetricSpecEvents.Subscriber[F]
32+
metricSpecSubscriber: MetricSpecEvents.Subscriber[F],
33+
depSubscriber: DeploymentConfigurationEvents.Subscriber[F]
3134
)(
3235
implicit F: ConcurrentEffect[F],
3336
cs: ContextShift[F],
@@ -53,7 +56,10 @@ class SSEController[F[_]](
5356
val msSSE = metricSpecSubscriber.subscribe
5457
.flatMap(x => fs2.Stream.emits(SSEController.fromMetricSpecDiscovery(x)))
5558

56-
val joined = appsSSE merge modelSSE merge servableSSE merge msSSE
59+
val depSSE = depSubscriber.subscribe
60+
.flatMap(x => fs2.Stream.emits(SSEController.fromDepConfDiscovery(x)))
61+
62+
val joined = appsSSE merge modelSSE merge servableSSE merge msSSE merge depSSE
5763

5864
Source.fromGraph(joined.toSource)
5965
.keepAlive(5.seconds, () => ServerSentEvent.heartbeat)
@@ -71,6 +77,26 @@ class SSEController[F[_]](
7177
}
7278

7379
object SSEController extends CompleteJsonProtocol {
80+
def fromDepConfDiscovery(x: DeploymentConfigurationEvents.Event): List[ServerSentEvent] = {
81+
x match {
82+
case DiscoveryEvent.Initial => Nil
83+
case DiscoveryEvent.ItemUpdate(items) =>
84+
items.map { s =>
85+
ServerSentEvent(
86+
data = s.toJson.compactPrint,
87+
`type` = "DeploymentConfigurationUpdate"
88+
)
89+
}
90+
case DiscoveryEvent.ItemRemove(items) =>
91+
items.map { s =>
92+
ServerSentEvent(
93+
data = s,
94+
`type` = "DeploymentConfigurationRemove"
95+
)
96+
}
97+
}
98+
}
99+
74100
def fromServableDiscovery(x: ServableEvents.Event): List[ServerSentEvent] = {
75101
x match {
76102
case DiscoveryEvent.Initial => Nil

src/main/scala/io/hydrosphere/serving/manager/domain/deploy_config/package.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.hydrosphere.serving.manager.domain
22

3+
import io.hydrosphere.serving.manager.discovery.DiscoveryService
34
import io.hydrosphere.serving.manager.infrastructure.protocol.CompleteJsonProtocol._
45
import io.hydrosphere.serving.manager.infrastructure.protocol.PlayJsonAdapter._
56
import skuber.Pod.{Affinity, Toleration}
@@ -68,4 +69,5 @@ package object deploy_config {
6869
implicit val format: RootJsonFormat[DeploymentConfiguration] = jsonFormat5(DeploymentConfiguration.apply)
6970
}
7071

72+
object DeploymentConfigurationEvents extends DiscoveryService[DeploymentConfiguration, String]
7173
}

src/main/scala/io/hydrosphere/serving/manager/infrastructure/db/repository/DBDeploymentConfigurationRepository.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import spray.json._
1414

1515
import scala.reflect.runtime.universe.TypeTag
1616

17-
class DBDeploymentConfigurationRepository[F[_]]()(implicit F: Bracket[F, Throwable], tx: Transactor[F]) extends DeploymentConfigurationRepository[F] {
17+
class DBDeploymentConfigurationRepository[F[_]]()(implicit F: Bracket[F, Throwable], tx: Transactor[F], pub: DeploymentConfigurationEvents.Publisher[F]) extends DeploymentConfigurationRepository[F] {
1818
override def create(entity: DeploymentConfiguration): F[DeploymentConfiguration] = {
19-
insertQ(entity).run.transact(tx).as(entity)
19+
insertQ(entity).run.transact(tx).as(entity).flatTap(pub.update)
2020
}
2121

2222
override def get(name: String): F[Option[DeploymentConfiguration]] = {
@@ -28,7 +28,7 @@ class DBDeploymentConfigurationRepository[F[_]]()(implicit F: Bracket[F, Throwab
2828
}
2929

3030
override def delete(name: String): F[Int] = {
31-
deleteQ(name).run.transact(tx)
31+
deleteQ(name).run.transact(tx).flatTap(_ => pub.remove(name))
3232
}
3333
}
3434

0 commit comments

Comments
 (0)