Monday, 2014-09-15

*** rpedde_ has joined #openstack-swift00:02
*** Alex_Gaynor_ has joined #openstack-swift00:02
*** matt____ has joined #openstack-swift00:02
*** StevenK_ has joined #openstack-swift00:03
*** pandemicsyn2 has joined #openstack-swift00:04
*** mhu1 has joined #openstack-swift00:06
*** jdag_____ has joined #openstack-swift00:07
*** matt____ has quit IRC00:08
*** vu has joined #openstack-swift00:08
*** bgmccollum_ has joined #openstack-swift00:09
*** zacksh_ has joined #openstack-swift00:09
*** charz has joined #openstack-swift00:09
*** jroll|dupe has joined #openstack-swift00:09
*** otherjon_ has joined #openstack-swift00:12
*** EmilienM_ has joined #openstack-swift00:13
*** matt____ has joined #openstack-swift00:13
*** charz_ has quit IRC00:13
*** otherjon has quit IRC00:13
*** jdag____ has quit IRC00:13
*** Alex_Gaynor has quit IRC00:13
*** sileht has quit IRC00:13
*** rpedde has quit IRC00:13
*** jroll has quit IRC00:13
*** pandemicsyn has quit IRC00:13
*** mhu has quit IRC00:13
*** bgmccollum has quit IRC00:13
*** EmilienM has quit IRC00:13
*** StevenK has quit IRC00:13
*** zacksh has quit IRC00:13
*** mattoliverau has quit IRC00:13
*** mhu1 is now known as mhu00:13
*** rpedde_ is now known as rpedde00:13
*** jroll|dupe is now known as jroll00:13
*** EmilienM_ is now known as EmilienM00:13
*** matt____ is now known as mattoliverau00:13
*** otherjon_ is now known as otherjon00:13
*** sileht has joined #openstack-swift00:14
*** Alex_Gaynor_ is now known as Alex_Gaynor00:14
*** jdag_____ is now known as jdag____00:14
*** dmsimard is now known as dmsimard_away00:19
*** bnelson has quit IRC00:32
*** bnelson has joined #openstack-swift00:37
*** HenryG has quit IRC00:37
*** chuck_ has joined #openstack-swift00:39
*** addnull has joined #openstack-swift01:04
*** mitz_ has joined #openstack-swift01:05
*** vu has quit IRC01:19
*** mrsnivvel has joined #openstack-swift01:53
*** haomaiwang has joined #openstack-swift02:10
*** IgnacioCorderi has joined #openstack-swift02:33
*** IgnacioCorderi has quit IRC02:38
hugokuoMorning03:15
mattoliverauMorning hugokuo03:20
hugokuohow are you today ?03:20
*** haomaiwang has quit IRC03:31
*** haomaiwang has joined #openstack-swift03:32
*** haomaiw__ has joined #openstack-swift03:38
*** haomaiwang has quit IRC03:42
mattoliverauhugokuo: I'm good, time to another week :) You? (Sorry for late reply I was at lunch)03:45
*** evanjfraser has joined #openstack-swift04:12
*** addnull has quit IRC04:31
*** bkopilov has quit IRC04:54
*** bkopilov has joined #openstack-swift04:55
*** kopparam has joined #openstack-swift04:56
*** ppai has joined #openstack-swift04:59
*** kopparam has quit IRC04:59
*** kopparam has joined #openstack-swift05:02
*** aix has quit IRC05:02
*** addnull has joined #openstack-swift05:14
*** byeagerz has quit IRC05:17
*** addnull has quit IRC05:18
*** byeager_away has joined #openstack-swift05:19
*** bkopilov has quit IRC05:21
*** addnull has joined #openstack-swift05:23
*** IgnacioCorderi has joined #openstack-swift05:43
*** occupant has quit IRC05:55
*** occupant has joined #openstack-swift05:55
*** k4n0 has joined #openstack-swift05:57
*** bkopilov has joined #openstack-swift06:20
*** bkopilov has quit IRC06:29
*** bkopilov has joined #openstack-swift06:37
openstackgerritChristian Schwede proposed a change to openstack/swift: Limit partition movement when rebalancing  https://review.openstack.org/12142206:46
*** kevinbenton has joined #openstack-swift06:50
*** kopparam has quit IRC07:06
kevinbentonhi, is someone online that can help me understand one of the swift functional tests?07:11
*** haomaiw__ has quit IRC07:13
*** haomaiwang has joined #openstack-swift07:13
*** IgnacioCorderi has quit IRC07:15
*** bnelson has quit IRC07:27
*** bnelson has joined #openstack-swift07:28
*** haomaiw__ has joined #openstack-swift07:29
*** haomaiwang has quit IRC07:32
*** homegrown1 has left #openstack-swift07:38
*** kopparam has joined #openstack-swift07:38
openstackgerritChristian Schwede proposed a change to openstack/swift: Limit partition movement when rebalancing  https://review.openstack.org/12142207:52
*** nshaikh has joined #openstack-swift07:59
*** jdag____ has quit IRC08:04
*** jdag____ has joined #openstack-swift08:04
*** sileht has quit IRC08:05
*** ppai has quit IRC08:05
*** ppai has joined #openstack-swift08:05
*** k4n0 has quit IRC08:05
*** k4n0 has joined #openstack-swift08:05
*** sileht has joined #openstack-swift08:18
*** nshaikh has quit IRC08:47
*** k4n0 has quit IRC08:48
*** ChanServ sets mode: +v chmouel_08:58
*** chmouel_ is now known as chmouel08:59
*** mkollaro has joined #openstack-swift09:02
*** k4n0 has joined #openstack-swift09:07
*** cschwede has joined #openstack-swift09:10
*** sileht has quit IRC09:19
*** aix has joined #openstack-swift09:19
*** kopparam has quit IRC09:20
*** kopparam has joined #openstack-swift09:21
*** kopparam has quit IRC09:26
*** kopparam has joined #openstack-swift09:26
openstackgerritAlistair Coles proposed a change to openstack/swift: Update documentation for using keystone auth  https://review.openstack.org/12148109:27
*** kopparam has quit IRC09:31
*** sileht has joined #openstack-swift09:33
*** kopparam has joined #openstack-swift09:39
*** mkollaro has quit IRC09:59
*** kopparam has quit IRC10:06
*** Trixboxer has joined #openstack-swift10:06
TrixboxerHi, how can we check the running swift version on Ubuntu ?10:08
*** kopparam has joined #openstack-swift10:12
cschwedeTrixboxer: recent Swift versions expose the release when requesting /info. for example: curl http://swift_proxy_ip/info returns "version": "2.1.0…..". if you used the regular ubuntu packages, you could also check with dpkg -l "swift-*" | grep "^ii"10:14
Trixboxeryeah I found the dpkg -l and the version is quite old 1.4.8-0ubuntu210:15
Trixboxerpart of swift-core I guess10:15
Trixboxerthanks cschwede :)10:16
Trixboxerare you the same guy after swiftbrowser ?10:16
cschwedeTrixboxer: yes :)10:17
*** kopparam_ has joined #openstack-swift10:17
cschwedeTrixboxer: if you have questions on swiftbrowser, let me know10:18
*** koppara__ has joined #openstack-swift10:18
*** kopparam has quit IRC10:21
*** kopparam_ has quit IRC10:22
smart_developercschwede : Running the curl command you suggested (curl http://swift_proxy_ip/info) with the Swift proxy's ip seems to return "curl: (7) couldn't connect to host"10:27
*** cschwede has quit IRC10:27
smart_developerDoes anyone know how to obtain /info ?10:27
smart_developerI'm using Swift version 1.13.10:27
openstackgerritAlistair Coles proposed a change to openstack/swift: Fix internal link to keystoneauth in documentation  https://review.openstack.org/12142310:29
openstackgerritAlistair Coles proposed a change to openstack/swift: Update documentation for using keystone auth  https://review.openstack.org/12148110:29
acolescschwede: ^^ https://review.openstack.org/121423 depends on your fix to the link in logs.rst but I needed to rebase it10:31
*** Krast has joined #openstack-swift10:34
*** Krast has quit IRC10:35
*** HenryG has joined #openstack-swift10:37
*** k4n0 has quit IRC10:42
*** mrsnivvel has quit IRC10:47
acolessmart_developer: did you include port number e.g. curl http://swift_proxy_ip:8080/info10:50
*** tdasilva has joined #openstack-swift10:57
*** k4n0 has joined #openstack-swift11:03
smart_developerYes... still not working. Does it matter whether swift_proxy_ip is a public IP address, private IP address, or localhost?11:04
smart_developeracoles : That curl command still seems to return "curl: (7) couldn't connect to host" ........11:06
*** tdasilva has quit IRC11:06
Trixboxercschwede: good :)  It worked nice, initially I faced some issues myproj/urls.py  but then its fine.. I'm testing it against 1.4.8-0ubuntu2 & will let you know if any issues11:11
*** cschwede has joined #openstack-swift11:13
acolessmart_developer: can you successfuly make any other curl commands to your swift proxy? Is it just /info failing?11:14
cschwedesmart_developer: maybe you need to set the port as well? for example curl http://swift_proxy_ip/info ?11:14
*** dmsimard_away is now known as dmsimard11:16
*** koppara__ has quit IRC11:16
*** kopparam has joined #openstack-swift11:16
smart_developerwhat's a default curl command that I could try?11:21
smart_developerHmm, when I tried using the swift proxy's private IP in the curl command for /info, now it's responding "Authentication required".11:24
smart_developerI have Keystone setup ... so maybe it's referring to the Keystone authentication?11:25
acolessmart_developer: keystone shouldn't make a difference if you curl swift_proxy_ip (NOT keystone ip)11:31
acolesdo you have info enabled in /etc/swift/proxy-server.conf (it is enabled by default)?11:32
smart_developerThat's right I'm curl-ing the swift_proxy_private_ip_address.11:32
cschwedeacoles: thanks for rebasing your patch on mine - saw your patch too late, otherwise i would have abandoned mine11:32
smart_developerHow do you enable /info ?11:33
smart_developerwhen inside proxy-server.conf11:33
acolesIt should be enabled by default, see https://github.com/openstack/swift/blob/master/etc/proxy-server.conf-sample#L1011:33
smart_developerIt's not there inside my proxy-server.conf11:33
smart_developerThe line that you pointed out11:34
smart_developerexpose_info = true11:34
acolessmart_developer: ok, well as long as you don't have expose_info = false then it should be working11:35
* acoles away for a bit11:35
smart_developerThanks. So I added in "expose_info = true" into my proxy-server.conf file, restarted all the services (swift-init all restart), and the curl command "curl http://<my-swift-proxy's-actual-private-ip-here>:8080/info" is still returning "Authentication required" .....11:37
smart_developerNot sure why this is happening.11:38
*** nshaikh has joined #openstack-swift11:43
acolessmart_developer: i tried to recreate what you are seeing. I removed this line from the [authtoken] section of my proxy-server.conf:11:58
acolesdelay_auth_decision = true11:58
acolesand I then get Authentication Required response11:58
acolessmart_developer: so maybe check you have delay_auth_decision = true11:58
cschwedethe other possibility (not checked yet) might be to use "swift capabilities", and use the correct keystone credentials. just ruined my devstack, can't check right now :/11:59
acolessmart_developer: see note in doc for unvalidated requests here http://docs.openstack.org/developer/swift/overview_auth.html#configuring-swift-to-use-keystone12:00
* acoles makes not to improve that doc12:00
acolesnote!12:01
*** addnull has quit IRC12:04
smart_developerSo, it does seem related to Keystone authentication, then, right?12:06
smart_developercschwede : How do you get to "swift capabilities" (from your suggestion)? Thanks.12:07
cschwedesmart_developer: using the "swift" command itself (from python-swiftclient)12:07
smart_developerOk, thank you!12:11
*** marcusvrn has joined #openstack-swift12:11
smart_developerBy the way acoles, does it matter where within the [authtoken] section of proxy-server.conf one puts the line "delay_auth_decision = true" ?12:12
smart_developer(for instance, at the end of the [authtoken] section? somewhere in the middle? after a particular line / another setting value ?12:12
acolessmart_developer: no (it should not). just put it on a line of its own. example here https://github.com/openstack/swift/blob/master/etc/proxy-server.conf-sample#L27712:14
acolessmart_developer: btw i am going to propose a change to the doc to mention this here http://docs.openstack.org/developer/swift/overview_auth.html#configuring-swift-to-use-keystone12:15
acolessmart_developer: also, the example shows "delay_auth_decision = 1", I have "delay_auth_decision = true", both work12:17
openstackgerritAlistair Coles proposed a change to openstack/swift: Update documentation for using keystone auth  https://review.openstack.org/12148112:19
*** kopparam has quit IRC12:19
*** geaaru has joined #openstack-swift12:23
cschwedei just checked, "swift capabilities" works for me on a fresh devstack (swift+keystone)12:34
*** kopparam has joined #openstack-swift12:35
*** kopparam has quit IRC12:39
*** vr2 has joined #openstack-swift12:40
*** kopparam has joined #openstack-swift12:50
*** kopparam has quit IRC12:55
smart_developerAll right, thank you acoles and cschwede.13:02
cschwedesmart_developer: you're welcome!13:12
*** nshaikh has left #openstack-swift13:12
*** k4n0 has quit IRC13:13
smart_developerHere's the result of /info13:14
smart_developerhttps://gist.github.com/anonymous/d9ff688c4e65e2e70a6e13:14
smart_developerAny explanation as to why the JSON portions for account_quotas, ratelimit, and container_quotas are empty?13:14
smart_developerwhile the other portions seem descriptive.13:16
openstackgerritGerry Drudy proposed a change to openstack/swift: direct_client not passing args between some functions  https://review.openstack.org/12153513:19
acolessmart_developer: according to the changelog the ratelimit parameters only got added to the info json in swift 2.0.013:23
openstackgerritGerry Drudy proposed a change to openstack/swift: direct_client not passing args between some functions  https://review.openstack.org/12153513:23
acolesthe *_quotas are correct - there is no more info reported for those other than that they are configured13:24
acolessmart_developer: ^^13:24
*** mahatic has joined #openstack-swift13:28
smart_developerhmmm13:33
smart_developerbut shouldn't they be reporting what the particular quota is...?13:33
smart_developer(e.g., the quota value).13:34
smart_developerin whatever units that may be involved.13:34
acolessmart_developer: i'm not too familiar with those bits of the code, maybe pose your question here again later when the US is awake13:35
smart_developerall right, thanks!13:37
cschwedesmart_developer: no, the quota is unique for each account and container, thus it is not included in /info13:38
*** tdasilva has joined #openstack-swift13:38
cschwedesmart_developer: if you want to know the quota of an account or container, simply do a HEAD request against the account/container - the metadata will contain the quota (if set)13:38
*** chuck_ has quit IRC13:41
*** r-daneel__ has joined #openstack-swift13:48
*** kopparam has joined #openstack-swift13:51
*** kopparam has quit IRC13:56
smart_developerDoes a user need to thus initially set the quota for the account/container, or is there usually a default initial value that it's set to?13:56
cschwedesmart_developer: there is none set by default, thus it needs to be set by the operator/user13:59
cschwedesmart_developer: account_quotas: http://docs.openstack.org/developer/swift/middleware.html#module-swift.common.middleware.account_quotas13:59
cschwedesmart_developer: container_quotas: http://docs.openstack.org/developer/swift/middleware.html#module-swift.common.middleware.container_quotas13:59
*** jroll has quit IRC14:00
*** jroll has joined #openstack-swift14:00
smart_developerYou mean, there's none set by default, even when the middleware has been added into proxy-server.conf / other relevant .conf files ?14:02
smart_developer(none, as in, no default initial value for any account/container quotas).14:03
*** wlkely is now known as wkelly14:09
*** kopparam has joined #openstack-swift14:10
*** vr2 has quit IRC14:11
*** vr1 has joined #openstack-swift14:12
smart_developersorry, just confirming.14:12
*** judd7 has joined #openstack-swift14:13
*** vr2 has joined #openstack-swift14:15
*** vr1 has quit IRC14:16
cschwedesmart_developer: exactly, there is no quota set by default, even with the middleware enabled14:17
TrixboxerHi, is it possible to not list all objects from container on GET and traverse inside folders as GET ?14:20
glangeTrixboxer: http://docs.openstack.org/api/openstack-object-storage/1.0/content/GET_showContainerDetails__v1__account___container__storage_container_services.html14:23
glangecheck out prefix and marker, they may help14:23
tdasilvaTrixboxer, glange: pseudo-hierarchical folders might also help: http://docs.openstack.org/api/openstack-object-storage/1.0/content/folders-directories.html14:24
*** vr1 has joined #openstack-swift14:25
*** vr2 has quit IRC14:26
glangetdasilva: that is a good link, I hadn't seen that before14:27
acolestdasilva: hi. about the data migration patch - you had suggested moving the upload method to the driver class...14:27
acolestdasilva: i thought of a use case that might also motivate a change to that interface, which is migrating between swift cluster in same auth domain14:28
acoleswhen no auth credentials need to be stored in container metadata because the same token can be used to authorise the migration GET.14:28
tdasilvaacoles: interesting. do you think that would need yet another driver? different from the current one?14:30
acolestdasilva: i haven't got too far into detail. it could be same as current but with credentials becoming optional (if container metadata has no credentials then re-use auth-token)14:31
*** marcusvrn has quit IRC14:31
acolestdasilva: but it ould require passing incoming request env to the driver for it to extract the auth-token, whcih IIRC the interface does not currently do.14:31
acolestdasilva: anyway, we should consider this before the patch lands before anyone writes other drivers to the current interface14:33
tdasilvaacoles: that's right. basically we would pass the whole responsiblity to the driver to get the data and upload to a new place14:34
acolestdasilva: yup14:34
tdasilvaacoles: agreed14:34
*** zaitcev has joined #openstack-swift14:34
*** ChanServ sets mode: +v zaitcev14:34
acolestdasilva: ok, will mull on it some more. thx14:35
tdasilvaacoles: I was planning on taking a look at that review today. I'm hoping I can maybe provide some help with an alternative option for the interface...14:35
smart_developercschwede : Thank you!14:37
acolestdasilva: great, if you have cycles then go for it. maybe push a dependent patch that could be squashed in.14:37
tdasilvaacoles: sounds good :-)14:39
*** kopparam has quit IRC14:44
*** kopparam has joined #openstack-swift14:44
openstackgerritA change was merged to openstack/swift: Stop using intersphinx  https://review.openstack.org/12131814:45
*** kopparam has quit IRC14:48
*** ppai has quit IRC14:54
acolestdasilva: one other thought, if you are looking at the driver interface ... i wonder if each driver should expose a static method to validate the migration headers during container PUT/POST14:59
acolese.g. fsystem driver could check that the source path has no '..' parts, which at the moment doesn't happen until an object GET15:00
tdasilvaacoles: where is that validation happening today?15:00
tdasilvaI see15:01
acolestdasilva: actually, that might be the only example ;) i was just looking at it15:01
tdasilvaacoles: and that happens during init, right?15:02
acolestdasilva: yes, but init is called during GETorHEADmiss i.e. during object request15:04
acolestdasilva: so you dont get a 400 for having a bad source path until you attempt to GET object15:04
acolestdasilva: and seems it might be better to get the 400 when PUT/POSTing the container ??15:05
tdasilvaacoles: catching up... :-)  So, the modules are loaded in filter_factory, but each driver object is instantiated in remote_driver_resolver, which is part of the object GET code flow15:07
*** mahatic has quit IRC15:08
tdasilvaheaders are set as part of the container PUT, and some validation is done there15:08
tdasilvabasically checking if everything needed is provided, right?15:08
*** kopparam has joined #openstack-swift15:09
tdasilvaso if a static method is provided for that driver, you could actually validate params during the container PUT, maybe even check if the token gives access and what not15:10
*** kopparam has quit IRC15:14
acolestdasilva: yes, thats where i was heading, except for checking access. Stuff that definitely will never work can be checked and rejected on container PUT e.g. a source containing '..'). Stuff that may work at the time of an object GET shouldn't be checked until the object GET e.g. swift credentials, filesystem path existence.15:14
acolestdasilva: So it would mean resolving the correct driver class during container PUT and calling a static 'check_headers' method passing the X-Container-Migration-* headers (or all headers)15:16
*** mahatic has joined #openstack-swift15:17
acolestdasilva: to allow for future drivers that might be able to perform other validations on the headers15:17
tdasilvaacoles: exactly....seems very reasonable..15:18
acolestdasilva: i guess right now i have just the one example (the fsystem source having '..'), but to my mind that should be treated in the same way as specifying no source15:19
tdasilvawhat about '.' ?15:21
portantecenturylink, huh?15:21
portantehttp://www.crn.com/news/cloud/300073991/centurylink-reportedly-eyeing-a-rackspace-acquisition.htm15:21
acolestdasilva: the source gets made relative to the driver_fsystem_parent_path but now you mention it i don't think that is prevented form being '.' :/15:25
smart_developerSo I noticed that Keystone does not have a policy.json for Swift15:25
smart_developerThat Swift is different from other services in that it doesn't have a policy.json in Keystone, unlike the others.15:26
smart_developerThen how do I establish the right permissions for the two Keystone roles that I created: swift_operator, and swift_user ?15:26
acolessmart_developer: swift keystoneauth middleware does use a policy.json file15:26
smart_developerHow do I access/modify the Swift ACL API?15:28
acolesagh s/does/does not/ !!15:28
acolessmart_developer: see doc http://docs.openstack.org/developer/swift/overview_auth.html#configuring-swift-to-use-keystone15:28
smart_developerOkay, I see that there's a way to configure a Keystone role to be a Swift operator_role, but how do I also add/configure just a regular user/member role?15:30
acolestdasilva: so if there were a check_headers() static method for each driver, then that can also take care of checking that all required headers are present. which removes the need to have the required header keys specified in config file, i think.15:30
acolestdasilva: which would be nicer imho15:31
tdasilvayes...concerning that...i was trying to figure out why token_url, user and key are stored in the config file15:33
tdasilva?15:33
tdasilvaam i reading that correctly?15:33
acolessmart_developer: a user with operator_role on a project can add/delete/update containers and object in that project's swift account.15:34
acolessmart_developer: what do you mean by a 'regular user/member role'?15:35
portantehttp://www.crn.com/news/cloud/300073991/centurylink-reportedly-eyeing-a-rackspace-acquisition.htm15:35
smart_developerby regular user role, I was referring to someone who can use the Swift service, but isn't an admin like the operator_role.15:37
smart_developerBasically someone who has fewer privileges than an operator/admin.15:39
acolessmart_developer: ok, but what do you mean by 'use'? read through that doc page and note the reseller_admin_role which may equate to what you are calling 'admin'15:39
smart_developerwait, are you saying that the operator_role is basically just a 'regular' user, not necessarily an admin?15:39
acolessmart_developer: i think i am :)15:40
smart_developerAh, ok.15:41
smart_developerAnd you're 100% sure of this ?15:41
smart_developercertain*15:41
tdasilvaacoles: nevermind...now I understand your comment about the required headers keys and yes I like it. I was never too much of a fan of having those keys there in the config file15:42
cschwedesmart_developer: have a look here: https://github.com/openstack/swift/blob/master/etc/proxy-server.conf-sample#L283-L28715:42
smart_developerOk so in the description for "operator_role" in that link, it refers to the fact that the operator_role can "..... give ACL to others".15:45
smart_developerThis sounds like something admin would do, however.15:45
*** rmcall has joined #openstack-swift15:46
smart_developerShouldn't a regular user not have the privilege to manage something like ACL(s)?15:46
cschwedesmart_developer: think of it more like "admin of that account"15:47
acolessmart_developer: what cschwede said ^^15:47
acolessmart_developer: the user with operator_role can create container in account, and can grant access to that container to other users (who may not have operator_role for that account)15:48
acolesusing an ACL15:48
cschwedesmart_developer: so, there are basically three levels of accounts with different permissions: ResellerAdmins, operator_role and a simple user15:48
smart_developerWhere in the proxy-server.conf (or any other relevant conf file) would you specify who is a 'simple' user?15:50
*** gyee has joined #openstack-swift15:50
smart_developerIt seems clear for operator_role and ResellerAdmin, but 'simple user' doesn't seem to be in the proxy-server.conf-sample15:50
*** cschwede has quit IRC15:53
smart_developerand what would a 'simple user', entail?15:53
*** jergerber has joined #openstack-swift15:55
*** jdag____ is now known as jdaggett15:55
TrixboxerThanks glange & tdasilva, path variable helped from it16:02
tdasilvaTrixboxer: welcome :-)16:03
*** tongli has joined #openstack-swift16:04
*** cschwede has joined #openstack-swift16:08
*** mwstorer has joined #openstack-swift16:11
*** cschwede has quit IRC16:13
*** kyles_ne has joined #openstack-swift16:14
*** ledeveloper has joined #openstack-swift16:18
*** judd7 has quit IRC16:23
*** judd7 has joined #openstack-swift16:24
ledeveloperhello, anyone here whose brain can be picked about swift's eventual-consitency guarantees (or lack thereof) ?16:26
acolessmart_developer: there are only two types of roles or swift: the operator_roles which allow a user to manage an account and the reseller_admin role which allow a user to manage all account16:27
acolessmart_developer: if you want to have a user with lesser privileges that managing an account e.g. access to just one container then you use ACLs16:27
acoles(container ACLs)16:28
smart_developeracoles Thank you.16:32
acolessmart_developer: welcome. i don't know other openstack projects well but I suspect the role descriptions are different?16:33
*** zacksh_ is now known as zacksh16:33
*** tab__ has joined #openstack-swift16:37
*** vr1 has quit IRC16:46
openstackgerritA change was merged to openstack/swift: Fix internal link to keystoneauth in documentation  https://review.openstack.org/12142317:11
notmynamegood morning!17:14
tdasilvaledeveloper: do you have any specific questions? feel free to ask away, even if nobody can answer now, other might join later and see your question and respond...17:14
tdasilvanotmyname: good monday :-)17:14
*** cdnchris has joined #openstack-swift17:17
*** cdnchris has left #openstack-swift17:21
ledeveloperok so lets try the channel then17:23
ledeveloperI have a scenario where a service is required to store multiple objects to a swift storage account concurrently, the container name17:24
ledeveloperderives from the object name (say the first N letters of the object name) with the number of all possible container names being too big for17:24
ledeveloperit to make sense to create them all in advance, so the plan is to try and store the object expecting it's container to already exist and in17:24
ledevelopercase of a 404 error to explicitly PUT the container and then retry PUTting the object (the objects/containers ratio is large enough for this to17:24
ledeveloperbe effecient).17:24
ledeveloperThe question is - given the eventually-consistent nature of swift, is there a clean way to do this ? that is, something more deterministic than17:24
ledeveloperjust retry the "create-container, put-object" sequence untill both succeed ?17:24
notmynameledeveloper: your proposed plan sounds reasonable and a good way to use swift17:25
ledeveloperthe problem is that when I do that I get all sorts of 4xx errors (including ones with python stack traces in them) and while I have unit tests that verify that eventually everything is written correctly it seems like a pain to debug/troubleshoot it later in prod17:26
notmynameledeveloper: can you pastebin one of the stack traces? you shouldn't ever get that from swift.17:27
ledeveloperI am using soft layers service if that makes any difference so I'm limited to one account - otherwise i'd auto-create at the account level rather than the container17:27
ledeveloperwill try to provide a readable pastebin, it is currently heavily escaped by our logging infra17:28
notmynameshouldn't make any difference17:28
openstackgerritChristian Schwede proposed a change to openstack/swift: Allow filtering by region in swift-recon  https://review.openstack.org/12163417:31
*** geaaru has quit IRC17:40
openstackgerritMahati proposed a change to openstack/swift: Added instructions to create a label or UUID to the XFS volume and mount using it.  https://review.openstack.org/11919317:49
*** IgnacioCorderi has joined #openstack-swift17:53
*** aix has quit IRC17:54
*** cdnchris has joined #openstack-swift18:05
*** geaaru has joined #openstack-swift18:06
*** nshaikh has joined #openstack-swift18:11
*** cdnchris has quit IRC18:15
*** mitz_ has quit IRC18:16
notmynameledeveloper: got your paste. looks like you're getting a 400 in response to a container PUT18:18
ledeveloperyeah, couldnt make sense of the reason/body though18:19
ledeveloperat other times i get an "unsupported method" on container put requests, trying to find a a repro log for this18:20
*** cdnchris has joined #openstack-swift18:21
ledevelopera 405 Method Not Allowed that is18:22
*** gyee has quit IRC18:22
notmynameledeveloper: this is interesting18:26
notmynameledeveloper: what's all the escape sequences in that response?18:27
ledeveloperthats what im tryin to find out as we speak, its either being done by json logging code or arrvies that way from the server18:27
notmynameledeveloper: looking at the swift source code, I don't see the string "bad request syntax" anywhere. let my try to repro something18:28
*** openstackgerrit has quit IRC18:32
notmynameledeveloper: interestingly on the 400 response you don't have an x-trans-id header (see the 405 response for comparison). you should have one of those with every response that comes from swift18:32
*** openstackgerrit has joined #openstack-swift18:33
ledevelopertrue, might indicate that there is some middleware/proxy involved on the softlayer side18:34
notmynameyeah maybe18:34
ledeveloperon the other hand there is a Server header with  "BaseHTTP/0.3",18:34
ledeveloper          "Python/2.7.3" values18:34
notmynameyeah, and I don't remember swift setting a server header (but that's a _really_ hard word to grep for in the source ;-)18:36
ledeveloperthe escapes in the reason are definitely coming from the server18:39
*** IgnacioCorderi has quit IRC18:41
notmynameledeveloper: are you doing anything with ACLs? anything that would mean you have more than one user identity trying to do stuff?18:45
* notmyname doesn't know how softlayers auth works18:45
notmynamebut even with a non-privileged user, I get a 403 on a container PUT, not 40518:45
ledevelopernot really, i do a single auth call on service startup and then use the provided  X-Auth-Token18:46
*** cdnchris has left #openstack-swift18:46
notmynameok18:46
notmynameledeveloper: is this something that you can repro, of does it only happen on some small percentage of requests?18:47
ledeveloperit happens fairly consistently in a test that runs ~50 put requests asynchrnously18:48
* notmyname wishes briancline were in here18:49
ledeveloperwill try decoding the escapes and see if it leads me anywhere18:53
ledeveloperanyway thanks for now, will update if I discover anything interesting18:54
notmynameok. I also asked in #softlayer. sometimes there's some people that can help in there18:54
notmynamebut no response yet18:55
*** judd7 has quit IRC18:56
ledeveloperI had a ticket opened with them, they said they cant help without a repro even with X-Trans-Id so I'll see how I can provide them as a stand-alone repro code18:57
ledeveloperthe thing is that after enough (several) retries all the operations eventually succeed, which led me to believe it might be something inherent in swifts design18:58
notmynameledeveloper: anything that may be rarely exposed in swift due to eventual consistency wouldn't be exposed as a 400 or 405 response. so I think there's something else going on here18:59
ledeveloperjust from speculation, can a malfunctioning node that is being kept in the cluster cause something like that ?19:00
notmynamedepends on how you define "malfunctioning". maybe it means that one server just returns random.choice([HTTPBadRequest(), HTTPMethodNotAllowed()]) ;-)19:01
ledeveloperright :)19:02
ahalerandomly malfunctioning stuff tends to produce 503 or slowness, depending how aggressive the clusters been set up19:02
notmynamepoint is, "malfunctioning" is a huge space. sure something could be there. but reasonably I wouldn't think that it would cause a 400 or 405 in response to a container PUT19:02
notmynameright. what ahale said. he knows :-)19:03
*** kyles_ne has quit IRC19:04
*** kyles_ne has joined #openstack-swift19:04
*** kyles_ne has quit IRC19:09
ledeveloperaccording to https://dal05.objectstorage.softlayer.net/info the version 1.12.0, is it current/stable ?19:10
notmynamealways stable ;-)19:21
notmynamebut not quite the newest release. that's a few versions old19:22
openstackgerritMahati proposed a change to openstack/swift: Added instructions to create a label or UUID to the XFS volume and mount using it.  https://review.openstack.org/11919319:23
*** IgnacioCorderi has joined #openstack-swift19:24
openstackgerritMahati proposed a change to openstack/swift: Added instructions to create a label or UUID to the XFS volume and mount using it.  https://review.openstack.org/11919319:25
*** marcusvrn has joined #openstack-swift19:25
*** gyee has joined #openstack-swift19:40
*** Trixboxer has quit IRC19:46
*** kyles_ne has joined #openstack-swift19:50
*** kyles_ne has quit IRC19:59
*** kyles_ne has joined #openstack-swift19:59
portantecurious, has anybody played with vaigrant on Fedora 20? (see https://ttboj.wordpress.com/2014/05/13/vagrant-on-fedora-with-libvirt-reprise/)20:02
ekarlsonotmyname: what does 413 mean in swift contex ?20:10
notmynameekarlso: the 413 response code?20:11
ekarlsoya20:11
ekarlsoglance img upload is failing w 41320:11
ekarlsotowards swift20:11
notmynameekarlso: too big20:11
ekarlsonotmyname: weird, object is only < 500 mb20:12
notmynameekarlso: are you sending a content type or using chunked transfer encoding?20:12
ekarlsonotmyname: unsure what it does20:12
ekarlsoglance image-upload :p20:12
ekarlsobut running swift behind nginx, it used to work before that :|20:13
ekarlsobecause of ssl20:13
notmynameekarlso: do you know if it's splitting the image and using object manifests?20:15
ekarlsonotmyname: no clue !20:15
notmynameekarlso: ok. there aren't a lot of places in swift that return 413. most have to do with sending too many bytes in the body, but there are a couple of other places like when you use static manifests and have too many segments listed in it.20:16
ekarlsonotmyname: can it have something to do with running swift behind a nginx reverse proxy ?20:17
notmynamedont' know. I don't think anyone should do that anyway :-)20:17
ekarlsonotmyname: what to use for ssl termination then ?20:18
notmynameekarlso: oh! can you see the headers on the 413 response? do they include the x-trans-id header?20:18
ekarlsocan't see nto:|20:18
ekarlsonotmyname:20:18
notmynameah, that's a good sign then. that's an nginx thing. swift always returns the x-trans-id header20:19
notmynameso nginx is probably configured with a max body size (isn't it default to something like 5MB?). that's probably the issue20:19
ekarlsonotmyname: yap :D20:19
ekarlsosaw that now : p20:19
notmynameI normally recommend haproxy for ssl termination. pound mostly works too (but you lose 100-continue support). stud or stunnel might work too20:19
ekarlsonotmyname: which is best ?20:20
notmynameekarlso: note that nginx spools the request body locally, so if it's in front of swift, then it will have to spool the whole image. that can seriously cause issues with scaling. eg imaging 500 concurrent uploads of 5GB each20:21
notmynameekarlso: I know that HAProxy is currently being used at very large scale in front of Swift. that's my recommendation20:22
ekarlsonotmyname: coolio20:22
*** tongli has quit IRC20:26
*** nshaikh has left #openstack-swift20:28
smart_developerHow do I make it so that logrotate only checks a certain file on an hourly basis, while it continues to check the rest of the system files on a daily basis?20:51
notmynamehttp://d.not.mn/swift_contribs_over_time.png20:52
tdasilvanotmyname: very cool...pretty amazing to see the growth20:56
notmynameI'm happy with the trend and that it's consistent20:57
notmynamenext up would be to map active contributors20:57
notmynamevs total contibutors20:57
*** geaaru has quit IRC20:57
tdasilvahopefully that's growing too :-)20:58
*** fifieldt_ has joined #openstack-swift20:59
*** fifieldt has quit IRC21:03
*** IgnacioCorderi has quit IRC21:09
smart_developerDoes anyone know which user should own the logrotate configuration file for Swift, situated in /etc/logrotate.d/21:35
smart_developer?21:35
smart_developerIs it root? swift?21:35
smart_developer(Not only own, but also the group as well).21:35
torgomaticcertainly not swift; the swift daemons don't need to read or write stuff in logrotate.d21:36
smart_developer(e.g., root:root, swift:swift, root:swift, swift:root, etc, etc whichever user(s) they may be).21:36
torgomaticprobably whatever user:group owns all the other logrotate stuff21:36
torgomaticroot:root sounds good to me, but check your local system first21:36
smart_developerroot:root seems to be the case.21:38
smart_developerAlso, what about the suggestion for the rsyslog configuration file for Swift, situated in /etc/rsyslog.d/21:39
smart_developer?21:39
smart_developeralso for logging purposes.21:39
smart_developer(namely, to direct the ouput of any programs related to Swift, to the appropriate log path/file).21:39
torgomaticset up syslog how you like. it's flexible enough for most situations; that's why Swift prefers to use syslog in place of some homegrown wacky thing21:44
mattoliverauMorning22:13
*** tab__ has quit IRC22:15
notmynamehttp://d.not.mn/swift_devs_over_time.png22:20
notmynametdasilva: ^22:20
tdasilvahumm....interesting...not sure it's what i expected22:22
tdasilvanotmyname: actually...what's the definition of active contributor?22:23
notmyname`git shortlog -nes --no-merges --before='@{6 months ago}' --since='@{12 months ago}' | wc -l` is the exact definition :-)22:23
tdasilvahaha22:23
notmynameprobably could be better labeled as "total contributors" vs "contributors"22:24
notmynameor vs active contributors. whatever22:24
torgomatic50+ active contributors is still quite a bit, though22:25
notmynameindeed22:25
*** mwstorer has quit IRC22:26
notmynameit's actually a lot higher than I first expected22:27
notmynameI normally look at that number with every release, and we have about 20-30 people in each release. but releases are a lot more often than every six months22:28
tdasilvahumm...running just the first part of the command i don't see peluse_away or mattoliverau name's there22:28
notmynamewhich first part?22:28
tdasilvaor mine :\22:28
tdasilvagit shortlog -nes --no-merges --before='@{6 months ago}' --since='@{12 months ago}'22:29
*** ryao is now known as ZFS22:30
notmynametdasilva: your first patch on master in swift is dated "Fri Jul 11 2014 08:13:52 GMT-0700 (PDT)"22:30
*** rmcall has quit IRC22:30
notmynametherefore it's out of that range22:31
tdasilvaok22:31
*** rmcall has joined #openstack-swift22:32
claygtdasilva: notmyname is real exclusionary like that - all using "dates" to define "periods of time"22:32
claygacoles: i was thinking that we do reloading files a bunch in swift already so I was playing with this on the train -> https://gist.github.com/clayg/0db807e42d9b1289118e#file-example-py22:33
tdasilvahaha22:33
mattoliverauwhat.. daes to signafy time.. that's crazy talk :P22:33
claygacoles: now I just have to figure out how to do a "deep_update" on a bag of dicts22:33
mattoliverau*dates22:34
mattoliverau6 months ago I was only a few months into my new role in my current rackspace development team, and was working on an infra/nova CI/CD testing database migrations. It wasn't until the last summit that I stumbled into a swift design session and realised how awesome swift was and started reviewing :)22:40
mattoliverauAnyway, coffee run time22:40
*** kyles_ne has quit IRC22:44
*** kyles_ne has joined #openstack-swift22:48
*** rmcall has quit IRC22:50
*** IgnacioCorderi has joined #openstack-swift22:56
*** tdasilva has quit IRC22:57
*** dmsimard is now known as dmsimard_away23:00
*** rmcall has joined #openstack-swift23:04
*** mahatic has quit IRC23:16
*** jergerber has quit IRC23:16
*** ZFS is now known as ryao23:18
*** briancline has joined #openstack-swift23:35
brianclinerequest to Get Weird for a second if anyone's around23:42
brianclinewhat condition(s) could cause all 3 copies of a container db to have differing, days-old md5sums, with .pending and .lock files still hanging around?23:42
notmynamebriancline: IO contention on the container drives from lots of concurrent object writes in that container?23:43
notmynamebriancline: maybe replication is just having issues walking the drives?23:44
notmynamemaybe the container DBs are big and the whole-file sqlite locks are causing issues for updates and replication23:45
notmynameor maybe just replication died sometime23:45
*** rmcall_ has joined #openstack-swift23:46
torgomaticalso maybe objects got written in differing orders, resulting in the same logical content but not the same bytes in the .db files23:48
notmynamebriancline: oh, earlier today ledeveloper was getting some errors from softlayer. some 400s and 405s on container PUTs23:48
notmynamebriancline: torgomatic: but out of order doesn't explain the .pending and .lock files hanging around. could be separate issues, though23:49
torgomatic.pendings don't get consumed until they're big enough, and .lock I think hang around after first use (no? maybe.)23:50
*** rmcall has quit IRC23:52
*** r-daneel__ has quit IRC23:52
*** bnelson has quit IRC23:52
*** rmcall_ is now known as rmcall23:52
*** bnelson has joined #openstack-swift23:52
notmynametorgomatic: the .pending gets consumed, but the file isn't unlinked. the contents goes away fairly quickly23:53
torgomaticnotmyname: right, but only on certain requests, and only once it's over a certain size... like a PUT while the .pending is small will just add on23:53
notmynamePUT/POST flushes it. GET doesn't (at least when .pending just has one thing in it)23:55
notmynamealso, container-replicator once flushes it23:55

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!