curl -XPUT -H "content-type: application/json" -d '{"path":"/models/testALS.zip"}' http://localhost:65327/model has error - apache-spark-mllib

when calling
curl -XPUT -H "content-type: application/json" -d
'{"path":"/models/testALS.zip"}' http://localhost:65327/model
get error.
I use spark-mllib trained an als model and save the model as testALS.zip
when calling this
curl -XPUT -H "content-type: application/json" -d
'{"path":"/models/testALS.zip"}' http://localhost:65327/model
has error;
the error message is pasted below.
[ERROR] [05/10/2019 04:10:57.815] [MleapServing-akka.actor.default-dispatcher-3] [MleapResource] error with request java.util.NoSuchElementException: key not found: als at scala.collection.MapLike$class.default(MapLike.scala:228) at scala.collection.AbstractMap.default(Map.scala:59) at scala.collection.MapLike$class.apply(MapLike.scala:141) at scala.collection.AbstractMap.apply(Map.scala:59) at ml.combust.bundle.BundleRegistry.model(BundleRegistry.scala:93) at ml.combust.bundle.serializer.ModelSerializer$$anonfun$readWithModel$2.apply(ModelSerializer.scala:105)

I believe the endpoint you are using is for updating an existing, loaded model. I'm not sure which version of MLeap you are using, so here is how I would load a model:
I recommend using at least version 0.13.1.
I recommend using the spring boot server, which is on port 8080
Then, you need to load a model using POST:
curl -X POST http://localhost:8080/models \
-H 'Content-Type: application/json' \
-d '{"modelName":"airbnb", "uri":"file:/models/airbnb.model.lr.zip", "config": {"memoryTimeout": 10000, "diskTimeout": 10000}, "force": false}'

Related

Post request with url encoded payload in gatling performance testing tool

