[Openstack] Fw: problem in setting up Tempauth authentication & authorization with Swift

Gareth academicgareth at gmail.com
Fri Aug 30 02:41:28 UTC 2013


Pragya

The v1.0 auth uses tempauth for swift, like what you config in
proxy-server.conf. All account data is read from that file, so you couldn't
add/delete account in tempauth without modifying config file and restart
swift.

BTW, your curl link here "curl -v -H 'X-Storage-Token:AUTH_
tk3867b7599d5346559ee0baaa09e0f40d' http://localhost:8080/v1/AUTH_prag2648/"
actually is a GET request, which means getting account data. If you config
everything correctly, it must have valid response. And you logs are a
better way to find what happened in this request (set log level to DEBUG,
and you will get more details).


On Fri, Aug 30, 2013 at 7:47 AM, Kuo Hugo <tonytkdk at gmail.com> wrote:

> Hi Pragya,
>
> I need more information.
>
> 1) Please draw a network topology of your environment
> 2) How many nodes do you have?
> 3) What's the ring looks like ?
>
>
> Hugo Kuo
> hugo at swiftstack.com
> tonytkdk at gmail.com
> +886 935004793
>
>
> 2013/8/29 pragya jain <prag_2648 at yahoo.co.in>
>
>> hello sir,
>>
>> connection is established successfully. But, when I try to create an
>> account, I face the problem.
>>
>> root at arun-Aspire-5742:~# sudo swift-init account start
>> Starting account-server...(/etc/swift/account-server.conf)
>> root at arun-Aspire-5742:~# sudo swift-init proxy start
>> Starting proxy-server...(/etc/swift/proxy-server.conf)
>> root at arun-Aspire-5742:~# curl -v -H 'X-Auth-User:prag2648:pragya' -H
>> 'X-Auth-Key:pj2648' http://localhost:8080/auth/v1.0/
>> * About to connect() to localhost port 8080 (#0)
>> *   Trying 127.0.0.1... connected
>> > GET /auth/v1.0/ HTTP/1.1
>> > User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0
>> OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
>> > Host: localhost:8080
>> > Accept: */*
>> > X-Auth-User:prag2648:pragya
>> > X-Auth-Key:pj2648
>> >
>> < HTTP/1.1 200 OK
>> < X-Storage-Url: http://localhost:8080/v1/AUTH_prag2648
>> < X-Auth-Token: AUTH_tk3867b7599d5346559ee0baaa09e0f40d
>> < Content-Type: text/html; charset=UTF-8
>> < X-Storage-Token: AUTH_tk3867b7599d5346559ee0baaa09e0f40d
>> < Content-Length: 0
>> < X-Trans-Id: txe2ab76a7617e40399f456-00521f3d16
>> < Date: Thu, 29 Aug 2013 12:22:46 GMT
>> <
>> * Connection #0 to host localhost left intact
>> * Closing connection #0
>> root at arun-Aspire-5742:~# python
>> Python 2.7.3 (default, Apr 10 2013, 05:46:21)
>> [GCC 4.6.3] on linux2
>> Type "help", "copyright", "credits" or "license" for more information.
>> >>> import swift.common.memcached as memcached
>> >>> memcache = memcached.MemcacheRing(['127.0.0.1:11211'])
>> >>> print memcache.get('AUTH_/user/prag2648:pragya')
>> AUTH_tk3867b7599d5346559ee0baaa09e0f40d
>> >>> print
>> memcache.get('AUTH_/token/AUTH_tk3867b7599d5346559ee0baaa09e0f40d')
>> [1377865366.826027,
>> 'prag2648,prag2648:pragya,.reseller_admin,AUTH_prag2648']
>> >>>
>> root at arun-Aspire-5742:~# curl -v -H
>> 'X-Storage-Token:AUTH_tk3867b7599d5346559ee0baaa09e0f40d'
>> http://127.0.0.1/v1/Auth_prag2648/
>> * About to connect() to 127.0.0.1 port 80 (#0)
>> *   Trying 127.0.0.1... Connection refused
>> * couldn't connect to host
>> * Closing connection #0
>> curl: (7) couldn't connect to host
>> root at arun-Aspire-5742:~# curl -v -H
>> 'X-Storage-Token:AUTH_tk3867b7599d5346559ee0baaa09e0f40d'
>> http://localhost:8080/v1/AUTH_prag2648/
>> * About to connect() to localhost port 8080 (#0)
>> *   Trying 127.0.0.1... connected
>> > GET /v1/AUTH_prag2648/ HTTP/1.1
>> > User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0
>> OpenSSL/1.0.1 zlib/
>> 1.2.3.4 libidn/1.23 librtmp/2.3
>> > Host: localhost:8080
>> > Accept: */*
>> > X-Storage-Token:AUTH_tk3867b7599d5346559ee0baaa09e0f40d
>> >
>> < HTTP/1.1 503 Internal Server Error
>> < Content-Length: 118
>> < Content-Type: text/html; charset=UTF-8
>> < X-Trans-Id: txd6fd9eead36e4b74b0869-00521f3efe
>> < Date: Thu, 29 Aug 2013 12:30:55 GMT
>> <
>> * Connection #0 to host localhost left intact
>> * Closing connection #0
>> <html><h1>Service Unavailable</h1><p>The server is currently unavailable.
>> Please try again at a later time.</p></html>root at arun-Aspire-5742:~#
>>
>> Please help me in this regard.
>>
>> ---
>>
>> Pragya Jain
>>
>>   ------------------------------
>>  *From:* pragya jain <prag_2648 at yahoo.co.in>
>> *To:* Kuo Hugo <tonytkdk at gmail.com>
>> *Cc:* "openstack at lists.openstack.org" <openstack at lists.openstack.org>
>>  *Sent:* Thursday, 29 August 2013 4:47 PM
>> *Subject:* Re: [Openstack] Fw: problem in setting up Tempauth
>> authentication & authorization with Swift
>>
>> Thanks Kuo very much for this help.
>> connection is successfully established.
>>
>>
>>   ------------------------------
>>  *From:* Kuo Hugo <tonytkdk at gmail.com>
>> *To:* pragya jain <prag_2648 at yahoo.co.in>
>> *Cc:* "openstack at lists.openstack.org" <openstack at lists.openstack.org>
>> *Sent:* Thursday, 29 August 2013 3:46 PM
>> *Subject:* Re: [Openstack] Fw: problem in setting up Tempauth
>> authentication & authorization with Swift
>>
>> curl -v -H 'X-Auth-User:admin:admin' -H 'X-Auth-Key:admin'
>> http://localhost:8080/auth/v1.0/
>>
>>
>> +Hugo Kuo+
>> hugo at swiftstack.com
>> tonytkdk at gmail.com
>> +886 935004793
>>
>>
>> 2013/8/29 pragya jain <prag_2648 at yahoo.co.in>
>> >
>> > root at arun-Aspire-5742:~# netstat -antulp | grep 8080
>> > tcp        0      0 0.0.0.0:8080            0.0.0.0:*
>> LISTEN      2421/python
>> >
>> > user = swift
>> >
>> > ________________________________
>> > From: Kuo Hugo <tonytkdk at gmail.com>
>> > To: pragya jain <prag_2648 at yahoo.co.in>
>> > Cc: "openstack at lists.openstack.org" <openstack at lists.openstack.org>
>> > Sent: Thursday, 29 August 2013 2:47 PM
>> >
>> > Subject: Re: [Openstack] Fw: problem in setting up Tempauth
>> authentication & authorization with Swift
>> >
>> > gt; netstat -antulp | grep 8080
>> >
>> > 1) is 8080 port been used ?
>> > 2) What's the value of *user* parameter in proxy-server.conf
>> https://github.com/openstack/swift/blob/master/etc/proxy-server.conf-sample#L7
>> >
>> >
>> >
>> > +Hugo Kuo+
>> > hugo at swiftstack.com
>> > tonytkdk at gmail.com
>> > +886 935004793
>> >
>> >
>> > 2013/8/29 pragya jain <prag_2648 at yahoo.co.in>
>> >
>> > hello sir,
>> >
>> > I run the command:
>> >
>> > root at arun-Aspire-5742:~# find / -name swift-proxy-server
>> > /opt/swift/build/scripts-2.7/swift-proxy-server
>> > /opt/swift/bin/swift-proxy-server
>> > /usr/local/bin/swift-proxy-server
>> >
>> /usr/local/lib/python2.7/dist-packages/swift-1.9.2-py2.7.egg/EGG-INFO/scripts/swift-proxy-server
>> >
>> > root at arun-Aspire-5742:~# /usr/bin/python
>> /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.conf
>> > Traceback (most recent call last):
>> >   File "/usr/local/bin/swift-proxy-server", line 5, in <module>
>> >     pkg_resources.run_script('swift==1.9.2', 'swift-proxy-server')
>> >   File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 499,
>> in run_script
>> >     self.require(requires)[0].run_script(script_name, ns)
>> >   File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1235,
>> in run_script
>> >     execfile(script_filename, namespace, namespace)
>> >   File
>> "/usr/local/lib/python2.7/dist-packages/swift-1.9.2-py2.7.egg/EGG-INFO/scripts/swift-proxy-server",
>> line 22, in <module>
>> >     run_wsgi(conf_file, 'proxy-server', default_port=8080, **options)
>> >   File
>> "/usr/local/lib/python2.7/dist-packages/swift-1.9.2-py2.7.egg/swift/common/wsgi.py",
>> line 251, in run_wsgi
>> >     sock = get_socket(conf, default_port=kwargs.get('default_port',
>> 8080))
>> >   File
>> "/usr/local/lib/python2.7/dist-packages/swift-1.9.2-py2.7.egg/swift/common/wsgi.py",
>> line 168, in get_socket
>> >     bind_addr[0], bind_addr[1], bind_timeout))
>> > Exception: Could not bind to 0.0.0.0:8080 after trying for 30 seconds
>> >
>> >
>> > ________________________________
>> > From: Kuo Hugo <tonytkdk at gmail.com>
>> > To: pragya jain <prag_2648 at yahoo.co.in>
>> > Cc: "openstack at lists.openstack.org" <openstack at lists.openstack.org>
>> > Sent: Thursday, 29 August 2013 2:19 PM
>> >
>> > Subject: Re: [Openstack] Fw: problem in setting up Tempauth
>> authentication & authorization with Swift
>> >
>> > find out the swift-proxy-server binary in your OS.  (The path in
>> example just an assumption)
>> >
>> > gt; find / -name swift-proxy-server
>> >
>> >
>> >
>> > +Hugo Kuo+
>> > hugo at swiftstack.com
>> > tonytkdk at gmail.com
>> > +886 935004793
>> >
>> >
>> > 2013/8/29 pragya jain <prag_2648 at yahoo.co.in>
>> >
>> > hello sir
>> >
>> > Thanks for the help
>> >
>> > root at arun-Aspire-5742:~# /usr/bin/python /usr/bin/swift-proxy-server
>> /etc/swift/proxy-server.conf
>> > /usr/bin/python: can't open file '/usr/bin/swift-proxy-server': [Errno
>> 2] No such file or directory
>> >
>> > this is the result of the command.
>> >
>> > please help in this regard.
>> >
>> > -----
>> > Pragya Jain
>> >
>> > ________________________________
>> > From: Kuo Hugo <tonytkdk at gmail.com>
>> > To: pragya jain <prag_2648 at yahoo.co.in>
>> > Cc: "openstack at lists.openstack.org" <openstack at lists.openstack.org>
>> > Sent: Thursday, 29 August 2013 1:20 PM
>> >
>> > Subject: Re: [Openstack] Fw: problem in setting up Tempauth
>> authentication & authorization with Swift
>> >
>> > Obviously, There's no proxy server running on your node.
>> >
>> > Please execute it on the node where proxy-server located:
>> > (I assume the binary is in /usr/bin and conf file is in /etc/swift)
>> >
>> > gt; /usr/bin/python /usr/bin/swift-proxy-server
>> /etc/swift/proxy-server.conf
>> >
>> > What's the result ?
>> >
>> > +Hugo Kuo+
>> > hugo at swiftstack.com
>> > tonytkdk at gmail.com
>> > +886 935004793
>> >
>> >
>> > 2013/8/29 pragya jain <prag_2648 at yahoo.co.in>
>> >
>> > hello sir
>> >
>> > Thanks for the suggestion.
>> >
>> > (1) I give the space between pj2648 and .admin and also between .admin
>> and .reseller_admin and tried the connection again, but face the same
>> problem
>> >
>> > root at arun-Aspire-5742:~# vi /etc/swift/proxy-server.conf
>> >
>> > and make following changes:
>> >
>> >
>> > user_admin_admin = admin .admin .reseller_admin
>> > user_test_tester = testing .admin
>> > user_test2_tester2 = testing2 .admin
>> > user_test_tester3 = testing3
>> >
>> > user_prag2648_pragya = pj2648 .admin .reseller_admin
>> >
>> > and then
>> >
>> > root at arun-Aspire-5742:~# sudo swift-init account start
>> > Starting account-server...(/etc/swift/account-server.conf)
>> > root at arun-Aspire-5742:~# sudo swift-init proxy start
>> >
>> > Starting proxy-server...(/etc/swift/proxy-server.conf)
>> > root at arun-Aspire-5742:~# curl -v -H 'X-Auth-User:prag2648:pragya' -H
>> 'X-Auth-Key:pj2648' http://localhost/auth/v1.0/
>> > * About to connect() to localhost port 80 (#0)
>> > *   Trying 127.0.0.1... Connection refused
>> > * couldn't connect to host
>> > * Closing connection #0
>> > curl: (7) couldn't connect to host
>> >
>> > (2) I also tired the connection with user admin:admin
>> > root at arun-Aspire-5742:~# curl -v -H 'X-Auth-User:admin:admin' -H
>> 'X-Auth-Key:admin' http://localhost/auth/v1.0/
>> >
>> > * About to connect() to localhost port 80 (#0)
>> > *   Trying 127.0.0.1... Connection refused
>> > * couldn't connect to host
>> > * Closing connection #0
>> > curl: (7) couldn't connect to host
>> >
>> > (3) I also run the command to verify the port number of proxy
>> > root at arun-Aspire-5742:~# ps aux | grep proxy
>> > nobody    2124  0.0  0.0   5384  1164 ?        S    10:39   0:00
>> /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts
>> --bind-interfaces
>> --pid-file=/var/run/sendsigs.omit.d/network-manager.dnsmasq.pid
>> --listen-address=127.0.0.1 --conf-file=/var/run/nm-dns-dnsmasq.conf
>> --cache-size=0 --proxy-dnssec
>> > root      2724  0.0  0.0   4368   828 pts/0    R+   10:52   0:00 grep
>> --color=auto proxy
>> > root at arun-Aspire-5742:~# netstat -antulp
>> > Active Internet connections (servers and established)
>> > Proto Recv-Q Send-Q Local Address           Foreign Address
>> State       PID/Program name
>> > tcp        0      0 127.0.0.1:11211         0.0.0.0:*
>> LISTEN      931/memcached
>> > tcp        0      0 127.0.0.1:53            0.0.0.0:*
>> LISTEN      2124/dnsmasq
>> > tcp        0      0 127.0.0.1:631           0.0.0.0:*
>> LISTEN      623/cupsd
>> > tcp        0      0 115.184.7.223:51521     74.125.236.132:80<http://74.125.236.132/>      TIME_WAIT   -
>> > tcp        1      0 115.184.7.223:46280     91.189.89.144:80<http://91.189.89.144/>       CLOSE_WAIT  1663/ubuntu-geoip-p
>> > tcp        0      0 115.184.7.223:60563     173.194.38.147:80<http://173.194.38.147/>      TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:43256     124.124.201.179:80<http://124.124.201.179/>     TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:41791     124.124.201.169:80<http://124.124.201.169/>     TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:36669     124.124.252.9:80<http://124.124.252.9/>       TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:51747     173.194.38.184:80<http://173.194.38.184/>      TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:54229     74.125.236.44:443
>> TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:36185     173.194.36.26:80<http://173.194.36.26/>       TIME_WAIT   -
>> > tcp        0      0 115.184.7.223:38854     74.125.236.109:80<http://74.125.236.109/>      TIME_WAIT   -
>> > tcp6       0      0 ::1:631                 :::*
>>  LISTEN      623/cupsd
>> > udp        0      0 0.0.0.0:5353            0.0.0.0:*
>>           619/avahi-daemon: r
>> > udp        0      0 0.0.0.0:53489           0.0.0.0:*
>>           619/avahi-daemon: r
>> > udp        0      0 127.0.0.1:11211         0.0.0.0:*
>>           931/memcached
>> > udp        0      0 127.0.0.1:53            0.0.0.0:*
>>           2124/dnsmasq
>> > udp6       0      0 :::5353                 :::*
>>          619/avahi-daemon: r
>> > udp6       0      0 :::36705                :::*
>>          619/avahi-daemon: r
>> >
>> > Please help to proceed further.
>> >
>> > ---
>> >
>> > Thanks
>> >
>> > Pragya jain
>> >
>> >
>> > ________________________________
>> > From: Kuo Hugo <tonytkdk at gmail.com>
>> > To: pragya jain <prag_2648 at yahoo.co.in>
>> > Cc: Amanda Plimpton <amanda at swiftstack.com>; "
>> openstack at lists.openstack.org" <openstack at lists.openstack.org>
>> > Sent: Wednesday, 28 August 2013 9:59 PM
>> > Subject: Re: [Openstack] Fw: problem in setting up Tempauth
>> authentication & authorization with Swift
>> >
>> > Hi
>> >
>> > 1) user_prag2648_pragya = pj2648.admin.reseller_admin try to have a
>> space between pj2648 and .admin . How about to test with user admin:admin ?
>> > 2) Verify the port number of proxy by
>> >
>> > gt; ps aux | grep proxy
>> > gt; netstat -antulp
>> >
>> >
>> > 3) Check the Proxy for how to setup bind_port
>> https://github.com/openstack/swift/blob/master/etc/proxy-server.conf-sample
>> >
>> >
>> >
>> >
>> >
>> > +Hugo Kuo+
>> > hugo at swiftstack.com
>> > tonytkdk at gmail.com
>> > +886 935004793
>> >
>> >
>> > 2013/8/29 pragya jain <prag_2648 at yahoo.co.in>
>> >
>> > hello sir,
>> >
>> > Please help me in knowing how to use 8080 port
>> >
>> >
>> > ________________________________
>> > From: Amanda Plimpton <amanda at swiftstack.com>
>> > To: pragya jain <prag_2648 at yahoo.co.in>
>> > Cc: "joe at swiftstack.com" <joe at swiftstack.com>; "contact at swiftstack.com"
>> <contact at swiftstack.com>; anita goel <goel.anita at gmail.com>
>> > Sent: Tuesday, 27 August 2013 9:40 AM
>> > Subject: Re: Fw: problem in setting up Tempauth authentication &
>> authorization with Swift
>> >
>> > Hello,
>> >
>> > Did Edward's suggestion of using port 8080 help at all? The error seems
>> to indicate a network setting issue. You may wish to double check the
>> settings and configuration.
>> >
>> > Given your interest in Swift I would also recommend locating a nearby
>> OpenStack group or attending an event such as
>> http://openstackindia.wordpress.com/2013/08/14/openstack-india-day-2013-announced/
>> >
>> >
>> > Thank you,
>> > Amanda
>> >
>> > SwiftStack Inc.
>> > swiftstack.com
>> >
>> >
>> > On Mon, Aug 26, 2013 at 8:55 PM, pragya jain <prag_2648 at yahoo.co.in>
>> wrote:
>> >
>> > hello sir!
>> >
>> > Please help me in setting up Tempauth authentication & authorization
>> with Swift.
>> > same error is continued.
>> >
>> > ----- Forwarded Message -----
>> > From: pragya jain <prag_2648 at yahoo.co.in>
>> > To: "joe at swiftstack.com" <joe at swiftstack.com>; "clay.gerrard at gmail.com"
>> <clay.gerrard at gmail.com>; "contact at swiftstack.com" <
>> contact at swiftstack.com>; "openstack at ask.openstack.org" <
>> openstack at ask.openstack.org>; "openstack at lists.openstack.org" <
>> openstack at lists.openstack.org>
>> > Cc: anita goel <goel.anita at gmail.com>
>> > Sent: Monday, 26 August 2013 12:06 PM
>> > Subject: problem in setting up Tempauth authentication & authorization
>> with Swift
>> >
>> > hello,
>> >
>> > I have to configure proxy server.
>> > For this,
>> > I have to edit /etc/swift/swift.conf and change the
>> swift_hash_path_suffix to something secret and then, start the proxy server
>> process
>> >
>> > for this, I use the following commands:
>> > root at arun-Aspire-5742:~# vi /etc/swift/swift.conf
>> >
>> > make following changes (highlighted) in the file:
>> > swift_hash_path_suffix =pragya
>> > swift_hash_path_prefix =jain
>> >
>> > save and exit.
>> > then, I run the command:
>> > root at arun-Aspire-5742:~# sudo swift-init proxy start
>> > Starting proxy-server...(/etc/swift/proxy-server.conf)
>> >
>> > Now, I have to set up Tempauth authentication & authorization with Swift
>> > for this, I run the following command:
>> > root at arun-Aspire-5742:~# vi /etc/swift/proxy-server.conf
>> >
>> > make following changes (highlighted) in the file:
>> > allow_account_management =true
>> > ...
>> > [filter:tempauth]
>> > use = egg:swift#tempauth
>> > ...
>> > user_admin_admin = admin .admin .reseller_admin
>> > user_test_tester = testing .admin
>> > user_test2_tester2 = testing2 .admin
>> > user_test_tester3 = testing3
>> > user_prag2648_pragya = pj2648.admin.reseller_admin
>> > ...
>> >
>> > save and exit
>> > Then, run following commands:
>> > root at arun-Aspire-5742:~# sudo swift-init account start
>> > Starting account-server...(/etc/swift/account-server.conf)
>> > root at arun-Aspire-5742:~# sudo swift-init proxy restart
>> > Signal proxy-server  pid: 2476  signal: 15
>> > proxy-server (2476) appears to have stopped
>> > Starting proxy-server...(/etc/swift/proxy-server.conf)
>> > root at arun-Aspire-5742:~# curl -v -H 'X-Auth-User:prag2648:pragya' -H
>> 'X-Auth-Key:pj2648' http://localhost/auth/v1.0/
>> > * About to connect() to localhost port 80 (#0)
>> > *   Trying 127.0.0.1... Connection refused
>> > * couldn't connect to host
>> > * Closing connection #0
>> > curl: (7) couldn't connect to host
>> >
>> > But, there is an error in establising a connection.
>> >
>> > if, I run the command to start proxy server, then it shows that proxy
>> server is already started.
>> > root at arun-Aspire-5742:~# sudo swift-init proxy start
>> > proxy-server running (2935 - /etc/swift/proxy-server.conf)
>> > proxy-server already started...
>> >
>> > Please help me in this regard.
>> > ---
>> >
>> > Thanks
>> >
>> > Pragya Jain
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Mailing list:
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>> > Post to     : openstack at lists.openstack.org
>> > Unsubscribe :
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>>
>>
>
> _______________________________________________
> Mailing list:
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
> Post to     : openstack at lists.openstack.org
> Unsubscribe :
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>
>


-- 
Gareth

*Cloud Computing, OpenStack, Fitness, Basketball*
*OpenStack contributor*
*Company: UnitedStack <http://www.ustack.com>*
*My promise: if you find any spelling or grammar mistakes in my email from
Mar 1 2013, notify me *
*and I'll donate $1 or ¥1 to an open organization you specify.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130830/07073acf/attachment.html>


More information about the Openstack mailing list