)]}'
{"specs/liberty/app-resource.rst":[{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":104,"context_line":"      \u0027name\u0027: \u0027ghost\u0027,"},{"line_number":105,"context_line":"      \u0027description\u0027: \u0027My ghost blog\u0027,"},{"line_number":106,"context_line":"      \u0027status\u0027: {"},{"line_number":107,"context_line":"        \u0027test\u0027: \u0027INPROGRESS\u0027,"},{"line_number":108,"context_line":"        \u0027build\u0027: \u0027PENDING\u0027,"},{"line_number":109,"context_line":"        \u0027deploy\u0027: \u0027SUCCESS\u0027,"},{"line_number":110,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_3a27cacb","line":107,"updated":"2015-04-14 22:12:02.000000000","message":"IN_PROGRESS?","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"      \u0027name\u0027: \u0027ghost\u0027,"},{"line_number":105,"context_line":"      \u0027description\u0027: \u0027My ghost blog\u0027,"},{"line_number":106,"context_line":"      \u0027status\u0027: {"},{"line_number":107,"context_line":"        \u0027test\u0027: \u0027INPROGRESS\u0027,"},{"line_number":108,"context_line":"        \u0027build\u0027: \u0027PENDING\u0027,"},{"line_number":109,"context_line":"        \u0027deploy\u0027: \u0027SUCCESS\u0027,"},{"line_number":110,"context_line":"      }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_23eae8ac","line":107,"in_reply_to":"7aaa499b_3a27cacb","updated":"2015-04-15 15:07:59.000000000","message":"I\u0027ll clarify in the data models section, but I\u0027m proposing QUEUED -\u003e INPROGRESS -\u003e SUCCESS | ERROR | FAILURE.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \u0027deploy\u0027: \u0027SUCCESS\u0027,"},{"line_number":110,"context_line":"      }"},{"line_number":111,"context_line":"      \u0027app_url\u0027: \u0027http://192.0.2.100\u0027,"},{"line_number":112,"context_line":"      \u0027trigger_url\u0027: \u0027http://SOLUM/triggers/f2970536-c225-4959-9634-ddaf162cc214\u0027,"},{"line_number":113,"context_line":"      \u0027created\u0027: \u003cdatetime\u003e,"},{"line_number":114,"context_line":"      \u0027updated\u0027: \u003cdatetime\u003e,"},{"line_number":115,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_750d6336","line":112,"updated":"2015-04-14 22:12:02.000000000","message":"Should we also include the which workflow (unittest, build, deploy) that will be triggered when a triggered is received from trigger_url?","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \u0027deploy\u0027: \u0027SUCCESS\u0027,"},{"line_number":110,"context_line":"      }"},{"line_number":111,"context_line":"      \u0027app_url\u0027: \u0027http://192.0.2.100\u0027,"},{"line_number":112,"context_line":"      \u0027trigger_url\u0027: \u0027http://SOLUM/triggers/f2970536-c225-4959-9634-ddaf162cc214\u0027,"},{"line_number":113,"context_line":"      \u0027created\u0027: \u003cdatetime\u003e,"},{"line_number":114,"context_line":"      \u0027updated\u0027: \u003cdatetime\u003e,"},{"line_number":115,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_e33e4027","line":112,"in_reply_to":"7aaa499b_750d6336","updated":"2015-04-15 15:07:59.000000000","message":"No, this is the base URL, any specifics are queries to this. This isn\u0027t a reflection of what\u0027s in Github, it\u0027s a handle you give to Github so its trigger interface will have purchase in Solum.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Create an App"},{"line_number":122,"context_line":"POST http://SOLUM/apps/"},{"line_number":123,"context_line":"..."},{"line_number":124,"context_line":"200 OK"},{"line_number":125,"context_line":"{"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_3510fb4d","line":122,"updated":"2015-04-14 22:12:02.000000000","message":"What does the POST Body look like?","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Create an App"},{"line_number":122,"context_line":"POST http://SOLUM/apps/"},{"line_number":123,"context_line":"..."},{"line_number":124,"context_line":"200 OK"},{"line_number":125,"context_line":"{"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_e3252009","line":122,"in_reply_to":"7aaa499b_3510fb4d","updated":"2015-04-15 15:07:59.000000000","message":"Coming soon! It\u0027s largely dependent on the data model; minimal metadata like name and description and maybe some base registration information like the code URL and revision.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    }"},{"line_number":143,"context_line":"    \u0027app_url\u0027: \u0027http://192.0.2.100\u0027,"},{"line_number":144,"context_line":"    \u0027trigger_url\u0027: \u0027http://SOLUM/triggers/f2970536-c225-4959-9634-ddaf162cc214\u0027,"},{"line_number":145,"context_line":"    \u0027registration\u0027: {"},{"line_number":146,"context_line":"      \u0027repo_url\u0027: \u0027http://github.com/fakeuser/ghost.git\u0027,"},{"line_number":147,"context_line":"      \u0027repo_sha\u0027: \u0027master\u0027,"},{"line_number":148,"context_line":"      \u0027language_pack\u0027: \u0027python2.7-20150208\u0027,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_f519737a","line":145,"updated":"2015-04-14 22:12:02.000000000","message":"+10 for the registration info.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    }"},{"line_number":143,"context_line":"    \u0027app_url\u0027: \u0027http://192.0.2.100\u0027,"},{"line_number":144,"context_line":"    \u0027trigger_url\u0027: \u0027http://SOLUM/triggers/f2970536-c225-4959-9634-ddaf162cc214\u0027,"},{"line_number":145,"context_line":"    \u0027registration\u0027: {"},{"line_number":146,"context_line":"      \u0027repo_url\u0027: \u0027http://github.com/fakeuser/ghost.git\u0027,"},{"line_number":147,"context_line":"      \u0027repo_sha\u0027: \u0027master\u0027,"},{"line_number":148,"context_line":"      \u0027language_pack\u0027: \u0027python2.7-20150208\u0027,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_959d73be","line":145,"in_reply_to":"7aaa499b_f519737a","updated":"2015-04-15 15:07:59.000000000","message":"What\u0027s not clear in this example is this is only the most recent of the registration items, not the whole list. I should add a note about that, and mention that\u0027s why there\u0027s no registration ID in here.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Update one App"},{"line_number":154,"context_line":"PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3\u0027"},{"line_number":155,"context_line":"{"},{"line_number":156,"context_line":"  \u0027description\u0027: \u0027My old ghost blog\u0027,"},{"line_number":157,"context_line":"}"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_d54e776e","line":154,"updated":"2015-04-14 22:12:02.000000000","message":"Is there any restriction on which fields could or could not be modified?","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Update one App"},{"line_number":154,"context_line":"PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3\u0027"},{"line_number":155,"context_line":"{"},{"line_number":156,"context_line":"  \u0027description\u0027: \u0027My old ghost blog\u0027,"},{"line_number":157,"context_line":"}"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_43cf3429","line":154,"in_reply_to":"7aaa499b_d54e776e","updated":"2015-04-15 15:07:59.000000000","message":"In general, I don\u0027t see why not. Anything that affects deployment wouldn\u0027t be app fields, but registration really, and that interface is laid out below.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":178,"context_line":"}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Delete one stopped App"},{"line_number":181,"context_line":"DELETE http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3"},{"line_number":182,"context_line":"204 NO_CONTENT"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_55438742","line":181,"updated":"2015-04-14 22:12:02.000000000","message":"Will this delete all the runtime artifacts (assemblies and logs)","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":178,"context_line":"}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Delete one stopped App"},{"line_number":181,"context_line":"DELETE http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3"},{"line_number":182,"context_line":"204 NO_CONTENT"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_83653c1f","line":181,"in_reply_to":"7aaa499b_55438742","updated":"2015-04-15 15:07:59.000000000","message":"That\u0027s the intent. For the logs, I think we can take a best-effort approach if they\u0027re in user storage.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f613f0ff8c7b796eba644823c87ddf4befe2e9ce","unresolved":false,"context_lines":[{"line_number":194,"context_line":"revision and reversion in a non-destructive manner."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"List all registrations"},{"line_number":197,"context_line":"GET http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations"},{"line_number":198,"context_line":"200 OK"},{"line_number":199,"context_line":"{"},{"line_number":200,"context_line":"  \u0027registrations\u0027: ["}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_b5788b90","line":197,"updated":"2015-04-14 22:12:02.000000000","message":"How is a registration different than an app?","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"2eade520be120dc99a4e3031964a55288274e88f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"revision and reversion in a non-destructive manner."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"List all registrations"},{"line_number":197,"context_line":"GET http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations"},{"line_number":198,"context_line":"200 OK"},{"line_number":199,"context_line":"{"},{"line_number":200,"context_line":"  \u0027registrations\u0027: ["}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aaa499b_831adc7b","line":197,"in_reply_to":"7aaa499b_b5788b90","updated":"2015-04-15 15:07:59.000000000","message":"The app owns the entry point and the trigger, and the action history. The registration is looked up when it\u0027s time to take an action.","commit_id":"040de230681addb1e909595860c2b4d10c5f66ff"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":51,"context_line":"understanding the relationship between plan and assembly, and what part each"},{"line_number":52,"context_line":"resource represents in an application. At minimum, decoupling assembly\u0027s direct"},{"line_number":53,"context_line":"reference to plan would be a good start, and could open the way to adding"},{"line_number":54,"context_line":"versioning to plans without necessarily needing to rebuild every assembly."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Discerning from the API how many assemblies were created with a given plan is a"},{"line_number":57,"context_line":"tedious task, requiring fetching all a user\u0027s assemblies and filtering them by"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_9f898ecd","line":54,"updated":"2015-04-16 04:31:06.000000000","message":"Are you suggesting an assembly (or app) might have a list of plans that previous revisions of it used? If not, please elaborate on how versioning of plans might work.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":51,"context_line":"understanding the relationship between plan and assembly, and what part each"},{"line_number":52,"context_line":"resource represents in an application. At minimum, decoupling assembly\u0027s direct"},{"line_number":53,"context_line":"reference to plan would be a good start, and could open the way to adding"},{"line_number":54,"context_line":"versioning to plans without necessarily needing to rebuild every assembly."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Discerning from the API how many assemblies were created with a given plan is a"},{"line_number":57,"context_line":"tedious task, requiring fetching all a user\u0027s assemblies and filtering them by"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_ef379bae","line":54,"in_reply_to":"5aa745d1_99606a37","updated":"2015-04-16 19:58:24.000000000","message":"Agreed","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":51,"context_line":"understanding the relationship between plan and assembly, and what part each"},{"line_number":52,"context_line":"resource represents in an application. At minimum, decoupling assembly\u0027s direct"},{"line_number":53,"context_line":"reference to plan would be a good start, and could open the way to adding"},{"line_number":54,"context_line":"versioning to plans without necessarily needing to rebuild every assembly."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Discerning from the API how many assemblies were created with a given plan is a"},{"line_number":57,"context_line":"tedious task, requiring fetching all a user\u0027s assemblies and filtering them by"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_99606a37","line":54,"in_reply_to":"5aa745d1_9f898ecd","updated":"2015-04-16 18:54:34.000000000","message":"Maybe not so much a history as a point-in-time absolute reference. Knowing that an assembly has deployed branch \"master\" at some point in time is of minimal utility; storing the code\u0027s sha in the assembly\u0027s row would be a lot more useful, I think.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":59,"context_line":"search tools ought to be built into the API for example to filter, paginate,"},{"line_number":60,"context_line":"and order these assemblies by their fields, including created and updated"},{"line_number":61,"context_line":"dates. In any case, the conveniences the official CLI provides ought to be"},{"line_number":62,"context_line":"pulled back into the API to make Solum more accessible."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_5faae61a","line":62,"updated":"2015-04-16 04:31:06.000000000","message":"So perhaps something along the lines of a new app.search.by_plan_uri() or some equivalent?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":59,"context_line":"search tools ought to be built into the API for example to filter, paginate,"},{"line_number":60,"context_line":"and order these assemblies by their fields, including created and updated"},{"line_number":61,"context_line":"dates. In any case, the conveniences the official CLI provides ought to be"},{"line_number":62,"context_line":"pulled back into the API to make Solum more accessible."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_6f4cab42","line":62,"in_reply_to":"5aa745d1_39d6f6c5","updated":"2015-04-16 19:58:24.000000000","message":"Agreed.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":59,"context_line":"search tools ought to be built into the API for example to filter, paginate,"},{"line_number":60,"context_line":"and order these assemblies by their fields, including created and updated"},{"line_number":61,"context_line":"dates. In any case, the conveniences the official CLI provides ought to be"},{"line_number":62,"context_line":"pulled back into the API to make Solum more accessible."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_39d6f6c5","line":62,"in_reply_to":"5aa745d1_5faae61a","updated":"2015-04-16 18:54:34.000000000","message":"Certainly. GET /apps/?plan\u003dfoo to yield a list of apps would be a huge boon.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":65,"context_line":"Data model impact"},{"line_number":66,"context_line":"-----------------"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"- Plan table to be removed and replaced with a registration table."},{"line_number":69,"context_line":"  Some of an app\u0027s data belongs to an app, like the app entry point URI and the"},{"line_number":70,"context_line":"  trigger URI, but some data might change from deployment to deployment, like"},{"line_number":71,"context_line":"  the source repo and current branch."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_60528315","line":68,"updated":"2015-04-16 16:50:25.000000000","message":"Is registration different than an app?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":65,"context_line":"Data model impact"},{"line_number":66,"context_line":"-----------------"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"- Plan table to be removed and replaced with a registration table."},{"line_number":69,"context_line":"  Some of an app\u0027s data belongs to an app, like the app entry point URI and the"},{"line_number":70,"context_line":"  trigger URI, but some data might change from deployment to deployment, like"},{"line_number":71,"context_line":"  the source repo and current branch."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_198a1ac0","line":68,"in_reply_to":"5aa745d1_60528315","updated":"2015-04-16 18:54:34.000000000","message":"Yes, registration has no concept of live resources or infrastructure.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  trigger URI, but some data might change from deployment to deployment, like"},{"line_number":71,"context_line":"  the source repo and current branch."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"- Assembly table to be removed and replaced with a history table."},{"line_number":74,"context_line":"  The running of containers is still Solum\u0027s bread and butter, but the manual"},{"line_number":75,"context_line":"  management of the containers and any other Openstack resources like Nova"},{"line_number":76,"context_line":"  networks is better left to Solum to manage."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_603cc393","line":73,"updated":"2015-04-16 16:50:25.000000000","message":"-1\n\nIs there a strong reason to not continue calling the \"app instantiation\" (execution of app deploy) as Assembly?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  trigger URI, but some data might change from deployment to deployment, like"},{"line_number":71,"context_line":"  the source repo and current branch."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"- Assembly table to be removed and replaced with a history table."},{"line_number":74,"context_line":"  The running of containers is still Solum\u0027s bread and butter, but the manual"},{"line_number":75,"context_line":"  management of the containers and any other Openstack resources like Nova"},{"line_number":76,"context_line":"  networks is better left to Solum to manage."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_b4bb2d0e","line":73,"in_reply_to":"5aa745d1_603cc393","updated":"2015-04-16 18:54:34.000000000","message":"Personally I think the term is exhausted in our project and a clearer term is needed.\n\nA history captures more than just the container that is running/already ran, and I tried (unsuccessfully, apparently) to explain in the next sentence that Solum is about running apps, not babysitting containers.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":73,"context_line":"- Assembly table to be removed and replaced with a history table."},{"line_number":74,"context_line":"  The running of containers is still Solum\u0027s bread and butter, but the manual"},{"line_number":75,"context_line":"  management of the containers and any other Openstack resources like Nova"},{"line_number":76,"context_line":"  networks is better left to Solum to manage."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"App table"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_4058a7fa","line":76,"updated":"2015-04-16 16:50:25.000000000","message":"What is this line trying to convey?\n\nCould we remove it?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":73,"context_line":"- Assembly table to be removed and replaced with a history table."},{"line_number":74,"context_line":"  The running of containers is still Solum\u0027s bread and butter, but the manual"},{"line_number":75,"context_line":"  management of the containers and any other Openstack resources like Nova"},{"line_number":76,"context_line":"  networks is better left to Solum to manage."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"App table"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_945ef1e7","line":76,"in_reply_to":"5aa745d1_4058a7fa","updated":"2015-04-16 18:54:34.000000000","message":"I\u0027m trying to explain that I don\u0027t think that our users should care about individual containers, especially if each stage (\u0027action\u0027) creates and destroys containers as needed to build or test or deploy their code.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":82,"context_line":"- :code:`updated_at`: row update date and time"},{"line_number":83,"context_line":"- :code:`uuid`: type-4 uuid for building URIs"},{"line_number":84,"context_line":"- :code:`name`: human-set and -readable title"},{"line_number":85,"context_line":"- :code:`description`: human-set "},{"line_number":86,"context_line":"- :code:`app_url`: entry point of deployed app, points to LB"},{"line_number":87,"context_line":"- :code:`heat_stack_id`: stack that contains persistent LB"},{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_df6cb60a","line":85,"updated":"2015-04-16 04:31:06.000000000","message":"Extra whitespace here","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":82,"context_line":"- :code:`updated_at`: row update date and time"},{"line_number":83,"context_line":"- :code:`uuid`: type-4 uuid for building URIs"},{"line_number":84,"context_line":"- :code:`name`: human-set and -readable title"},{"line_number":85,"context_line":"- :code:`description`: human-set "},{"line_number":86,"context_line":"- :code:`app_url`: entry point of deployed app, points to LB"},{"line_number":87,"context_line":"- :code:`heat_stack_id`: stack that contains persistent LB"},{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_345ddde9","line":85,"in_reply_to":"5aa745d1_df6cb60a","updated":"2015-04-16 18:54:34.000000000","message":"Easiest comment I\u0027ve had the pleasure of addressing today.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":83,"context_line":"- :code:`uuid`: type-4 uuid for building URIs"},{"line_number":84,"context_line":"- :code:`name`: human-set and -readable title"},{"line_number":85,"context_line":"- :code:`description`: human-set "},{"line_number":86,"context_line":"- :code:`app_url`: entry point of deployed app, points to LB"},{"line_number":87,"context_line":"- :code:`heat_stack_id`: stack that contains persistent LB"},{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_d55c97ef","line":86,"updated":"2015-04-16 04:31:06.000000000","message":"You might want a different attribute for \"backend\" URLs that would be part of the LB pool in the case of a multi-tier web app.\n\nexternal_lb might be better than app_url\n\nA JSON array (list) of app_url values would indicate the various backhand endpoints for this application. Setting these and leaving external_lb set to None would be appropriate for peer-to-peer apps such as multi-user games, chat systems, job/worker systems, or storage systems.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":83,"context_line":"- :code:`uuid`: type-4 uuid for building URIs"},{"line_number":84,"context_line":"- :code:`name`: human-set and -readable title"},{"line_number":85,"context_line":"- :code:`description`: human-set "},{"line_number":86,"context_line":"- :code:`app_url`: entry point of deployed app, points to LB"},{"line_number":87,"context_line":"- :code:`heat_stack_id`: stack that contains persistent LB"},{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_400f87e1","line":86,"in_reply_to":"5aa745d1_d55c97ef","updated":"2015-04-16 16:50:25.000000000","message":"+1","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":83,"context_line":"- :code:`uuid`: type-4 uuid for building URIs"},{"line_number":84,"context_line":"- :code:`name`: human-set and -readable title"},{"line_number":85,"context_line":"- :code:`description`: human-set "},{"line_number":86,"context_line":"- :code:`app_url`: entry point of deployed app, points to LB"},{"line_number":87,"context_line":"- :code:`heat_stack_id`: stack that contains persistent LB"},{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_34871d11","line":86,"in_reply_to":"5aa745d1_d55c97ef","updated":"2015-04-16 18:54:34.000000000","message":"Glad to have that advice, I can certainly incorporate this.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Action table"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- :code:`id`: auto-incremented index"},{"line_number":94,"context_line":"- :code:`created`: row creation date and time"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_e01d7310","line":91,"updated":"2015-04-16 16:50:25.000000000","message":"How is this different than the current Assembly table.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":88,"context_line":"- :code:`trigger_id`: type-4 uuid for building trigger URLs"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Action table"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- :code:`id`: auto-incremented index"},{"line_number":94,"context_line":"- :code:`created`: row creation date and time"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_d4aa3919","line":91,"in_reply_to":"5aa745d1_e01d7310","updated":"2015-04-16 18:54:34.000000000","message":"It owns its own artifacts and logs, and also records in the info field any relevant info, like the current revision of the code cloned.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":100,"context_line":"- :code:`info`: code revision tested/built, or build deployed"},{"line_number":101,"context_line":"- :code:`status`: *QUEUED*, *IN PROGRESS*, *SUCCESS*, *FAILED*, or *ERROR*. Also, *RUNNING* and *STOPPED* for *deploy*"},{"line_number":102,"context_line":"- :code:`log_info`: Swift host/container/filepath, or local hostname/filepath."},{"line_number":103,"context_line":"- :code:`artifact`: URL of any images built."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Registration table"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_5569a78a","line":103,"updated":"2015-04-16 04:31:06.000000000","message":"might be better as artifact_url","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":100,"context_line":"- :code:`info`: code revision tested/built, or build deployed"},{"line_number":101,"context_line":"- :code:`status`: *QUEUED*, *IN PROGRESS*, *SUCCESS*, *FAILED*, or *ERROR*. Also, *RUNNING* and *STOPPED* for *deploy*"},{"line_number":102,"context_line":"- :code:`log_info`: Swift host/container/filepath, or local hostname/filepath."},{"line_number":103,"context_line":"- :code:`artifact`: URL of any images built."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Registration table"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_a0ee4bea","line":103,"in_reply_to":"5aa745d1_5569a78a","updated":"2015-04-16 16:50:25.000000000","message":"+1","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Registration table"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"- :code:`id`: auto-incremented index"},{"line_number":108,"context_line":"- :code:`created`: row creation date and time"},{"line_number":109,"context_line":"- :code:`app_id`: reference to app.id"},{"line_number":110,"context_line":"- :code:`revision_id`: incrementing index, orders rows with common app_id"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_550087aa","line":107,"updated":"2015-04-16 04:31:06.000000000","message":"are registrations immutable? If not, ewe might also want an updated date here too.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Registration table"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"- :code:`id`: auto-incremented index"},{"line_number":108,"context_line":"- :code:`created`: row creation date and time"},{"line_number":109,"context_line":"- :code:`app_id`: reference to app.id"},{"line_number":110,"context_line":"- :code:`revision_id`: incrementing index, orders rows with common app_id"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_34727de6","line":107,"in_reply_to":"5aa745d1_550087aa","updated":"2015-04-16 18:54:34.000000000","message":"That\u0027s the idea--any modifications on an existing registration would instead produce a new registration, so updated wouldn\u0027t mean anything.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"List all Apps::"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  GET http://SOLUM/apps"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"  200 OK"},{"line_number":131,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_3a4de872","line":128,"updated":"2015-04-16 04:31:06.000000000","message":"Consider the format \"GET /apps\" instead for each of these sections.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":"List all Apps::"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  GET http://SOLUM/apps"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"  200 OK"},{"line_number":131,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_f47415d0","line":128,"in_reply_to":"5aa745d1_3a4de872","updated":"2015-04-16 18:54:34.000000000","message":"Sure, that\u0027s easy to do.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  POST http://SOLUM/apps/"},{"line_number":160,"context_line":"  {"},{"line_number":161,"context_line":"    ..."},{"line_number":162,"context_line":"  }"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_d52a572c","line":161,"updated":"2015-04-16 04:31:06.000000000","message":"It might be better to show an actual example here. Is this how we create a registration?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  POST http://SOLUM/apps/"},{"line_number":160,"context_line":"  {"},{"line_number":161,"context_line":"    ..."},{"line_number":162,"context_line":"  }"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_744fe592","line":161,"in_reply_to":"5aa745d1_d52a572c","updated":"2015-04-16 18:54:34.000000000","message":"Oh, I definitely intend to, I just hadn\u0027t hammered out the shape of the data yet!","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Update one App::"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3\u0027"},{"line_number":199,"context_line":"  {"},{"line_number":200,"context_line":"    \u0027description\u0027: \u0027My old ghost blog\u0027,"},{"line_number":201,"context_line":"  }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_951def11","line":198,"updated":"2015-04-16 04:31:06.000000000","message":"What about PATCH?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Update one App::"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3\u0027"},{"line_number":199,"context_line":"  {"},{"line_number":200,"context_line":"    \u0027description\u0027: \u0027My old ghost blog\u0027,"},{"line_number":201,"context_line":"  }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_4f6e90ca","line":198,"in_reply_to":"5aa745d1_951def11","updated":"2015-04-16 18:54:34.000000000","message":"Right you are, considering PUT should contain a complete resource.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"  DELETE http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  204 NO_CONTENT"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"**Registration commands**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_551767ed","line":228,"updated":"2015-04-16 04:31:06.000000000","message":"I think you meant \"204 No Content\"","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"  DELETE http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  204 NO_CONTENT"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"**Registration commands**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_4fa57002","line":228,"in_reply_to":"5aa745d1_551767ed","updated":"2015-04-16 18:54:34.000000000","message":"I sure did.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"166e58d4c19cdd0342b50cdc7dfa648074c81f57","unresolved":false,"context_lines":[{"line_number":228,"context_line":"  204 NO_CONTENT"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"**Registration commands**"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"A registration is a set of user-defined information pertaining to the building"},{"line_number":234,"context_line":"and deploying of an application. It includes information like the language pack"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_60a603c3","line":231,"updated":"2015-04-16 16:50:25.000000000","message":"How is this different than the app table?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":228,"context_line":"  204 NO_CONTENT"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"**Registration commands**"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"A registration is a set of user-defined information pertaining to the building"},{"line_number":234,"context_line":"and deploying of an application. It includes information like the language pack"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_d2bb68c3","line":231,"in_reply_to":"5aa745d1_2f81044b","updated":"2015-04-16 19:58:24.000000000","message":"Consider calling this app \"details\" or \"parameters\" instead.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":228,"context_line":"  204 NO_CONTENT"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"**Registration commands**"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"A registration is a set of user-defined information pertaining to the building"},{"line_number":234,"context_line":"and deploying of an application. It includes information like the language pack"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_2f81044b","line":231,"in_reply_to":"5aa745d1_60a603c3","updated":"2015-04-16 18:54:34.000000000","message":"Registrations are set by users; the app itself is managed by Solum.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Create new registration::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations"},{"line_number":299,"context_line":"  {"},{"line_number":300,"context_line":"    \u0027repo_url\u0027: \u0027http://github.com/fakeuser/ghost.git\u0027,"},{"line_number":301,"context_line":"    \u0027repo_sha\u0027: \u0027newcolorscheme\u0027,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_75f143cd","line":298,"updated":"2015-04-16 04:31:06.000000000","message":"So we must create an app before we can register it? How would we express an app that is registered by not running at all?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Create new registration::"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations"},{"line_number":299,"context_line":"  {"},{"line_number":300,"context_line":"    \u0027repo_url\u0027: \u0027http://github.com/fakeuser/ghost.git\u0027,"},{"line_number":301,"context_line":"    \u0027repo_sha\u0027: \u0027newcolorscheme\u0027,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_2ff8e4e4","line":298,"in_reply_to":"5aa745d1_75f143cd","updated":"2015-04-16 18:54:34.000000000","message":"I do need to specify a base registration mechanism. I think part of the request body to POST /apps/ could include an initial repo/sha/lp combination.\n\nYou bring up a good point about the status of a completely-green app; maybe lacking any other actions the default status is just \u0027REGISTERED\u0027 like we\u0027ve defaulted in the CLI at present.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Create new registration by duplicating specific registration::"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":319,"context_line":"  {"},{"line_number":320,"context_line":"    ..."},{"line_number":321,"context_line":"  }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_f5b31309","line":318,"updated":"2015-04-16 04:31:06.000000000","message":"So if you post to an existing registration, that clones it into a new id?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Create new registration by duplicating specific registration::"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":319,"context_line":"  {"},{"line_number":320,"context_line":"    ..."},{"line_number":321,"context_line":"  }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ab451fb_1cb6b53d","line":318,"in_reply_to":"5aa745d1_cff180cf","updated":"2015-04-16 19:58:24.000000000","message":"Perhaps PATCH on mutable attributes?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Create new registration by duplicating specific registration::"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":319,"context_line":"  {"},{"line_number":320,"context_line":"    ..."},{"line_number":321,"context_line":"  }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_cff180cf","line":318,"in_reply_to":"5aa745d1_f5b31309","updated":"2015-04-16 18:54:34.000000000","message":"This part isn\u0027t so gracefully laid out yet. How would you propose I build RESTful resource that only supports amendment?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":319,"context_line":"  {"},{"line_number":320,"context_line":"    ..."},{"line_number":321,"context_line":"  }"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_75adc387","line":320,"updated":"2015-04-16 04:31:06.000000000","message":"What goes in here exactly?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":319,"context_line":"  {"},{"line_number":320,"context_line":"    ..."},{"line_number":321,"context_line":"  }"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_6f3cac93","line":320,"in_reply_to":"5aa745d1_75adc387","updated":"2015-04-16 18:54:34.000000000","message":"Still working on it!","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":337,"context_line":"  {"},{"line_number":338,"context_line":"    \u0027repo_sha\u0027: \u0027addcarousel\u0027,"},{"line_number":339,"context_line":"  }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_95cbaf72","line":338,"updated":"2015-04-16 04:31:06.000000000","message":"how do we know this is a modification rather than a clone?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":337,"context_line":"  {"},{"line_number":338,"context_line":"    \u0027repo_sha\u0027: \u0027addcarousel\u0027,"},{"line_number":339,"context_line":"  }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_cf9f405e","line":338,"in_reply_to":"5aa745d1_95cbaf72","updated":"2015-04-16 18:54:34.000000000","message":"You\u0027re right, it\u0027s not really a PUT or a PATCH, or really even a POST. Knowing it\u0027s meant to be a modification is up to us enforcing the contract that registrations are immutable, but can be amended.\n\nI think this is a useful and important feature, but I\u0027m not so sure about how to expose it RESTfully, and I\u0027d appreciate some advice.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"  PUT http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/registrations/1"},{"line_number":337,"context_line":"  {"},{"line_number":338,"context_line":"    \u0027repo_sha\u0027: \u0027addcarousel\u0027,"},{"line_number":339,"context_line":"  }"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"  200 OK"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ab451fb_bcf22105","line":338,"in_reply_to":"5aa745d1_cf9f405e","updated":"2015-04-16 19:58:24.000000000","message":"A patch, and a contract (expressed only by documentation) that indicates which attributes are mutable would probably by cleaner for this.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"**Workflow action commands**"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"An app of course manages each stage of an application through its CI/CD"},{"line_number":355,"context_line":"lifecycle. The workflow commands expose application control verbs to the user"},{"line_number":356,"context_line":"for direct interaction."},{"line_number":357,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_75c82375","line":354,"updated":"2015-04-16 04:31:06.000000000","message":"s/of course//;","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":351,"context_line":""},{"line_number":352,"context_line":"**Workflow action commands**"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"An app of course manages each stage of an application through its CI/CD"},{"line_number":355,"context_line":"lifecycle. The workflow commands expose application control verbs to the user"},{"line_number":356,"context_line":"for direct interaction."},{"line_number":357,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_efa0bc92","line":354,"in_reply_to":"5aa745d1_75c82375","updated":"2015-04-16 18:54:34.000000000","message":"Can do.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":431,"context_line":"    }"},{"line_number":432,"context_line":"  }"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Stop running app::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":437,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_95928f56","line":434,"updated":"2015-04-16 04:31:06.000000000","message":"What does stop mean, exactly? Does it mean that compute instances remain, but processes within them are killed? Does it mean that the compute instances are deleted, but an LB remains?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":431,"context_line":"    }"},{"line_number":432,"context_line":"  }"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Stop running app::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":437,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_cff2a09a","line":434,"in_reply_to":"5aa745d1_95928f56","updated":"2015-04-16 18:54:34.000000000","message":"It will stop the compute instance. The LB will persist for the life of the app to keep hold of the entry point, so subsequent deploys don\u0027t change the app_url and surprise the user.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":431,"context_line":"    }"},{"line_number":432,"context_line":"  }"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"Stop running app::"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":437,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ab451fb_5cc1dd7f","line":434,"in_reply_to":"5aa745d1_cff2a09a","updated":"2015-04-16 19:58:24.000000000","message":"Okay, let\u0027s include text to explain this in the spec here, and in the associated help text.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    }"},{"line_number":450,"context_line":"  }"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"Execute entire workflow defined in current registration ???::"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":455,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_559c0769","line":452,"updated":"2015-04-16 04:31:06.000000000","message":"Sorry, I don\u0027t understand what this is trying to convey. Is this a custom action definition? A concrete example might work better to express this idea.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    }"},{"line_number":450,"context_line":"  }"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"Execute entire workflow defined in current registration ???::"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":455,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ab451fb_3cf171ce","line":452,"in_reply_to":"5aa745d1_4f8330cd","updated":"2015-04-16 19:58:24.000000000","message":"KISS. Sounds like this feature can be proposed as a follow-on.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":449,"context_line":"    }"},{"line_number":450,"context_line":"  }"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"Execute entire workflow defined in current registration ???::"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":455,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_4f8330cd","line":452,"in_reply_to":"5aa745d1_559c0769","updated":"2015-04-16 18:54:34.000000000","message":"Right, I\u0027m working on that. We need a big red lever a user can pull to run fresh code through test, build, and deploy. Maybe it\u0027s enough that a user has to define the three stages, and then call deploy?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    ???"},{"line_number":462,"context_line":"  }"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"Execute entire workflow defined in specific registration ???::"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":467,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_35885b22","line":464,"updated":"2015-04-16 04:31:06.000000000","message":"I do not understand this either, sorry.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":461,"context_line":"    ???"},{"line_number":462,"context_line":"  }"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"Execute entire workflow defined in specific registration ???::"},{"line_number":465,"context_line":""},{"line_number":466,"context_line":"  POST http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":467,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_8fc7f811","line":464,"in_reply_to":"5aa745d1_35885b22","updated":"2015-04-16 18:54:34.000000000","message":"Same as above, except the above is more \"execute /apps/foo/actions/latest\" and this is \"execute /apps/foo/actions/3\"","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":484,"context_line":"is in fact only appended to by Solum by way of executing workflow actions upon"},{"line_number":485,"context_line":"an app."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"List complete history::"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"  GET http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_d586d712","line":487,"updated":"2015-04-16 04:31:06.000000000","message":"What pagination scheme will apply to this?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"cb34d68bb1da75dba8c9ca439d2d9650a4f5d764","unresolved":false,"context_lines":[{"line_number":484,"context_line":"is in fact only appended to by Solum by way of executing workflow actions upon"},{"line_number":485,"context_line":"an app."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"List complete history::"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"  GET http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3ab451fb_5c79dd2e","line":487,"in_reply_to":"5aa745d1_cf93c0f9","updated":"2015-04-16 19:58:24.000000000","message":"Yes, but we need to mention that somewhere. We should also have a sensible default for the number returned, and NOT have the expectation that by default you are going to get a full list of all actions in the history when you call this API method.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"33223174db18b9b434b71e862854d4246d01a277","unresolved":false,"context_lines":[{"line_number":484,"context_line":"is in fact only appended to by Solum by way of executing workflow actions upon"},{"line_number":485,"context_line":"an app."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"List complete history::"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"  GET http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_cf93c0f9","line":487,"in_reply_to":"5aa745d1_d586d712","updated":"2015-04-16 18:54:34.000000000","message":"Am I answering the right question when I suggest \"offset and count\"?","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":668,"name":"Adrian Otto","email":"aotto@aotto.com","username":"aotto"},"change_message_id":"a74317132ced38751fe5b70dbe2c64525f6f6028","unresolved":false,"context_lines":[{"line_number":586,"context_line":""},{"line_number":587,"context_line":"Download logs of specific completed action::"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"  GET http://SOLUM/apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions/30/logs "},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"  200 OK"},{"line_number":592,"context_line":"  \u003ctext/plain logfile\u003e"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5aa745d1_f598b36c","line":589,"updated":"2015-04-16 04:31:06.000000000","message":"Remove trailing whitespace.","commit_id":"c4a7d06e378896e33dfb9335d025e38352f3a5a7"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"  200 OK"},{"line_number":147,"context_line":"  {"},{"line_number":148,"context_line":"    \u0027apps\u0027: ["},{"line_number":149,"context_line":"      {"},{"line_number":150,"context_line":"        \u0027uuid\u0027: \u0027039db61a-b79a-43b3-821f-1e84e49fbdf3\u0027,"},{"line_number":151,"context_line":"        \u0027name\u0027: \u0027ghost\u0027,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_46e4720c","line":148,"updated":"2015-05-13 23:42:12.000000000","message":"looks good.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        \u0027uuid\u0027: \u0027039db61a-b79a-43b3-821f-1e84e49fbdf3\u0027,"},{"line_number":151,"context_line":"        \u0027name\u0027: \u0027ghost\u0027,"},{"line_number":152,"context_line":"        \u0027description\u0027: \u0027My ghost blog\u0027,"},{"line_number":153,"context_line":"        \u0027status\u0027: {"},{"line_number":154,"context_line":"          \u0027test\u0027: \u0027TESTING\u0027,"},{"line_number":155,"context_line":"          \u0027build\u0027: \u0027QUEUED\u0027,"},{"line_number":156,"context_line":"          \u0027deploy\u0027: \u0027READY\u0027,"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_06179aee","line":153,"updated":"2015-05-13 23:42:12.000000000","message":"how about workflow_status?","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"**Workflow action commands**"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"An app manages each stage of an application through its CI/CD lifecycle. The"},{"line_number":288,"context_line":"workflow commands expose application control verbs to the user for direct"},{"line_number":289,"context_line":"interaction."},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_06c55a5a","line":287,"updated":"2015-05-13 23:42:12.000000000","message":"I am not clear what this sentence means.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"589b1184c5ef0f83f4bbc89f81cc7c4be635ed5a","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"**Workflow action commands**"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"An app manages each stage of an application through its CI/CD lifecycle. The"},{"line_number":288,"context_line":"workflow commands expose application control verbs to the user for direct"},{"line_number":289,"context_line":"interaction."},{"line_number":290,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_af1d2011","line":287,"in_reply_to":"7a016987_06c55a5a","updated":"2015-05-14 15:30:27.000000000","message":"I\u0027ll reword it to reflect the focus on workflows instead of actions.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"Build app"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"  If a test_cmd is specified and there is no test action PASSED for the current"},{"line_number":313,"context_line":"  build, a test action will be appended to the action queue before the build"},{"line_number":314,"context_line":"  action. ::"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_46cb5273","line":312,"updated":"2015-05-13 23:42:12.000000000","message":"I am not clear on this.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"589b1184c5ef0f83f4bbc89f81cc7c4be635ed5a","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"Build app"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"  If a test_cmd is specified and there is no test action PASSED for the current"},{"line_number":313,"context_line":"  build, a test action will be appended to the action queue before the build"},{"line_number":314,"context_line":"  action. ::"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_afc76044","line":312,"in_reply_to":"7a016987_46cb5273","updated":"2015-05-14 15:30:27.000000000","message":"No matter, workflow refocus will change this. The idea was if you specified tests and hadn\u0027t passed them yet, a test action would be queued first and the build would then wait for those tests to pass.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":332,"context_line":"Deploy app with last good build"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  If there is no last good build, a build action will be appended to the queue"},{"line_number":335,"context_line":"  first, and that build_id will be used in the deploy action. ::"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    POST /apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":338,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_667c0e21","line":335,"updated":"2015-05-13 23:42:12.000000000","message":"Seems a bit much for Solum to figure out.\n\nWhy not allow the user to specify \u0027last-good-build\u0027 as the verb. If no last-good-build is available then we just error out.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"589b1184c5ef0f83f4bbc89f81cc7c4be635ed5a","unresolved":false,"context_lines":[{"line_number":332,"context_line":"Deploy app with last good build"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"  If there is no last good build, a build action will be appended to the queue"},{"line_number":335,"context_line":"  first, and that build_id will be used in the deploy action. ::"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    POST /apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"},{"line_number":338,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_0f0c3493","line":335,"in_reply_to":"7a016987_667c0e21","updated":"2015-05-14 15:30:27.000000000","message":"Maybe it is too much.\n\nRethinking based on workflows, it seems a deploy-only workflow will have to either take a specific artifact or understand last-good-build was implied.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"Deploy app with specific good build"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"  If the action isn\u0027t a good build, this request will fail. If it is a build,"},{"line_number":357,"context_line":"  and isn\u0027t QUEUED, BUILDING, or BUILT, this request will fail. ::"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    POST /apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_a698c66b","line":356,"updated":"2015-05-13 23:42:12.000000000","message":"I like this.\n\nI suggest we follow this same approach for \u0027last-good-build\u0027.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"589b1184c5ef0f83f4bbc89f81cc7c4be635ed5a","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"Deploy app with specific good build"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"  If the action isn\u0027t a good build, this request will fail. If it is a build,"},{"line_number":357,"context_line":"  and isn\u0027t QUEUED, BUILDING, or BUILT, this request will fail. ::"},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    POST /apps/039db61a-b79a-43b3-821f-1e84e49fbdf3/actions"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_afd880f0","line":356,"in_reply_to":"7a016987_a698c66b","updated":"2015-05-14 15:30:27.000000000","message":"These are the same command, differing only that build_id was specified. Being able to call specific artifact by their serial number instead of an artifact URL or UUID seems like a big win to me, so I\u0027d like to retain that somehow, maybe by referring to the artifacts of a different, completed workflow?","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":539,"context_line":"official CLI."},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"The planfile format will also change dramatically. I seek to remove the"},{"line_number":542,"context_line":"confusing multiple-artifact section, and its free-form \u0027content\u0027 section."},{"line_number":543,"context_line":"Instead, to reflect the new fields in the planfile, it might be a simple as: ::"},{"line_number":544,"context_line":""},{"line_number":545,"context_line":"  :code:`name`: fooweb"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_66f88e7d","line":542,"updated":"2015-05-13 23:42:12.000000000","message":"+1 to removing multiple-artifact section and the \u0027content\u0027 section.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":"- Create app and action tables, models, and resources"},{"line_number":590,"context_line":"- Add code to write to action and app tables"},{"line_number":591,"context_line":"- Expose app and actions via API"},{"line_number":592,"context_line":"- Add CLI commands for (new) app and actions"},{"line_number":593,"context_line":"- Use app and actions models to replace assembly and plan logic in API"},{"line_number":594,"context_line":"- Remove assembly and plan models from code and database"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_06ef9ab1","line":591,"updated":"2015-05-13 23:42:12.000000000","message":"Not sure if actions need to represented in the API as resources.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"589b1184c5ef0f83f4bbc89f81cc7c4be635ed5a","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":"- Create app and action tables, models, and resources"},{"line_number":590,"context_line":"- Add code to write to action and app tables"},{"line_number":591,"context_line":"- Expose app and actions via API"},{"line_number":592,"context_line":"- Add CLI commands for (new) app and actions"},{"line_number":593,"context_line":"- Use app and actions models to replace assembly and plan logic in API"},{"line_number":594,"context_line":"- Remove assembly and plan models from code and database"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_6fe288a1","line":591,"in_reply_to":"7a016987_06ef9ab1","updated":"2015-05-14 15:30:27.000000000","message":"Workflow, then.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":589,"context_line":"- Create app and action tables, models, and resources"},{"line_number":590,"context_line":"- Add code to write to action and app tables"},{"line_number":591,"context_line":"- Expose app and actions via API"},{"line_number":592,"context_line":"- Add CLI commands for (new) app and actions"},{"line_number":593,"context_line":"- Use app and actions models to replace assembly and plan logic in API"},{"line_number":594,"context_line":"- Remove assembly and plan models from code and database"},{"line_number":595,"context_line":"- Remove assembly, plan, component, pipeline commands from CLI"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_c62f42f5","line":592,"updated":"2015-05-13 23:42:12.000000000","message":"I don\u0027t think we need CLI commands for actions. The triggering of workflows should fold into flags defined for the app command.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"589b1184c5ef0f83f4bbc89f81cc7c4be635ed5a","unresolved":false,"context_lines":[{"line_number":589,"context_line":"- Create app and action tables, models, and resources"},{"line_number":590,"context_line":"- Add code to write to action and app tables"},{"line_number":591,"context_line":"- Expose app and actions via API"},{"line_number":592,"context_line":"- Add CLI commands for (new) app and actions"},{"line_number":593,"context_line":"- Use app and actions models to replace assembly and plan logic in API"},{"line_number":594,"context_line":"- Remove assembly and plan models from code and database"},{"line_number":595,"context_line":"- Remove assembly, plan, component, pipeline commands from CLI"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_2f9a5015","line":592,"in_reply_to":"7a016987_c62f42f5","updated":"2015-05-14 15:30:27.000000000","message":"Got it.","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"8e9f8594060909bb3110accd03b3b23dd95a566f","unresolved":false,"context_lines":[{"line_number":616,"context_line":"Significantly less effort will be spent on explaining assemblies and plans and"},{"line_number":617,"context_line":"their relationship to an application--arguably one of the most confusing ideas"},{"line_number":618,"context_line":"in Solum at present is that it is a tool for managing application lifecycles"},{"line_number":619,"context_line":"and yet has no application resource to speak of."},{"line_number":620,"context_line":""},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_06467abf","line":619,"updated":"2015-05-13 23:42:12.000000000","message":"well said","commit_id":"11e012b37751dc80d64e2dcfca1b2957957a4638"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"  GET /apps"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  200 OK"},{"line_number":194,"context_line":"  {"},{"line_number":195,"context_line":"    \"apps\": ["},{"line_number":196,"context_line":"      {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_a43830f0","line":193,"updated":"2015-05-19 16:56:56.000000000","message":"+1","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":399,"context_line":"      \"updated\": \u003cdatetime\u003e,"},{"line_number":400,"context_line":"      \"status\": {"},{"line_number":401,"context_line":"        \"test\": \"QUEUED\","},{"line_number":402,"context_line":"        \"build\": \"QUEUED\","},{"line_number":403,"context_line":"        \"deploy\": \"QUEUED\""},{"line_number":404,"context_line":"      },"},{"line_number":405,"context_line":"      \"source\": {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_876c16d1","line":402,"updated":"2015-05-19 16:56:56.000000000","message":"The \u0027build\u0027 and \u0027deploy\u0027 status here might be confusing, especially given that the action in POST to workflows is only \u0027test\u0027. May be this can be removed.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":399,"context_line":"      \"updated\": \u003cdatetime\u003e,"},{"line_number":400,"context_line":"      \"status\": {"},{"line_number":401,"context_line":"        \"test\": \"QUEUED\","},{"line_number":402,"context_line":"        \"build\": \"QUEUED\","},{"line_number":403,"context_line":"        \"deploy\": \"QUEUED\""},{"line_number":404,"context_line":"      },"},{"line_number":405,"context_line":"      \"source\": {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_c7d56e1c","line":402,"in_reply_to":"7a016987_876c16d1","updated":"2015-05-19 17:01:44.000000000","message":"I think establishing that each of those values being there as an invariant is important. Maybe have a null or \"unspecified\" value to show that you\u0027ll only be running tests?","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":409,"context_line":"      \"config\": {"},{"line_number":410,"context_line":"        \"test_cmd\": \"tox -epep8 -epy27\","},{"line_number":411,"context_line":"        \"run_cmd\": \"bin/start-app.py\","},{"line_number":412,"context_line":"        \"build_id\": 34,"},{"line_number":413,"context_line":"      },"},{"line_number":414,"context_line":"      \"actions\": ["},{"line_number":415,"context_line":"        \"test\""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_875656cc","line":412,"updated":"2015-05-19 17:01:44.000000000","message":"Should note this is defaulted to the wf_id unless specified otherwise.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":436,"context_line":"      \"status\": {"},{"line_number":437,"context_line":"        \"test\": \"QUEUED\","},{"line_number":438,"context_line":"        \"build\": \"QUEUED\","},{"line_number":439,"context_line":"        \"deploy\": \"QUEUED\""},{"line_number":440,"context_line":"      },"},{"line_number":441,"context_line":"      \"source\": {"},{"line_number":442,"context_line":"        \"repository\": \"http://github.com/fakeuser/fakedjangoapp.git\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_67711aa8","line":439,"updated":"2015-05-19 16:56:56.000000000","message":"deploy can be removed.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":436,"context_line":"      \"status\": {"},{"line_number":437,"context_line":"        \"test\": \"QUEUED\","},{"line_number":438,"context_line":"        \"build\": \"QUEUED\","},{"line_number":439,"context_line":"        \"deploy\": \"QUEUED\""},{"line_number":440,"context_line":"      },"},{"line_number":441,"context_line":"      \"source\": {"},{"line_number":442,"context_line":"        \"repository\": \"http://github.com/fakeuser/fakedjangoapp.git\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_07c70665","line":439,"in_reply_to":"7a016987_67711aa8","updated":"2015-05-19 17:01:44.000000000","message":"Or at least changed to \"not gonna happen\".","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":471,"context_line":"      \"created\": \u003cdatetime\u003e,"},{"line_number":472,"context_line":"      \"updated\": \u003cdatetime\u003e,"},{"line_number":473,"context_line":"      \"status\": {"},{"line_number":474,"context_line":"        \"test\": \"QUEUED\","},{"line_number":475,"context_line":"        \"build\": \"QUEUED\","},{"line_number":476,"context_line":"        \"deploy\": \"QUEUED\""},{"line_number":477,"context_line":"      },"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_2768c2b8","line":474,"updated":"2015-05-19 16:56:56.000000000","message":"test and deploy can be removed.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":494,"context_line":""},{"line_number":495,"context_line":"Deploy app with last good build"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    Build id 0 is a sentinel to mean \"the last good build at deploy time\"."},{"line_number":498,"context_line":"    This is not updated until the deploy action is started, at which point"},{"line_number":499,"context_line":"    the workflow\u0027s build_id will be updated to the appropriate value, or else"},{"line_number":500,"context_line":"    the workflow will be marked as ERROR, with the reason \u0027No such build\u0027.::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_87c896a9","line":497,"updated":"2015-05-19 17:01:44.000000000","message":"Oh, this prose is out of date, or maybe the example is.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":513,"context_line":"          \"updated\": \u003cdatetime\u003e,"},{"line_number":514,"context_line":"          \"status\": {"},{"line_number":515,"context_line":"            \"test\": \"QUEUED\","},{"line_number":516,"context_line":"            \"build\": \"QUEUED\","},{"line_number":517,"context_line":"            \"deploy\": \"QUEUED\""},{"line_number":518,"context_line":"          },"},{"line_number":519,"context_line":"          \"source\": {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_a7a272fb","line":516,"updated":"2015-05-19 16:56:56.000000000","message":"test and build can be removed.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":523,"context_line":"          \"config\": {"},{"line_number":524,"context_line":"            \"test_cmd\": \"tox -epep8 -epy27\","},{"line_number":525,"context_line":"            \"run_cmd\": \"bin/start-app.py\","},{"line_number":526,"context_line":"            \"build_id\": 34,"},{"line_number":527,"context_line":"          },"},{"line_number":528,"context_line":"          \"actions\": ["},{"line_number":529,"context_line":"            \"deploy\""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_c7844e5f","line":526,"updated":"2015-05-19 16:56:56.000000000","message":"Should this be \u0027build_id\u0027: 0, given that you are recommending to use the value \u00270\u0027 to mean \"the last good build\"?","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":523,"context_line":"          \"config\": {"},{"line_number":524,"context_line":"            \"test_cmd\": \"tox -epep8 -epy27\","},{"line_number":525,"context_line":"            \"run_cmd\": \"bin/start-app.py\","},{"line_number":526,"context_line":"            \"build_id\": 34,"},{"line_number":527,"context_line":"          },"},{"line_number":528,"context_line":"          \"actions\": ["},{"line_number":529,"context_line":"            \"deploy\""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_2795623e","line":526,"in_reply_to":"7a016987_c7844e5f","updated":"2015-05-19 17:01:44.000000000","message":"You\u0027re right, I\u0027ve got to sync the prose with the example again, and I\u0027ve missed this in reshaping these example responses. I\u0027ll address that and some errant single-quoted strings at the same time.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":535,"context_line":""},{"line_number":536,"context_line":"Deploy app with specific build"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"  If the action isn\u0027t a good build, this request will fail. If it is a build,"},{"line_number":539,"context_line":"  and isn\u0027t QUEUED, BUILDING, or BUILT, this request will fail. ::"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_474e1e3c","line":538,"updated":"2015-05-19 17:01:44.000000000","message":"If the build_id referenced","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        \"created\": \u003cdatetime\u003e,"},{"line_number":556,"context_line":"        \"updated\": \u003cdatetime\u003e,"},{"line_number":557,"context_line":"        \"status\": {"},{"line_number":558,"context_line":"          \"test\": \"QUEUED\","},{"line_number":559,"context_line":"          \"build\": \"QUEUED\","},{"line_number":560,"context_line":"          \"deploy\": \"QUEUED\""},{"line_number":561,"context_line":"        },"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_677fda66","line":558,"updated":"2015-05-19 16:56:56.000000000","message":"test and build can be removed.","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"f2e0a771c81a483a69a935d93ed14d1e74acc364","unresolved":false,"context_lines":[{"line_number":623,"context_line":"As workflows progress through their actions, a record of the changes made to"},{"line_number":624,"context_line":"an app are recorded in the history table. In addition, any logs or artifacts"},{"line_number":625,"context_line":"produced during the course of these actions will be stored with this record."},{"line_number":626,"context_line":"These three resources are managed by the engine with the same table, but several"},{"line_number":627,"context_line":"resources are exposed via the API to facilitate their retrieval."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"These commands in particular benefit from filtering and pagination."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_67f6bafa","line":626,"updated":"2015-05-19 16:56:56.000000000","message":"What do you mean by \"same table\" here?","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":1375,"name":"Ed Cranford","email":"ed.cranford@gmail.com","username":"ed--cranford"},"change_message_id":"a8d3f20594164bde3619cd4b1244d58e33876cb0","unresolved":false,"context_lines":[{"line_number":623,"context_line":"As workflows progress through their actions, a record of the changes made to"},{"line_number":624,"context_line":"an app are recorded in the history table. In addition, any logs or artifacts"},{"line_number":625,"context_line":"produced during the course of these actions will be stored with this record."},{"line_number":626,"context_line":"These three resources are managed by the engine with the same table, but several"},{"line_number":627,"context_line":"resources are exposed via the API to facilitate their retrieval."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"These commands in particular benefit from filtering and pagination."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a016987_a78f1229","line":626,"in_reply_to":"7a016987_67f6bafa","updated":"2015-05-19 17:01:44.000000000","message":"History","commit_id":"6d5c32928ef1fe8c54c5289614258fa1163308f9"},{"author":{"_account_id":9095,"name":"Murali Allada","email":"amuralis@hotmail.com","username":"murali.allada"},"change_message_id":"d15cfbc770a2c94ae50ebd035bf4652f5944f59e","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  - (standard metadata)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"  - :code:`languagepack_id`: reference to images.id"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"  - :code:`load_balancer`: entry point of deployed app, points to LB"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a016987_86419bab","line":112,"updated":"2015-05-20 19:53:27.000000000","message":"The languagepack should be mutable. This can change over time. for example, A user should be able to update the languagepack to make use of a new version of an operator languagepack.\n\nAlso, this field should just be \u0027languagepack\u0027 not \u0027languagepack_id\u0027 as this field can hold uuids and names.","commit_id":"653a0d07b46b83eb8163964ee483b07f0e794867"},{"author":{"_account_id":9095,"name":"Murali Allada","email":"amuralis@hotmail.com","username":"murali.allada"},"change_message_id":"d15cfbc770a2c94ae50ebd035bf4652f5944f59e","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  - :code:`trigger_actions`: JSON array of commands to be executed when the trigger is invoked."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Workflow table:"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"- Immutable fields:"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a016987_e60a8f89","line":139,"updated":"2015-05-20 19:53:27.000000000","message":"I like how you have added sections for mutable and immutable values.","commit_id":"653a0d07b46b83eb8163964ee483b07f0e794867"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"7f811f83b9040ee61e62c8d0c4b786cc1022213d","unresolved":false,"context_lines":[{"line_number":400,"context_line":"      \"created\": \u003cdatetime\u003e,"},{"line_number":401,"context_line":"      \"updated\": \u003cdatetime\u003e,"},{"line_number":402,"context_line":"      \"status\": {"},{"line_number":403,"context_line":"        \"test\": \"QUEUED\""},{"line_number":404,"context_line":"      },"},{"line_number":405,"context_line":"      \"source\": {"},{"line_number":406,"context_line":"        \"repository\": \"http://github.com/fakeuser/fakedjangoapp.git\","}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a016987_cab8d5ca","line":403,"updated":"2015-05-19 17:46:02.000000000","message":"+1","commit_id":"653a0d07b46b83eb8163964ee483b07f0e794867"}]}
