On Aug 25, 2014, at 1:21 PM, Wido den Hollander <w...@widodh.nl> wrote:

> 
> 
> On 25-08-14 18:02, Carlos Reátegui wrote:
>> Not sure about this ‘fix’.  If the goal is to match AWS here is the way it 
>> works compared to 4.3.
>> 
>> 1) /latest/user-data
>> 
>> On AWS one can query /latest/user-data with or without the trailing slash 
>> and BOTH return the user-data
>> 
>> On ACS 4.3 /latest/user-data works but with trailing / returns a 404.
>> 
> 
> So this fix was just for the meta-data call. Not for the user-data query. It 
> could be that there are multiple fixes to be made, but they can be addressed 
> separately.
> 

thanks Carlos for the extensive analysis, Maybe Erik can provide a patch to fix 
all of it :)

>> 2) /latest/meta-data
>> 
>> On AWS /latest/meta-data returns a 301 pointing to trailing / version.  With 
>> a trailing slash it return the meta-data objects available.
>> 
>> On ACS 4.3 /latest/meta-data returns 404. With a trailing slash it returns 
>> the meta-data objects available.
>> 
>> 3) /latest/meta-data/<object>
>> 
>> On AWS with and without / returns the object value(s)
>> 
>> On ACS 4.3 without a / it returns the value.  With the / it returns a 404.
>> 
>> ——
>> 
>> Here are examples of the above (I am also including the headers and in the 
>> case of user-data only the headers):
>> 
>> ACS 4.3
>> 
>> $ curl -I http://172.30.45.101/latest/user-data/
>> HTTP/1.1 404 Not Found
>> Date: Mon, 25 Aug 2014 15:53:18 GMT
>> Server: Apache
>> Vary: Accept-Encoding
>> Content-Type: text/html; charset=iso-8859-1
>> 
>> $ curl -I http://172.30.45.101/latest/user-data
>> HTTP/1.1 200 OK
>> Date: Mon, 25 Aug 2014 15:53:23 GMT
>> Server: Apache
>> Last-Modified: Mon, 11 Aug 2014 22:34:05 GMT
>> ETag: "10240-0-5006227053140;500622334a140”
>> Accept-Ranges: bytes
>> 
>> $ curl -i http://172.30.45.101/latest/meta-data
>> HTTP/1.1 404 Not Found
>> Date: Mon, 25 Aug 2014 15:54:25 GMT
>> Server: Apache
>> Vary: Accept-Encoding
>> Content-Length: 214
>> Content-Type: text/html; charset=iso-8859-1
>> 
>> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
>> <html><head>
>> <title>404 Not Found</title>
>> </head><body>
>> <h1>Not Found</h1>
>> <p>The requested URL /latest/meta-data was not found on this server.</p>
>> </body></html>
>> 
>> $ curl -i http://172.30.45.101/latest/meta-data/
>> HTTP/1.1 200 OK
>> Date: Mon, 25 Aug 2014 15:54:32 GMT
>> Server: Apache
>> Last-Modified: Mon, 11 Aug 2014 22:34:05 GMT
>> ETag: "1024a-88-5006227053140;500622334a140"
>> Accept-Ranges: bytes
>> Content-Length: 136
>> 
>> service-offering
>> availability-zone
>> local-ipv4
>> local-hostname
>> public-ipv4
>> public-hostname
>> instance-id
>> vm-id
>> public-keys
>> cloud-identifier
>> 
>> $ curl -i http://172.30.45.101/latest/meta-data/local-ipv4; echo
>> HTTP/1.1 200 OK
>> Date: Mon, 25 Aug 2014 15:55:39 GMT
>> Server: Apache
>> Last-Modified: Mon, 11 Aug 2014 22:34:05 GMT
>> ETag: "10250-d-5006227053140;500622334a140"
>> Accept-Ranges: bytes
>> Content-Length: 13
>> 
>> 172.30.45.123
>> 
>> $ curl -i http://172.30.45.101/latest/meta-data/local-ipv4/; echo
>> HTTP/1.1 404 Not Found
>> Date: Mon, 25 Aug 2014 15:55:45 GMT
>> Server: Apache
>> Vary: Accept-Encoding
>> Content-Length: 232
>> Content-Type: text/html; charset=iso-8859-1
>> 
>> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
>> <html><head>
>> <title>404 Not Found</title>
>> </head><body>
>> <h1>Not Found</h1>
>> <p>The requested URL /metadata/172.30.45.123/local-ipv4/ was not found on 
>> this server.</p>
>> </body></html>
>> 
>> 
>> On AWS EC2
>> 
>> $ curl -I  http://169.254.169.254/latest/user-data
>> HTTP/1.0 200 OK
>> Content-Type: application/octet-stream
>> Accept-Ranges: bytes
>> ETag: "590463714"
>> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT
>> Content-Length: 4790
>> Connection: close
>> Date: Mon, 25 Aug 2014 15:57:15 GMT
>> Server: EC2ws
>> 
>> $ curl -I  http://169.254.169.254/latest/user-data/
>> HTTP/1.0 200 OK
>> Content-Type: application/octet-stream
>> Accept-Ranges: bytes
>> ETag: "590463714"
>> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT
>> Content-Length: 4790
>> Connection: close
>> Date: Mon, 25 Aug 2014 15:57:20 GMT
>> Server: EC2ws
>> 
>> $ curl -i http://169.254.169.254/latest/meta-data
>> HTTP/1.0 301 Moved Permanently
>> Location: http://169.254.169.254/latest/meta-data/
>> Content-Length: 0
>> Connection: close
>> Date: Mon, 25 Aug 2014 15:58:00 GMT
>> Server: EC2ws
>> 
>> $ curl -i http://169.254.169.254/latest/meta-data/; echo
>> HTTP/1.0 200 OK
>> Content-Type: text/plain
>> Accept-Ranges: bytes
>> ETag: "1606042795"
>> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT
>> Content-Length: 268
>> Connection: close
>> Date: Mon, 25 Aug 2014 15:58:50 GMT
>> Server: EC2ws
>> 
>> ami-id
>> ami-launch-index
>> ami-manifest-path
>> block-device-mapping/
>> hostname
>> iam/
>> instance-action
>> instance-id
>> instance-type
>> kernel-id
>> local-hostname
>> local-ipv4
>> mac
>> metrics/
>> network/
>> placement/
>> profile
>> public-hostname
>> public-ipv4
>> public-keys/
>> reservation-id
>> security-groups
>> 
>> $ curl -i http://169.254.169.254/latest/meta-data/local-ipv4; echo
>> HTTP/1.0 200 OK
>> Content-Type: text/plain
>> Accept-Ranges: bytes
>> ETag: "916027669"
>> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT
>> Content-Length: 12
>> Connection: close
>> Date: Mon, 25 Aug 2014 16:00:32 GMT
>> Server: EC2ws
>> 
>> 10.250.5.124
>> $ curl -i http://169.254.169.254/latest/meta-data/local-ipv4/; echo
>> HTTP/1.0 200 OK
>> Content-Type: text/plain
>> Accept-Ranges: bytes
>> ETag: "916027669"
>> Last-Modified: Thu, 03 Apr 2014 23:10:13 GMT
>> Content-Length: 12
>> Connection: close
>> Date: Mon, 25 Aug 2014 16:00:36 GMT
>> Server: EC2ws
>> 
>> 10.250.5.124
>> 
>> 
>> 
>> 
>> On Aug 25, 2014, at 5:32 AM, Sebastien Goasguen <run...@gmail.com> wrote:
>> 
>>> 
>>> On Aug 25, 2014, at 8:28 AM, Sebastien Goasguen <run...@gmail.com> wrote:
>>> 
>>>> 
>>>> On Aug 25, 2014, at 8:26 AM, Wido den Hollander <w...@widodh.nl> wrote:
>>>> 
>>>>> On 08/25/2014 02:25 PM, Sebastien Goasguen wrote:
>>>>>> 
>>>>>> On Aug 25, 2014, at 8:16 AM, Wido den Hollander <w...@widodh.nl> wrote:
>>>>>> 
>>>>>>> On 08/25/2014 01:33 PM, Nux! wrote:
>>>>>>>> Thanks Erik!
>>>>>>>> 
>>>>>>> 
>>>>>>> Indeed!
>>>>>>> 
>>>>>>>> Hopefully this change will be incorporated soon so we don't need to 
>>>>>>>> patch cloud-init.
>>>>>>>> 
>>>>>>> 
>>>>>>> I came up with a very small patch: 
>>>>>>> https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;a=commitdiff;h=1499972804b6de4fade5c84436e29f9904165e18
>>>>>>> 
>>>>>>> Tested it on my local env and worked fine. Both the old and new URL 
>>>>>>> work with the same output.
>>>>>>> 
>>>>>> 
>>>>>> thanks folks, I will pull that in 4.3
>>>>>> 
>>>>> 
>>>>> Hmm. I didn't make a separate branch as a hotfix for 4.4, so how do we 
>>>>> get this in 4.4.1 as well?
>>>>> 
>>>>> We shouldn't cherry-pick anymore, right?
>>>> 
>>>> Ideally no, if you make a hotfix/4.4-7405 branch for it you can ask Daan 
>>>> to merge it in 4.4 branch
>>>> 
>>>> I will also merge it in 4.3
>>>> 
>>>> 
>>> 
>>> Erick, submit the same patch to review board, so I took it from there and 
>>> patch 4.3 branch.
>>> 
>>> Only 4.4 is missing...
>>> 
>>>> 
>>>>> 
>>>>> Wido
>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> Wido
>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> --
>>>>>>>> Sent from the Delta quadrant using Borg technology!
>>>>>>>> 
>>>>>>>> Nux!
>>>>>>>> www.nux.ro
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ----- Original Message -----
>>>>>>>>> From: "Erik Weber" <terbol...@gmail.com>
>>>>>>>>> To: "dev" <dev@cloudstack.apache.org>
>>>>>>>>> Sent: Monday, 25 August, 2014 12:34:10 PM
>>>>>>>>> Subject: Re: cloud-init issue
>>>>>>>>> 
>>>>>>>>> On Mon, Aug 25, 2014 at 1:27 PM, Erik Weber <terbol...@gmail.com> 
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> On Mon, Aug 25, 2014 at 1:16 PM, Wido den Hollander <w...@widodh.nl>
>>>>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> On 08/25/2014 12:12 PM, Sebastien Goasguen wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Folks,
>>>>>>>>>>>> 
>>>>>>>>>>>> There is an outstanding issue with cloud-init compatibility.
>>>>>>>>>>>> The VR serves the instance metadata through a web server but there 
>>>>>>>>>>>> is a
>>>>>>>>>>>> trailing slash issue:
>>>>>>>>>>>> 
>>>>>>>>>>>> https://issues.apache.org/jira/browse/CLOUDSTACK-7405
>>>>>>>>>>>> 
>>>>>>>>>>>> Does anyone know where the settings for this web server are 
>>>>>>>>>>>> located in
>>>>>>>>>>>> the cloudstack code ?
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> So I think that is done in systemvm/patches/debian/
>>>>>>>>>>> config/opt/cloud/bin/vmdata.py
>>>>>>>>>>> 
>>>>>>>>>>> It adds a RewriteRule to the .htaccess like:
>>>>>>>>>>> 
>>>>>>>>>>> entry = "RewriteRule ^meta-data/(.+)$  ../" + folder +
>>>>>>>>>>> "/%{REMOTE_ADDR}/$1 [L,NC,QSA]"
>>>>>>>>>>> 
>>>>>>>>>>> I'm not a big mod_rewrite guru however.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> Adding a line with "RewriteRule ^meta-data$ ../" + folder
>>>>>>>>>> +"/%{REMOTE_ADDR}/$1 [L,NC,QSA]"
>>>>>>>>>> should suffice.
>>>>>>>>>> 
>>>>>>>>>> small typo there...
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Tested on a VR with this config:
>>>>>>>>>> 
>>>>>>>>>> RewriteRule ^meta-data/(.+)$  ../metadata/%{REMOTE_ADDR}/$1 
>>>>>>>>>> [L,NC,QSA]
>>>>>>>>>> 
>>>>>>>>>> RewriteRule ^meta-data/$  ../metadata/%{REMOTE_ADDR}/meta-data 
>>>>>>>>>> [L,NC,QSA]
>>>>>>>>>> 
>>>>>>>>>> RewriteRule ^meta-data$  ../metadata/%{REMOTE_ADDR}/meta-data 
>>>>>>>>>> [L,NC,QSA]
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> A better solution is probably to make the last slash conditional, 
>>>>>>>>> like this:
>>>>>>>>> RewriteRule ^meta-data/?$  ../metadata/%{REMOTE_ADDR}/meta-data 
>>>>>>>>> [L,NC,QSA]
>>>>>>>>> 
>>>>>>>>> tested:
>>>>>>>>> [root@jenkins ~]# curl -I -s 10.30.81.1/latest/meta-data/ | grep HTTP
>>>>>>>>> 
>>>>>>>>> HTTP/1.1 200 OK
>>>>>>>>> 
>>>>>>>>> [root@jenkins ~]# curl -I -s 10.30.81.1/latest/meta-data | grep HTTP
>>>>>>>>> 
>>>>>>>>> HTTP/1.1 200 OK
>>>>>>>>> 
>>>>>>>>> Erik
>> 

Reply via email to