{"push_id":1345480169,"size":1,"distinct_size":1,"ref":"refs/heads/elb_enum_performance","head":"a13a7561f64f1c4c2520c7a84d5947c7c34953fd","before":"7a30e012dd8b876ee3185091f50e35e178079023","commits":[{"sha":"a13a7561f64f1c4c2520c7a84d5947c7c34953fd","author":{"name":"Zach Leslie","email":"28f959f4b22d72aebff4944f5b5c1ba313e1aab3@womply.com"},"message":"Improve ELB enumeration performance and stuff\n\nWithout this change, when we need to generate a Hash of all the\ninformation about a particular ELB during the resolution of instances,\nand in the process, convert any security group, subnet, and instances\nthat the ELB is attached to from ID strings into resource names,\nsubsequent calls are made to the API for each of these enumerations.\nThis presents a problem due to the number of calls made to the API,\nwhich is three calls to the Ec2 API per ELB.  This is inefficient,\nbecause we have an autorequire that ensures the instances calls on the\nrelevant puppet resources are already enumerated, meaning that much of\nthe data we require in the ELB hash generation is already present in\nmemory, but we make the API calls anyway.  This is only true for\nresources under Puppet management, as resources not under puppet\nmanagement are thrown away during the instances call for a given\nprovider.  In environments with lots of ELBs, this can mean that the API\nlimit on Ec2 is reached, and puppet fails to run, which prevents scaling\nand clean runs of Puppet, thus raising the occurrences of swearing.\n\nThis work changes the behaviour of the ELB enumeration to first look in\nthe catalog catalog for the resources that might match, and see if the\nrelevant data is present before we make the calls to the API.  The\nresult is that for resources under Puppet management, no extra calls\nneed to be made to the Ec2 API, thus improving performance and reducing\nthe risk of reaching the Ec2 API limits.  This also means that there is\nan incentive for moving resources under Puppet management, as even those\nELBs that are not managed by Puppet, but are present in the environment\nwill drag performance down by requiring subsequent calls for the\nsecurity groups, subnets, and Ec2 instances related to the particular\nELB.","distinct":true,"url":"https://api.github.com/repos/zleswomp/puppetlabs-aws/commits/a13a7561f64f1c4c2520c7a84d5947c7c34953fd"}]}
{"actor":{"display_login":"zleswomp"}}