Bug 699417 - RFE: creating buckets/key should return server response '201 Created'
Summary: RFE: creating buckets/key should return server response '201 Created'
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: CloudForms Cloud Engine
Classification: Retired
Component: iwhd
Version: 0.3.1
Hardware: Unspecified
OS: Unspecified
unspecified
low
Target Milestone: rc
Assignee: Jim Meyering
QA Contact: Dave Johnson
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-04-25 15:13 UTC by Dave Johnson
Modified: 2013-03-13 20:41 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-12-08 13:48:53 UTC


Attachments (Terms of Use)

Description Dave Johnson 2011-04-25 15:13:54 UTC
Accessing the iwhd REST API and creating buckets and keys, I noticed the server response comes back with '200 OK'.  Technically, I believe the proper response should be '201 Created' which is the response received when creating key attributes.

# create bucket, notice 200 response
[root@ip-10-82-221-216 doc]# curl --write-out %{http_code} -d name=myBucket http://127.0.0.1:9090/_new
200

# create key, notice 200 response
[root@ip-10-82-221-216 doc]# curl --write-out %{http_code} --request PUT http://127.0.0.1:9090/myBucket/drop1
200

# view created key
[root@ip-10-82-221-216 doc]# curl --write-out %{http_code} http://127.0.0.1:9090/myBucket
<objects>
	<object>
		<bucket>myBucket</bucket>
		<key>drop1</key>
	</object>
</objects>
200

# create attribute, notice 201 response
[root@ip-10-82-221-216 doc]# curl --write-out %{http_code} --request PUT -d 'blue' http://127.0.0.1:9090/myBucket/drop1/color
201

# view created attribute
[root@ip-10-82-221-216 doc]# curl --write-out %{http_codhttp://127.0.0.1:9090/myBucket/drop1/_attrs<object>
	<object_body path="http://127.0.0.1:9090/myBucket/drop1"/>
	<object_attr_list path="http://127.0.0.1:9090/myBucket/drop1/_attrs"/>
	<object_attr name="color" path="http://127.0.0.1:9090/myBucket/drop1/color"/>
</object>
200

Comment 1 Jim Meyering 2011-04-27 11:54:33 UTC
I replied with a patch on list:
http://thread.gmane.org/gmane.comp.lib.iwhd.devel/534/focus=541

Comment 2 wes hayutin 2011-06-16 19:07:38 UTC
Thanks for the report.
While this is purely a consistency issue (rather than correctness,
as far as I know), I've went ahead and wrote the change and added
a test to exercise it:

>From 28df097fcc95e457a9586ea5e60e51652cea1a19 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@...>
Date: Wed, 27 Apr 2011 13:47:27 +0200
Subject: [PATCH] upon successful bucket or object creation, issue HTTP code
 201, not 200

200 is a mere "OK", while 201 is the slightly more descriptive CREATED.
However, note that the 201 response does not guarantee that there
was no prior object by the same name.  I.e., if you create an object
and that happens to replace one that already existed, you'll get 201
just as when you create an object in an empty bucket.
This makes the code more consistent: even before this change,
attribute-creation would elicit a 201 response.
* rest.c (proxy_put_data): Use MHD_HTTP_CREATED, not MHD_HTTP_OK.
(create_bucket): Likewise.
* t/creation-code (iwhd_pid): New file.  Test for the above.
* t/Makefile.am (TESTS): Add it.

Comment 3 Aziza Karol 2011-06-20 11:39:49 UTC
Base on the above comment I.e., if you create an object
and that happens to replace one that already existed, you'll get 201.

Verification details:
creating buckets/key returns server response '201 Created'

# create bucket
[root@ibm-hs22-01 log]#  curl --write-out %{http_code} -d name=myBucket http://127.0.0.1:9090/_new
201

# create key
[root@ibm-hs22-01 log]# curl --write-out %{http_code} --request PUT http://127.0.0.1:9090/myBucket/drop1
201

# view created key
[root@ibm-hs22-01 log]# curl --write-out %{http_code} http://127.0.0.1:9090/myBucket
<objects>
	<object>
		<bucket>myBucket</bucket>
		<key>drop1</key>
	</object>
</objects>
200


# create attribute
[root@ibm-hs22-01 log]# curl --write-out %{http_code} --request PUT -d 'blue' http://127.0.0.1:9090/myBucket/drop1/color
201


#view created attribute
[root@ibm-hs22-01 log]# curl --write-out %{http_code} http://127.0.0.1:9090/myBucket/drop1/_attrs
<object>
	<object_body path="http://127.0.0.1:9090/myBucket/drop1"/>
	<object_attr_list path="http://127.0.0.1:9090/myBucket/drop1/_attrs"/>
	<object_attr name="color" path="http://127.0.0.1:9090/myBucket/drop1/color"/>
</object>
200


verified on:
[root@ibm-hs22-01 log]# rpm -qa | grep aeolus
aeolus-conductor-daemons-0.3.0-0.el6.20110617144720git2a4555b.noarch
rubygem-aeolus-cli-0.0.1-1.el6.20110617144720git2a4555b.noarch
aeolus-conductor-0.3.0-0.el6.20110617144720git2a4555b.noarch
aeolus-conductor-doc-0.3.0-0.el6.20110617144720git2a4555b.noarch
aeolus-all-0.3.0-0.el6.20110617144720git2a4555b.noarch
aeolus-configure-2.0.1-0.el6.20110602110128git5cb9257.noarch

Comment 4 wes hayutin 2011-08-01 19:54:39 UTC
release pending...

Comment 5 wes hayutin 2011-08-01 19:56:29 UTC
release pending...

Comment 7 wes hayutin 2011-12-08 13:48:53 UTC
perm close


Note You need to log in before you can comment on or make changes to this bug.