How to load test a Rest api post request which is having a body payload in "x-www-form-urlencoded" format
Following is my curl request -
curl --location --request POST 'https://<dns-test>/master-service/v1' \
--header 'business: Test' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'apiKey: testAPIKEY' \
--data-urlencode 'assertion=eyJraWQiOiGHJKJHGHJKJHGHJKJHkhHJHjhghjkhghjklkjhghjkkjhghjkjhghjkjhjkjhLU9BRVAtMjU2In0.g965X6rIIajOC_6t2NIlMnvJzmO50_UdJhUvOwkQwOw8nS8BhqUM0n4jf2lGNFJ7TICNUPmcPUhRmriA7R5W7ZjwLrplrDeyswmjUJAgUAv4ENDHgTdvswxtINuNvAxw99_NF4ccaOJJ6_BATTtTfOB7dmi7yxlFdAgtlWDD_biBbNx0PQ77-vXOTVVcuL5AYLUq6ZHuYFKIGNhFbtzwQjm1GhDvceoGf69THWyDzJKqapiM1LBZtscbvHsM9S78r8VTgdGNqTAaICzJkaigk1BXEGkvbnfghjkjhgfghjkjhgfghjklkjhgfhjklhgfhjklkhgfghjklkjhgjklkjhgklkfjklhgfjklkjhgfhjklkjhgfjklhgfgkl;ghjklhgf7gppdKbtFalcZCkNa52RqIfJO718nNqJvmjx2zgS6VkksekeJ-_znvSC0mx-LtLA4NhNbQJJRYZFUrB4cqXYteeynXEsdhc1TBojN9FmQxxeuRrTcufXNv5qKkOu4FchvDRksx43QOHxyFBq1a6vNyTLy4wYO2gtEHM1fAo8yeoqO-N2ljUjPKlgukWal59lH_W6T-axKc1YnmvRU8VH-FAtsoI283gywghBkhOgy8ZlRRX_NV8nZEBbZmU9iyB9S1I4gnRwcxBWliqs99wVy0i6o77hPynVMqm1HSS3H4FO-JoP3ng1bkQxmGcty43mquqfXXk49HJ2s1PZSjLJHQKDEGnS8qTGjM3_lKKihWIojaxb0Dvu7ktiOXmhLATc6_Op2eO-Bp4Mu4k7eccUM063PYSD3x_G_7idWpa6X7zS6QLtl8t8MF6S76ZQp56ekbe4Ygq8LlC0af-BGlnFxHJZdpAMU2tBhD0uNSKRrmntSy8IOI8dwcCUdAIni9oOI-xLht9-CdvMtAE16XPP7q8NeA7XfkYiOTI5GYzAnMnTjOOWUF-U3WaXx9-GjUIiUboMYjHN7w3LrYIeL_UmRXha07Lm-83Lbi3VGwJRteX7sdMCLXEYFWlfkgthjJyz43DhemrpiPSvI7oKn13itiAd4ThfqJIYVlAYDI29Yix78YrIbleWyK5FQELCcmY6wNJEsfzLs57Ew8PLIk6_kjutHUIyzDpChIUOZ9Xq3Bq_E8G721raHQfPuAnKxx0OjWr6UnuqGwuuwRmHsbrNW8Vht0B4ucBiDP2cjdUmv2alifXU-X3-Pw7T2INscDNbu4bXRD1zV81K4GjQl1aveMJjCgZwu-dtSo8G4ccaHKuvdGquqyShrFR49-NYjC9Sk5UMqXbnDiDDwuJNETLs6frgqEOSqzW6deujaZSEWHhhZi5PdVOPZ7SiBFanahODXw3CpBlzU181fylwpY_-puKhzFe6NSbGwsI1fWUnSFH6SEhBuzn8Vl5jf12Av1BS4BYNl9L2pY_aGdjPbF8QhD9DvPRg22vYmUUIwAYSDQd3HfhTFauxE4Pd8Tc8YQhbj5DmRlll7fbEJGZn_CZoPGNX1aKV-6mHCemUXxebMeytjRI19y4bEGR7m1oflkmvb6LR75aMJfvEkguacKSLYdbQzfnn9Z7jKXSjhc-8z8kBaB0KfUxu26NaOCiaHVMMbl42CxhONHELIMkdP4UFS_9UMCXOMjhu2pnrzVp3H6TIT8bjs3SdLEPh9aCZ1DyXMq5x_-_jG-Bsv3rxH5cB5SI-Fo_aIfOJBn82leQjeVxW72M6yJ8DaHvFTkrWQJ6Mvm_jK4-6ybqQi1FVPCCQhcZhpl_3CHHUkEIag14-5W76s228JPJO0-HE7C1Ac6qjK8x_EU_452ut4HxontfdXdIadDm2_LCShTXEMjwCrOSw4SzxY4RPLc_Z8Ai_1DejZkG0bRYyXJfDeJfr8zK1ht7RvlTPwtio1hipvGGhXZGwGX9xHJek60H0FERaJQRSlVgPC-hfDk5ylvp2XzSX8UTf2KqLR--slLf_9VpTO8DuKlN0itx-WqDWK_G30ra4AocMdjMSOtNH1DIhqPq9Zxw6pRxoVrvtJg8gmRwq2gMN5pDnMY4XrXIfYJQ.DYoUJzMcIi5uD0Hg0y-6qA' \
--data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer' \
--data-urlencode 'scope=testing'```
Following is my code executing the request in Gatling -
val httpProtocol = http
.baseUrl("https://<dns-test>/master-service/v1")
.header("apiKey", "testAPIKEY")
.header("business", "test")
.header("Content-Type", "application/x-www-form-urlencoded")
.formParam("scope", "testing")
.formParam("grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer")
.formParam("assertion", "eyJraWQiOiJjcnlwdC1rZXloc2dfghjkjhgfdghjklkjhgfghjkjhgnIjoiUlNBLU9BRVAtMjU2In0.g965X6rIIajOC_6t2NIlMnvJzmO50_UdJhUvOwkQwOw8nS8BhqUM0n4jf2lGNFJ7TICNUPmcPUhRmriA7R5W7ZjwLrplrDeyswmjUJAgUAv4ENDHgTdvswxtINuNvAxw99_NF4ccaOJJ6_BATTtTfOB7dmi7yxlFdAgtlWDD_biBbNx0PQ77-vXOTVVhgfdfghjhghjhghjhgijhghijhghikjhg80s174nxHTpzpvsC2S1f4DzefbarzZc-ypuXHxpwoTmi3PLLfmGZrIOTBvSHKhk23x8KFGiWLEJBe2dba1MmE_Lzwg9G5G-5qSHZtlxAbAUIDL6S_JlHqHm4ftd8rEzLRlV4ZmoE_ETeJI3cv1W_NZF31YYW81SM-bYfKlC0x0p0KLaILUjNxTcr_Cp8ydyiALNBjjXnK5IqAoLwlpQHZwh0t7yrmYFACWZRNkJQGXpqFhYO4ih-BJNBRDd5D97In90I3mM1wFP3yezRkSBNFVG7gppdKbtFalcZCkNa52RqIfJO718nNqJvmjx2zgS6VkksekeJ-_znvSC0mx-LtLA4NhNbQJJRYZFUrB4cqXYteeynXEsdhc1TBojN9FmQxxeuRrTcufXNv5qKkOu4FchvDRksx43QOHxyFBq1a6vNyTLy4wYO2gtEHM1fAo8yeoqO-N2ljUjPKlgukWal59lH_W6T-axKc1YnmvRU8VH-FAtsoI283gywghBkhOgy8ZlRRX_NV8nZEBbZmU9iyB9S1I4gnRwcxBWliqs99wVy0i6o77hPynVMqm1ghjjhghjkjhghjkjhjkjkjhLrYIeL_UmRXha07Lm-83Lbi3VGwJRteX7sdMCLXEYFWlfkgthjJyz43DhemrpiPSvI7oKn13itiAd4ThfqJIYVlAYDI29Yix78YrIbleWyK5FQELCcmY6wNJEsfzLs57Ew8PLIk6_kjutHUIyzDpChIUOZ9Xq3Bq_E8G721raHQfPuAnKxx0OjWr6UnuqGwuuwRmHsbrNW8Vht0B4ucBiDP2cjdUmv2alifXU-X3-Pw7T2INscDNbu4bXRD1zV81K4GjQl1aveMJjCgZwu-dtSo8G4ccaHKuvdGquqyShrFR49-NYjC9Sk5UMqXbnDiDDwuJNETLs6frgqEOSqzW6deujaZSEWHhhZi5PdVOPZ7SiBFanahODXw3CpBlzU181fylwpY_-puKhzFe6NSbGwsI1fWUnSFH6SEhBuzn8Vl5jf12Av1BS4BYNl9L2pY_aGdjPbF8QhD9DvPRg22vYmUUIwAYSDQd3HfhTFauxE4Pd8Tc8YQhbj5DmRlll7fbEJGZn_CZoPGNX1aKV-6mHCemUXxebMeytjRI19y4bEGR7m1oflkmvb6LR75aMJfvEkguacKSLYdbQzfnn9Z7jKXSjhc-8z8kBaB0KfUxu26NaOCiaHVMMbl42CxhONHELIMkdP4UFS_9UMCXOMjhu2pnrzVp3H6TIT8bjs3SdLEPh9aCZ1DyXMq5x_-_jG-Bsv3rxH5cB5SI-Fo_aIfOJBn82leQjeVxW72M6yJ8DaHvFTkrWQJ6Mvm_jK4-6ybqQi1FVPCCQhcZhpl_3CHHUkEIag14-5W76s228JPJO0-HE7C1Ac6qjK8x_EU_452ut4HxontfdXdIadDm2_LCShTXEMjwCrOSw4SzxY4RPLc_Z8Ai_1DejZkG0bRYyXJfDeJfr8zK1ht7RvlTPwtio1hipvGGhXZGwGX9xHJek60H0FERaJQRSlVgPC-hfDk5ylvp2XzSX8UTf2KqLR--slLf_9VpTO8DuKlN0itx-WqDWK_G30ra4AocMdjMSOtNH1DIhqPq9Zxw6pRxoVrvtJg8gmRwq2gMN5pDnMY4XrXIfYJQ.DYoUJzMcIi5uD0Hg0y-6qA")
val scn = scenario(" load test")
.exec(
http("PostRequest")
.post("/")
.check(status.in(200))
setUp(scn.inject(atOnceUsers(1)).protocols(httpProtocol))
I am getting following error:-
value formParam is not a member of io.gatling.http.protocol.HttpProtocolBuilder
The error message is pretty self explanatory: you don't define formParam on a protocol config but on an HTTP request.

How to get OKTA implicit response without callback (Desktop app)

Can i get okta authentication worked in Desktop applications ? Where i just want to hit okta api to get access token and other details in response ?
As per my understanding it looks for some redirect_uri which i do not have in case of desktop application. Any recommendation ?
I tried it with my web application that works fine.
with following parameters
const openIdConnectUrl = 'https://xxxx.okta.com/oauth2/default';
const clientId = 'xxxxxxxxxxxxxxxxxxx';
const redirectUri = 'http://xxxx.com/yyy/zzz';
Reqeust
curl -v -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"username": "xxxx#example.com",
"password": "xxxxxx",
"relayState": "/myapp/some/deep/link/i/want/to/return/to",
"options": {
"multiOptionalFactorEnroll": false,
"warnBeforePasswordExpired": false
}
}' "https://${yourOktaDomain}/api/v1/authn"
provides response like
{"expiresAt":"2019-11-13T06:27:03.000Z","status":"SUCCESS","sessionToken":"20111PJIKs504fXVoLs-9zf4t8YoVzMCEvlUbcnjDnPhqSk7C-YPzCL","_embedded":{"user":{"id":"xxxxxxxxxxxxxxx","passwordChanged":"2019-11-13T03:20:33.000Z","profile":{"login":"xxxxxx#gmail.com","firstName":"xxxx","lastName":"xxxx","locale":"en","timeZone":"America/Los_Angeles"}}},"_links":{"cancel":{"href":"https://dev-924234.okta.com/api/v1/authn/cancel","hints":{"allow":["POST"]}}}}
Refer the below documentation if needed.
https://developer.okta.com/docs/reference/api/authn
Although it did not serve my purpose completely. But it can help you.

