lobot 2.0.0pre → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (297) hide show
  1. data/.gitignore +7 -10
  2. data/.gitmodules +1 -1
  3. data/.pairs +15 -0
  4. data/.rvmrc +1 -1
  5. data/.travis.yml +5 -0
  6. data/Gemfile +2 -2
  7. data/LICENSE.txt +1 -1
  8. data/README.md +67 -29
  9. data/Rakefile +11 -6
  10. data/Vagrantfile +8 -5
  11. data/bin/lobot +2 -4
  12. data/chef/cookbooks/pivotal_ci/attributes/jenkins.rb +1 -0
  13. data/chef/cookbooks/pivotal_ci/files/default/tests/minitest/default_test.rb +40 -2
  14. data/chef/cookbooks/pivotal_ci/recipes/id_rsa.rb +5 -0
  15. data/chef/cookbooks/pivotal_ci/recipes/jenkins_config.rb +5 -2
  16. data/chef/cookbooks/pivotal_ci/recipes/limited_travis_ci_environment.rb +4 -0
  17. data/chef/cookbooks/pivotal_ci/templates/default/jenkins-job-config.xml.erb +8 -6
  18. data/chef/cookbooks/pivotal_ci/test/kitchen/cookbooks/pivotal_ci_test/attributes/default.rb +0 -1
  19. data/chef/cookbooks/pivotal_ci/test/kitchen/cookbooks/pivotal_ci_test/recipes/bootstrap.rb +41 -0
  20. data/chef/cookbooks/pivotal_ci/test/kitchen/cookbooks/pivotal_ci_test/recipes/default.rb +1 -41
  21. data/chef/travis-cookbooks/ci_environment/apt/recipes/default.rb +8 -7
  22. data/chef/travis-cookbooks/ci_environment/bazaar/recipes/default.rb +1 -1
  23. data/chef/travis-cookbooks/ci_environment/cassandra/attributes/default.rb +6 -3
  24. data/chef/travis-cookbooks/ci_environment/cassandra/recipes/datastax.rb +1 -1
  25. data/chef/travis-cookbooks/ci_environment/cassandra/recipes/package.rb +1 -1
  26. data/chef/travis-cookbooks/ci_environment/cassandra/recipes/tarball.rb +6 -2
  27. data/chef/travis-cookbooks/ci_environment/cassandra/templates/default/cassandra.init.erb +58 -131
  28. data/chef/travis-cookbooks/ci_environment/chromium/recipes/default.rb +1 -1
  29. data/chef/travis-cookbooks/ci_environment/clang/attributes/tarball.rb +2 -7
  30. data/chef/travis-cookbooks/ci_environment/clang/recipes/default.rb +1 -1
  31. data/chef/travis-cookbooks/ci_environment/clang/recipes/tarball.rb +2 -4
  32. data/chef/travis-cookbooks/ci_environment/couchdb/recipes/default.rb +1 -1
  33. data/chef/travis-cookbooks/ci_environment/couchdb/recipes/ppa.rb +1 -1
  34. data/chef/travis-cookbooks/ci_environment/couchdb/recipes/ubuntu-12.04.rb +1 -1
  35. data/chef/travis-cookbooks/ci_environment/couchdb/recipes/ubuntu1110_ppa.rb +1 -1
  36. data/chef/travis-cookbooks/ci_environment/couchdb/recipes/ubuntu1204_ppa.rb +1 -1
  37. data/chef/travis-cookbooks/ci_environment/doxygen/recipes/default.rb +24 -0
  38. data/chef/travis-cookbooks/ci_environment/elasticsearch/attributes/default.rb +4 -1
  39. data/chef/travis-cookbooks/ci_environment/elasticsearch/recipes/default.rb +8 -5
  40. data/chef/travis-cookbooks/ci_environment/emacs/recipes/nox.rb +1 -1
  41. data/chef/travis-cookbooks/ci_environment/firefox/recipes/default.rb +1 -1
  42. data/chef/travis-cookbooks/ci_environment/git/recipes/default.rb +1 -1
  43. data/chef/travis-cookbooks/ci_environment/git/recipes/ppa.rb +1 -1
  44. data/chef/travis-cookbooks/ci_environment/golang/attributes/default.rb +3 -3
  45. data/chef/travis-cookbooks/ci_environment/gradle/attributes/tarball.rb +1 -1
  46. data/chef/travis-cookbooks/ci_environment/haskell/recipes/default.rb +1 -1
  47. data/chef/travis-cookbooks/ci_environment/haskell/recipes/ghc_package.rb +1 -1
  48. data/chef/travis-cookbooks/ci_environment/haskell/recipes/ghc_source.rb +1 -1
  49. data/chef/travis-cookbooks/ci_environment/haskell/recipes/platform_package.rb +1 -1
  50. data/chef/travis-cookbooks/ci_environment/haskell/recipes/platform_ppa.rb +1 -1
  51. data/chef/travis-cookbooks/ci_environment/haskell/recipes/platform_source.rb +1 -1
  52. data/chef/travis-cookbooks/ci_environment/haskell/recipes/source.rb +1 -1
  53. data/chef/travis-cookbooks/ci_environment/hbase/recipes/cdh4.rb +1 -1
  54. data/chef/travis-cookbooks/ci_environment/java/attributes/default.rb +4 -2
  55. data/chef/travis-cookbooks/ci_environment/java/recipes/default.rb +1 -1
  56. data/chef/travis-cookbooks/ci_environment/java/recipes/oraclejdk7.rb +6 -1
  57. data/chef/travis-cookbooks/ci_environment/kerl/attributes/source.rb +1 -1
  58. data/chef/travis-cookbooks/ci_environment/kerl/files/default/erlang.cookie +1 -0
  59. data/chef/travis-cookbooks/ci_environment/kerl/recipes/source.rb +8 -0
  60. data/chef/travis-cookbooks/ci_environment/kestrel/recipes/tarball.rb +1 -1
  61. data/chef/travis-cookbooks/ci_environment/leiningen/attributes/default.rb +1 -1
  62. data/chef/travis-cookbooks/ci_environment/leiningen/recipes/default.rb +1 -1
  63. data/chef/travis-cookbooks/ci_environment/leiningen/recipes/lein1x.rb +1 -1
  64. data/chef/travis-cookbooks/ci_environment/leiningen/recipes/lein2x.rb +1 -1
  65. data/chef/travis-cookbooks/ci_environment/libffi/recipes/default.rb +1 -1
  66. data/chef/travis-cookbooks/ci_environment/libgdbm/recipes/default.rb +1 -1
  67. data/chef/travis-cookbooks/ci_environment/libncurses/recipes/default.rb +1 -1
  68. data/chef/travis-cookbooks/ci_environment/libossp-uuid/recipes/default.rb +1 -1
  69. data/chef/travis-cookbooks/ci_environment/libreadline/recipes/default.rb +1 -1
  70. data/chef/travis-cookbooks/ci_environment/libssl/recipes/098.rb +1 -1
  71. data/chef/travis-cookbooks/ci_environment/libssl/recipes/default.rb +1 -1
  72. data/chef/travis-cookbooks/ci_environment/libxml/recipes/default.rb +1 -1
  73. data/chef/travis-cookbooks/ci_environment/lighttpd/recipes/default.rb +1 -1
  74. data/chef/travis-cookbooks/ci_environment/maven3/recipes/default.rb +5 -2
  75. data/chef/travis-cookbooks/ci_environment/maven3/recipes/package.rb +1 -1
  76. data/chef/travis-cookbooks/ci_environment/maven3/recipes/ppa.rb +1 -1
  77. data/chef/travis-cookbooks/ci_environment/maven3/recipes/tarball.rb +1 -1
  78. data/chef/travis-cookbooks/ci_environment/memcached/attributes/default.rb +1 -1
  79. data/chef/travis-cookbooks/ci_environment/memcached/attributes/ppa.rb +1 -1
  80. data/chef/travis-cookbooks/ci_environment/memcached/recipes/default.rb +1 -1
  81. data/chef/travis-cookbooks/ci_environment/memcached/recipes/ppa.rb +1 -1
  82. data/chef/travis-cookbooks/ci_environment/mercurial/recipes/default.rb +1 -1
  83. data/chef/travis-cookbooks/ci_environment/mercurial/recipes/ppa.rb +36 -0
  84. data/chef/travis-cookbooks/ci_environment/mongodb/attributes/mongodb.rb +1 -1
  85. data/chef/travis-cookbooks/ci_environment/mongodb/files/default/mongodb.sysvinit.sh +1 -1
  86. data/chef/travis-cookbooks/ci_environment/mongodb/recipes/apt.rb +5 -5
  87. data/chef/travis-cookbooks/ci_environment/mongodb/recipes/server.rb +5 -2
  88. data/chef/travis-cookbooks/ci_environment/mysql/attributes/default.rb +1 -3
  89. data/chef/travis-cookbooks/ci_environment/mysql/recipes/server_on_ramfs.rb +6 -1
  90. data/chef/travis-cookbooks/ci_environment/mysql/templates/default/my.cnf.erb +0 -2
  91. data/chef/travis-cookbooks/ci_environment/mysql/templates/default/ramfs/my.cnf.erb +0 -2
  92. data/chef/travis-cookbooks/ci_environment/neo4j-server/attributes/tarball.rb +13 -2
  93. data/chef/travis-cookbooks/ci_environment/neo4j-server/recipes/tarball.rb +26 -2
  94. data/chef/travis-cookbooks/ci_environment/networking_basic/recipes/default.rb +4 -1
  95. data/chef/travis-cookbooks/ci_environment/nodejs/attributes/multi.rb +3 -3
  96. data/chef/travis-cookbooks/ci_environment/nodejs/recipes/multi.rb +1 -1
  97. data/chef/travis-cookbooks/ci_environment/openssh/recipes/default.rb +1 -1
  98. data/chef/travis-cookbooks/ci_environment/perlbrew/attributes/multi.rb +1 -1
  99. data/chef/travis-cookbooks/ci_environment/phantomjs/attributes/default.rb +2 -2
  100. data/chef/travis-cookbooks/ci_environment/phantomjs/metadata.rb +3 -0
  101. data/chef/travis-cookbooks/ci_environment/phantomjs/recipes/default.rb +3 -1
  102. data/chef/travis-cookbooks/ci_environment/phantomjs/recipes/tarball.rb +3 -2
  103. data/chef/travis-cookbooks/ci_environment/php/attributes/default.rb +40 -2
  104. data/chef/travis-cookbooks/ci_environment/php/providers/pecl.rb +73 -0
  105. data/chef/travis-cookbooks/ci_environment/php/recipes/extensions.rb +25 -0
  106. data/chef/travis-cookbooks/ci_environment/php/recipes/multi.rb +5 -4
  107. data/chef/travis-cookbooks/ci_environment/php/resources/pecl.rb +10 -0
  108. data/chef/travis-cookbooks/ci_environment/phpbuild/attributes/default.rb +2 -2
  109. data/chef/travis-cookbooks/ci_environment/phpbuild/files/default/after-install.d/phpunit.sh +58 -0
  110. data/chef/travis-cookbooks/ci_environment/phpbuild/files/default/definitions/5.2.17 +3 -1
  111. data/chef/travis-cookbooks/ci_environment/phpbuild/files/default/definitions/5.3.3 +2 -1
  112. data/chef/travis-cookbooks/ci_environment/phpbuild/providers/build.rb +1 -1
  113. data/chef/travis-cookbooks/ci_environment/phpbuild/recipes/default.rb +8 -10
  114. data/chef/travis-cookbooks/ci_environment/phpbuild/templates/default/default_configure_options.erb +4 -0
  115. data/chef/travis-cookbooks/ci_environment/phpenv/attributes/default.rb +6 -0
  116. data/chef/travis-cookbooks/ci_environment/phpenv/recipes/default.rb +11 -7
  117. data/chef/travis-cookbooks/ci_environment/postgresql/recipes/server_on_ramfs.rb +2 -2
  118. data/chef/travis-cookbooks/ci_environment/python/attributes/default.rb +2 -2
  119. data/chef/travis-cookbooks/ci_environment/python/recipes/multi.rb +10 -3
  120. data/chef/travis-cookbooks/ci_environment/rabbitmq/attributes/default.rb +3 -0
  121. data/chef/travis-cookbooks/ci_environment/rabbitmq/recipes/default.rb +6 -2
  122. data/chef/travis-cookbooks/ci_environment/ragel/recipes/custom.rb +1 -1
  123. data/chef/travis-cookbooks/ci_environment/ragel/recipes/default.rb +1 -1
  124. data/chef/travis-cookbooks/ci_environment/redis/attributes/default.rb +3 -0
  125. data/chef/travis-cookbooks/ci_environment/redis/recipes/default.rb +6 -3
  126. data/chef/travis-cookbooks/ci_environment/redis/recipes/ppa.rb +1 -1
  127. data/chef/travis-cookbooks/ci_environment/riak/attributes/default.rb +1 -0
  128. data/chef/travis-cookbooks/ci_environment/riak/attributes/package.rb +3 -3
  129. data/chef/travis-cookbooks/{messaging_broker/openssl/recipes/default.rb → ci_environment/riak/attributes/service.rb} +4 -3
  130. data/chef/travis-cookbooks/ci_environment/riak/recipes/config.rb +2 -2
  131. data/chef/travis-cookbooks/ci_environment/riak/recipes/default.rb +12 -5
  132. data/chef/travis-cookbooks/ci_environment/rvm/attributes/default.rb +1 -1
  133. data/chef/travis-cookbooks/ci_environment/rvm/attributes/multi.rb +2 -0
  134. data/chef/travis-cookbooks/ci_environment/rvm/files/default/gemsets/global.gems +1 -1
  135. data/chef/travis-cookbooks/ci_environment/rvm/files/default/gemsets/jruby/global.gems +1 -1
  136. data/chef/travis-cookbooks/ci_environment/rvm/files/default/gemsets/ruby/2.0.0/global.gems +2 -0
  137. data/chef/travis-cookbooks/ci_environment/rvm/files/default/gemsets/ruby/head/global.gems +2 -0
  138. data/chef/travis-cookbooks/ci_environment/rvm/recipes/default.rb +23 -1
  139. data/chef/travis-cookbooks/ci_environment/rvm/recipes/multi.rb +2 -2
  140. data/chef/travis-cookbooks/ci_environment/rvm/templates/default/bundler_config.yml.erb +2 -0
  141. data/chef/travis-cookbooks/ci_environment/sbt/CHANGELOG.md +20 -0
  142. data/chef/travis-cookbooks/ci_environment/sbt/LICENSE +201 -0
  143. data/chef/travis-cookbooks/ci_environment/sbt/README.md +78 -2
  144. data/chef/travis-cookbooks/ci_environment/sbt/attributes/default.rb +36 -10
  145. data/chef/travis-cookbooks/ci_environment/sbt/metadata.json +27 -17
  146. data/chef/travis-cookbooks/ci_environment/sbt/metadata.rb +13 -6
  147. data/chef/travis-cookbooks/ci_environment/sbt/recipes/default.rb +101 -51
  148. data/chef/travis-cookbooks/ci_environment/sbt/templates/default/jvmopts.erb +7 -0
  149. data/chef/travis-cookbooks/ci_environment/sbt/templates/default/sbtopts.erb +54 -0
  150. data/chef/travis-cookbooks/ci_environment/sphinx/attributes/default.rb +2 -2
  151. data/chef/travis-cookbooks/ci_environment/sphinx/metadata.rb +4 -4
  152. data/chef/travis-cookbooks/ci_environment/sphinx/recipes/all.rb +1 -1
  153. data/chef/travis-cookbooks/ci_environment/sphinx/recipes/default.rb +1 -1
  154. data/chef/travis-cookbooks/{messaging_broker/build-essential/recipes/default.rb → ci_environment/sqlite/recipes/ppa.rb} +13 -24
  155. data/chef/travis-cookbooks/ci_environment/subversion/recipes/default.rb +1 -1
  156. data/chef/travis-cookbooks/ci_environment/sweeper/recipes/default.rb +1 -1
  157. data/chef/travis-cookbooks/ci_environment/travis_build_environment/attributes/default.rb +2 -0
  158. data/chef/travis-cookbooks/ci_environment/travis_build_environment/recipes/ci_user.rb +2 -2
  159. data/chef/travis-cookbooks/ci_environment/travis_build_environment/recipes/default.rb +1 -3
  160. data/chef/travis-cookbooks/ci_environment/travis_build_environment/recipes/root.rb +5 -1
  161. data/chef/travis-cookbooks/ci_environment/travis_build_environment/templates/default/ci_user/{dot_bashrc.sh → dot_bashrc.sh.erb} +0 -4
  162. data/chef/travis-cookbooks/ci_environment/unarchivers/recipes/default.rb +1 -1
  163. data/chef/travis-cookbooks/ci_environment/xserver/metadata.rb +3 -0
  164. data/chef/travis-cookbooks/ci_environment/xserver/recipes/default.rb +1 -1
  165. data/chef/travis-cookbooks/ci_environment/zeromq/recipes/default.rb +6 -23
  166. data/chef/travis-cookbooks/ci_environment/zeromq/recipes/{20x.rb → ppa.rb} +14 -14
  167. data/chef/travis-cookbooks/ci_environment/zookeeper/recipes/cdh4.rb +1 -1
  168. data/chef/travis-cookbooks/worker_host/java/metadata.rb +1 -1
  169. data/chef/travis-cookbooks/worker_host/java/recipes/openjdk.rb +6 -0
  170. data/chef/travis-cookbooks/worker_host/jruby/attributes/default.rb +1 -1
  171. data/chef/travis-cookbooks/worker_host/jruby/metadata.rb +1 -1
  172. data/chef/travis-cookbooks/worker_host/jruby/recipes/default.rb +1 -0
  173. data/chef/travis-cookbooks/worker_host/monit/recipes/default.rb +21 -17
  174. data/chef/travis-cookbooks/worker_host/networking_basic/metadata.rb +1 -1
  175. data/chef/travis-cookbooks/worker_host/networking_basic/recipes/default.rb +0 -6
  176. data/chef/travis-cookbooks/worker_host/ntp/.gitignore +1 -0
  177. data/chef/travis-cookbooks/worker_host/ntp/.travis.yml +6 -0
  178. data/chef/travis-cookbooks/worker_host/ntp/CHANGELOG.md +35 -0
  179. data/chef/travis-cookbooks/worker_host/ntp/CONTRIBUTING +29 -0
  180. data/chef/travis-cookbooks/worker_host/ntp/LICENSE +201 -0
  181. data/chef/travis-cookbooks/worker_host/ntp/README.md +163 -0
  182. data/chef/travis-cookbooks/worker_host/ntp/Rakefile +19 -0
  183. data/chef/travis-cookbooks/worker_host/ntp/TESTING.md +213 -0
  184. data/chef/travis-cookbooks/worker_host/ntp/attributes/default.rb +54 -0
  185. data/chef/travis-cookbooks/{messaging_broker/rabbitmq/resources/vhost.rb → worker_host/ntp/attributes/ntpdate.rb} +6 -7
  186. data/chef/travis-cookbooks/worker_host/ntp/chefignore +19 -0
  187. data/chef/travis-cookbooks/worker_host/ntp/files/default/ntp.leapseconds +222 -0
  188. data/chef/travis-cookbooks/worker_host/ntp/metadata.json +117 -0
  189. data/chef/travis-cookbooks/worker_host/ntp/metadata.rb +45 -0
  190. data/chef/travis-cookbooks/worker_host/ntp/recipes/default.rb +50 -0
  191. data/chef/travis-cookbooks/worker_host/ntp/recipes/disable.rb +22 -0
  192. data/chef/travis-cookbooks/worker_host/ntp/recipes/ntpdate.rb +36 -0
  193. data/chef/travis-cookbooks/{messaging_broker/openssl/libraries/secure_password.rb → worker_host/ntp/recipes/undo.rb} +17 -18
  194. data/chef/travis-cookbooks/worker_host/ntp/templates/default/ntp.conf.erb +55 -0
  195. data/chef/travis-cookbooks/worker_host/ntp/templates/default/ntpdate.erb +14 -0
  196. data/chef/travis-cookbooks/worker_host/rvm/recipes/multi.rb +1 -1
  197. data/chef/travis-cookbooks/worker_host/travis_worker/attributes/default.rb +10 -3
  198. data/chef/travis-cookbooks/worker_host/travis_worker/files/default/signal_wrapper.rb +22 -0
  199. data/chef/travis-cookbooks/worker_host/travis_worker/metadata.rb +2 -2
  200. data/chef/travis-cookbooks/worker_host/travis_worker/recipes/bluebox.rb +97 -0
  201. data/chef/travis-cookbooks/worker_host/travis_worker/recipes/default.rb +25 -15
  202. data/chef/travis-cookbooks/worker_host/travis_worker/templates/default/sv-travis-worker-run.erb +1 -1
  203. data/chef/travis-cookbooks/worker_host/travis_worker/templates/default/worker-bluebox.yml.erb +21 -0
  204. data/chef/travis-cookbooks/worker_host/travis_worker/templates/default/worker.yml.erb +0 -4
  205. data/chef/travis-cookbooks/worker_host/travis_worker_collectd/metadata.rb +1 -0
  206. data/chef/travis-cookbooks/worker_host/travis_worker_collectd/recipes/bluebox.rb +15 -0
  207. data/chef/travis-cookbooks/worker_host/travis_worker_collectd/recipes/default.rb +1 -0
  208. data/chef/travis-cookbooks/worker_host/users/recipes/default.rb +5 -0
  209. data/cookbooks/.gitkeep +3 -0
  210. data/lib/lobot.rb +8 -4
  211. data/lib/lobot/amazon.rb +33 -19
  212. data/lib/lobot/cli.rb +70 -46
  213. data/lib/lobot/config.rb +151 -19
  214. data/lib/lobot/configuration_wizard.rb +117 -0
  215. data/lib/lobot/keychain.rb +36 -0
  216. data/lib/lobot/password.rb +13 -0
  217. data/lib/lobot/sobo.rb +57 -13
  218. data/lib/lobot/templates/default_rails_build_script.sh +13 -0
  219. data/lib/lobot/version.rb +2 -2
  220. data/lobot.gemspec +4 -5
  221. data/script/bootstrap_server.sh +1 -1
  222. data/script/ci_build.sh +13 -0
  223. data/spec/assets/test_cert.crt +18 -0
  224. data/spec/fixtures/ssh_keys/vagrant_test_key +27 -0
  225. data/spec/fixtures/ssh_keys/vagrant_test_key.pub +1 -0
  226. data/spec/lib/lobot/amazon_spec.rb +80 -39
  227. data/spec/lib/lobot/cli_spec.rb +223 -154
  228. data/spec/lib/lobot/config_spec.rb +207 -5
  229. data/spec/lib/lobot/configuration_wizard_spec.rb +347 -0
  230. data/spec/lib/lobot/keychain_spec.rb +33 -0
  231. data/spec/lib/lobot/password_spec.rb +15 -0
  232. data/spec/spec_helper.rb +19 -1
  233. data/templates/Gemfile-remote +4 -0
  234. metadata +83 -100
  235. data/chef/travis-cookbooks/ci_environment/rvm/files/default/gemsets/ruby/1.8.6/global.gems +0 -2
  236. data/chef/travis-cookbooks/ci_environment/travis_build_environment/files/default/root/dot_bashrc.sh +0 -86
  237. data/chef/travis-cookbooks/ci_environment/zeromq/attributes/default.rb +0 -7
  238. data/chef/travis-cookbooks/messaging_broker/build-essential/README.md +0 -24
  239. data/chef/travis-cookbooks/messaging_broker/build-essential/metadata.rb +0 -10
  240. data/chef/travis-cookbooks/messaging_broker/emacs/metadata.rb +0 -11
  241. data/chef/travis-cookbooks/messaging_broker/emacs/recipes/default.rb +0 -21
  242. data/chef/travis-cookbooks/messaging_broker/erlang/attributes/default.rb +0 -1
  243. data/chef/travis-cookbooks/messaging_broker/erlang/metadata.rb +0 -11
  244. data/chef/travis-cookbooks/messaging_broker/erlang/recipes/default.rb +0 -27
  245. data/chef/travis-cookbooks/messaging_broker/git/README.rdoc +0 -37
  246. data/chef/travis-cookbooks/messaging_broker/git/metadata.rb +0 -16
  247. data/chef/travis-cookbooks/messaging_broker/git/recipes/default.rb +0 -24
  248. data/chef/travis-cookbooks/messaging_broker/git/recipes/server.rb +0 -34
  249. data/chef/travis-cookbooks/messaging_broker/git/templates/default/sv-git-daemon-log-run.erb +0 -2
  250. data/chef/travis-cookbooks/messaging_broker/git/templates/default/sv-git-daemon-run.erb +0 -3
  251. data/chef/travis-cookbooks/messaging_broker/haproxy/README.md +0 -79
  252. data/chef/travis-cookbooks/messaging_broker/haproxy/attributes/default.rb +0 -22
  253. data/chef/travis-cookbooks/messaging_broker/haproxy/metadata.rb +0 -13
  254. data/chef/travis-cookbooks/messaging_broker/haproxy/recipes/app_lb.rb +0 -50
  255. data/chef/travis-cookbooks/messaging_broker/haproxy/recipes/default.rb +0 -42
  256. data/chef/travis-cookbooks/messaging_broker/haproxy/templates/default/haproxy-app_lb.cfg.erb +0 -34
  257. data/chef/travis-cookbooks/messaging_broker/haproxy/templates/default/haproxy-default.erb +0 -4
  258. data/chef/travis-cookbooks/messaging_broker/haproxy/templates/default/haproxy.cfg.erb +0 -27
  259. data/chef/travis-cookbooks/messaging_broker/iptables/definitions/iptables_rule.rb +0 -35
  260. data/chef/travis-cookbooks/messaging_broker/iptables/files/default/rebuild-iptables +0 -284
  261. data/chef/travis-cookbooks/messaging_broker/iptables/metadata.rb +0 -10
  262. data/chef/travis-cookbooks/messaging_broker/iptables/recipes/default.rb +0 -50
  263. data/chef/travis-cookbooks/messaging_broker/iptables/templates/default/all_established.erb +0 -2
  264. data/chef/travis-cookbooks/messaging_broker/iptables/templates/default/all_icmp.erb +0 -2
  265. data/chef/travis-cookbooks/messaging_broker/iptables/templates/default/iptables_load.erb +0 -3
  266. data/chef/travis-cookbooks/messaging_broker/openssl/README.md +0 -37
  267. data/chef/travis-cookbooks/messaging_broker/openssl/metadata.rb +0 -8
  268. data/chef/travis-cookbooks/messaging_broker/rabbitmq/README.md +0 -86
  269. data/chef/travis-cookbooks/messaging_broker/rabbitmq/attributes/default.rb +0 -10
  270. data/chef/travis-cookbooks/messaging_broker/rabbitmq/metadata.rb +0 -63
  271. data/chef/travis-cookbooks/messaging_broker/rabbitmq/providers/user.rb +0 -66
  272. data/chef/travis-cookbooks/messaging_broker/rabbitmq/providers/vhost.rb +0 -34
  273. data/chef/travis-cookbooks/messaging_broker/rabbitmq/recipes/cluster.rb +0 -35
  274. data/chef/travis-cookbooks/messaging_broker/rabbitmq/recipes/default.rb +0 -51
  275. data/chef/travis-cookbooks/messaging_broker/rabbitmq/resources/user.rb +0 -25
  276. data/chef/travis-cookbooks/messaging_broker/rabbitmq/templates/default/doterlang.cookie.erb +0 -1
  277. data/chef/travis-cookbooks/messaging_broker/rabbitmq/templates/default/rabbitmq-env.conf.erb +0 -10
  278. data/chef/travis-cookbooks/messaging_broker/rabbitmq/templates/default/rabbitmq_cluster.config.erb +0 -5
  279. data/ci_build.sh +0 -20
  280. data/docs/ci_yml.md +0 -39
  281. data/features/ci.feature +0 -29
  282. data/features/config/secrets.yml.example +0 -4
  283. data/features/step_definitions/ci_steps.rb +0 -137
  284. data/features/support/env.rb +0 -12
  285. data/lib/generators/lobot/USAGE +0 -15
  286. data/lib/generators/lobot/config_generator.rb +0 -141
  287. data/lib/generators/lobot/install_generator.rb +0 -25
  288. data/lib/generators/lobot/templates/Capfile +0 -6
  289. data/lib/generators/lobot/templates/ci.yml +0 -22
  290. data/lib/generators/lobot/templates/ci_build.sh +0 -22
  291. data/lib/generators/lobot/templates/deploy-ci.rb +0 -7
  292. data/lib/generators/lobot/templates/soloistrc +0 -23
  293. data/lib/lobot/jenkins.rb +0 -17
  294. data/lib/lobot/railtie.rb +0 -20
  295. data/lib/lobot/recipes/ci.rb +0 -78
  296. data/lib/lobot/tasks/ci.rake +0 -93
  297. data/spec/lib/lobot/jenkins_spec.rb +0 -14
