pantry 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +19 -0
  5. data/Gemfile +15 -0
  6. data/Guardfile +16 -0
  7. data/LICENSE +20 -0
  8. data/README.md +53 -0
  9. data/Rakefile +18 -0
  10. data/Vagrantfile +86 -0
  11. data/bin/pantry +11 -0
  12. data/bin/pantry-client +38 -0
  13. data/bin/pantry-server +33 -0
  14. data/dist/client.yml +79 -0
  15. data/dist/server.yml +56 -0
  16. data/dist/upstart/pantry-client.conf +12 -0
  17. data/dist/upstart/pantry-server.conf +12 -0
  18. data/doc/message_packet.dot +19 -0
  19. data/doc/message_packet.dot.png +0 -0
  20. data/doc/network_topology.dot +42 -0
  21. data/doc/network_topology.dot.png +0 -0
  22. data/lib/celluloid_zmq_patches.rb +16 -0
  23. data/lib/opt_parse_plus.rb +184 -0
  24. data/lib/pantry.rb +197 -0
  25. data/lib/pantry/cli.rb +154 -0
  26. data/lib/pantry/client.rb +131 -0
  27. data/lib/pantry/client_info.rb +34 -0
  28. data/lib/pantry/client_registry.rb +104 -0
  29. data/lib/pantry/command.rb +194 -0
  30. data/lib/pantry/command_handler.rb +53 -0
  31. data/lib/pantry/command_line.rb +115 -0
  32. data/lib/pantry/commands/create_client.rb +30 -0
  33. data/lib/pantry/commands/download_directory.rb +35 -0
  34. data/lib/pantry/commands/echo.rb +32 -0
  35. data/lib/pantry/commands/edit_application.rb +60 -0
  36. data/lib/pantry/commands/register_client.rb +38 -0
  37. data/lib/pantry/commands/status.rb +78 -0
  38. data/lib/pantry/commands/sync_directory.rb +50 -0
  39. data/lib/pantry/commands/update_application.rb +45 -0
  40. data/lib/pantry/commands/upload_file.rb +68 -0
  41. data/lib/pantry/communication.rb +20 -0
  42. data/lib/pantry/communication/client.rb +75 -0
  43. data/lib/pantry/communication/client_filter.rb +117 -0
  44. data/lib/pantry/communication/file_service.rb +125 -0
  45. data/lib/pantry/communication/file_service/file_progress.rb +164 -0
  46. data/lib/pantry/communication/file_service/receive_file.rb +97 -0
  47. data/lib/pantry/communication/file_service/send_file.rb +74 -0
  48. data/lib/pantry/communication/publish_socket.rb +20 -0
  49. data/lib/pantry/communication/reading_socket.rb +89 -0
  50. data/lib/pantry/communication/receive_socket.rb +23 -0
  51. data/lib/pantry/communication/security.rb +44 -0
  52. data/lib/pantry/communication/security/authentication.rb +98 -0
  53. data/lib/pantry/communication/security/curve_key_store.rb +120 -0
  54. data/lib/pantry/communication/security/curve_security.rb +70 -0
  55. data/lib/pantry/communication/security/null_security.rb +32 -0
  56. data/lib/pantry/communication/send_socket.rb +19 -0
  57. data/lib/pantry/communication/serialize_message.rb +84 -0
  58. data/lib/pantry/communication/server.rb +97 -0
  59. data/lib/pantry/communication/subscribe_socket.rb +33 -0
  60. data/lib/pantry/communication/wait_list.rb +45 -0
  61. data/lib/pantry/communication/writing_socket.rb +46 -0
  62. data/lib/pantry/config.rb +182 -0
  63. data/lib/pantry/file_editor.rb +67 -0
  64. data/lib/pantry/logger.rb +78 -0
  65. data/lib/pantry/message.rb +134 -0
  66. data/lib/pantry/multi_command.rb +36 -0
  67. data/lib/pantry/server.rb +132 -0
  68. data/lib/pantry/test/acceptance.rb +83 -0
  69. data/lib/pantry/test/support/fake_fs.rb +31 -0
  70. data/lib/pantry/test/support/matchers.rb +13 -0
  71. data/lib/pantry/test/support/minitest.rb +13 -0
  72. data/lib/pantry/test/support/mock_ui.rb +23 -0
  73. data/lib/pantry/test/unit.rb +13 -0
  74. data/lib/pantry/ui.rb +68 -0
  75. data/lib/pantry/version.rb +3 -0
  76. data/pantry.gemspec +40 -0
  77. data/test/acceptance/cli/error_handling_test.rb +7 -0
  78. data/test/acceptance/cli/execute_command_on_clients_test.rb +32 -0
  79. data/test/acceptance/cli/request_info_from_server_test.rb +44 -0
  80. data/test/acceptance/communication/client_requests_info_from_server_test.rb +28 -0
  81. data/test/acceptance/communication/heartbeat_test.rb +19 -0
  82. data/test/acceptance/communication/pub_sub_communication_test.rb +53 -0
  83. data/test/acceptance/communication/security_test.rb +117 -0
  84. data/test/acceptance/communication/server_requests_info_from_client_test.rb +41 -0
  85. data/test/acceptance/test_helper.rb +25 -0
  86. data/test/fixtures/config.yml +22 -0
  87. data/test/fixtures/empty.yml +2 -0
  88. data/test/fixtures/file_to_upload +3 -0
  89. data/test/root_dir/.gitkeep +0 -0
  90. data/test/unit/cli_test.rb +173 -0
  91. data/test/unit/client_registry_test.rb +61 -0
  92. data/test/unit/client_test.rb +128 -0
  93. data/test/unit/command_handler_test.rb +79 -0
  94. data/test/unit/command_line_test.rb +5 -0
  95. data/test/unit/command_test.rb +206 -0
  96. data/test/unit/commands/create_client_test.rb +25 -0
  97. data/test/unit/commands/download_directory_test.rb +58 -0
  98. data/test/unit/commands/echo_test.rb +22 -0
  99. data/test/unit/commands/edit_application_test.rb +84 -0
  100. data/test/unit/commands/register_client_test.rb +41 -0
  101. data/test/unit/commands/status_test.rb +81 -0
  102. data/test/unit/commands/sync_directory_test.rb +75 -0
  103. data/test/unit/commands/update_application_test.rb +35 -0
  104. data/test/unit/commands/upload_file_test.rb +51 -0
  105. data/test/unit/communication/client_filter_test.rb +262 -0
  106. data/test/unit/communication/client_test.rb +99 -0
  107. data/test/unit/communication/file_service/receive_file_test.rb +214 -0
  108. data/test/unit/communication/file_service/send_file_test.rb +110 -0
  109. data/test/unit/communication/file_service_test.rb +56 -0
  110. data/test/unit/communication/publish_socket_test.rb +19 -0
  111. data/test/unit/communication/reading_socket_test.rb +110 -0
  112. data/test/unit/communication/receive_socket_test.rb +20 -0
  113. data/test/unit/communication/security/authentication_test.rb +97 -0
  114. data/test/unit/communication/security/curve_key_store_test.rb +110 -0
  115. data/test/unit/communication/security/curve_security_test.rb +44 -0
  116. data/test/unit/communication/security/null_security_test.rb +15 -0
  117. data/test/unit/communication/security_test.rb +49 -0
  118. data/test/unit/communication/send_socket_test.rb +19 -0
  119. data/test/unit/communication/serialize_message_test.rb +128 -0
  120. data/test/unit/communication/server_test.rb +106 -0
  121. data/test/unit/communication/subscribe_socket_test.rb +46 -0
  122. data/test/unit/communication/wait_list_test.rb +60 -0
  123. data/test/unit/communication/writing_socket_test.rb +46 -0
  124. data/test/unit/config_test.rb +150 -0
  125. data/test/unit/logger_test.rb +79 -0
  126. data/test/unit/message_test.rb +179 -0
  127. data/test/unit/multi_command_test.rb +45 -0
  128. data/test/unit/opt_parse_plus_test.rb +218 -0
  129. data/test/unit/pantry_test.rb +82 -0
  130. data/test/unit/server_test.rb +166 -0
  131. data/test/unit/test_helper.rb +25 -0
  132. data/test/unit/ui_test.rb +58 -0
  133. metadata +389 -13