Send custom URL in telegram button bash

I wrote this code with bash for send Messages with telegram bot, now i need send the Message with a custom URL.
This is my actual code:
sendTelegram() {
curl -s \
-X POST \
https://api.telegram.org/bot$apiToken/sendMessage \
-d text="$download" \
-d chat_id=$userChatId
}
How to I can send the Message $download in a URL Button, for example:
You need to use an inline_keyboard from reply_markup and send a POST request with a JSON content type header:
curl -d '{"chat_id":7455490, "text":"pruebax", "reply_markup": {"inline_keyboard": [[{"text":"LaResistencia.co", "url": "http://laresistencia.co"}]]} }' -H "Content-Type: application/json" -X POST https://api.telegram.org/bot$apiToken/sendMessage
Check the Telegram bot API inline_keyboard section for more info about the parameters:
https://core.telegram.org/bots/api#inlinekeyboardbutton
Please use reply_markup like this payload.

Reproduce Ajax request with cURL

I'm trying to reproduce an Ajax request with cURL but it's always failing.
The server is not seing the sent data (my_data in the examples below) at all.
curl \
--request POST \
--header 'Content-type: application/json' \
--header 'X-Requested-With: XMLHttpRequest' \
--url 'http://example.org/ajax_call' \
--data '{"my_data":"data_value"}'
I also tried:
curl \
--request POST \
--header 'Content-type: application/json' \
--header 'X-Requested-With: XMLHttpRequest' \
--url 'http://example.org/ajax_call' \
--data "my_data":"data_value"
And finally:
curl \
--request POST \
--header 'Content-type: application/json' \
--header 'X-Requested-With: XMLHttpRequest' \
--url 'http://example.org/ajax_call' \
-F "my_data=data_value"
The data is never caught by the server (Symfony in my case). I guess there is an issue with XMLHttpRequest formatting in cURL and I'm wondering if what I'm trying to do is even possible (meaning proper formatting of XMLHttpRequest object by cURL)
I crawled the net for hours and haven't found anything with data parameters so far.
Thanks for your help
EDIT
Solution found thanks to people in comment section was:
curl -v \
--header 'X-Requested-With: XMLHttpRequest' \
'http://example.org/ajax_call' \
-d my_data=data_value
All your cURL requests are valid and can be processed. In Symfony app controller, you can access to sent JSON object by method getContent() of Request object:
/**
* #Route("/ajax_call", name="some_action")
*/
public function someAction(Request $request)
{
if ('' !== $content = $request->getContent()) {
$data = json_decode($content);
// some action…
}
return new Response(null, Response::HTTP_BAD_REQUEST);
}
In developer toolbar your request look like this:

