From e6b38fb789ba3cb8b82b94c155b30641467b0664 Mon Sep 17 00:00:00 2001 From: Rob Fletcher Date: Tue, 11 Sep 2018 11:36:30 -0700 Subject: [PATCH] feat(plugins): Tidy up --- .../keel/redis/RedisPluginRepository.kt | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/keel-redis/src/main/kotlin/com/netflix/spinnaker/keel/redis/RedisPluginRepository.kt b/keel-redis/src/main/kotlin/com/netflix/spinnaker/keel/redis/RedisPluginRepository.kt index 578d7fb508..e71ff227f3 100644 --- a/keel-redis/src/main/kotlin/com/netflix/spinnaker/keel/redis/RedisPluginRepository.kt +++ b/keel-redis/src/main/kotlin/com/netflix/spinnaker/keel/redis/RedisPluginRepository.kt @@ -39,49 +39,49 @@ class RedisPluginRepository( .apply { registerModule(KotlinModule()) } override fun allPlugins(): Iterable = - inRedis { redis -> + withRedis { redis -> (redis.hvals("keel.plugins.asset") + redis.smembers("keel.plugins.veto")) - .map { objectMapper.readValue(it) } + .map(this::parsePluginAddress) } override fun assetPlugins(): Iterable = - inRedis { redis -> + withRedis { redis -> redis .hvals("keel.plugins.asset") - .map { objectMapper.readValue(it) } + .map(this::parsePluginAddress) } override fun vetoPlugins(): Iterable = - inRedis { redis -> + withRedis { redis -> redis .smembers("keel.plugins.veto") - .map { objectMapper.readValue(it) } + .map(this::parsePluginAddress) } override fun addVetoPlugin(address: PluginAddress) { - inRedis { redis -> + withRedis { redis -> redis.sadd("keel.plugins.veto", address.serialized) } } override fun assetPluginFor(type: AssetType): PluginAddress? = - inRedis { redis -> + withRedis { redis -> redis.hget("keel.plugins.asset", type.serialized) - ?.let { objectMapper.readValue(it) } + ?.let(this::parsePluginAddress) } override fun addAssetPluginFor(type: AssetType, address: PluginAddress) { - inRedis { redis -> + withRedis { redis -> redis.hset("keel.plugins.asset", type.serialized, address.serialized) } } @PostConstruct fun logKnownPlugins() { - inRedis { redis -> + withRedis { redis -> redis .smembers("keel.plugins.veto") - .map { objectMapper.readValue(it) } + .map(this::parsePluginAddress) .forEach { log.info("'{}' veto plugin at {}, port {}", it.name, it.vip, it.port) } redis .hgetAll("keel.plugins.asset") @@ -99,6 +99,9 @@ class RedisPluginRepository( private val Any.serialized: String get() = objectMapper.writeValueAsString(this) - private fun inRedis(operation: (Jedis) -> T): T = + private fun withRedis(operation: (Jedis) -> T): T = redisPool.resource.use(operation) + + private fun parsePluginAddress(it: String) = + objectMapper.readValue(it) }