{"action":"created","issue":{"url":"https://api.github.com/repos/saltstack/salt/issues/22453","labels_url":"https://api.github.com/repos/saltstack/salt/issues/22453/labels{/name}","comments_url":"https://api.github.com/repos/saltstack/salt/issues/22453/comments","events_url":"https://api.github.com/repos/saltstack/salt/issues/22453/events","html_url":"https://github.com/saltstack/salt/pull/22453","id":67047784,"number":22453,"title":"Abstracted Transport","user":{"login":"jacksontj","id":1619869,"avatar_url":"https://avatars.githubusercontent.com/u/1619869?v=3","gravatar_id":"","url":"https://api.github.com/users/jacksontj","html_url":"https://github.com/jacksontj","followers_url":"https://api.github.com/users/jacksontj/followers","following_url":"https://api.github.com/users/jacksontj/following{/other_user}","gists_url":"https://api.github.com/users/jacksontj/gists{/gist_id}","starred_url":"https://api.github.com/users/jacksontj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacksontj/subscriptions","organizations_url":"https://api.github.com/users/jacksontj/orgs","repos_url":"https://api.github.com/users/jacksontj/repos","events_url":"https://api.github.com/users/jacksontj/events{/privacy}","received_events_url":"https://api.github.com/users/jacksontj/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/saltstack/salt/labels/Awesome","name":"Awesome","color":"5319e7"},{"url":"https://api.github.com/repos/saltstack/salt/labels/Expert%20Change","name":"Expert Change","color":"5319e7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-04-08T04:45:46Z","updated_at":"2015-04-08T17:26:55Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/saltstack/salt/pulls/22453","html_url":"https://github.com/saltstack/salt/pull/22453","diff_url":"https://github.com/saltstack/salt/pull/22453.diff","patch_url":"https://github.com/saltstack/salt/pull/22453.patch"},"body":"This is a *massive* overhaul of the entire transport system within salt (this is the one I mentioned @ SaltConf)\r\n\r\nThe basic idea in this PR is to abstract out the transport within salt-- since Salt shouldn't care how the bits are shipped to the minion, just that they can and will be. To do this I've taken the \"channel\" idea and run with it. To do this I've created a \"reqchannel\" and a \"pubchannel\" these 2 classes encapsulate the 2 types of messages that salt cares about. For each channel type there are server and client implementations, which means that adding a new transport is simply implementing a base-class and configuring the master.\r\n\r\nNow that there is an interface to write transport to I also created a basic TCP implementation which uses the same auth as the current zeromq implementation.\r\n\r\nIn addition to the abstraction of transport this also introduces tornado as an async programming framework (read: ioloop). This means that we can actually run N transports on a master simultaneously. In addition to making all transport async-- this means we can now make API calls within the master/minion async-- meaning a given MWorker thread could actually have multiple requests in-flight (unlike the single request at a time of today).\r\n\r\nIn addition to running multiple transports at once this also means we can remove the threading we've been using in MultiMinion and Syndics-- and just use the IOLoop.\r\n\r\nThere is going to need to be some transition to the new Async interfaces, but this PR includes wrappers which make the async interfaces sync friendly-- so it should be 100% backwards compatible. This just means that if you want your module/runner/etc. to be async (meaning the thread can do something else) you'd have to switch your calls to channels (which are *very* uncommon) to the async versions.\r\n\r\nBefore we merge this in I'll need to finish up the docs, but I want to get this opened sooner rather than later to get other people's eyes on it."},"comment":{"url":"https://api.github.com/repos/saltstack/salt/issues/comments/90981029","html_url":"https://github.com/saltstack/salt/pull/22453#issuecomment-90981029","issue_url":"https://api.github.com/repos/saltstack/salt/issues/22453","id":90981029,"user":{"login":"thatch45","id":507599,"avatar_url":"https://avatars.githubusercontent.com/u/507599?v=3","gravatar_id":"","url":"https://api.github.com/users/thatch45","html_url":"https://github.com/thatch45","followers_url":"https://api.github.com/users/thatch45/followers","following_url":"https://api.github.com/users/thatch45/following{/other_user}","gists_url":"https://api.github.com/users/thatch45/gists{/gist_id}","starred_url":"https://api.github.com/users/thatch45/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thatch45/subscriptions","organizations_url":"https://api.github.com/users/thatch45/orgs","repos_url":"https://api.github.com/users/thatch45/repos","events_url":"https://api.github.com/users/thatch45/events{/privacy}","received_events_url":"https://api.github.com/users/thatch45/received_events","type":"User","site_admin":false},"created_at":"2015-04-08T17:26:55Z","updated_at":"2015-04-08T17:26:55Z","body":"I guess what I am saying is that I don't like the tornado hard dep addition, but I do like the idea of being able to eventually move away from ZMQ"}}