From 32b8a6f5210156d121df6835d9dd30d4eb0d5714 Mon Sep 17 00:00:00 2001 From: Johannes Duesing Date: Tue, 22 Jan 2019 09:38:29 +0100 Subject: [PATCH 1/2] Adapted registry interface to newest API version Removed unused code --- .../instancemanagement/InstanceRegistry.scala | 82 +++++-------------- 1 file changed, 19 insertions(+), 63 deletions(-) diff --git a/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala b/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala index 2623bab..56d550e 100644 --- a/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala +++ b/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala @@ -120,7 +120,7 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { def register(configuration: Configuration): Try[Long] = { val instance = createInstance(None, configuration.bindPort, configuration.instanceName) - Await.result(postInstance(instance, configuration.instanceRegistryUri + "/register") map { response => + Await.result(postInstance(instance, configuration.instanceRegistryUri + "/instances/register") map { response => if (response.status == StatusCodes.OK) { Await.result(Unmarshal(response.entity).to[String] map { assignedID => val id = assignedID.toLong @@ -149,7 +149,7 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { } else { val request = HttpRequest(method = HttpMethods.GET, configuration.instanceRegistryUri + - s"/matchingInstance?Id=${configuration.assignedID.getOrElse(-1)}&ComponentType=ElasticSearch") + s"/instances/${configuration.assignedID.getOrElse(-1)}/matchingInstance?ComponentType=ElasticSearch") Await.result(Http(system).singleRequest(request.withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt()}"))) map { response => response.status match { @@ -189,12 +189,17 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { Failure(new RuntimeException("Cannot post matching result to Instance Registry, assigned ElasticSearch instance has no ID.")) } else { val idToPost = configuration.elasticsearchInstance.id.getOrElse(-1L) + + val MatchingData = JsObject("MatchingSuccessful" -> JsBoolean(isElasticSearchReachable), + "SenderId" -> JsNumber(configuration.assignedID.getOrElse(-1L))) + val request = HttpRequest( method = HttpMethods.POST, - configuration.instanceRegistryUri + - s"/matchingResult?CallerId=${configuration.assignedID.getOrElse(-1)}&MatchedInstanceId=$idToPost&MatchingSuccessful=$isElasticSearchReachable") + configuration.instanceRegistryUri + s"/instances/$idToPost/matchingResult") - Await.result(Http(system).singleRequest(request.withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt()}"))) map { response => + Await.result(Http(system).singleRequest(request + .withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt()}")) + .withEntity(ContentTypes.`application/json`, ByteString(MatchingData.toJson.toString))) map { response => if (response.status == StatusCodes.OK) { log.info(s"Successfully posted matching result to Instance Registry.") Success() @@ -219,7 +224,8 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { } else { val id: Long = configuration.assignedID.getOrElse(-1L) - val request = HttpRequest(method = HttpMethods.POST, configuration.instanceRegistryUri + s"/deregister?Id=$id") + val request = HttpRequest(method = HttpMethods.POST, configuration.instanceRegistryUri + + s"/instances/$id/deregister") Await.result(Http(system).singleRequest(request.withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt()}"))) map { response => if (response.status == StatusCodes.OK) { @@ -241,9 +247,11 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { def postInstance(instance: Instance, uri: String)(): Future[HttpResponse] = { try { - val request = HttpRequest(method = HttpMethods.POST, uri = uri, entity = instance.toJson(instanceFormat).toString()) + val request = HttpRequest(method = HttpMethods.POST, uri = uri) //Use generic name for startup, no id present at this point - Http(system).singleRequest(request.withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt(useGenericName = true)}"))) + Http(system).singleRequest(request + .withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt(useGenericName = true)}")) + .withEntity(ContentTypes.`application/json`, ByteString(instance.toJson(instanceFormat).toString))) } catch { case dx: DeserializationException => log.warning(s"Failed to deregister to Instance Registry, exception: $dx") @@ -256,58 +264,6 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { Instance(id, InetAddress.getLocalHost.getHostAddress, controlPort, name, ComponentType.WebApi, None, InstanceState.Running, List.empty[String], List.empty[InstanceLink], List.empty[InstanceLink]) - def reportStart(id: String, configuration: Configuration): Try[ResponseEntity] = { - val request = HttpRequest(method = HttpMethods.GET, configuration.instanceRegistryUri + "/reportStart") - Await.result(Http(system).singleRequest(request) map { response => - if (response.status == StatusCodes.OK) { - Success(response.entity) - } - else { - val statuscode = response.status - log.warning(s"Failed to perform reportStart, server returned $statuscode") - Failure(new RuntimeException(s"Failed to perform reportStart, server returned $statuscode")) - } - } recover { case ex => - log.warning(s"Failed to perform reportStart, exception: $ex") - Failure(new RuntimeException(s"Failed to perform reportStart, server returned, exception: $ex")) - }, Duration.Inf) - } - - def reportFailure(id: String, configuration: Configuration): Try[ResponseEntity] = { - - val request = HttpRequest(method = HttpMethods.GET, configuration.instanceRegistryUri + "/reportFailure") - Await.result(Http(system).singleRequest(request) map { response => - if (response.status == StatusCodes.OK) { - Success(response.entity) - } - else { - val statuscode = response.status - log.warning(s"Failed to perform reportFailure, server returned $statuscode") - Failure(new RuntimeException(s"Failed to perform reportFailure, server returned $statuscode")) - } - } recover { case ex => - log.warning(s"Failed to perform reportFailure, server returned, exception: $ex") - Failure(new RuntimeException(s"Failed to perform reportFailure, server returned, exception: $ex")) - }, Duration.Inf) - } - - def reportStop(id: String, configuration: Configuration): Try[ResponseEntity] = { - - val request = HttpRequest(method = HttpMethods.GET, configuration.instanceRegistryUri + "/reportStop") - Await.result(Http(system).singleRequest(request) map { response => - if (response.status == StatusCodes.OK) { - Success(response.entity) - } - else { - val statuscode = response.status - log.warning(s"Failed to perform reportStop, server returned $statuscode") - Failure(new RuntimeException(s"Failed to perform reportStop, server returned $statuscode")) - } - } recover { case ex => - log.warning(s"Failed to perform reportStop, server returned, exception: $ex") - Failure(new RuntimeException(s"Failed to perform reportStop, server returned, exception: $ex")) - }, Duration.Inf) - } object ReportOperationType extends Enumeration { val Start: Value = Value("Start") @@ -317,11 +273,11 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { def toOperationUriString(operation: ReportOperationType.Value, id: Long): String = { operation match { case Start => - s"/reportStart?Id=$id" + s"/instances/$id/reportStart" case Stop => - s"/reportStop?Id=$id" + s"/instances/$id/reportStop" case _ => - s"/reportFailure?Id=$id" + s"/instances/$id/reportFailure" } } } From a186175d21e9e8cb9e7f9383fbf601dbe0ced2a5 Mon Sep 17 00:00:00 2001 From: Johannes Duesing Date: Thu, 7 Feb 2019 15:01:43 +0100 Subject: [PATCH 2/2] Fixed variable name being uppercase (codestyle) --- .../cs/swt/delphi/instancemanagement/InstanceRegistry.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala b/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala index 56d550e..6a7517c 100644 --- a/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala +++ b/src/main/scala/de/upb/cs/swt/delphi/instancemanagement/InstanceRegistry.scala @@ -190,7 +190,7 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { } else { val idToPost = configuration.elasticsearchInstance.id.getOrElse(-1L) - val MatchingData = JsObject("MatchingSuccessful" -> JsBoolean(isElasticSearchReachable), + val matchingData = JsObject("MatchingSuccessful" -> JsBoolean(isElasticSearchReachable), "SenderId" -> JsNumber(configuration.assignedID.getOrElse(-1L))) val request = HttpRequest( @@ -199,7 +199,7 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging { Await.result(Http(system).singleRequest(request .withHeaders(RawHeader("Authorization",s"Bearer ${AuthProvider.generateJwt()}")) - .withEntity(ContentTypes.`application/json`, ByteString(MatchingData.toJson.toString))) map { response => + .withEntity(ContentTypes.`application/json`, ByteString(matchingData.toJson.toString))) map { response => if (response.status == StatusCodes.OK) { log.info(s"Successfully posted matching result to Instance Registry.") Success()