[ 
https://issues.apache.org/jira/browse/AMBARI-9016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sean Roberts updated AMBARI-9016:
---------------------------------
    Description: 
The  stack advisor API does not accept application/json even though it expects 
JSON files.
And it responds with "text/plain" even though the content it is sending is JSON.

This breaks most any http library or application. Such as those made to work 
with RESTful APIs.

The API does not accept JSON and when it responds with JSON it says it's 
"text/plain":
{code}
$ curl -v -u admin\
  -H "Content-Type: application/json" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d 
@temp.json

< HTTP/1.1 500 Server Error
< Content-Type: text/plain; charset=ISO-8859-1
{
  "status": 500,
  "message": "Server Error"
}
{code}

Meanwhile it accepts JSON as text/plain and still responds with "text/plain" 
even though it is sending JSON:

{code}
$ curl -v -u admin\
  -H "Content-Type: test/plain" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d 
@temp.json

> POST /api/v1/stacks/HDP/versions/2.4/recommendations HTTP/1.1
> Content-Type: test/plain
< HTTP/1.1 200 OK
< Content-Type: text/plain
{
  "resources" : [
    {
      "href" : 
"http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations/8";,
... snipped the rest of the JSON since it's not needed ...
{code}

{code}
$ cat temp.json
    {
      "recommend" : "configurations",
      "services" : [ 
"AMBARI_METRICS","HDFS","HIVE","MAPREDUCE2","PIG","TEZ","YARN","ZOOKEEPER" ],
      "hosts" : [ 
"ip-10-0-1-159.ec2.internal","ip-10-0-1-31.ec2.internal","ip-10-0-1-32.ec2.internal","ip-10-0-1-33.ec2.internal"
 ]
    }
{code}

  was:
The blueprints API, when taking & responding with json, is only accepting 
Content-Type:application/x-www-form-urlencode and responds with 
Content-Type:text/plain.

For example, the 1st block below sends the json as application/json but fails. 
While the 2nd block sends  "application/x-www-form-urlencoded" and succeeds. 
Also note that the 2nd response comes back as "text/plain" even though the data 
is json.




The API does not accept JSON and when it responds with JSON it says it's 
"text/plain":
{code}
$ curl -v -u admin\
  -H "Content-Type: application/json" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d 
@temp.json

< HTTP/1.1 500 Server Error
< Content-Type: text/plain; charset=ISO-8859-1
{
  "status": 500,
  "message": "Server Error"
}
{code}

Meanwhile it accepts JSON as text/plain and still responds with "text/plain" 
even though it is sending JSON:

{code}
$ curl -v -u admin\
  -H "Content-Type: test/plain" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d 
@temp.json

> POST /api/v1/stacks/HDP/versions/2.4/recommendations HTTP/1.1
> Content-Type: test/plain
< HTTP/1.1 200 OK
< Content-Type: text/plain
{
  "resources" : [
    {
      "href" : 
"http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations/8";,
... snipped the rest of the JSON since it's not needed ...
{code}

{code}
$ cat temp.json
    {
      "recommend" : "configurations",
      "services" : [ 
"AMBARI_METRICS","HDFS","HIVE","MAPREDUCE2","PIG","TEZ","YARN","ZOOKEEPER" ],
      "hosts" : [ 
"ip-10-0-1-159.ec2.internal","ip-10-0-1-31.ec2.internal","ip-10-0-1-32.ec2.internal","ip-10-0-1-33.ec2.internal"
 ]
    }
{code}


> API not taking or responding with application/json
> --------------------------------------------------
>
>                 Key: AMBARI-9016
>                 URL: https://issues.apache.org/jira/browse/AMBARI-9016
>             Project: Ambari
>          Issue Type: Bug
>          Components: ambari-server
>    Affects Versions: 1.7.0
>            Reporter: Sean Roberts
>            Priority: Minor
>              Labels: newbie
>
> The  stack advisor API does not accept application/json even though it 
> expects JSON files.
> And it responds with "text/plain" even though the content it is sending is 
> JSON.
> This breaks most any http library or application. Such as those made to work 
> with RESTful APIs.
> The API does not accept JSON and when it responds with JSON it says it's 
> "text/plain":
> {code}
> $ curl -v -u admin\
>   -H "Content-Type: application/json" -H x-requested-by:useless \
>   http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d 
> @temp.json
> < HTTP/1.1 500 Server Error
> < Content-Type: text/plain; charset=ISO-8859-1
> {
>   "status": 500,
>   "message": "Server Error"
> }
> {code}
> Meanwhile it accepts JSON as text/plain and still responds with "text/plain" 
> even though it is sending JSON:
> {code}
> $ curl -v -u admin\
>   -H "Content-Type: test/plain" -H x-requested-by:useless \
>   http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d 
> @temp.json
> > POST /api/v1/stacks/HDP/versions/2.4/recommendations HTTP/1.1
> > Content-Type: test/plain
> < HTTP/1.1 200 OK
> < Content-Type: text/plain
> {
>   "resources" : [
>     {
>       "href" : 
> "http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations/8";,
> ... snipped the rest of the JSON since it's not needed ...
> {code}
> {code}
> $ cat temp.json
>     {
>       "recommend" : "configurations",
>       "services" : [ 
> "AMBARI_METRICS","HDFS","HIVE","MAPREDUCE2","PIG","TEZ","YARN","ZOOKEEPER" ],
>       "hosts" : [ 
> "ip-10-0-1-159.ec2.internal","ip-10-0-1-31.ec2.internal","ip-10-0-1-32.ec2.internal","ip-10-0-1-33.ec2.internal"
>  ]
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to