@@ -0,0 +1,82 @@
1
+ require 'unit/test_helper'
2
+
3
+ describe Pantry do
4
+
5
+ class TestCommand < Pantry::Command
6
+ end
7
+
8
+ before do
9
+ Pantry.client_commands.clear
10
+ Pantry.server_commands.clear
11
+ end
12
+
13
+ describe ".root" do
14
+ it "wraps the root_dir in a Pathname" do
15
+ config = Pantry::Config.new
16
+ config.root_dir = "/path/start"
17
+
18
+ assert_equal Pathname.new("/path/start"), Pantry.root(config)
19
+ end
20
+ end
21
+
22
+ describe ".add_client_command" do
23
+ it "adds commands only for the client to handle" do
24
+ Pantry.add_client_command(TestCommand)
25
+
26
+ assert_equal [TestCommand], Pantry.client_commands
27
+ assert_equal [], Pantry.server_commands
28
+ assert_equal [TestCommand], Pantry.all_commands
29
+ end
30
+
31
+ it "errors if the given class is not a Pantry::Command" do
32
+ assert_raises(Pantry::InvalidCommandError) do
33
+ Pantry.add_client_command(Object)
34
+ end
35
+ end
36
+
37
+ it "errors if was given an object that isn't a Class" do
38
+ assert_raises(Pantry::InvalidCommandError) do
39
+ Pantry.add_client_command(Object.new)
40
+ end
41
+ end
42
+
43
+ it "warns if the given Command conflicts name-wise with an already registered command" do
44
+ Pantry.add_client_command(TestCommand)
45
+
46
+ assert_raises(Pantry::DuplicateCommandError) do
47
+ Pantry.add_client_command(TestCommand)
48
+ end
49
+ end
50
+ end
51
+
52
+ describe ".add_server_command" do
53
+ it "adds commands only for the server to handle" do
54
+ Pantry.add_server_command(TestCommand)
55
+
56
+ assert_equal [], Pantry.client_commands
57
+ assert_equal [TestCommand], Pantry.server_commands
58
+ assert_equal [TestCommand], Pantry.all_commands
59
+ end
60
+
61
+ it "errors if the given class is not a Pantry::Command" do
62
+ assert_raises(Pantry::InvalidCommandError) do
63
+ Pantry.add_server_command(Object)
64
+ end
65
+ end
66
+
67
+ it "errors if was given an object that isn't a Class" do
68
+ assert_raises(Pantry::InvalidCommandError) do
69
+ Pantry.add_server_command(Object.new)
70
+ end
71
+ end
72
+
73
+ it "warns if the given Command conflicts name-wise with an already registered command" do
74
+ Pantry.add_server_command(TestCommand)
75
+
76
+ assert_raises(Pantry::DuplicateCommandError) do
77
+ Pantry.add_server_command(TestCommand)
78
+ end
79
+ end
80
+ end
81
+
82
+ end
@@ -0,0 +1,166 @@
1
+ require 'unit/test_helper'
2
+
3
+ describe Pantry::Server do
4
+
5
+ class FakeNetworkStack
6
+ def initialize(listener)
7
+ end
8
+
9
+ def self.new_link(listener)
10
+ new(listener)
11
+ end
12
+ end
13
+
14
+ it "starts up the networking stack on run" do
15
+ FakeNetworkStack.any_instance.expects(:run)
16
+
17
+ server = Pantry::Server.new(FakeNetworkStack)
18
+ server.run
19
+ end
20
+
21
+ describe "Client Registry" do
22
+
23
+ it "can be given a Client to keep track of" do
24
+ server = Pantry::Server.new
25
+ client = Pantry::Client.new
26
+
27
+ server.register_client(client)
28
+
29
+ assert_equal [client], server.client_registry.all
30
+ end
31
+
32
+ it "can figure out what client sent a given message" do
33
+ server = Pantry::Server.new
34
+ c1 = Pantry::ClientInfo.new identity: "client1"
35
+ c2 = Pantry::ClientInfo.new identity: "client2"
36
+
37
+ server.register_client(c1)
38
+ server.register_client(c2)
39
+
40
+ message = Pantry::Message.new
41
+ message.from = "client1"
42
+
43
+ assert_equal c1, server.client_who_sent(message)
44
+ end
45
+
46
+ end
47
+
48
+ it "can publish messages to all clients" do
49
+ server = Pantry::Server.new(FakeNetworkStack)
50
+ message = Pantry::Message.new("test message")
51
+
52
+ FakeNetworkStack.any_instance.expects(:publish_message).with do |message|
53
+ message.to == ""
54
+ end
55
+
56
+ server.publish_message(message)
57
+ end
58
+
59
+ it "can publish messages to a filtered set of clients" do
60
+ server = Pantry::Server.new(FakeNetworkStack)
61
+ message = Pantry::Message.new("test message")
62
+ filter = Pantry::Communication::ClientFilter.new(roles: %w(db))
63
+
64
+ FakeNetworkStack.any_instance.expects(:publish_message).with do |message|
65
+ message.to == "db"
66
+ end
67
+
68
+ server.publish_message(message, filter)
69
+ end
70
+
71
+ it "can request info of a specific client" do
72
+ server = Pantry::Server.new(FakeNetworkStack)
73
+ client = Pantry::Client.new(identity: "client1")
74
+ message = Pantry::Message.new("test message")
75
+
76
+ FakeNetworkStack.any_instance.expects(:send_request).with do |message|
77
+ assert_equal "client1", message.to
78
+ end
79
+
80
+ server.send_request(client, message)
81
+
82
+ assert message.requires_response?, "Message should require a response from the receiver"
83
+ end
84
+
85
+ it "executes callbacks when a message matches" do
86
+ server = Pantry::Server.new
87
+
88
+ Pantry::CommandHandler.any_instance.stubs(:can_handle?).returns(true)
89
+ Pantry::CommandHandler.any_instance.expects(:process).with do |message|
90
+ message.type == "test_message"
91
+ end
92
+
93
+ server.receive_message(Pantry::Message.new("test_message"))
94
+ end
95
+
96
+ it "builds and sends a response message if message flagged as needing one" do
97
+ server = Pantry::Server.new(FakeNetworkStack)
98
+
99
+ message = Pantry::Message.new("test_message")
100
+ message.from = "client1"
101
+ message.requires_response!
102
+
103
+ Pantry::CommandHandler.any_instance.stubs(:can_handle?).returns(true)
104
+ Pantry::CommandHandler.any_instance.expects(:process).returns("A response message")
105
+
106
+ FakeNetworkStack.any_instance.expects(:publish_message).with do |response_message|
107
+ assert_equal "test_message", response_message.type
108
+ assert_equal message.from, response_message.to
109
+ assert_equal ["A response message"], response_message.body
110
+ end
111
+
112
+ server.receive_message(message)
113
+ end
114
+
115
+ it "keeps all object formatting of the response message" do
116
+ server = Pantry::Server.new(FakeNetworkStack)
117
+
118
+ message = Pantry::Message.new("test_message")
119
+ message.from = "client1"
120
+ message.requires_response!
121
+
122
+ Pantry::CommandHandler.any_instance.stubs(:can_handle?).returns(true)
123
+ Pantry::CommandHandler.any_instance.expects(:process).returns([%w(A response message)])
124
+
125
+ FakeNetworkStack.any_instance.expects(:publish_message).with do |response_message|
126
+ assert_equal "test_message", response_message.type
127
+ assert_equal message.from, response_message.to
128
+ assert_equal [["A", "response", "message"]], response_message.body
129
+ end
130
+
131
+ server.receive_message(message)
132
+ end
133
+
134
+ class ClientOnlyCommand < Pantry::Command
135
+ end
136
+
137
+ it "forwards an unhandleable command on to connected clients" do
138
+ Pantry.add_client_command(ClientOnlyCommand)
139
+ server = Pantry::Server.new(FakeNetworkStack)
140
+
141
+ message = Pantry::Message.new("ClientOnlyCommand")
142
+ message.from = "client1"
143
+ message.requires_response!
144
+
145
+ FakeNetworkStack.any_instance.expects(:forward_message).with(message)
146
+ FakeNetworkStack.any_instance.expects(:publish_message).with do |message|
147
+ message.to == "client1" && message.body == []
148
+ end
149
+
150
+ server.receive_message(message)
151
+ end
152
+
153
+ describe "Identity" do
154
+ it "can be given a specific identity" do
155
+ s = Pantry::Server.new
156
+ s.identity = "My Test Client"
157
+ assert_equal "My Test Client", s.identity
158
+ end
159
+
160
+ it "defaults to the hostname of the machine" do
161
+ s = Pantry::Server.new
162
+ assert_equal `hostname`.strip, s.identity
163
+ end
164
+ end
165
+
166
+ end
@@ -0,0 +1,25 @@
1
+ require 'pantry/test/unit'
2
+ gem 'mocha'
3
+ require 'mocha/mini_test'
4
+
5
+ # Swap these lines to turn on the logger in tests
6
+ Pantry.logger.disable!
7
+ #Pantry.config.log_level = :debug
8
+
9
+ class Minitest::Test
10
+ def setup
11
+ Pantry.config.root_dir = File.expand_path("../../root_dir", __FILE__)
12
+ clean_up_pantry_root
13
+ end
14
+
15
+ # Ensure Pantry.root is always clean for each test.
16
+ def clean_up_pantry_root
17
+ Dir["#{Pantry.root}/**/*"].each do |file|
18
+ FileUtils.rm_rf file
19
+ end
20
+ end
21
+
22
+ def fixture_path(file_path)
23
+ File.join(File.dirname(__FILE__), "..", "fixtures", file_path)
24
+ end
25
+ end
@@ -0,0 +1,58 @@
1
+ require 'unit/test_helper'
2
+
3
+ describe Pantry::UI do
4
+
5
+ mock_ui!
6
+
7
+ it "outputs messages to stdout" do
8
+ Pantry.ui.say("This is cool")
9
+ assert_equal "This is cool\n", stdout
10
+ end
11
+
12
+ it "outputs arrays as tables to stdout" do
13
+ Pantry.ui.list(%w(1 2 3))
14
+ assert_equal "1\n2\n3\n", stdout
15
+ end
16
+
17
+ it "asks a question, waits for keypress and comes back" do
18
+ stdin << "\n"
19
+ stdin.rewind
20
+
21
+ result = Pantry.ui.continue?("This is a message")
22
+
23
+ assert_match /This is a message/, stdout
24
+ assert result, "Default enter should have been a true message"
25
+ end
26
+
27
+ describe "Progress bar" do
28
+
29
+ it "allows starting a progress bar" do
30
+ Pantry.ui.progress_start(100)
31
+
32
+ assert_match /^Progress:/m, stdout
33
+ end
34
+
35
+ it "can increment the current progress bar" do
36
+ meter = Pantry.ui.progress_start(100)
37
+ Pantry.ui.progress_step(10)
38
+
39
+ assert_equal 10, meter.progress
40
+ end
41
+
42
+ it "handles increments past the progress bar's total" do
43
+ meter = Pantry.ui.progress_start(100)
44
+ Pantry.ui.progress_step(110)
45
+
46
+ assert_equal 100, meter.progress
47
+ end
48
+
49
+ it "finishes the current progress bar" do
50
+ meter = Pantry.ui.progress_start(100)
51
+ Pantry.ui.progress_finish
52
+
53
+ assert_equal 100, meter.progress
54
+ end
55
+
56
+ end
57
+
58
+ end
metadata CHANGED
@@ -1,24 +1,342 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pantry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Collective Idea
7
8
  - Jason Roelofs
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-10-15 00:00:00.000000000 Z
12
- dependencies: []
13
- description: ''
12
+ date: 2014-03-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ffi-rzmq
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '2.0'
21
+ - - '>='
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '2.0'
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.0
34
+ - !ruby/object:Gem::Dependency
35
+ name: celluloid
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.15'
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.15.0
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ~>
49
+ - !ruby/object:Gem::Version
50
+ version: '0.15'
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.15.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: celluloid-zmq
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: '0.15'
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: 0.15.0
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '0.15'
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: 0.15.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: highline
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: '1.6'
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: 1.6.21
84
+ type: :runtime
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: '1.6'
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.6.21
94
+ - !ruby/object:Gem::Dependency
95
+ name: json
96
+ requirement: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ version: '1.8'
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: 1.8.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '1.8'
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: 1.8.1
114
+ - !ruby/object:Gem::Dependency
115
+ name: ruby-progressbar
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: '1.4'
121
+ - - '>='
122
+ - !ruby/object:Gem::Version
123
+ version: 1.4.2
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ~>
129
+ - !ruby/object:Gem::Version
130
+ version: '1.4'
131
+ - - '>='
132
+ - !ruby/object:Gem::Version
133
+ version: 1.4.2
134
+ - !ruby/object:Gem::Dependency
135
+ name: safe_yaml
136
+ requirement: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ~>
139
+ - !ruby/object:Gem::Version
140
+ version: '1.0'
141
+ - - '>='
142
+ - !ruby/object:Gem::Version
143
+ version: 1.0.1
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ~>
149
+ - !ruby/object:Gem::Version
150
+ version: '1.0'
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: 1.0.1
154
+ - !ruby/object:Gem::Dependency
155
+ name: mocha
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '1.0'
161
+ - - '>='
162
+ - !ruby/object:Gem::Version
163
+ version: 1.0.0
164
+ type: :development
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ~>
169
+ - !ruby/object:Gem::Version
170
+ version: '1.0'
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: 1.0.0
174
+ - !ruby/object:Gem::Dependency
175
+ name: fakefs
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: '0.5'
181
+ - - '>='
182
+ - !ruby/object:Gem::Version
183
+ version: 0.5.1
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ~>
189
+ - !ruby/object:Gem::Version
190
+ version: '0.5'
191
+ - - '>='
192
+ - !ruby/object:Gem::Version
193
+ version: 0.5.1
194
+ description: |2
195
+ Pantry is a framework that provides answers to common questions encoutered when setting up a DevOps, server configuration, or server provisioning pipeline.
14
196
  email:
