…ombined with recent changes to Razor, external). With these changes in place, a list of gems to install is obtained from a gem list (assumed to be accessible via the URI given by the 'mk_gemlist_uri' configuration parameter), and then the versions of the gems listed there that are accessible from the gem mirror that will be used by the Microkernel (assumed to be defined by the 'mk_gem_mirror_uri' configuration parameter) are compared with the versions of those same gems that are installed locally. This comparison is made whenever the Microkernel Controller is restarted (or during the Microkernel Controller initialization process that occurs when the Microkernel first boots). If the stated gems are not available locally, or if the latest version available from the gem mirror is not installed locally, then the stated version of those missing/out of date gems version will be installed from the gem mirror...
…eviously, only exceptions that inherited from the StandardError class were handled properly, and under Ruby 1.8.7 this did not include the Timeout::Error class that could be thrown from the checkin/register HTTP requests; without the changes in this commit an HTTP timeout could cause the Microkernel Controller to exit unexpectedly).
…ail method. This issue occurred during testing of the Microkernel with servers that used a Broadcom NetExtreme II card. In this situation, a race-condition could occur that resulted in the Microkernel not being able to detect the underlying network (the bnx2 firmware kernel module was being repeatedly reloaded and the DHCP client was being restarted immediately after that kernel module was reloaded but before the network was fully initialized in the underlying kernel, so none fo the network cards were showing a valid IP address when the check for a valid IP address was being made). With this fix in place, that race-condition is prevented (and the Microkernel initialization process can complete successfully). This commit also includes a small change to the build-bundle-file.sh that means that the bootlocal.sh file (if it exists) would also be included as part of the bundle file that is built by that script. It isn't important in the current release but might be used later.
…nction. Prior to this change, this function was trying to modify a Hash map in the middle of an "each" iterator over that same Hash map (which, naturally, generates an exception). With these changes, the iteration is now over the keys for the Hash map, not the Hash map itself (and so no exception is thrown when the underlying Hash map is modified).
…guration for a "debug" kernel is set to "Logger::DEBUG". Also, added additional "logger.debug" output that logs the stack traces for any exceptions thrown during interactions between the Microkernel Controller and the Razor server. These changes only effect the behavior of the debug kernel; the development and production Microkernels both remain unchanged from the previous commit.
…back to the top of the "each" rather than storing it as a separate variable and calling "each" on that list...that list is not used for anything else so it doesn't need to be kept in a separate variable).
…is thrown when the network cannot be accessed during Microkernel initialization. This version uses an exponential-backoff algorithm for timing of searches for a valid network interface (instead of using a fixed time increment for subsequent searches if the first search fails) and uses a much shorter (2 minute rather than 15 minute) timeout before the initialization script considers the network to be unreachable. In addition, if no valid network interface is found during such a search for a valid NIC, any kernel module that matches a pattern containing the list of supported NIC firmware modules is reloaded before an additional search is made. Similarly, before such a search is made the DHCP client is restarted before an additional search is made if no NIC was found or if a NIC was found but that NIC didn't have a valid IP address. These changes should fix the issue raised recently by @eoghank in the Razor issues list.
…is thrown when the network cannot be accessed during Microkernel initialization. This version uses an exponential-backoff algorithm for timing of searches for the network (instead of using a fixed time increment for subsequent searches if the first search fails), imposes an arbitrary (15 sec) delay before loading kernel modules (to try to avoid the race condition we seem to be seeing between kernel module loading and network card initialization in some hardware), and uses a much shorter (2 minute rather than 15 minute) timeout before the initialization script considers the network to be unreachable.
…utes prior to this commit)
…nutes prior to this commit)
Don't set the url of razor server if dhcp don't provide a next-server field. This will ensure that the Microkernel is still configured correctly on networks where there is more than one DHCP server, only one of which is providing a "next-server" parameter in its DHCP responses.
…uild-bundle-file.sh' script from the Downloads area of the Razor project to the Downloads area of the Razor-Microkernel project (on the PuppetLabs GitHub). This change will only work once the Razor-Microkernel project becomes a public project. Until then, the Razor project is the only public project that we can use for this download (so the mk-open-vm-tools.tar.gz file will remain in both places until then).