Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Nov 14, 2012
  1. This commit adds support for a gem mirror (either internal or, when c…

    Tom McSweeney authored
    …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...
Commits on Nov 5, 2012
  1. Changed exception handling code to properly handle ALL exceptions (pr…

    Tom McSweeney authored
    …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).
Commits on Sep 21, 2012
  1. Changed the bundle build script so that the initial Microkernel confi…

    Tom McSweeney authored
    …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.
Commits on Sep 10, 2012
  1. New version of the Microkernel that includes fixes for an error that …

    Tom McSweeney authored
    …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.
  2. New version of the Microkernel that includes fixes for an error that …

    Tom McSweeney authored
    …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.
Commits on Jul 3, 2012
  1. @nanliu

    Update license to Puppet Labs GPLv2.

    nanliu authored
    Transfer and update copyright to GPLv2.
Commits on May 17, 2012
  1. A new version of the Microkernel (v0.8.8.0) that modifies the behavio…

    Tom McSweeney authored
    …r of the flag added to the checkin requests in the previous release of the Microkernel. This flag is now only included if the node hasn't successfully checked in and registered with the Razor server. Once both of these conditions have been met, the flag will be set to false (and no longer included in the checkin requests) until the node is rebooted. This change will only work properly on reboot once changes have been made to the Razor server to handle this flag properly. Until then, on reboot, the is_first_checkin flag will remain true until Razor asks the node to register again (since we consider a "first checkin" to be the first time that the node successfully checks in and registers with the Razor server after a boot or reboot).
  2. Added a new file to the Microkernel that is used to store whether or …

    Tom McSweeney authored
    …not the Microkernel controller is checking in for the first time. This change makes it possible for the Razor server to determine whether or not it should force a registration on first boot, even if the node has checked in more recently than the "register_timeout" (allowing for the Razor server to pick up configuration changes on the node that may have required a reboot of the node but that didn't take too long, so the time between checkins doesn't exceed that "register_timeout" value).
Commits on May 9, 2012
  1. Refactored the work from last night around dynamic loading of the TCL…

    Tom McSweeney authored
    … extensions (and the kernel modules they might contain). The TCE Mirror WEBrick instance now returns the lists as arrays instead of hash maps and both the Microkernel Controller and Kernel Module Manager now deal with these as arrays instead of hash maps. Also cleaned up how the Kernel Module Manager dealt with requests to install a module that is already installed (the module is now removed, then reinstalled) and added code to the Kernel Module Manager to simplify how it handles the "module names" that it receives from the TCE Mirror WEBrick instance (it now searches for the modules under the kernel module directory instead of requiring a full relative pathname to the kernel module in the names of the modules returned by that WEBrick instance). Finally, added the files used by the new WEBrick instance to the project (under the 'tmp/tinycorelinux' sub-directory) and moved the mk_conf.yaml file to that new (tmp) subdirectory since that's where the mk_conf.yaml file will actually be placed during the build process.
  2. Refactored the previous version of the Microkernel to add a new WEBri…

    Tom McSweeney authored
    …ck instance that supports local loading of TCL extensions. Also removed the script that was previously used to load the kernel modules that might be contained in these extensions to support the loading of a list of kernel modules from the same WEBrick instance (this functionality is now provided by the RazorMicrokernel::RzMkKernelModuleManager class instead) and added the WEBrick instance itself (via the rz_mk_tce_mirror.rb script).
Commits on May 8, 2012
  1. Added a quick change that restricts the installation of extensions so…

    Tom McSweeney authored
    … that, by default, an extension is only installed if it is not yet installed. This avoids the overhead of re-installing extensions when the Microkernel Controller is restarted (extensions will still be re-installed on reboot, of course). This behavior can be overridden by an additional flag to the load_tcl_extensions method (in the Microkernel Controller), but this flag is not currently being used (it's there for future use if we decide we need it). This change will be made available in v0.8.2.0 of the Microkernel.
  2. Last round of changes for initial release of the Microkernel that wil…

    Tom McSweeney authored
    …l dynamically load extensions (and the kernel modules they contain, at least for the open_vm_tools extension) from a (Razor) server. Have tested this with an Apache server, now just need to finish the Razor server-side code to support this implementation.
Commits on Apr 30, 2012
  1. Changed the RzMkControlServer and RzMkRegistrationManager so that the…

    Tom McSweeney authored
    …y report a "hw_id" value (constructed using a new "get_hw_id_array" method that was added to the RzMkFactManager class) rather than a "uuid" value to Razor as part of the checkin and registration requests. With this set of changes, responsibility for construction of UUID values (and visibility into those values) is officially moved over to the Razor server and away from the Microkernel.
Commits on Mar 11, 2012
  1. Added the scripts used during the process of building the Razor Micro…

    Tom McSweeney authored
    …kernel ISO to the project, will be available starting with this version of the Microkernel (v0.2.1.0)
Commits on Mar 7, 2012
  1. Refactored the "utility classes" in order to place them into their ow…

    Tom McSweeney authored
    …n module (the RazorMicrokernel module). At the same time, added a "RazorMicrokernel::Logging" mixin that can be used to make a component loggable (this mixin is patterned after the ProjectRazor::Logging mixin in the Razor project). Finally, made the changes necessary to replace the old "logger" code (where a Logger instance was created in the "main" scripts and passed into the associated methods) with the new mixin-based logger (where the capability to log is mixed into the scripts/classes). The only difficulty was in sorting out how to apply the new mixin-based logger in the WEBrick instance, but that issue has been resolved. This should complete the refactoring necessary to output logs in a manner that is equivalent to how logs are handled in the Razor project...
Commits on Mar 6, 2012
  1. A new version of the ISO (v0.1.6.0) that includes the changes necessa…

    Tom McSweeney authored
    …ry to dynamically change the logging level using the new parameter that was just added to the Razor Server configuration file (mk_log_level). While this functionality was being added, also did a bit of refactoring of the RzMkConfigurationManager class to further encapsulate the details of how the current configuration is persisted and managed internally. Now maintain the current configuration state within this class, and provide attr_readers that can be used to get this information from other classes (rather than requiring that those classes understand the particulars of the configuration map passed from the Razor Server).
Commits on Mar 3, 2012
  1. refactored the codebase and the mechanism for storing the Microkernel…

    Tom McSweeney authored
    … Controller configuration in order to work in changes implemented in Razor to return a Microkernel Controller configuration as part of the "Checkin Response". Required changes to the Razor Microkernel Controller, the Razor Microkernel Web Server, and the mk_conf.yaml file itself (in order to add the code to process the configuration from the Checkin Response and to account for changes made to the configuration property names in order to keep them in a flatter model on the Razor Server side of things). Also moved the log-file location for the Microkernel Controller to the /var/log directory (to make it consistent with the Razor Microkernel Web Server's logfile location), added additional debugging output, and created a new "Configuration Manager" class (a singleton class that consolidates the common functionality needed in both the WEBrick server and the Microkernel Controller to check for changes in the Microkernel Configuration and save a new configuration to the mk_conf.yaml file). Finally, refactored the names of a number of classes/scripts so that the classes/scripts in the /usr/local/bin directory of the Microkernel all include a "rz_mk_" prefix at the front of their file names.
Commits on Feb 29, 2012
  1. Adding the following licensing text to all of the source-code in the …

    Tom McSweeney authored
    EMC Confidential Information, protected under EMC Bilateral Non-Disclosure Agreement.
    Copyright © 2012 EMC Corporation, All Rights Reserved
  2. Latest version of the Razor Microkernel (v0.1.4.0); includes changes …

    Tom McSweeney authored
    …to fix the reboot action in the Microkernel Controller, shortening of the sleep interval between iterations (as a carry-over until we can get the push of configuration from Razor working properly), and removal of the "mk" prefix from Microkernel hostname when constructing a uuid for use in checkin/registration. Also added error handling to the main Microkernel Controller loop so that it would continue to run, even in the face of unexpected input from the Razor server (or complete failure of the Razor server). Finally, pulled in some of the files that we modified in the default Tiny Core Linux distribution in order to grab the "next-server" from the DHCP reply (the /etc/init.d/ script and the /usr/share/udhcpc/dhcp_mk_config.script file).
Commits on Feb 25, 2012
  1. Added a command to reboot the node if a "reboot" action is received i…

    Tom McSweeney authored
    …n a checkin-reply
Commits on Feb 24, 2012
  1. Initial version of the next release of the Microkernel (v0.1.0.0). Is…

    Tom McSweeney authored
    … a fairly significant change from the previous release of the Microkernel (v0.0.2.0). There are now two servers running in the Microkernel: a Ruby daemon script (the Microkernel Controller) that manages the checkin process with the Razor server and a WEBrick instance that, at the current time, only picks up configuration changes sent out across the MCollective, saves them, and then restarts the Microkernel Controller (which forces the controller to pick up the new configuration immediately). Will package up the ISO and build files for this release tomorrow (or perhaps later today is a better way to view is kind of late)
  2. Implemented the last of the changes to enable the checkin command...w…

    Tom McSweeney authored
    …ill have to test next
Commits on Feb 23, 2012
  1. Almost ready to enable the "checkin" action in this daemon process. W…

    Tom McSweeney authored
    …ill complete work on it tomorrow.
  2. Cleaned up how state is handled when the node is registered (now pass…

    Tom McSweeney authored
    …es the "last_state" in as an argument to the node registration methods). Also cleaned up the wait code in the rz_mk_control_server so that it properly handles the case where the time remaining in the sleep window is zero or negative (in which case it doesn't even try to sleep). Finally, cleaned up a few comments and a bit of code to make things more readable.
  3. Added a slightly modified version of the FactManager class back into …

    Tom McSweeney authored
    …our codebase so that we could check the current facts and see if they've changed since the last successful registration of this Microkernel instance with the Razor server. Added code to save a timestamp in the FactManager class each time the fact_map is saved to the file indicated by the "prev_facts_filename" and made that field accessible (so that it can be checked in the main event loop in our rz_mk_contol_server daemon script to see if we've saved facts since the iteration started). Removed code from the old FactManager class that actually loaded the facts into memory each time the facts where checked (to see if they've changed since they were last loaded); instead the current_fact_map is passed in as an argument. Finally, stubbed out the code in the RzMkRegistrationManager class that will register a node if the facts have changed. Still need to add code to this class to deal with the keep-alive HTTP requests (make the request, parse the reply, and take action based on the action in the reply, if any).
Commits on Feb 22, 2012
  1. Added "logger" instance back in (and added it to the constructor for …

    Tom McSweeney authored
    …the RzMkRegistrationManager class). Also changed the name of the log file for the rz_mk_web_server to be consistent with the name of the script itself...
  2. Reworked yesterday's code changes a bit (refactoring names, reworking…

    Tom McSweeney authored
    … the interactions betwen scripts, etc.). Also added hooks into the rz_mk_control_server to read the configuration and added code to sleep the appropriate amounts of time between iterations. Verified that the code works as it should under a "restart".
  3. Reworked yesterday's code changes a bit (refactoring names, reworking…

    Tom McSweeney authored
    … the interactions betwen scripts, etc.). Also added hooks into the rz_mk_control_server to read the configuration and added code to sleep the appropriate amounts of time between iterations. Verified that the code works as it should under a "restart".
  4. First round of changes to refactor (now using a hash map for configur…

    Tom McSweeney authored
    …ation; agent not just sets the configuration for the microkernel using a servlet running in the WEBrick server instance, a separate rz_mk_controller has been defined that will control the rz_mk_control_server, and the rz_mk_control_server will send out the keep-alive signal to the Razor server and take action based on the reply it gets back in reponse to that keep-alive signal). More work is required before we have a working set of services for the Microkernel, but it's a start
Something went wrong with that request. Please try again.