197
+ - code@collectiveidea.com
15
198
  - jasongroelofs@gmail.com
16
- executables: []
199
+ executables:
200
+ - pantry-client
201
+ - pantry-server
202
+ - pantry
17
203
  extensions: []
18
204
  extra_rdoc_files: []
19
- files: []
20
- homepage: ''
21
- licenses: []
205
+ files:
206
+ - .gitignore
207
+ - .ruby-version
208
+ - .travis.yml
209
+ - Gemfile
210
+ - Guardfile
211
+ - LICENSE
212
+ - README.md
213
+ - Rakefile
214
+ - Vagrantfile
215
+ - bin/pantry
216
+ - bin/pantry-client
217
+ - bin/pantry-server
218
+ - dist/client.yml
219
+ - dist/server.yml
220
+ - dist/upstart/pantry-client.conf
221
+ - dist/upstart/pantry-server.conf
222
+ - doc/message_packet.dot
223
+ - doc/message_packet.dot.png
224
+ - doc/network_topology.dot
225
+ - doc/network_topology.dot.png
226
+ - lib/celluloid_zmq_patches.rb
227
+ - lib/opt_parse_plus.rb
228
+ - lib/pantry.rb
229
+ - lib/pantry/cli.rb
230
+ - lib/pantry/client.rb
231
+ - lib/pantry/client_info.rb
232
+ - lib/pantry/client_registry.rb
233
+ - lib/pantry/command.rb
234
+ - lib/pantry/command_handler.rb
235
+ - lib/pantry/command_line.rb
236
+ - lib/pantry/commands/create_client.rb
237
+ - lib/pantry/commands/download_directory.rb
238
+ - lib/pantry/commands/echo.rb
239
+ - lib/pantry/commands/edit_application.rb
240
+ - lib/pantry/commands/register_client.rb
241
+ - lib/pantry/commands/status.rb
242
+ - lib/pantry/commands/sync_directory.rb
243
+ - lib/pantry/commands/update_application.rb
244
+ - lib/pantry/commands/upload_file.rb
245
+ - lib/pantry/communication.rb
246
+ - lib/pantry/communication/client.rb
247
+ - lib/pantry/communication/client_filter.rb
248
+ - lib/pantry/communication/file_service.rb
249
+ - lib/pantry/communication/file_service/file_progress.rb
250
+ - lib/pantry/communication/file_service/receive_file.rb
251
+ - lib/pantry/communication/file_service/send_file.rb
252
+ - lib/pantry/communication/publish_socket.rb
253
+ - lib/pantry/communication/reading_socket.rb
254
+ - lib/pantry/communication/receive_socket.rb
255
+ - lib/pantry/communication/security.rb
256
+ - lib/pantry/communication/security/authentication.rb
257
+ - lib/pantry/communication/security/curve_key_store.rb
258
+ - lib/pantry/communication/security/curve_security.rb
259
+ - lib/pantry/communication/security/null_security.rb
260
+ - lib/pantry/communication/send_socket.rb
261
+ - lib/pantry/communication/serialize_message.rb
262
+ - lib/pantry/communication/server.rb
263
+ - lib/pantry/communication/subscribe_socket.rb
264
+ - lib/pantry/communication/wait_list.rb
265
+ - lib/pantry/communication/writing_socket.rb
266
+ - lib/pantry/config.rb
267
+ - lib/pantry/file_editor.rb
268
+ - lib/pantry/logger.rb
269
+ - lib/pantry/message.rb
270
+ - lib/pantry/multi_command.rb
271
+ - lib/pantry/server.rb
272
+ - lib/pantry/test/acceptance.rb
273
+ - lib/pantry/test/support/fake_fs.rb
274
+ - lib/pantry/test/support/matchers.rb
275
+ - lib/pantry/test/support/minitest.rb
276
+ - lib/pantry/test/support/mock_ui.rb
277
+ - lib/pantry/test/unit.rb
278
+ - lib/pantry/ui.rb
279
+ - lib/pantry/version.rb
280
+ - pantry.gemspec
281
+ - test/acceptance/cli/error_handling_test.rb
282
+ - test/acceptance/cli/execute_command_on_clients_test.rb
283
+ - test/acceptance/cli/request_info_from_server_test.rb
284
+ - test/acceptance/communication/client_requests_info_from_server_test.rb
285
+ - test/acceptance/communication/heartbeat_test.rb
286
+ - test/acceptance/communication/pub_sub_communication_test.rb
287
+ - test/acceptance/communication/security_test.rb
288
+ - test/acceptance/communication/server_requests_info_from_client_test.rb
289
+ - test/acceptance/test_helper.rb
290
+ - test/fixtures/config.yml
291
+ - test/fixtures/empty.yml
292
+ - test/fixtures/file_to_upload
293
+ - test/root_dir/.gitkeep
294
+ - test/unit/cli_test.rb
295
+ - test/unit/client_registry_test.rb
296
+ - test/unit/client_test.rb
297
+ - test/unit/command_handler_test.rb
298
+ - test/unit/command_line_test.rb
299
+ - test/unit/command_test.rb
300
+ - test/unit/commands/create_client_test.rb
301
+ - test/unit/commands/download_directory_test.rb
302
+ - test/unit/commands/echo_test.rb
303
+ - test/unit/commands/edit_application_test.rb
304
+ - test/unit/commands/register_client_test.rb
305
+ - test/unit/commands/status_test.rb
306
+ - test/unit/commands/sync_directory_test.rb
307
+ - test/unit/commands/update_application_test.rb
308
+ - test/unit/commands/upload_file_test.rb
309
+ - test/unit/communication/client_filter_test.rb
310
+ - test/unit/communication/client_test.rb
311
+ - test/unit/communication/file_service/receive_file_test.rb
312
+ - test/unit/communication/file_service/send_file_test.rb
313
+ - test/unit/communication/file_service_test.rb
314
+ - test/unit/communication/publish_socket_test.rb
315
+ - test/unit/communication/reading_socket_test.rb
316
+ - test/unit/communication/receive_socket_test.rb
317
+ - test/unit/communication/security/authentication_test.rb
318
+ - test/unit/communication/security/curve_key_store_test.rb
319
+ - test/unit/communication/security/curve_security_test.rb
320
+ - test/unit/communication/security/null_security_test.rb
321
+ - test/unit/communication/security_test.rb
322
+ - test/unit/communication/send_socket_test.rb
323
+ - test/unit/communication/serialize_message_test.rb
324
+ - test/unit/communication/server_test.rb
325
+ - test/unit/communication/subscribe_socket_test.rb
326
+ - test/unit/communication/wait_list_test.rb
327
+ - test/unit/communication/writing_socket_test.rb
328
+ - test/unit/config_test.rb
329
+ - test/unit/logger_test.rb
330
+ - test/unit/message_test.rb
331
+ - test/unit/multi_command_test.rb
332
+ - test/unit/opt_parse_plus_test.rb
333
+ - test/unit/pantry_test.rb
334
+ - test/unit/server_test.rb
335
+ - test/unit/test_helper.rb
336
+ - test/unit/ui_test.rb
337
+ homepage: http://pantryops.org
338
+ licenses:
339
+ - MIT
22
340
  metadata: {}
