Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Communications layer refactor, to RESTful HTTP #1872

Closed
hjoliver opened this issue May 31, 2016 · 4 comments · Fixed by #1923
Closed

Communications layer refactor, to RESTful HTTP #1872

hjoliver opened this issue May 31, 2016 · 4 comments · Fixed by #1923
Assignees
Milestone

Comments

@hjoliver
Copy link
Member

hjoliver commented May 31, 2016

For network communication between cylc client and server programs, use HTTP(S) instead of Pyro.

This has been planned for a long time, but we didn't have an issue up for up it.

  • Replace obsolete Pyro-3 Object RPC .
  • Support a stable RESTful HTTP API for interaction with suite servers (not tied to Python for this); HTTP(S) is these days the best protocol for talking across ports
  • Will enable (because the suite IS a web server) us to leverage a lot of existing web-based technology, e.g.,
    • web based suite GUI (also PyGTK is dead)
    • better authentication (use of existing technologies)
@hjoliver hjoliver added this to the later milestone May 31, 2016
@hjoliver hjoliver mentioned this issue May 31, 2016
6 tasks
@trwhitcomb
Copy link
Collaborator

Glad to see there's an issue up so I can get this captured somewhere. I'd like to broaden the scope of this a bit to have a generic communications layer refactoring, with the RESTful HTTP as the default (and preferred) option, but with the facility for defining a standard way of implementing a communications API that can take advantage of other messaging solutions (e.g. something like ZeroMQ, cloud-based messaging platforms, etc.). This would make it easier to handle situations where the connection setup between computers isn't always ideal, and perhaps bypass other issues (e.g. security might object to a "web server")

@hjoliver
Copy link
Member Author

hjoliver commented Jun 8, 2016

@trwhitcomb - I agree in principle, but I can't see the current development team having the resource to implement multiple communications layers (and my impression is security people would sooner accept HTTP than some less common or custom protocol). I guess a stable API would make it possible though, if (for example) you wanted to do the work 😁

@trwhitcomb
Copy link
Collaborator

@hjoliver - to clarify, I'm not currently asking for the current team's implementation of any other communications layers, but I think it would be useful instead of specifying a single method to have an API for performing the communication that users (e.g. me) could code to to allow other communication methods instead of the "standard" HTTP-based method. That way if I need to work around something, I can start from a specification rather than undoing what's already hard-coded into the software.

And yes, you would think that about security people but you might be surprised!

@hjoliver
Copy link
Member Author

hjoliver commented Jun 19, 2016

[meeting]

  • maybe handle task messaging differently from user interaction: task authentication can be automatic (suite gives tasks the credentials?)
  • for cylc-7 (major version up, but little impact on users)
  • remove all back-compat code for client server interaction across versions, along with this change, as we cannot maintain this compatibility anyway for this change.
  • @benfitzpatrick already has a working development branch, just ~10 failing tests to investigate.

@hjoliver hjoliver modified the milestones: soon, later Jun 21, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jun 23, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jun 29, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jun 30, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jul 21, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jul 21, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jul 21, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jul 22, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Jul 22, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Aug 9, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Aug 9, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Aug 10, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 6, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 8, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 9, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 9, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 9, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 12, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 14, 2016
benfitzpatrick added a commit to benfitzpatrick/cylc that referenced this issue Sep 16, 2016
@matthewrmshin matthewrmshin modified the milestones: next release, soon Sep 16, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants