{"action":"created","issue":{"url":"https://api.github.com/repos/syndesisio/syndesis/issues/184","repository_url":"https://api.github.com/repos/syndesisio/syndesis","labels_url":"https://api.github.com/repos/syndesisio/syndesis/issues/184/labels{/name}","comments_url":"https://api.github.com/repos/syndesisio/syndesis/issues/184/comments","events_url":"https://api.github.com/repos/syndesisio/syndesis/issues/184/events","html_url":"https://github.com/syndesisio/syndesis/issues/184","id":274269987,"number":184,"title":"Integration Lifecycle Handling","user":{"login":"syndesis-bot","id":33655652,"avatar_url":"https://avatars0.githubusercontent.com/u/33655652?v=4","gravatar_id":"","url":"https://api.github.com/users/syndesis-bot","html_url":"https://github.com/syndesis-bot","followers_url":"https://api.github.com/users/syndesis-bot/followers","following_url":"https://api.github.com/users/syndesis-bot/following{/other_user}","gists_url":"https://api.github.com/users/syndesis-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/syndesis-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/syndesis-bot/subscriptions","organizations_url":"https://api.github.com/users/syndesis-bot/orgs","repos_url":"https://api.github.com/users/syndesis-bot/repos","events_url":"https://api.github.com/users/syndesis-bot/events{/privacy}","received_events_url":"https://api.github.com/users/syndesis-bot/received_events","type":"User","site_admin":false},"labels":[{"id":751428615,"url":"https://api.github.com/repos/syndesisio/syndesis/labels/cat/feature","name":"cat/feature","color":"bdd9f4","default":false},{"id":751428559,"url":"https://api.github.com/repos/syndesisio/syndesis/labels/Epic","name":"Epic","color":"364294","default":false},{"id":751428709,"url":"https://api.github.com/repos/syndesisio/syndesis/labels/module/project","name":"module/project","color":"e8a824","default":false}],"state":"open","locked":false,"assignee":{"login":"rhuss","id":99080,"avatar_url":"https://avatars3.githubusercontent.com/u/99080?v=4","gravatar_id":"","url":"https://api.github.com/users/rhuss","html_url":"https://github.com/rhuss","followers_url":"https://api.github.com/users/rhuss/followers","following_url":"https://api.github.com/users/rhuss/following{/other_user}","gists_url":"https://api.github.com/users/rhuss/gists{/gist_id}","starred_url":"https://api.github.com/users/rhuss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rhuss/subscriptions","organizations_url":"https://api.github.com/users/rhuss/orgs","repos_url":"https://api.github.com/users/rhuss/repos","events_url":"https://api.github.com/users/rhuss/events{/privacy}","received_events_url":"https://api.github.com/users/rhuss/received_events","type":"User","site_admin":false},"assignees":[{"login":"rhuss","id":99080,"avatar_url":"https://avatars3.githubusercontent.com/u/99080?v=4","gravatar_id":"","url":"https://api.github.com/users/rhuss","html_url":"https://github.com/rhuss","followers_url":"https://api.github.com/users/rhuss/followers","following_url":"https://api.github.com/users/rhuss/following{/other_user}","gists_url":"https://api.github.com/users/rhuss/gists{/gist_id}","starred_url":"https://api.github.com/users/rhuss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rhuss/subscriptions","organizations_url":"https://api.github.com/users/rhuss/orgs","repos_url":"https://api.github.com/users/rhuss/repos","events_url":"https://api.github.com/users/rhuss/events{/privacy}","received_events_url":"https://api.github.com/users/rhuss/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/syndesisio/syndesis/milestones/2","html_url":"https://github.com/syndesisio/syndesis/milestone/2","labels_url":"https://api.github.com/repos/syndesisio/syndesis/milestones/2/labels","id":2891222,"number":2,"title":"Sprint 20","description":"","creator":{"login":"rhuss","id":99080,"avatar_url":"https://avatars3.githubusercontent.com/u/99080?v=4","gravatar_id":"","url":"https://api.github.com/users/rhuss","html_url":"https://github.com/rhuss","followers_url":"https://api.github.com/users/rhuss/followers","following_url":"https://api.github.com/users/rhuss/following{/other_user}","gists_url":"https://api.github.com/users/rhuss/gists{/gist_id}","starred_url":"https://api.github.com/users/rhuss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rhuss/subscriptions","organizations_url":"https://api.github.com/users/rhuss/orgs","repos_url":"https://api.github.com/users/rhuss/repos","events_url":"https://api.github.com/users/rhuss/events{/privacy}","received_events_url":"https://api.github.com/users/rhuss/received_events","type":"User","site_admin":false},"open_issues":25,"closed_issues":0,"state":"open","created_at":"2017-11-06T14:33:35Z","updated_at":"2017-11-15T19:08:37Z","due_on":"2017-11-24T08:00:00Z","closed_at":null},"comments":0,"created_at":"2017-11-15T19:08:36Z","updated_at":"2017-11-15T19:08:41Z","closed_at":null,"author_association":"COLLABORATOR","body":"|<img src=\"https://avatars3.githubusercontent.com/u/99080?v=4\" valign=\"middle\" width=\"22px\"></img> @rhuss | [2017-06-16](https://github.com/syndesisio/syndesis-project/issues/22) | Epic, Feature, Runtime  |\n|-|-|-|\n\nAt the moment, when integrations are created they have completely disconnected from the Syndesis DB afterwards. There is no way yet to update a running integration nor see the state of the currently running integration.\r\n\r\nTherefore it is suggested to introduce a versioning for integration and rethink the state model with \"active\" being a valid state.\r\n\r\nThe following points should be considered:\r\n\r\n* Multiple versions of an Integration must be able to exist.\r\n* Exactly one of these integrations can be active.\r\n* Each deployment of an Integration creates a new version.\r\n* Users can switch integration versions from the UI\r\n* Versioned Integrations can be inspected from a history page. \r\n* Old integrations can't be changed but can be used as a blueprint for new integrations.\r\n* As soon as an integration is changed, a new version of an integration is created. All changes go to this new integration until it is deployed by the user. After this, its gets a fixed version and cannot be changed anymore.\r\n* The user must always be able to see and examine the currently active integration along with its version number.\r\n\r\n@kcbabo @chirino I really would like to discuss this lifecycle handling of integrations a bit in more detail. I'm sure that our simplistic handling of integration versions is not sufficient (even not for PR1)"},"comment":{"url":"https://api.github.com/repos/syndesisio/syndesis/issues/comments/344695955","html_url":"https://github.com/syndesisio/syndesis/issues/184#issuecomment-344695955","issue_url":"https://api.github.com/repos/syndesisio/syndesis/issues/184","id":344695955,"user":{"login":"syndesis-bot","id":33655652,"avatar_url":"https://avatars0.githubusercontent.com/u/33655652?v=4","gravatar_id":"","url":"https://api.github.com/users/syndesis-bot","html_url":"https://github.com/syndesis-bot","followers_url":"https://api.github.com/users/syndesis-bot/followers","following_url":"https://api.github.com/users/syndesis-bot/following{/other_user}","gists_url":"https://api.github.com/users/syndesis-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/syndesis-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/syndesis-bot/subscriptions","organizations_url":"https://api.github.com/users/syndesis-bot/orgs","repos_url":"https://api.github.com/users/syndesis-bot/repos","events_url":"https://api.github.com/users/syndesis-bot/events{/privacy}","received_events_url":"https://api.github.com/users/syndesis-bot/received_events","type":"User","site_admin":false},"created_at":"2017-11-15T19:08:41Z","updated_at":"2017-11-15T19:08:41Z","author_association":"COLLABORATOR","body":"| <img src=\"https://avatars1.githubusercontent.com/u/464659?v=4\" height=\"22px\"  valign=\"middle\"></img> @jimmidyson |  [2017-06-26](https://github.com/syndesisio/syndesis-project/issues/22#issuecomment-311025157) |\n|-|-|\n\nI wonder how much we can piggy back off of deployment revisions here? I guess we need to version the integration in the DB though, not keen on doing that tbh but can't see a way round it.\r\n\r\nJust to get things moving with this, how about a model something like:\r\n\r\n```go\r\ntype Integration {\r\n Spec IntegrationSpec // The user selected integration spec (reconciled against Status.ActiveSpec to look for changes)\r\n SpecVersions IntegrationSpec[] // Array of versions, ordered by age, oldest first. Integrations can be deleted from anywhere in this array, unless it is the Status.ActiveSpec\r\n\r\n Status IntegrationStatus // As we talked about \r\n}\r\n\r\n// IntegrationSpec should be immutable, editing an IntegrationSpec should create append a new revision to Integration.SpecVersions\r\ntype IntegrationSpec {\r\n ... Current spec fields...\r\n}\r\n\r\ntype IntegrationStatus {\r\n ActiveSpec IntegrationSpec // The currently active integration spec\r\n\r\n ...Other status fields...\r\n}\r\n```\r\n\r\nAs IntegrationSpec is immutable, we could also hash the IntegrationSpec and use the hash in IntegrationStatus.ActiveSpec and store the hash in IntegrationSpec.Hash potentially?"}}
{"actor":{"display_login":"syndesis-bot"}}