23
341
  post_install_message:
24
342
  rdoc_options: []
@@ -28,16 +346,74 @@ required_ruby_version: !ruby/object:Gem::Requirement
28
346
  requirements:
29
347
  - - '>='
30
348
  - !ruby/object:Gem::Version
31
- version: '0'
349
+ version: 2.0.0
32
350
  required_rubygems_version: !ruby/object:Gem::Requirement
33
351
  requirements:
34
352
  - - '>='
35
353
  - !ruby/object:Gem::Version
36
354
  version: '0'
37
- requirements: []
355
+ requirements:
356
+ - zeromq 3.x or 4.x
357
+ - libsodium for Curve security
38
358
  rubyforge_project:
39
- rubygems_version: 2.0.3
359
+ rubygems_version: 2.2.2
40
360
  signing_key:
41
361
  specification_version: 4
42
- summary: ''
43
- test_files: []
362
+ summary: Modern DevOps Automation
363
+ test_files:
364
+ - test/acceptance/cli/error_handling_test.rb
365
+ - test/acceptance/cli/execute_command_on_clients_test.rb
366
+ - test/acceptance/cli/request_info_from_server_test.rb
367
+ - test/acceptance/communication/client_requests_info_from_server_test.rb
368
+ - test/acceptance/communication/heartbeat_test.rb
369
+ - test/acceptance/communication/pub_sub_communication_test.rb
370
+ - test/acceptance/communication/security_test.rb
371
+ - test/acceptance/communication/server_requests_info_from_client_test.rb
372
+ - test/acceptance/test_helper.rb
373
+ - test/fixtures/config.yml
374
+ - test/fixtures/empty.yml
375
+ - test/fixtures/file_to_upload
376
+ - test/root_dir/.gitkeep
377
+ - test/unit/cli_test.rb
378
+ - test/unit/client_registry_test.rb
379
+ - test/unit/client_test.rb
380
+ - test/unit/command_handler_test.rb
381
+ - test/unit/command_line_test.rb
382
+ - test/unit/command_test.rb
383
+ - test/unit/commands/create_client_test.rb
384
+ - test/unit/commands/download_directory_test.rb
385
+ - test/unit/commands/echo_test.rb
386
+ - test/unit/commands/edit_application_test.rb
387
+ - test/unit/commands/register_client_test.rb
388
+ - test/unit/commands/status_test.rb
389
+ - test/unit/commands/sync_directory_test.rb
390
+ - test/unit/commands/update_application_test.rb
391
+ - test/unit/commands/upload_file_test.rb
392
+ - test/unit/communication/client_filter_test.rb
393
+ - test/unit/communication/client_test.rb
394
+ - test/unit/communication/file_service/receive_file_test.rb
395
+ - test/unit/communication/file_service/send_file_test.rb
396
+ - test/unit/communication/file_service_test.rb
397
+ - test/unit/communication/publish_socket_test.rb
398
+ - test/unit/communication/reading_socket_test.rb
399
+ - test/unit/communication/receive_socket_test.rb
400
+ - test/unit/communication/security/authentication_test.rb
401
+ - test/unit/communication/security/curve_key_store_test.rb
402
+ - test/unit/communication/security/curve_security_test.rb
403
+ - test/unit/communication/security/null_security_test.rb
404
+ - test/unit/communication/security_test.rb
405
+ - test/unit/communication/send_socket_test.rb
406
+ - test/unit/communication/serialize_message_test.rb
407
+ - test/unit/communication/server_test.rb
408
+ - test/unit/communication/subscribe_socket_test.rb
409
+ - test/unit/communication/wait_list_test.rb
410
+ - test/unit/communication/writing_socket_test.rb
411
+ - test/unit/config_test.rb
412
+ - test/unit/logger_test.rb
413
+ - test/unit/message_test.rb
414
+ - test/unit/multi_command_test.rb
415
+ - test/unit/opt_parse_plus_test.rb
416
+ - test/unit/pantry_test.rb
417
+ - test/unit/server_test.rb
418
+ - test/unit/test_helper.rb
419
+ - test/unit/ui_test.rb