Error deleting service using ambari

I'm trying to delete a service that failed to install correctly so that I can attempt to reinstall it.
I couldn't find any options for deleting in the ambari UI so I'm trying to delete using the API. However, I hit an error message:
curl -u admin:admin -H 'X-Requested-By:ambari' -X DELETE \
'http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK'
{
"status" : 500,
"message" : "org.apache.ambari.server.controller.spi.SystemException:
An internal system exception occurred: Cannot remove SPARK.
Desired state STARTED is not removable.
Service must be stopped or disabled."
}
I'm using the dockerised version of IBM Open Platform v4, i.e. IOP_v4000_20150.zip
The ambari version is:
[root#rvm /]# ambari-server --version
1.7.0_IBM
Below is the output from the GET command:
curl -u admin:admin -H 'X-Requested-By:ambari' -X GET \
'http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK'
{
"href" : "http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK",
"ServiceInfo" : {
"cluster_name" : "BI4_QSE",
"maintenance_state" : "OFF",
"service_name" : "SPARK",
"state" : "INSTALLED"
},
"components" : [
{
"href" : "http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK/components/SPARK_CLIENT",
"ServiceComponentInfo" : {
"cluster_name" : "BI4_QSE",
"component_name" : "SPARK_CLIENT",
"service_name" : "SPARK"
}
},
{
"href" : "http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK/components/SPARK_JOBHISTORYSERVER",
"ServiceComponentInfo" : {
"cluster_name" : "BI4_QSE",
"component_name" : "SPARK_JOBHISTORYSERVER",
"service_name" : "SPARK"
}
},
{
"href" : "http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK/components/SPARK_THRIFTSERVER",
"ServiceComponentInfo" : {
"cluster_name" : "BI4_QSE",
"component_name" : "SPARK_THRIFTSERVER",
"service_name" : "SPARK"
}
}
]
}
Question: how can I delete and reinstall spark?
You should be able to run the following sequence of commands to stop and then remove SPARK.
The following command will set state to INSTALLED, aka ensure its not RUNNING.
curl -i -H "X-Requested-By: ambari" -u admin:admin -X PUT \
-d '{"RequestInfo":{"context":"Stop Service"},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' \
http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK
The next few commands will ensure each component is stopped.
curl -i -H "X-Requested-By: ambari" -u admin:admin -X PUT \
-d '{"RequestInfo":{"context":"Stop All Components"},"Body":{"ServiceComponentInfo":{"state":"INSTALLED"}}}' \
http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK/components/SPARK_THRIFTSERVER
curl -i -H "X-Requested-By: ambari" -u admin:admin -X PUT \
-d '{"RequestInfo":{"context":"Stop All Components"},"Body":{"ServiceComponentInfo":{"state":"INSTALLED"}}}' \
http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK/components/SPARK_JOBHISTORYSERVER
Finally you can remove the service by executing the following command:
curl -i -H "X-Requested-By: ambari" -u admin:admin -X DELETE \
http://localhost:8080/api/v1/clusters/BI4_QSE/services/SPARK
You can then reinstall SPARK using the 'Add Service' wizard in Ambari UI.

Resources