verizon / helm Goto Github PK
View Code? Open in Web Editor NEWA native Scala client for interacting with Consul
License: Apache License 2.0
A native Scala client for interacting with Consul
License: Apache License 2.0
Error while importing sbt project:
[info] Loading global plugins from C:\Users\Administrator.sbt\0.13\plugins
[info] Updating {file:/C:/Users/Administrator/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.scala-lang#scala-library;2.10.6 ...
[info] Resolving org.scala-sbt#sbt;0.13.16 ...
[info] Resolving org.scala-sbt#main;0.13.16 ...
[info] Resolving org.scala-sbt#actions;0.13.16 ...
[info] Resolving org.scala-sbt#classpath;0.13.16 ...
[info] Resolving org.scala-lang#scala-compiler;2.10.6 ...
[info] Resolving org.scala-lang#scala-reflect;2.10.6 ...
[info] Resolving org.scala-sbt#interface;0.13.16 ...
[info] Resolving org.scala-sbt#io;0.13.16 ...
[info] Resolving org.scala-sbt#control;0.13.16 ...
[info] Resolving org.scala-sbt#launcher-interface;1.0.1 ...
[info] Resolving org.scala-sbt#completion;0.13.16 ...
[info] Resolving org.scala-sbt#collections;0.13.16 ...
[info] Resolving jline#jline;2.14.4 ...
[info] Resolving org.scala-sbt#api;0.13.16 ...
[info] Resolving org.scala-sbt#classfile;0.13.16 ...
[info] Resolving org.scala-sbt#logging;0.13.16 ...
[info] Resolving org.scala-sbt#process;0.13.16 ...
[info] Resolving org.scala-sbt#compiler-integration;0.13.16 ...
[info] Resolving org.scala-sbt#incremental-compiler;0.13.16 ...
[info] Resolving org.scala-sbt#relation;0.13.16 ...
[info] Resolving org.scala-sbt#compile;0.13.16 ...
[info] Resolving org.scala-sbt#persist;0.13.16 ...
[info] Resolving org.scala-tools.sbinary#sbinary_2.10;0.4.2 ...
[info] Resolving org.scala-sbt#compiler-ivy-integration;0.13.16 ...
[info] Resolving org.scala-sbt#ivy;0.13.16 ...
[info] Resolving org.scala-sbt#cross;0.13.16 ...
[info] Resolving org.scala-sbt.ivy#ivy;2.3.0-sbt-48dd0744422128446aee9ac31aa356ee203cc9f4 ...
[info] Resolving com.jcraft#jsch;0.1.50 ...
[info] Resolving org.scala-sbt#serialization_2.10;0.1.2 ...
[info] Resolving org.scala-lang.modules#scala-pickling_2.10;0.10.1 ...
[info] Resolving org.scalamacros#quasiquotes_2.10;2.0.1 ...
[info] Resolving org.json4s#json4s-core_2.10;3.2.10 ...
[info] Resolving org.json4s#json4s-ast_2.10;3.2.10 ...
[info] Resolving com.thoughtworks.paranamer#paranamer;2.6 ...
[info] Resolving org.spire-math#jawn-parser_2.10;0.6.0 ...
[info] Resolving org.spire-math#json4s-support_2.10;0.6.0 ...
[info] Resolving org.scala-sbt#run;0.13.16 ...
[info] Resolving org.scala-sbt#task-system;0.13.16 ...
[info] Resolving org.scala-sbt#tasks;0.13.16 ...
[info] Resolving org.scala-sbt#tracking;0.13.16 ...
[info] Resolving org.scala-sbt#cache;0.13.16 ...
[info] Resolving org.scala-sbt#testing;0.13.16 ...
[info] Resolving org.scala-sbt#test-agent;0.13.16 ...
[info] Resolving org.scala-sbt#test-interface;1.0 ...
[info] Resolving org.scala-sbt#main-settings;0.13.16 ...
[info] Resolving org.scala-sbt#apply-macro;0.13.16 ...
[info] Resolving org.scala-sbt#command;0.13.16 ...
[info] Resolving org.scala-sbt#template-resolver;0.1 ...
[info] Resolving org.scala-sbt#logic;0.13.16 ...
[info] Resolving org.scala-sbt#compiler-interface;0.13.16 ...
[info] Resolving org.scala-lang#jline;2.10.6 ...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Loading project definition from D:\javaProject\my-akka-http-project\project
[info] Updating {file:/D:/javaProject/my-akka-http-project/project/}my-akka-http-project-build...
[info] Resolving org.scala-sbt#global-plugins;0.0 ...
[info] Resolving org.scalariform#sbt-scalariform;1.6.0 ...
[info] Resolving org.scalariform#scalariform_2.10;0.1.8 ...
[info] Resolving org.scala-lang#scala-library;2.10.6 ...
[info] Resolving io.spray#sbt-revolver;0.9.1 ...
[info] Resolving org.scala-sbt#sbt;0.13.16 ...
[info] Resolving org.scala-sbt#main;0.13.16 ...
[info] Resolving org.scala-sbt#actions;0.13.16 ...
[info] Resolving org.scala-sbt#classpath;0.13.16 ...
[info] Resolving org.scala-lang#scala-compiler;2.10.6 ...
[info] Resolving org.scala-lang#scala-reflect;2.10.6 ...
[info] Resolving org.scala-sbt#interface;0.13.16 ...
[info] Resolving org.scala-sbt#io;0.13.16 ...
[info] Resolving org.scala-sbt#control;0.13.16 ...
[info] Resolving org.scala-sbt#launcher-interface;1.0.1 ...
[info] Resolving org.scala-sbt#completion;0.13.16 ...
[info] Resolving org.scala-sbt#collections;0.13.16 ...
[info] Resolving jline#jline;2.14.4 ...
[info] Resolving org.scala-sbt#api;0.13.16 ...
[info] Resolving org.scala-sbt#classfile;0.13.16 ...
[info] Resolving org.scala-sbt#logging;0.13.16 ...
[info] Resolving org.scala-sbt#process;0.13.16 ...
[info] Resolving org.scala-sbt#compiler-integration;0.13.16 ...
[info] Resolving org.scala-sbt#incremental-compiler;0.13.16 ...
[info] Resolving org.scala-sbt#relation;0.13.16 ...
[info] Resolving org.scala-sbt#compile;0.13.16 ...
[info] Resolving org.scala-sbt#persist;0.13.16 ...
[info] Resolving org.scala-tools.sbinary#sbinary_2.10;0.4.2 ...
[info] Resolving org.scala-sbt#compiler-ivy-integration;0.13.16 ...
[info] Resolving org.scala-sbt#ivy;0.13.16 ...
[info] Resolving org.scala-sbt#cross;0.13.16 ...
[info] Resolving org.scala-sbt.ivy#ivy;2.3.0-sbt-48dd0744422128446aee9ac31aa356ee203cc9f4 ...
[info] Resolving com.jcraft#jsch;0.1.50 ...
[info] Resolving org.scala-sbt#serialization_2.10;0.1.2 ...
[info] Resolving org.scala-lang.modules#scala-pickling_2.10;0.10.1 ...
[info] Resolving org.scalamacros#quasiquotes_2.10;2.0.1 ...
[info] Resolving org.json4s#json4s-core_2.10;3.2.10 ...
[info] Resolving org.json4s#json4s-ast_2.10;3.2.10 ...
[info] Resolving com.thoughtworks.paranamer#paranamer;2.6 ...
[info] Resolving org.spire-math#jawn-parser_2.10;0.6.0 ...
[info] Resolving org.spire-math#json4s-support_2.10;0.6.0 ...
[info] Resolving org.scala-sbt#run;0.13.16 ...
[info] Resolving org.scala-sbt#task-system;0.13.16 ...
[info] Resolving org.scala-sbt#tasks;0.13.16 ...
[info] Resolving org.scala-sbt#tracking;0.13.16 ...
[info] Resolving org.scala-sbt#cache;0.13.16 ...
[info] Resolving org.scala-sbt#testing;0.13.16 ...
[info] Resolving org.scala-sbt#test-agent;0.13.16 ...
[info] Resolving org.scala-sbt#test-interface;1.0 ...
[info] Resolving org.scala-sbt#main-settings;0.13.16 ...
[info] Resolving org.scala-sbt#apply-macro;0.13.16 ...
[info] Resolving org.scala-sbt#command;0.13.16 ...
[info] Resolving org.scala-sbt#template-resolver;0.1 ...
[info] Resolving org.scala-sbt#logic;0.13.16 ...
[info] Resolving org.scala-sbt#compiler-interface;0.13.16 ...
[info] Resolving org.scala-lang#jline;2.10.6 ...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to My Akka HTTP Project (in build file:/D:/javaProject/my-akka-http-project/)
[info] Defining /:sbtStructureOptions, /:sbtStructureOutputFile, *:shellPrompt
[info] The new values will be used by no settings or tasks.
[info] Reapplying settings...
[info] Set current project to My Akka HTTP Project (in build file:/D:/javaProject/my-akka-http-project/)
[info] Applying State transformations org.jetbrains.sbt.CreateTasks from C:/Users/Administrator/.IntelliJIdea2017.3/config/plugins/Scala/launcher/sbt-structure-0.13.jar
[info] Reapplying settings...
[info] Set current project to My Akka HTTP Project (in build file:/D:/javaProject/my-akka-http-project/)
[info] Updating {file:/D:/javaProject/my-akka-http-project/}root...
[info] Resolving org.scala-lang#scala-library;2.12.5 ...
[info] Resolving com.typesafe.akka#akka-http_2.12;10.1.1 ...
[info] Resolving com.typesafe.akka#akka-http-core_2.12;10.1.1 ...
[info] Resolving com.typesafe.akka#akka-parsing_2.12;10.1.1 ...
[info] Resolving com.typesafe.akka#akka-http-spray-json_2.12;10.1.1 ...
[info] Resolving io.spray#spray-json_2.12;1.3.4 ...
[info] Resolving com.typesafe.akka#akka-http-xml_2.12;10.1.1 ...
[info] Resolving org.scala-lang.modules#scala-xml_2.12;1.1.0 ...
[info] Resolving com.typesafe.akka#akka-stream_2.12;2.5.12 ...
[info] Resolving com.typesafe.akka#akka-actor_2.12;2.5.12 ...
[info] Resolving com.typesafe#config;1.3.2 ...
[info] Resolving org.scala-lang.modules#scala-java8-compat_2.12;0.8.0 ...
[info] Resolving com.typesafe.akka#akka-protobuf_2.12;2.5.12 ...
[info] Resolving org.reactivestreams#reactive-streams;1.0.2 ...
[info] Resolving com.typesafe#ssl-config-core_2.12;0.2.3 ...
[info] Resolving org.scala-lang.modules#scala-parser-combinators_2.12;1.1.0 ...
[info] Resolving io.verizon.helm#http4s_2.12;1.4.78-scalaz-7.1 ...
[info] Resolving io.verizon.helm#http4s_2.12;1.4.78-scalaz-7.1 ...
[warn] module not found: io.verizon.helm#http4s_2.12;1.4.78-scalaz-7.1
[warn] ==== local: tried
[warn] C:\Users\Administrator.ivy2\local\io.verizon.helm\http4s_2.12\1.4.78-scalaz-7.1\ivys\ivy.xml
[warn] ==== public: tried
[warn] http://central.maven.org/maven2/io/verizon/helm/http4s_2.12/1.4.78-scalaz-7.1/http4s_2.12-1.4.78-scalaz-7.1.pom
[warn] ==== ivy-sbt-plugin: tried
[warn] http://dl.bintray.com/sbt/sbt-plugin-releases/io.verizon.helm/http4s_2.12/1.4.78-scalaz-7.1/ivys/ivy.xml
[warn] ==== sonatype-releases: tried
[warn] https://oss.sonatype.org/content/repositories/releases/io/verizon/helm/http4s_2.12/1.4.78-scalaz-7.1/http4s_2.12-1.4.78-scalaz-7.1.pom
[warn] ==== sonatype-snapshots: tried
[warn] https://oss.sonatype.org/content/repositories/snapshots/io/verizon/helm/http4s_2.12/1.4.78-scalaz-7.1/http4s_2.12-1.4.78-scalaz-7.1.pom
[info] Resolving com.typesafe.akka#akka-http-testkit_2.12;10.1.1 ...
[info] Resolving com.typesafe.akka#akka-testkit_2.12;2.5.12 ...
[info] Resolving com.typesafe.akka#akka-stream-testkit_2.12;2.5.12 ...
[info] Resolving org.scalatest#scalatest_2.12;3.0.1 ...
[info] Resolving org.scalactic#scalactic_2.12;3.0.1 ...
[info] Resolving org.scala-lang#scala-reflect;2.12.5 ...
[info] Resolving org.scala-lang#scala-compiler;2.12.5 ...
[info] Resolving org.scala-lang.modules#scala-xml_2.12;1.0.6 ...
[info] Resolving jline#jline;2.14.5 ...
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: io.verizon.helm#http4s_2.12;1.4.78-scalaz-7.1: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] Note: Unresolved dependencies path:
[warn] io.verizon.helm:http4s_2.12:1.4.78-scalaz-7.1 (D:\javaProject\my-akka-http-project\build.sbt#L11)
[warn] +- com.example:my-akka-http-project_2.12:0.1-SNAPSHOT
[trace] Stack trace suppressed: run 'last :ssExtractDependencies' for the full output.
[trace] Stack trace suppressed: run 'last :update' for the full output.
[error] (:ssExtractDependencies) sbt.ResolveException: unresolved dependency: io.verizon.helm#http4s_2.12;1.4.78-scalaz-7.1: not found
[error] (:update) sbt.ResolveException: unresolved dependency: io.verizon.helm#http4s_2.12;1.4.78-scalaz-7.1: not found
[error] Total time: 4 s, completed 2018-4-16 14:35:29
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=384M; support was removed in 8.0
I started a scala worksheet in intellij as well as when I am working in the cli, for some reason
import helm.ConsulOp
import helm.http4s._
import org.http4s.Uri.uri
import org.http4s.client.blaze.PooledHttp1Client
import scalaz.concurrent.Task
val client = PooledHttp1Client()
val baseUrl = uri("http://127.0.0.1:8500")
val interpreter = new Http4sConsulClient(baseUrl, client)
val s: Task[Unit] = helm.run(interpreter, ConsulOp.set("testkey", "testvalue"))
val g: Task[Option[String]] = helm.run(interpreter, ConsulOp.get("testkey"))
s.attemptRun
results in
import helm.ConsulOp
import helm.http4s._
import org.http4s.Uri.uri
import org.http4s.client.blaze.PooledHttp1Client
import scalaz.concurrent.Task
java.lang.NoClassDefFoundError: Could not initialize class org.http4s.client.blaze.Http1Support$
at org.http4s.client.blaze.PooledHttp1Client$.apply(test.sc:14)
at io.test.testapi.A$A36$A$A36.client$lzycompute(test.sc:7)
at io.test.testapi.A$A36$A$A36.client(test.sc:7)
at io.test.testapi.A$A36$A$A36.get$$instance$$client(test.sc:7)
at #worksheet#.#worksheet#(test.sc:30)
my current build.sbt looks like
organization := "io.test"
name := "test-api"
version := "0.0.1-SNAPSHOT"
scalaVersion := "2.11.11"
val Http4sVersion = "0.17.0-M2"
resolvers += "OSS Sonatype" at "https://repo1.maven.org/maven2/"
libraryDependencies ++= Seq(
"org.http4s" %% "http4s-blaze-server" % Http4sVersion,
"org.http4s" %% "http4s-circe" % Http4sVersion,
"org.http4s" %% "http4s-dsl" % Http4sVersion,
"org.http4s" %% "http4s-core" % Http4sVersion,
"ch.qos.logback" % "logback-classic" % "1.2.1",
"io.verizon.helm" %% "http4s" % "1.4.78-scalaz-7.1"
)
Ive tried a few different implentations but I keep getting a weird NoClassDefFoundError
package io.test.testapi
import helm._
import io.circe._
import org.http4s._
import org.http4s.circe._
import org.http4s.dsl._
import helm.http4s._
import org.http4s.Uri.uri
import org.http4s.client.blaze.PooledHttp1Client
import scalaz.concurrent.Task
object HelloWorld {
lazy val client = PooledHttp1Client()
val baseUrl = uri("http://172.17.0.2:8500")
lazy val interpreter = new Http4sConsulClient(baseUrl, client)
lazy val service = HttpService {
case GET -> Root / "hello" / name =>
val s: Task[Unit] = helm.run(interpreter, ConsulOp.set("testkey", "testvalue"))
val g: Task[Option[String]] = helm.run(interpreter, ConsulOp.get("testkey"))
// actually execute the calls
s.run
g.run
Ok(Json.obj("message" -> Json.fromString(s"Hello, $name")))
}
}
results in this:
java.lang.NoClassDefFoundError: org/http4s/util/CaseInsensitiveStringOps$
at org.http4s.client.blaze.Http1Support$.<init>(Http1Support.scala:31)
at org.http4s.client.blaze.Http1Support$.<clinit>(Http1Support.scala)
at org.http4s.client.blaze.PooledHttp1Client$.apply(PooledHttp1Client.scala:18)
at io.test.testapi.HelloWorld$.client$lzycompute(HelloWorld.scala:15)
at io.test.testapi.HelloWorld$.client(HelloWorld.scala:15)
at io.test.testapi.HelloWorld$.interpreter$lzycompute(HelloWorld.scala:17)
at io.test.testapi.HelloWorld$.interpreter(HelloWorld.scala:17)
at io.test.testapi.HelloWorld$$anonfun$service$1.applyOrElse(HelloWorld.scala:21)
at io.test.testapi.HelloWorld$$anonfun$service$1.applyOrElse(HelloWorld.scala:19)
at org.http4s.package$HttpService$$anonfun$apply$1.apply(package.scala:55)
at org.http4s.package$HttpService$$anonfun$apply$1.apply(package.scala:55)
at cats.data.KleisliSemigroup$$anonfun$combine$1.apply(Kleisli.scala:254)
at org.http4s.server.blaze.Http1ServerStage.liftedTree1$1(Http1ServerStage.scala:112)
at org.http4s.server.blaze.Http1ServerStage.runRequest(Http1ServerStage.scala:112)
at org.http4s.server.blaze.Http1ServerStage.org$http4s$server$blaze$Http1ServerStage$$reqLoopCallback(Http1ServerStage.scala:95)
at org.http4s.server.blaze.Http1ServerStage$$anonfun$requestLoop$1.apply(Http1ServerStage.scala:72)
at org.http4s.server.blaze.Http1ServerStage$$anonfun$requestLoop$1.apply(Http1ServerStage.scala:72)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
at org.http4s.blaze.util.Execution$$anon$1.execute(Executor.scala:27)
at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:44)
at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:252)
at org.http4s.blaze.channel.nio1.NIO1HeadStage.readReady(NIO1HeadStage.scala:61)
at org.http4s.blaze.channel.nio1.SelectorLoop.run(SelectorLoop.scala:130)
Caused by: java.lang.ClassNotFoundException: org.http4s.util.CaseInsensitiveStringOps$
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 23 common frames omitted
Usually id say I didnt have core on the classpath but ive verified it multiple times based on my build.sbt. Just curious if anyone has seen a behavior similar to this.
Hi,
does the scala client support:
https://www.consul.io/docs/agent/watches.html ?
https://github.com/OrbitzWorldwide/consul-client#example-4-blocking-call-for-value
My use case is that the app need to get notification via the consul key-value, and act according to a new value of the watched key.
Thanks,
I wanted to get all nested KeyValues under a prefix path from Consul in single call.
So made the following call (using scala 2.12.6 and http4s 4.0.0):
helm.run(interpreter, ConsulOp.kvGet(key,
Some(true),
None,
Some("/"),
None,
None))
But getting following exception..:
Exception in thread "main" org.http4s.InvalidMessageBodyFailure: Invalid message body: Could not decode JSON: [{"LockIndex":0,"Key":"global/revenue_engine/state_store_configurations/","Flags":0,"Value":null,"CreateIndex":10127650,"ModifyIndex":10127650},
{"LockIndex":0,"Key":"global/revenue_engine/state_store_configurations/firehose_settings","Flags":0,"Value":"dasdsdsad","CreateIndex":10932498,"ModifyIndex":11055277},
{"LockIndex":0,"Key":"global/revenue_engine/state_store_configurations/redis_settings","Flags":0,"Value":"dsadsddf","CreateIndex":10932497,"ModifyIndex":49630384},
{"LockIndex":0,"Key":"global/revenue_engine/state_store_configurations/s3_settings","Flags":0,"Value":"gggfdes","CreateIndex":10932496,"ModifyIndex":11055294}], error: String, cursor: CursorHistory(List(El(CursorOpDownField(Value),true)))
at org.http4s.argonaut.ArgonautInstances.$anonfun$jsonOf$2(ArgonautInstances.scala:22)
As far as I understand, consul token is currently a property of interpreter. Which means, that we need interpreter per token.
Would you consider adding support for setting token on operation level rather than globally on interpreter level?
If yes, how would you suggest implementing the change (should we maintain backward compatibility, should we simple add token property to all operations, etc.)?
If not, how would you suggest workaround the issue? I mean, how would you suggest organizing the code?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.