@@ -0,0 +1,213 @@
1
+ ## Cookbook testing
2
+
3
+ Reference documentation for testing cookbooks for correctness
4
+ in a lightweight manner.
5
+
6
+ ## Purpose
7
+
8
+ We set out at the Chefconf 2012 Hackday to test our cookbooks for correctness
9
+ without doing a full convergence run. Some of our community cookbooks such
10
+ as `gitlab` or `ruby_build` may take up to 30 minutes to fully converge.
11
+ So a quick sanity check was needed to test the inputs for correctness.
12
+
13
+ A major problem with developing cross-platform cookbooks is this ugly
14
+ stair-step pattern of case switches on platform and platform_version
15
+ attributes. This leads to hard to read recipe code, and additional
16
+ maintenance overhead in correcting platform cases on a constant basis.
17
+ Recipe tend to take on quirks for edge cases, as conditionals are stacked
18
+ in inconsistest and unpredictable ways.
19
+
20
+ Fletcher had done some previous lint checking on some of his cookbooks
21
+ with foodcritic and [Travis CI](http://travis-ci.org). We wished to
22
+ incorporate attribute sanity checking. Both our testing cases are added
23
+ as a `rake` task which can be run from a development workstation
24
+ or CI platform such as Travis or Jenkins. The biggest advantage we found
25
+ of this testing method was being able to run quick attribute tests in
26
+ **one-hundredth of a second**. The biggest drawback in spec tests are
27
+ having to write tests which are very explicit.
28
+
29
+ The attribute tests uses minitest to mock a node and then check the attributes
30
+ for any platform edge cases as shipped with the cookbook. Since there is
31
+ no way for a cookbook developer to know how attributes will be overridden
32
+ by the end-user, the only thing you might reasonably test is what ships
33
+ with the cookbook.
34
+
35
+ We stopped before testing the Resource Collection, or integrating
36
+ `minitest-handler` post-convergence testing. A good `minitest-handler`
37
+ case for this cookbook would be to ensure a node does not set itself
38
+ as an upstream ntp `server` or `peer` of itself. As different testing
39
+ methods for Chef emerge and mature, this proof-of-concept should be
40
+ revisited to serve as a reference case.
41
+
42
+ ## Minitest Spec Testing HOWTO
43
+
44
+ ### 1. Identification
45
+
46
+ Identify your default attribute inputs, and all edge cases.
47
+
48
+ Refactor the code for readability, if necessary to identify all such inputs.
49
+
50
+ ### 2. Development testing files
51
+
52
+ #### 2.1 Test and Support file
53
+
54
+ Foodcritic may identify testing directories as cookbooks if attributes, or recipes, subdirectories are used.
55
+ Otherwise the testing directory structure does not matter much. Following Ruby conventions, you should probably use `test` or `spec`.
56
+
57
+ Create a test directory structure.
58
+
59
+ ```sh
60
+ cd chef-repo/cookbooks/<cookbook dir>
61
+ mkdir -p test/support
62
+ mkdir -p test/<cookbook name>
63
+ ```
64
+
65
+ Populate your Gemfile for the rake task, and optionally Travis.
66
+
67
+ ```ruby
68
+ # test/support/Gemfile
69
+ source "https://rubygems.org"
70
+ gem "rake"
71
+ gem "minitest"
72
+ gem "chef", ">= 10.12.0"
73
+ gem "foodcritic"
74
+ ```
75
+
76
+ Create a spec_helper stub to require testing Rubies.
77
+
78
+ ```ruby
79
+ # test/support/spec_helper.rb
80
+ gem 'minitest'
81
+ require 'minitest/autorun'
82
+ ```
83
+
84
+ Create a <name of test>_spec.rb test file. Following is a partial NTP attributes example.
85
+
86
+ ```ruby
87
+ # test/ntp/attributes_spec.rb
88
+ require File.join(File.dirname(__FILE__), %w{.. support spec_helper})
89
+ require 'chef/node'
90
+ require 'chef/platform'
91
+
92
+ describe 'Ntp::Attributes::Default' do
93
+ let(:attr_ns) { 'ntp' }
94
+
95
+ before do
96
+ @node = Chef::Node.new
97
+ @node.consume_external_attrs(Mash.new(ohai_data), {})
98
+ @node.from_file(File.join(File.dirname(__FILE__), %w{.. .. attributes default.rb}))
99
+ end
100
+
101
+ # Test unknown edge case
102
+ describe "for unknown platform" do
103
+ let(:ohai_data) do
104
+ { :platform => "unknown", :platform_version => '3.14' }
105
+ end
106
+
107
+ it "sets a package list" do
108
+ @node[attr_ns]['packages'].must_equal %w{ ntp ntpdate }
109
+ end
110
+ end #end unknown platform tests
111
+
112
+ # Test CentOS 6 edge case
113
+ describe "for Centos 6 platform" do
114
+ let(:ohai_data) do
115
+ { :platform => "centos", :platform_version => '6.2' }
116
+ end
117
+
118
+ it "sets the service name to ntpd" do
119
+ @node[attr_ns]['service'].must_equal "ntpd"
120
+ end
121
+ end #end CentOS 6 tests
122
+ end
123
+ ```
124
+
125
+ #### 2.2 Set up Rake tasks
126
+
127
+ Once you have one or two test cases in your *_spec.rb files, the next step is creating a Rakefile for running the tests.
128
+ We will set up a task for the minitest spec tests and a foodcritic run for this example. The Rakefile should
129
+ be placed at the top-level of the cookbook you wish to test.
130
+
131
+ ```ruby
132
+ #!/usr/bin/env rake
133
+ require 'rake/testtask'
134
+
135
+ Rake::TestTask.new do |t|
136
+ t.libs.push "lib"
137
+ t.test_files = FileList['test/**/*_spec.rb']
138
+ t.verbose = true
139
+ end
140
+
141
+ desc "Runs foodcritic linter"
142
+ task :foodcritic do
143
+ if Gem::Version.new("1.9.2") <= Gem::Version.new(RUBY_VERSION.dup)
144
+ sh "foodcritic --epic-fail any ."
145
+ else
146
+ puts "WARN: foodcritic run is skipped as Ruby #{RUBY_VERSION} is < 1.9.2."
147
+ end
148
+ end
149
+
150
+ task :default => [ 'test', 'foodcritic' ]
151
+ ```
152
+
153
+ Now you should be able to run `rake` within your cookbook directory you wish to test. If you are on a bash shell, you can run `echo $?` and see if your rake task returned a `0` which means everything passed.
154
+
155
+ ### 3. Exclude your test directories from knife upload.
156
+
157
+ It may be a good idea to exclude your development files from getting uploaded to the Chef server, or Opscode platform. In this case you should populate a chefignore file in the top-level of the cookbook directory you wish to test.
158
+
159
+ ```ruby
160
+ # Put files/directories that should be ignored in this file.
161
+ # Lines that start with '# ' are comments.
162
+
163
+ # gitignore
164
+ \.gitignore
165
+
166
+ # tests
167
+ */test/*
168
+ \.travis.yml
169
+ Rakefile
170
+ ```
171
+
172
+ #### 4. Travis CI integration
173
+
174
+ Once you have completed the previous steps, Travis CI integration is actually quite simple.
175
+
176
+ First, you need to click on the link that says `Sign in with Github` and authorize the Travis CI application to read your projects from Github. Next, you need to authorize Travis to build one, or all, of your projects.
177
+
178
+ Finally, you need to set up a .travis.yml file, here is an example Travis build file. Drop this file in the top-level directory of the cookbook you wish to test.
179
+
180
+ ```ruby
181
+ language: ruby
182
+ gemfile:
183
+ - test/support/Gemfile
184
+ rvm:
185
+ - 1.9.3
186
+ script: BUNDLE_GEMFILE=test/support/Gemfile bundle exec rake test foodcritic
187
+ ```
188
+
189
+ If you want a shiny red/green, badge of shame/honor in your README, then add this little snippet to your Markdown. Substituting your github username, and project name in the link.
190
+
191
+ [![Build Status](https://secure.travis-ci.org/<github username>/<project name>.png?branch=master)](http://travis-ci.org/<github username>/<project name>)
192
+
193
+ When you push your code up to github, you should receive an e-mail from Travis every time your tests fail.
194
+
195
+ ## License and Author
196
+
197
+ Author:: Eric G. Wolfe (<wolfe21@marshall.edu>)
198
+ Author:: Fletcher Nichol (<fletcher@nichol.ca>)
199
+
200
+ Copyright 2012, Eric G. Wolfe
201
+ Copyright 2012, Fletcher Nichol
202
+
203
+ Licensed under the Apache License, Version 2.0 (the "License");
204
+ you may not use this file except in compliance with the License.
205
+ You may obtain a copy of the License at
206
+
207
+ http://www.apache.org/licenses/LICENSE-2.0
208
+
209
+ Unless required by applicable law or agreed to in writing, software
210
+ distributed under the License is distributed on an "AS IS" BASIS,
211
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
212
+ See the License for the specific language governing permissions and
213
+ limitations under the License.
@@ -0,0 +1,54 @@
1
+ #
2
+ # Cookbook Name:: ntp
3
+ # Attributes:: default
4
+ #
5
+ # Author:: Joshua Timberman (<joshua@opscode.com>)
6
+ #
7
+ # Copyright 2009-2011, Opscode, Inc.
8
+ #
9
+ # Licensed under the Apache License, Version 2.0 (the "License");
10
+ # you may not use this file except in compliance with the License.
11
+ # You may obtain a copy of the License at
12
+ #
13
+ # http://www.apache.org/licenses/LICENSE-2.0
14
+ #
15
+ # Unless required by applicable law or agreed to in writing, software
16
+ # distributed under the License is distributed on an "AS IS" BASIS,
17
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ # See the License for the specific language governing permissions and
19
+ # limitations under the License.
20
+ #
21
+
22
+ # default attributes for all platforms
23
+ default['ntp']['servers'] = %w{ 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org }
24
+ default['ntp']['peers'] = Array.new
25
+ default['ntp']['restrictions'] = Array.new
26
+
27
+ default['ntp']['packages'] = %w{ ntp ntpdate }
28
+ default['ntp']['service'] = "ntp"
29
+ default['ntp']['varlibdir'] = "/var/lib/ntp"
30
+ default['ntp']['driftfile'] = "#{node['ntp']['varlibdir']}/ntp.drift"
31
+ default['ntp']['statsdir'] = "/var/log/ntpstats/"
32
+ default['ntp']['conf_owner'] = "root"
33
+ default['ntp']['conf_group'] = "root"
34
+ default['ntp']['var_owner'] = "ntp"
35
+ default['ntp']['var_group'] = "ntp"
36
+ default['ntp']['leapfile'] = "/etc/ntp.leapseconds"
37
+
38
+ # overrides on a platform-by-platform basis
39
+ case platform
40
+ when "redhat","centos","fedora","scientific","amazon","oracle"
41
+ default['ntp']['service'] = "ntpd"
42
+ default['ntp']['packages'] = %w{ ntp }
43
+ if node['platform_version'].to_i >= 6
44
+ default['ntp']['packages'] = %w{ ntp ntpdate }
45
+ end
46
+ when "freebsd"
47
+ default['ntp']['service'] = "ntpd"
48
+ default['ntp']['varlibdir'] = "/var/db"
49
+ default['ntp']['driftfile'] = "#{node['ntp']['varlibdir']}/ntpd.drift"
50
+ default['ntp']['statsdir'] = "#{node['ntp']['varlibdir']}/ntpstats"
51
+ default['ntp']['packages'] = %w{ ntp }
52
+ default['ntp']['conf_group'] = "wheel"
53
+ default['ntp']['var_group'] = "wheel"
54
+ end
@@ -1,8 +1,10 @@
1
1
  #
2
- # Cookbook Name:: rabbitmq
3
- # Resource:: vhost
2
+ # Cookbook Name:: ntp
3
+ # Attributes:: default
4
4
  #
5
- # Copyright 2011, Opscode, Inc.
5
+ # Author:: Joshua Timberman (<joshua@opscode.com>)
6
+ #
7
+ # Copyright 2009-2011, Opscode, Inc.
6
8
  #
7
9
  # Licensed under the Apache License, Version 2.0 (the "License");
8
10
  # you may not use this file except in compliance with the License.
@@ -16,7 +18,4 @@
16
18
  # See the License for the specific language governing permissions and
17
19
  # limitations under the License.
18
20
  #
19
-
20
- actions :add, :delete
21
-
22
- attribute :vhost, :kind_of => String, :name_attribute => true
21
+ default['ntp']['ntpdate']['disable'] = false
@@ -0,0 +1,19 @@
1
+ # Put files/directories that should be ignored in this file.
2
+ # Lines that start with '# ' are comments.
3
+
4
+ # gitignore
5
+ \.gitignore
6
+
7
+ # emacs
8
+ *~
9
+
10
+ # vim
11
+ *.sw[a-z]
12
+
13
+ # subversion
14
+ */.svn/*
15
+
16
+ # tests
17
+ */test/*
18
+ \.travis.yml
19
+ Rakefile
@@ -0,0 +1,222 @@
1
+ #
2
+ # In the following text, the symbol '#' introduces
3
+ # a comment, which continues from that symbol until
4
+ # the end of the line. A plain comment line has a
5
+ # whitespace character following the comment indicator.
6
+ # There are also special comment lines defined below.
7
+ # A special comment will always have a non-whitespace
8
+ # character in column 2.
9
+ #
10
+ # A blank line should be ignored.
11
+ #
12
+ # The following table shows the corrections that must
13
+ # be applied to compute International Atomic Time (TAI)
14
+ # from the Coordinated Universal Time (UTC) values that
15
+ # are transmitted by almost all time services.
16
+ #
17
+ # The first column shows an epoch as a number of seconds
18
+ # since 1900.0 and the second column shows the number of
19
+ # seconds that must be added to UTC to compute TAI for
20
+ # any timestamp at or after that epoch. The value on
21
+ # each line is valid from the indicated initial instant
22
+ # until the epoch given on the next one or indefinitely
23
+ # into the future if there is no next line.
24
+ # (The comment on each line shows the representation of
25
+ # the corresponding initial epoch in the usual
26
+ # day-month-year format. The epoch always begins at
27
+ # 00:00:00 UTC on the indicated day. See Note 5 below.)
28
+ #
29
+ # Important notes:
30
+ #
31
+ # 1. Coordinated Universal Time (UTC) is often referred to
32
+ # as Greenwich Mean Time (GMT). The GMT time scale is no
33
+ # longer used, and the use of GMT to designate UTC is
34
+ # discouraged.
35
+ #
36
+ # 2. The UTC time scale is realized by many national
37
+ # laboratories and timing centers. Each laboratory
38
+ # identifies its realization with its name: Thus
39
+ # UTC(NIST), UTC(USNO), etc. The differences among
40
+ # these different realizations are typically on the
41
+ # order of a few nanoseconds (i.e., 0.000 000 00x s)
42
+ # and can be ignored for many purposes. These differences
43
+ # are tabulated in Circular T, which is published monthly
44
+ # by the International Bureau of Weights and Measures
45
+ # (BIPM). See www.bipm.fr for more information.
46
+ #
47
+ # 3. The current defintion of the relationship between UTC
48
+ # and TAI dates from 1 January 1972. A number of different
49
+ # time scales were in use before than epoch, and it can be
50
+ # quite difficult to compute precise timestamps and time
51
+ # intervals in those "prehistoric" days. For more information,
52
+ # consult:
53
+ #
54
+ # The Explanatory Supplement to the Astronomical
55
+ # Ephemeris.
56
+ # or
57
+ # Terry Quinn, "The BIPM and the Accurate Measurement
58
+ # of Time," Proc. of the IEEE, Vol. 79, pp. 894-905,
59
+ # July, 1991.
60
+ #
61
+ # 4. The insertion of leap seconds into UTC is currently the
62
+ # responsibility of the International Earth Rotation Service,
63
+ # which is located at the Paris Observatory:
64
+ #
65
+ # Central Bureau of IERS
66
+ # 61, Avenue de l'Observatoire
67
+ # 75014 Paris, France.
68
+ #
69
+ # Leap seconds are announced by the IERS in its Bulletin C
70
+ #
71
+ # See hpiers.obspm.fr or www.iers.org for more details.
72
+ #
73
+ # All national laboratories and timing centers use the
74
+ # data from the BIPM and the IERS to construct their
75
+ # local realizations of UTC.
76
+ #
77
+ # Although the definition also includes the possibility
78
+ # of dropping seconds ("negative" leap seconds), this has
79
+ # never been done and is unlikely to be necessary in the
80
+ # foreseeable future.
81
+ #
82
+ # 5. If your system keeps time as the number of seconds since
83
+ # some epoch (e.g., NTP timestamps), then the algorithm for
84
+ # assigning a UTC time stamp to an event that happens during a positive
85
+ # leap second is not well defined. The official name of that leap
86
+ # second is 23:59:60, but there is no way of representing that time
87
+ # in these systems.
88
+ # Many systems of this type effectively stop the system clock for
89
+ # one second during the leap second and use a time that is equivalent
90
+ # to 23:59:59 UTC twice. For these systems, the corresponding TAI
91
+ # timestamp would be obtained by advancing to the next entry in the
92
+ # following table when the time equivalent to 23:59:59 UTC
93
+ # is used for the second time. Thus the leap second which
94
+ # occurred on 30 June 1972 at 23:59:59 UTC would have TAI
95
+ # timestamps computed as follows:
96
+ #
97
+ # ...
98
+ # 30 June 1972 23:59:59 (2287785599, first time): TAI= UTC + 10 seconds
99
+ # 30 June 1972 23:59:60 (2287785599,second time): TAI= UTC + 11 seconds
100
+ # 1 July 1972 00:00:00 (2287785600) TAI= UTC + 11 seconds
101
+ # ...
102
+ #
103
+ # If your system realizes the leap second by repeating 00:00:00 UTC twice
104
+ # (this is possible but not usual), then the advance to the next entry
105
+ # in the table must occur the second time that a time equivlent to
106
+ # 00:00:00 UTC is used. Thus, using the same example as above:
107
+ #
108
+ # ...
109
+ # 30 June 1972 23:59:59 (2287785599): TAI= UTC + 10 seconds
110
+ # 30 June 1972 23:59:60 (2287785600, first time): TAI= UTC + 10 seconds
111
+ # 1 July 1972 00:00:00 (2287785600,second time): TAI= UTC + 11 seconds
112
+ # ...
113
+ #
114
+ # in both cases the use of timestamps based on TAI produces a smooth
115
+ # time scale with no discontinuity in the time interval.
116
+ #
117
+ # This complexity would not be needed for negative leap seconds (if they
118
+ # are ever used). The UTC time would skip 23:59:59 and advance from
119
+ # 23:59:58 to 00:00:00 in that case. The TAI offset would decrease by
120
+ # 1 second at the same instant. This is a much easier situation to deal
121
+ # with, since the difficulty of unambiguously representing the epoch
122
+ # during the leap second does not arise.
123
+ #
124
+ # Questions or comments to:
125
+ # Rich Schmidt
126
+ # Time Service Department
127
+ # US Naval Observatory
128
+ # Washington, DC
129
+ # rich.schmidt@usno.navy.mil
130
+ #
131
+ # Last Update of leap second values: 10 Jan 2012
132
+ #
133
+ # The following line shows this last update date in NTP timestamp
134
+ # format. This is the date on which the most recent change to
135
+ # the leap second data was added to the file. This line can
136
+ # be identified by the unique pair of characters in the first two
137
+ # columns as shown below.
138
+ #
139
+ #$ 3535142400
140
+ #
141
+ # The data in this file will be updated periodically as new leap
142
+ # seconds are announced. In addition to being entered on the line
143
+ # above, the update time (in NTP format) will be added to the basic
144
+ # file name leap-seconds to form the name leap-seconds.<NTP TIME>.
145
+ # In addition, the generic name leap-seconds.list will always point to
146
+ # the most recent version of the file.
147
+ #
148
+ # This update procedure will be performed only when a new leap second
149
+ # is announced.
150
+ #
151
+ # The following entry specifies the expiration date of the data
152
+ # in this file in units of seconds since 1900.0. This expiration date
153
+ # will be changed at least twice per year whether or not a new leap
154
+ # second is announced. These semi-annual changes will be made no
155
+ # later than 1 June and 1 December of each year to indicate what
156
+ # action (if any) is to be taken on 30 June and 31 December,
157
+ # respectively. (These are the customary effective dates for new
158
+ # leap seconds.) This expiration date will be identified by a
159
+ # unique pair of characters in columns 1 and 2 as shown below.
160
+ # In the unlikely event that a leap second is announced with an
161
+ # effective date other than 30 June or 31 December, then this
162
+ # file will be edited to include that leap second as soon as it is
163
+ # announced or at least one month before the effective date
164
+ # (whichever is later).
165
+ # If an announcement by the IERS specifies that no leap second is
166
+ # scheduled, then only the expiration date of the file will
167
+ # be advanced to show that the information in the file is still
168
+ # current -- the update time stamp, the data and the name of the file
169
+ # will not change.
170
+ #
171
+ # Updated through IERS Bulletin C43
172
+ # File expires on: 28 Dec 2012
173
+ #
174
+ #@ 3565641600
175
+ #
176
+ 2272060800 10 # 1 Jan 1972
177
+ 2287785600 11 # 1 Jul 1972
178
+ 2303683200 12 # 1 Jan 1973
179
+ 2335219200 13 # 1 Jan 1974
180
+ 2366755200 14 # 1 Jan 1975
181
+ 2398291200 15 # 1 Jan 1976
182
+ 2429913600 16 # 1 Jan 1977
183
+ 2461449600 17 # 1 Jan 1978
184
+ 2492985600 18 # 1 Jan 1979
185
+ 2524521600 19 # 1 Jan 1980
186
+ 2571782400 20 # 1 Jul 1981
187
+ 2603318400 21 # 1 Jul 1982
188
+ 2634854400 22 # 1 Jul 1983
189
+ 2698012800 23 # 1 Jul 1985
190
+ 2776982400 24 # 1 Jan 1988
191
+ 2840140800 25 # 1 Jan 1990
192
+ 2871676800 26 # 1 Jan 1991
193
+ 2918937600 27 # 1 Jul 1992
194
+ 2950473600 28 # 1 Jul 1993
195
+ 2982009600 29 # 1 Jul 1994
196
+ 3029443200 30 # 1 Jan 1996
197
+ 3076704000 31 # 1 Jul 1997
198
+ 3124137600 32 # 1 Jan 1999
199
+ 3345062400 33 # 1 Jan 2006
200
+ 3439756800 34 # 1 Jan 2009
201
+ 3550089600 35 # 1 Jul 2012
202
+ 3565987200 36 # 1 Jan 2013
203
+ 3581625600 37 # 1 Jul 2013
204
+ 3597523200 38 # 1 Jan 2014
205
+ 3613161600 39 # 1 Jul 2014
206
+ 3629059200 40 # 1 Jan 2015
207
+ #
208
+ # the following special comment contains the
209
+ # hash value of the data in this file computed
210
+ # use the secure hash algorithm as specified
211
+ # by FIPS 180-1. See the files in ~/sha for
212
+ # the details of how this hash value is
213
+ # computed. Note that the hash computation
214
+ # ignores comments and whitespace characters
215
+ # in data lines. It includes the NTP values
216
+ # of both the last modification time and the
217
+ # expiration time of the file, but not the
218
+ # white space on those lines.
219
+ # the hash line is also ignored in the
220
+ # computation.
221
+ #
222
+ #h b2a5e90a 313a6ce afe814f3 46bff6d8 875672e2