Hi all, At Cybera we've been running VCL on OpenStack in production for a little over a year now using a modified version of Young Oh's module. We talked with Aaron, Josh and Andy last week about getting our code contributed back into VCL and there are a few points that would need to be addressed before that can happen. For reference our code is available here:
https://github.com/cybera/openstack-vcl-module 1. Currently our module depends on our NAT patch ( https://issues.apache.org/jira/browse/VCL-174) to make reservations publicly accessible, it doesn't assign floating IP addresses to instances. This should be configurable, unfortunately we don't currently have the extra IP addresses available to do any testing. Is there anyone who is in a position to make/test these changes? I don't believe it should be too challenging. 2. We use the Try::Tiny module to handle exceptions since the version of Perl VCL 2.3 uses doesn't support the saner try/catch mechanisms available in newer releases, however this would add an additional dependency to VCL. Depending on the version of Perl VCL 2.4 is planning to use what are people's thoughts on using Try::Tiny versus switching to Perl's internal mechanisms? 3. I've saved the best for last, but first some background. The biggest change we've made is that we no longer rely on the /etc/hosts file at all (though we haven't removed the code that keeps it up to date). We had a number of issues with duplicate entries ending up in the hosts file and weren't able to pin down the exact cause. This led us to adding a table to the database to track VCL computer to OpenStack instance mappings. The next issue we ran into was the private IP address not being populated in the hosts file. This happened very rarely and we're still unsure of the cause especially since there's an explicit check that the address is populated with a value before we write the hosts file. I'd assume that the Nova API occasionally returns a response where the addresses component is structured differently than we expect, though I was never able to directly observe this behavior. Since OpenStack automatically creates DNS entries for new instances we decided the best course of action was to bypass the hosts file entirely. In the end we modified get_computer_private_ip_address in DataStructure.pm to do a DNS lookup rather than looking in the hosts file. The question for the community is are changes to core VCL code acceptable? Or should we find a solution that keeps everything contained to the provisioning module? If changes to core code are acceptable we'd also have to decide on a method of detecting when to do a DNS lookup. Should it depend on the provisioning module in use? A configuration option? I apologize for the wall of text, but I think that covers everything. We'll also be on the office hours call tomorrow to talk about the module. Cameron
