@@ -21,9 +21,11 @@ import java.net.InetAddress
2121import akka .actor .ActorSystem
2222import akka .http .scaladsl .Http
2323import akka .http .scaladsl .model ._
24+ import akka .http .scaladsl .model .headers .RawHeader
2425import akka .http .scaladsl .unmarshalling .Unmarshal
2526import akka .stream .ActorMaterializer
2627import akka .util .ByteString
28+ import de .upb .cs .swt .delphi .crawler .authorization .AuthProvider
2729import de .upb .cs .swt .delphi .crawler .instancemanagement .InstanceEnums .{ComponentType , InstanceState }
2830import de .upb .cs .swt .delphi .crawler .{AppLogging , Configuration , Crawler }
2931
@@ -99,7 +101,10 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging
99101 method = HttpMethods .POST ,
100102 configuration.instanceRegistryUri + ReportOperationType .toOperationUriString(operationType, id))
101103
102- Await .result(Http (system).singleRequest(request) map {response =>
104+ val useGenericNameForToken = operationType == ReportOperationType .Start // Must use generic name for startup, no id known at that point
105+
106+ Await .result(Http (system).singleRequest(request.withHeaders(RawHeader (" Authorization" ,
107+ s " Bearer ${AuthProvider .generateJwt(useGenericName = useGenericNameForToken)(configuration)}" ))) map { response =>
103108 if (response.status == StatusCodes .OK ){
104109 log.info(s " Successfully reported ${operationType.toString} to Instance Registry. " )
105110 Success ()
@@ -122,7 +127,7 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging
122127 private def register (configuration : Configuration ) : Try [Long ] = {
123128 val instance = createInstance(None ,configuration.controlServerPort, configuration.instanceName)
124129
125- Await .result(postInstance(instance, configuration.instanceRegistryUri + " /register" ) map {response =>
130+ Await .result(postInstance(instance, configuration.instanceRegistryUri + " /register" )(configuration) map {response =>
126131 if (response.status == StatusCodes .OK ){
127132 Await .result(Unmarshal (response.entity).to[String ] map { assignedID =>
128133 val id = assignedID.toLong
@@ -152,7 +157,8 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging
152157 val request = HttpRequest (method = HttpMethods .GET , configuration.instanceRegistryUri +
153158 s " /matchingInstance?Id= ${configuration.instanceId.getOrElse(- 1 )}&ComponentType=ElasticSearch " )
154159
155- Await .result(Http (system).singleRequest(request) map {response =>
160+ Await .result(Http (system).singleRequest(request
161+ .withHeaders(RawHeader (" Authorization" , s " Bearer ${AuthProvider .generateJwt()(configuration)}" ))) map {response =>
156162 response.status match {
157163 case StatusCodes .OK =>
158164 val instanceString : String = Await .result(response.entity.dataBytes.runFold(ByteString (" " ))(_ ++ _).map(_.utf8String), 5 seconds)
@@ -192,7 +198,8 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging
192198 configuration.instanceRegistryUri +
193199 s " /matchingResult?CallerId= ${configuration.instanceId.getOrElse(- 1 )}&MatchedInstanceId= $idToPost&MatchingSuccessful= $isElasticSearchReachable" )
194200
195- Await .result(Http (system).singleRequest(request) map {response =>
201+ Await .result(Http (system).singleRequest(request
202+ .withHeaders(RawHeader (" Authorization" , s " Bearer ${AuthProvider .generateJwt()(configuration)}" ))) map {response =>
196203 if (response.status == StatusCodes .OK ){
197204 log.info(" Successfully posted matching result to Instance Registry." )
198205 Success ()
@@ -220,7 +227,8 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging
220227
221228 val request = HttpRequest (method = HttpMethods .POST , configuration.instanceRegistryUri + s " /deregister?Id= $id" )
222229
223- Await .result(Http (system).singleRequest(request) map {response =>
230+ Await .result(Http (system).singleRequest(request
231+ .withHeaders(RawHeader (" Authorization" , s " Bearer ${AuthProvider .generateJwt()(configuration)}" ))) map {response =>
224232 if (response.status == StatusCodes .OK ){
225233 log.info(" Successfully deregistered from Instance Registry." )
226234 Success ()
@@ -238,9 +246,11 @@ object InstanceRegistry extends InstanceJsonSupport with AppLogging
238246 }
239247 }
240248
241- def postInstance (instance : Instance , uri : String ) () : Future [HttpResponse ] = {
249+ def postInstance (instance : Instance , uri : String ) (implicit configuration : Configuration ) : Future [HttpResponse ] = {
242250 Try (HttpRequest (method = HttpMethods .POST , uri = uri, entity = instance.toJson(instanceFormat).toString())) match {
243- case Success (request) => Http (system).singleRequest(request)
251+ // use generic name for startup, no id present at this point
252+ case Success (request) => Http (system).singleRequest(request
253+ .withHeaders(RawHeader (" Authorization" , s " Bearer ${AuthProvider .generateJwt(useGenericName = true )(configuration)}" )))
244254 case Failure (dx) =>
245255 log.warning(s " Failed to deregister to Instance Registry, exception: $dx" )
246256 Future .failed(dx)
0 commit comments