)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhang yali \u003czhangyali369@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-31 09:04:06 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"bp/horizon-policy-abstraction"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Abstract policy into \"name\", \"object\", \"violation condition\", \"action\" "},{"line_number":10,"context_line":"and \"data\", and express this abstraction in Horizon. This abstraction "}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_95834056","line":7,"updated":"2015-04-06 02:25:10.000000000","message":"The subject line for the commit message is usually a few words summarizing the subject of the review.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"bp/horizon-policy-abstraction"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Abstract policy into \"name\", \"object\", \"violation condition\", \"action\" "},{"line_number":10,"context_line":"and \"data\", and express this abstraction in Horizon. This abstraction "},{"line_number":11,"context_line":"is not just a expression of datasource drivers, and it makes those "},{"line_number":12,"context_line":"users who are not familiar with Datalog express their intent more   "}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"baa041b7_75867c66","line":9,"updated":"2015-04-06 02:25:10.000000000","message":"Remove the trailing whitespace (highlighted in red) here and below.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"modified:   horizon-policy-abstraction.rst"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"-Clarify the meanings of abstraction elements and give some examples"},{"line_number":10,"context_line":"-Give an example to show how the UI looks like and how to use it"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: bleprint horizon-policy-abstraction"},{"line_number":13,"context_line":"Change-Id: I4c26bcb27f3f14cd2961a6ff642d2bcfbaccca79"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"9aa53dc9_b9a8468d","line":10,"updated":"2015-04-10 03:00:08.000000000","message":"The commit message (including subject line, which is a one line summary of the changes) stays the same across patches so that if someone reads the commit log later, they\u0027ll know what went into this commit. Please revert to the previous message. If you want to note something about a specific patch, you can add it using the \"Add Comment\" button on the review page.","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"70bfbc6d2b237f84c2225c27a37384fc917d9940","unresolved":false,"context_lines":[{"line_number":17,"context_line":"-Clarify the meanings of abstraction elements and give some examples"},{"line_number":18,"context_line":"-Give an example to show how the UI looks like and how to use it"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Implements: bleprint horizon-policy-abstraction"},{"line_number":21,"context_line":"Change-Id: I4c26bcb27f3f14cd2961a6ff642d2bcfbaccca79"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"bab921fb_cd951f41","line":20,"updated":"2015-04-23 02:22:04.000000000","message":"Typo in \"blueprint\", which prevents it from rendering as a link here, and you don\u0027t need to include information about changes you\u0027ve made between patches, in the commit message.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"}],"specs/kilo/horizon-policy-abstraction.rst":[{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"https://blueprints.launchpad.net/congress/+spec/horizon-policy-abstraction"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Congress aims to provide an extensible open-source framework for governance and regulatory compliance across any cloud services. Users can define policies in congress by pure Datalog. But Datalog, working with data-tables, is a very abstract and complex description for policies. Users may have some problems to understand and deploy policies by Datalog. So this specification describes an abstraction for policies, and mappings it to Datalog. And the Ultimate goal is to introduce a more simple and intuitive DSL (Domain Specific Language) to express policies in Congress."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Problem description"},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_159850bf","line":12,"updated":"2015-04-06 02:25:10.000000000","message":"I think it\u0027s confusing to say that Datalog is \"abstract and complex\" when the feature is about abstracting policies.\n\nI would explicitly mention that the scope of this feature is the Horizon UI, and after reading the whole doc, only for creation of policies vs. also showing policies in an abstracted form.\n\nOn a formatting note - please keep lines to 79 characters or less. Longer lines wrap around in a way that makes the text more difficult to read. Also, with shorter lines, comments can be left closer to the line being referenced.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Problem description"},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Datalog is a not institutional, even difficult for users to express users’ policy who are not familiar with it. And it may cause some misinterpretation when translate the real intent to Datalog because of the complex logic. "},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Proposed change"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_3580f445","line":17,"updated":"2015-04-06 02:25:10.000000000","message":"I think you mean \"intuitive to use\", not \"institutional\". \n\nAlso, remove the extra whitespace (highlighted in red) here and below.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Proposed change"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Congress makes the whole cloud compliance by defining violation state and action for violation."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"                Congress Policy ::\u003d violation condition “do” action for violation "},{"line_number":25,"context_line":"           "}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_7562fcae","line":22,"updated":"2015-04-06 02:25:10.000000000","message":"\"compliant\", not \"compliance\".","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"                Congress Policy ::\u003d violation condition “do” action for violation "},{"line_number":25,"context_line":"           "},{"line_number":26,"context_line":"So, policy abstraction is to abstract violation state and corresponding action to make the policy more intuitional and easy to use. This specification will provide an abstraction for all policies in congress, and show it in an abstraction form in Horizon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"By analyzing typical scenarios, violation state mainly can be divided into two parts. One part is the constraint of objects’ attributes, and another is the constraint of relationship between several objects’ attributions. All the objects and constraints are not just a simple set of data source tables, but they can be divided into some categories according to their functions and connected by some relations. So users just need to choose objects they care about without warring about which tables they are in. "},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_b58c0480","line":26,"updated":"2015-04-06 02:25:10.000000000","message":"\"intuitive\", not \"intuitional\".","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"           "},{"line_number":26,"context_line":"So, policy abstraction is to abstract violation state and corresponding action to make the policy more intuitional and easy to use. This specification will provide an abstraction for all policies in congress, and show it in an abstraction form in Horizon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"By analyzing typical scenarios, violation state mainly can be divided into two parts. One part is the constraint of objects’ attributes, and another is the constraint of relationship between several objects’ attributions. All the objects and constraints are not just a simple set of data source tables, but they can be divided into some categories according to their functions and connected by some relations. So users just need to choose objects they care about without warring about which tables they are in. "},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"                violation condition ::\u003d {condition}"},{"line_number":31,"context_line":"                "}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_95ea200e","line":28,"updated":"2015-04-06 02:25:10.000000000","message":"\"attributes\", not \"attributions\". \"worrying\", not \"warring\".","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                "},{"line_number":32,"context_line":"                condition::\u003dobject attribute constraint (value | object attribute )"},{"line_number":33,"context_line":"                "},{"line_number":34,"context_line":"                object attribute::\u003dobject “.” attribute"},{"line_number":35,"context_line":"        "},{"line_number":36,"context_line":"For any violation state, congress will take some actions, such as monitoring, proactive and reactive. Though congress just takes monitoring for violation, changing cloud state to make the cloud compliance is also an important function for congress. So, policy abstraction will provide some optional reactive actions for different objects to resolve violation."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_15df306a","line":34,"updated":"2015-04-06 02:25:10.000000000","message":"Can you explain more what these 3 lines are showing?","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                "},{"line_number":34,"context_line":"                object attribute::\u003dobject “.” attribute"},{"line_number":35,"context_line":"        "},{"line_number":36,"context_line":"For any violation state, congress will take some actions, such as monitoring, proactive and reactive. Though congress just takes monitoring for violation, changing cloud state to make the cloud compliance is also an important function for congress. So, policy abstraction will provide some optional reactive actions for different objects to resolve violation."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"                action for violation ::\u003d (“monitor”| “proactive”| “reactive”) data"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_555938fd","line":36,"updated":"2015-04-06 02:25:10.000000000","message":"\"compliant\", not \"compliance\".","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        "},{"line_number":36,"context_line":"For any violation state, congress will take some actions, such as monitoring, proactive and reactive. Though congress just takes monitoring for violation, changing cloud state to make the cloud compliance is also an important function for congress. So, policy abstraction will provide some optional reactive actions for different objects to resolve violation."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"                action for violation ::\u003d (“monitor”| “proactive”| “reactive”) data"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"So in the abstraction policy UI, user will input policy name, select objects, define violation condition, action and related data. Among these, element “name” defines the sign of a policy; element “objects” defines all objects which are concerned by this policy; element “violation condition” defines the expression of object’s attributes which can produce violation; element “action” defines the action needs to take for this policy; element “data” defines the information gotten or needed when execute the action. "},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_f5d96c84","line":38,"updated":"2015-04-06 02:25:10.000000000","message":"How does this line relate to the three above? It might help to include a concrete example, using some policy.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"                action for violation ::\u003d (“monitor”| “proactive”| “reactive”) data"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"So in the abstraction policy UI, user will input policy name, select objects, define violation condition, action and related data. Among these, element “name” defines the sign of a policy; element “objects” defines all objects which are concerned by this policy; element “violation condition” defines the expression of object’s attributes which can produce violation; element “action” defines the action needs to take for this policy; element “data” defines the information gotten or needed when execute the action. "},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Based on the policy expressed by Datalog, admin will decide which parameters or actions can be exposed. Users can write their policy just through several drop-down lists or some simple inputs, and these parameters will express users’ policy. "},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_d5e8a812","line":40,"updated":"2015-04-06 02:25:10.000000000","message":"What is \"sign of a policy\"? For \"objects\", how is it determined what objects the policy is concerned about? Is it necessary to pick the objects if the \"condition\" already requires the user to specify which objects are part of the condition? How does the user know what data is needed for the action? How does the user describe what the action is for the specific policy?","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"So in the abstraction policy UI, user will input policy name, select objects, define violation condition, action and related data. Among these, element “name” defines the sign of a policy; element “objects” defines all objects which are concerned by this policy; element “violation condition” defines the expression of object’s attributes which can produce violation; element “action” defines the action needs to take for this policy; element “data” defines the information gotten or needed when execute the action. "},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Based on the policy expressed by Datalog, admin will decide which parameters or actions can be exposed. Users can write their policy just through several drop-down lists or some simple inputs, and these parameters will express users’ policy. "},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For the purpose of express users’ intent easily and intuitionally, our ultimate goal is to introduce a DSL in congress, which has a unified model has the ability to improve users’ communication in a specific domain. Users can express their intent policy by congress DSL easily and clearly."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_55cb78a5","line":42,"updated":"2015-04-06 02:25:10.000000000","message":"This sounds circular - users can write policies using an interface defined by an admin, which comes from policies. Can you clarify how the admin decides what parameters and actions to expose? What will the UI be like for the admin to enter that information?","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Based on the policy expressed by Datalog, admin will decide which parameters or actions can be exposed. Users can write their policy just through several drop-down lists or some simple inputs, and these parameters will express users’ policy. "},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For the purpose of express users’ intent easily and intuitionally, our ultimate goal is to introduce a DSL in congress, which has a unified model has the ability to improve users’ communication in a specific domain. Users can express their intent policy by congress DSL easily and clearly."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Alternatives"},{"line_number":47,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_d5bf88f9","line":44,"updated":"2015-04-06 02:25:10.000000000","message":"\"intuitively\", not \"intuitionally\". Acutally, is the new UI creating a new language? The backend is still using Datalog. It\u0027s just that the Datalog is being hidden from users by the UI.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Example: every network connected to a VM must either be public or owned by someone in the same group as the VM."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"In this case, the state of violation is “the network connected VM is not public, and its owner is not same_group with VM’s”. When the violation happens, system will inform admin the vm’s id. So this policy can be expressed by abstraction form as bellow."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    *name:policy_1;*"},{"line_number":61,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_154df03d","line":58,"updated":"2015-04-06 02:25:10.000000000","message":"\"below\", not \"bellow\".","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    *name:policy_1;*"},{"line_number":61,"context_line":"    "},{"line_number":62,"context_line":"    *objects: vm, network;*"},{"line_number":63,"context_line":"    "},{"line_number":64,"context_line":"    *violation conditions: network.share\u003d\u003dno, not same_group( vm.tenant,network.tenant);*"},{"line_number":65,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_35459416","line":62,"updated":"2015-04-06 02:25:10.000000000","message":"The admin user will define what data source \"vm\" comes from, right? Is the admin also defining that there is a \"vm\" object, or is \"vm\" predefined by the UI?","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    "},{"line_number":62,"context_line":"    *objects: vm, network;*"},{"line_number":63,"context_line":"    "},{"line_number":64,"context_line":"    *violation conditions: network.share\u003d\u003dno, not same_group( vm.tenant,network.tenant);*"},{"line_number":65,"context_line":"    "},{"line_number":66,"context_line":"    *actions: monitoring;*"},{"line_number":67,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_d55668d1","line":64,"updated":"2015-04-06 02:25:10.000000000","message":"Which parts of this does the user input?","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    "},{"line_number":70,"context_line":"Policy Actions"},{"line_number":71,"context_line":"--------------"},{"line_number":72,"context_line":"Users can set action for a policy in field “action”. The action can be monitoring, proactive or some execute actions which can make the cloud compliance."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Data Source"},{"line_number":75,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_1574d065","line":72,"updated":"2015-04-06 02:25:10.000000000","message":"\"compliant\", not \"compliance\".","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Security impact"},{"line_number":90,"context_line":"---------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Parameters inputted by users must in consistent with Datalog."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Notification impact"},{"line_number":95,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_f5f5ecca","line":92,"updated":"2015-04-06 02:25:10.000000000","message":"This is more error checking than a security concern.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"2fda7aba5e51c0112edb0c2144d523848c4b052f","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Testing"},{"line_number":137,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Typical scene has been tested."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Documentation impact"},{"line_number":142,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"baa041b7_d50428c1","line":139,"updated":"2015-04-06 02:25:10.000000000","message":"This section of the doc is for a description of the tests that will be added for the feature, or an explanation of why it doesn\u0027t need tests.","commit_id":"d26934ac679a381b94d8f0234d7143d268a04b64"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"https://blueprints.launchpad.net/congress/+spec/horizon-policy-abstraction"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Congress aims to provide an extensible open-source framework for governance and regulatory compliance across any cloud services. Users can define policies in congress by pure Datalog. But Datalog, working with data-tables, is a very abstract and complex description for policies. Users may have some problems to understand and deploy policies by Datalog. So this specification describes an abstraction for policies, and mappings it to Datalog. And the Ultimate goal is to introduce a more simple and intuitive DSL (Domain Specific Language) to express policies in Congress."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Problem description"},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_39e13ad1","line":12,"updated":"2015-04-07 23:31:27.000000000","message":"Please wrap at 80 characters.\n\ns/any cloud services/any cloud service/","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Congress makes the whole cloud compliance by defining violation state and action for violation."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"                Congress Policy ::\u003d violation condition “do” action for violation "},{"line_number":25,"context_line":"           "},{"line_number":26,"context_line":"So, policy abstraction is to abstract violation state and corresponding action to make the policy more intuitional and easy to use. This specification will provide an abstraction for all policies in congress, and show it in an abstraction form in Horizon."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"By analyzing typical scenarios, violation state mainly can be divided into two parts. One part is the constraint of objects’ attributes, and another is the constraint of relationship between several objects’ attributions. All the objects and constraints are not just a simple set of data source tables, but they can be divided into some categories according to their functions and connected by some relations. So users just need to choose objects they care about without warring about which tables they are in. "}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_19831606","line":25,"updated":"2015-04-07 23:31:27.000000000","message":"Please clean up the tabs and spaces in the whitespace.","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"                violation condition ::\u003d {condition}"},{"line_number":31,"context_line":"                "},{"line_number":32,"context_line":"                condition::\u003dobject attribute constraint (value | object attribute )"},{"line_number":33,"context_line":"                "},{"line_number":34,"context_line":"                object attribute::\u003dobject “.” attribute"},{"line_number":35,"context_line":"        "}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_345941ff","line":32,"updated":"2015-04-07 23:31:27.000000000","message":"Do lines 30 and 32 need to be separate lines, or can you merge them into one?","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"                action for violation ::\u003d (“monitor”| “proactive”| “reactive”) data"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"So in the abstraction policy UI, user will input policy name, select objects, define violation condition, action and related data. Among these, element “name” defines the sign of a policy; element “objects” defines all objects which are concerned by this policy; element “violation condition” defines the expression of object’s attributes which can produce violation; element “action” defines the action needs to take for this policy; element “data” defines the information gotten or needed when execute the action. "},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Based on the policy expressed by Datalog, admin will decide which parameters or actions can be exposed. Users can write their policy just through several drop-down lists or some simple inputs, and these parameters will express users’ policy. "},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_94d7edec","line":40,"updated":"2015-04-07 23:31:27.000000000","message":"Is there a definition for \"data\"?","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    "},{"line_number":62,"context_line":"    *objects: vm, network;*"},{"line_number":63,"context_line":"    "},{"line_number":64,"context_line":"    *violation conditions: network.share\u003d\u003dno, not same_group( vm.tenant,network.tenant);*"},{"line_number":65,"context_line":"    "},{"line_number":66,"context_line":"    *actions: monitoring;*"},{"line_number":67,"context_line":"    "}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_6f4ed470","line":64,"updated":"2015-04-07 23:31:27.000000000","message":"How would you define same_group using the new DSL ?","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Other end user impact"},{"line_number":100,"context_line":"---------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists and some simple inputs to create a policy in Congress."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Performance impact"},{"line_number":105,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_2fb1ece1","line":102,"updated":"2015-04-07 23:31:27.000000000","message":"Which part of the system will do the translation, Horizon or Congress?  If Congress, which part of Congress?  The API module, or some kind of preprocessing module?","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"- Abstraction form to write policies rules and actions for policies."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"- Build mapping relationship between abstraction form and Datalog, and users can write a policy in UI other than Datalog."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"- Pass information from Horizon to Congress to finish the policy creation."},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_af6dfc99","line":127,"updated":"2015-04-07 23:31:27.000000000","message":"I would describe this translation in more detail.","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Testing"},{"line_number":137,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Typical scene has been tested."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Documentation impact"},{"line_number":142,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_2f9a0c64","line":139,"updated":"2015-04-07 23:31:27.000000000","message":"This feature will need testing.","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":12875,"name":"Alexander Yip","email":"ayip@vmware.com","username":"ayip"},"change_message_id":"9c100c13b8aa0ceec431be81b9c0011d7ef6b57b","unresolved":false,"context_lines":[{"line_number":141,"context_line":"Documentation impact"},{"line_number":142,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"N/A"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"},{"line_number":147,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aa53dc9_6f901444","line":144,"updated":"2015-04-07 23:31:27.000000000","message":"This new feature will definitely need documentation.","commit_id":"57a6ccfd6587dca8818347ede77d5a133cb066c9"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":14,"context_line":"in congress by pure Datalog. But Datalog, working with data-tables, is a very"},{"line_number":15,"context_line":"difficult and complex description for policies. Users may have some problems"},{"line_number":16,"context_line":"to understand and deploy policies by Datalog. So this specification provides"},{"line_number":17,"context_line":"an abstraction for policies, and show it in an abstraction form in Horizon,"},{"line_number":18,"context_line":"which will facilitate users to express their policies."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_999b4266","line":17,"updated":"2015-04-10 03:00:08.000000000","message":"\"shows it in an abstracted form\"","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"ad8df4a4626982f21d9dcf0ceda71cdea7b12202","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Problem description"},{"line_number":21,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Datalog is not intuitive to use, even difficult for users to express users’"},{"line_number":24,"context_line":"policy who are not familiar with it. And it may cause some misinterpretation"},{"line_number":25,"context_line":"when translate real intent to Datalog because of the complex logic."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_3e53fce3","line":23,"updated":"2015-04-10 01:58:13.000000000","message":"s/users\\\u0027/user\\\u0027s/","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"ad8df4a4626982f21d9dcf0ceda71cdea7b12202","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Datalog is not intuitive to use, even difficult for users to express users’"},{"line_number":24,"context_line":"policy who are not familiar with it. And it may cause some misinterpretation"},{"line_number":25,"context_line":"when translate real intent to Datalog because of the complex logic."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_de6410ba","line":25,"updated":"2015-04-10 01:58:13.000000000","message":"s/translate/translating/","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The violation condition can be expressed by BNF as below."},{"line_number":48,"context_line":"      violation condition ::\u003d {condition}"},{"line_number":49,"context_line":"      condition::\u003dobject attribute constraint (value | object attribute)"},{"line_number":50,"context_line":"      object attribute::\u003dobject “.” attribute"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For any violation state, congress will take some actions, such as monitoring,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_19bf32ab","line":49,"updated":"2015-04-10 03:00:08.000000000","message":"What is the difference between \"violation condition\" and \"condition\"?","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":50,"context_line":"      object attribute::\u003dobject “.” attribute"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"For any violation state, congress will take some actions, such as monitoring,"},{"line_number":53,"context_line":"proactive and reactive. Though congress just takes monitoring for violation,"},{"line_number":54,"context_line":"changing cloud state to make the cloud compliant is also an important function"},{"line_number":55,"context_line":"for congress. So, policy abstraction will provide some optional reactive actions"},{"line_number":56,"context_line":"for different objects to resolve violation."}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_59d01af6","line":53,"updated":"2015-04-10 03:00:08.000000000","message":"Can you clarify what is meant by \"congress just takes monitoring for violation\"?","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":53,"context_line":"proactive and reactive. Though congress just takes monitoring for violation,"},{"line_number":54,"context_line":"changing cloud state to make the cloud compliant is also an important function"},{"line_number":55,"context_line":"for congress. So, policy abstraction will provide some optional reactive actions"},{"line_number":56,"context_line":"for different objects to resolve violation."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"The action for violation state can be expressed by BNF as below."},{"line_number":59,"context_line":"      action ::\u003d (“monitor”| “proactive”| “reactive”) data"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_d90aea89","line":56,"updated":"2015-04-10 03:00:08.000000000","message":"s/violation/violations/","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"element “data” defines the information gotten or needed when execute the action,"},{"line_number":85,"context_line":"for example, when monitor a servers violation, users can define \"data\" is servers\u0027"},{"line_number":86,"context_line":"name to be a return parameters."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Based on the policy expressed by Datalog, admin will decide which parameters or"},{"line_number":89,"context_line":"actions can be exposed. Users can write their policy just through several"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_19729211","line":86,"updated":"2015-04-10 03:00:08.000000000","message":"when executing the action; for example, when monitoring a server\u0027s violation, users can define \"data\" as the server\u0027s name to be a return parameter.","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":86,"context_line":"name to be a return parameters."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Based on the policy expressed by Datalog, admin will decide which parameters or"},{"line_number":89,"context_line":"actions can be exposed. Users can write their policy just through several"},{"line_number":90,"context_line":"drop-down lists or some simple inputs."},{"line_number":91,"context_line":"Then UI translates the information in UI to Datalog."},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_b9572659","line":89,"updated":"2015-04-10 03:00:08.000000000","message":"The next paragraph explains the concept better than this one, which still  makes defining policies sound circular. Remove this paragraph.","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Then UI translates the information in UI to Datalog."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"That is, admin will determine which policies can be expressed in UI, users"},{"line_number":94,"context_line":"choose which one can match their needs. All parameters appear in UI will be"},{"line_number":95,"context_line":"extensible and will cover most of application scenarios."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_b9e5e6a4","line":94,"updated":"2015-04-10 03:00:08.000000000","message":"How does the admin define what kinds of policies can be expressed? Does the admin have choices to select from that are provided by the UI? Where do the values for \"objects\", \"violation state\", and \"data\" come from? Is that defined by the admin or by the UI? If it\u0027s by the UI, how will you decide what to include?","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Security impact"},{"line_number":149,"context_line":"---------------"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"All parameters inputted by users need satisfy the standard."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Notification impact"},{"line_number":154,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_b9ce062b","line":151,"updated":"2015-04-10 03:00:08.000000000","message":"s/inputted/input/\n\nWhich standard?","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":186,"context_line":"- Abstraction form to write policies rules and actions for policies."},{"line_number":187,"context_line":"- Build mapping relationship between abstraction form and Datalog,"},{"line_number":188,"context_line":"  and users can write a policy in UI other than Datalog."},{"line_number":189,"context_line":"- Pass information from Horizon to Congress to finish the policy creation."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Dependencies"},{"line_number":192,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_79799ec7","line":189,"updated":"2015-04-10 03:00:08.000000000","message":"At least one more item:\n- Admin page for defining what policies users can create.","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":196,"context_line":"Testing"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Need to be tested by a variety of scenarios."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Documentation impact"},{"line_number":202,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_99a10249","line":199,"updated":"2015-04-10 03:00:08.000000000","message":"s/by a variety of/with a variety of usage/","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"a9f616547a3786f1bd72bbf15d01a523f1d2a5dc","unresolved":false,"context_lines":[{"line_number":201,"context_line":"Documentation impact"},{"line_number":202,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Document will add instructions for policy abstraction in UI."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"References"},{"line_number":207,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":13,"id":"9aa53dc9_198e12d0","line":204,"updated":"2015-04-10 03:00:08.000000000","message":"Remove \"Document will\".","commit_id":"253fc6bdbf0bb9ef619a34fb7a2940caf8e28b08"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"4e5c3aa45d76d8e903a1716bd499189aa7a063dd","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The violation condition can be expressed by BNF as below."},{"line_number":48,"context_line":"      violation condition ::\u003dobject attribute constraint (value | object attribute)"},{"line_number":49,"context_line":"      object attribute::\u003dobject “.” attribute"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"For any violation state, congress will take some actions, such as monitoring,"},{"line_number":52,"context_line":"proactive and reactive. Though congress has just realized monitor violation,"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3ab451fb_561ad418","line":49,"updated":"2015-04-16 23:25:37.000000000","message":"Is there a significance to the \".\", or is it just for formatting? If \"violation\" and \"condition\" are part of the same element (vs. one entity called \"violation\" and another element called \"condition\") and \"object\" and \"attribute\" always go together, you could probably simplify this to:\n\n    violation-condition ::\u003d object-attribute constraint (value | object-attribute)","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"9bc605f2885f8e70f71ee5e28bc56b98091439f4","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The violation condition can be expressed by BNF as below."},{"line_number":48,"context_line":"      violation condition ::\u003dobject attribute constraint (value | object attribute)"},{"line_number":49,"context_line":"      object attribute::\u003dobject “.” attribute"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"For any violation state, congress will take some actions, such as monitoring,"},{"line_number":52,"context_line":"proactive and reactive. Though congress has just realized monitor violation,"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3ab451fb_d9f29406","line":49,"in_reply_to":"3ab451fb_561ad418","updated":"2015-04-17 02:24:47.000000000","message":"The \".\" represents a affiliation between \"object\" and \"attribute\". It is used to mark a attribute blongs to which object. \r\nAnd \"violation\" and \"condition\" are parts of same element. I will modify it.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":8215,"name":"Tim Hinrichs","email":"timothy.l.hinrichs@gmail.com","username":"thinrich"},"change_message_id":"f3868a049174636ba5d62cbf3126c14734a0e480","unresolved":false,"context_lines":[{"line_number":77,"context_line":"arithmetic and some predefined relationship/functions, such as, \"same_group\"."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Element “action” defines the action needs to take for this policy,"},{"line_number":80,"context_line":"and actions will include \"proactive\", \"monitoring\" and some specific actions,"},{"line_number":81,"context_line":"such as, \"remove\", \"delete\". All these actions depend on the ability of"},{"line_number":82,"context_line":"underlying components."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_86aa48d3","line":80,"updated":"2015-04-23 16:35:04.000000000","message":"Today there\u0027s no way to say 1 rule should be enforced proactively and another should just be monitored.  So I don\u0027t think we want to include those as Actions.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"53d2ed611467c40de759435ca885898ebcaec1b5","unresolved":false,"context_lines":[{"line_number":77,"context_line":"arithmetic and some predefined relationship/functions, such as, \"same_group\"."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Element “action” defines the action needs to take for this policy,"},{"line_number":80,"context_line":"and actions will include \"proactive\", \"monitoring\" and some specific actions,"},{"line_number":81,"context_line":"such as, \"remove\", \"delete\". All these actions depend on the ability of"},{"line_number":82,"context_line":"underlying components."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7ad32947_da25ccc2","line":80,"in_reply_to":"bab921fb_86aa48d3","updated":"2015-04-28 07:37:03.000000000","message":"Maybe I didn\u0027t express explicitly. My real mean is users can choose what actions need to be taken which are not limited into one. So users can choose \"monitoring\" and \"reactive\" at the same time.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":8215,"name":"Tim Hinrichs","email":"timothy.l.hinrichs@gmail.com","username":"thinrich"},"change_message_id":"f3868a049174636ba5d62cbf3126c14734a0e480","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Element “action” defines the action needs to take for this policy,"},{"line_number":80,"context_line":"and actions will include \"proactive\", \"monitoring\" and some specific actions,"},{"line_number":81,"context_line":"such as, \"remove\", \"delete\". All these actions depend on the ability of"},{"line_number":82,"context_line":"underlying components."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Element “data” defines the information gotten or needed when executing the"},{"line_number":85,"context_line":"action, for example, when monitoring a servers violation, users can define"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_a6b42cf2","line":82,"updated":"2015-04-23 16:35:04.000000000","message":"Just now with the kilo release we have some basic support for actions, like creating/pausing a VM.  Though not all rules utilize actions; some rules just define error conditions.  The user should be able to choose whether she wants to execute an action or to write an error condition.  So perhaps adding \u0027error\u0027 or \u0027flag_error\u0027 to the list of actions is the right thing to do.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"53d2ed611467c40de759435ca885898ebcaec1b5","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Element “action” defines the action needs to take for this policy,"},{"line_number":80,"context_line":"and actions will include \"proactive\", \"monitoring\" and some specific actions,"},{"line_number":81,"context_line":"such as, \"remove\", \"delete\". All these actions depend on the ability of"},{"line_number":82,"context_line":"underlying components."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Element “data” defines the information gotten or needed when executing the"},{"line_number":85,"context_line":"action, for example, when monitoring a servers violation, users can define"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7ad32947_b510e14f","line":82,"in_reply_to":"bab921fb_a6b42cf2","updated":"2015-04-28 07:37:03.000000000","message":"Indeed users may just want to know what cause the violation. So in policy abstraction, when users choose \"monitoring\", congress will not push any operation to underlying components, instead,it will just produce \"error\" table to show users what is viloate, just like what you have said. When users choose \"reactive\" and the real supported actions, then congress will execute actions.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":8215,"name":"Tim Hinrichs","email":"timothy.l.hinrichs@gmail.com","username":"thinrich"},"change_message_id":"5804440e00bbac5423369dfca5faa4d15e21de2d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"| policy_1 | servers  |not equal(networks.share, public)              | monitoring | servers.name |"},{"line_number":123,"context_line":"|          | networks |not same_group(servers.tenant, networks.tenant)|            |              |"},{"line_number":124,"context_line":"+------ ---+----------+-----------------------------------------------+------------+--------------+"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Policy Actions"},{"line_number":127,"context_line":"--------------"},{"line_number":128,"context_line":"The action can be monitoring, proactive or some execute actions"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a016987_17000265","line":125,"updated":"2015-06-08 15:31:54.000000000","message":"Just a reminder about my comment from the summit.  It\u0027d help me to understand the algorithm you use to translate this into Datalog.  So if you could provide some pseudocode, that would be great.\n\nIn particular, I want to understand if this UI hard-codes the available tables from certain datasources.  This is important because if those tables change, we will need to change the UI as well.  \n\nAlso, does the UI assume that certain datasources are always installed?  Or does it simply restrict the \u0027objects\u0027 and \u0027violation state\u0027 depending on which datasources are available?\n\nYou mentioned you had a prototype ready.  Maybe push that to review so we can all take a look?","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"a712f829463498d70273fa83a3690144f73cf9f3","unresolved":false,"context_lines":[{"line_number":122,"context_line":"| policy_1 | servers  |not equal(networks.share, public)              | monitoring | servers.name |"},{"line_number":123,"context_line":"|          | networks |not same_group(servers.tenant, networks.tenant)|            |              |"},{"line_number":124,"context_line":"+------ ---+----------+-----------------------------------------------+------------+--------------+"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Policy Actions"},{"line_number":127,"context_line":"--------------"},{"line_number":128,"context_line":"The action can be monitoring, proactive or some execute actions"}],"source_content_type":"text/x-rst","patch_set":14,"id":"3afb71cf_0cb18647","line":125,"in_reply_to":"7a016987_17000265","updated":"2015-06-09 01:54:40.000000000","message":"In these days, we are designing the detailed content in UI, such as \"object\", \"attributes\", and reconstruct our codes to make the tranfermation logic clearer and more complete. We have already made some progress, and will upload codes as soon as possible, maybe next week.\r\n\r\nFor the first question, our UI provides some fundamental information about the mapping from \"object\" to \"tables\", and the connection relationship between objects. If tables change, users need to modify objects and relationship in abvanced UI. So if these two UI coordinate well, there is no need to change UI.\r\n\r\n\r\nAbout the second question, in our UI, our \"object\" and \"viloation state\" will depend on available tables. If there are some datasources are not available, the coresponding \"objects\" and \"vilolation state\" will not appear.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":8215,"name":"Tim Hinrichs","email":"timothy.l.hinrichs@gmail.com","username":"thinrich"},"change_message_id":"b49038ebe6e87934690959810d46144bd9119835","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_9872ca7b","line":164,"updated":"2015-04-22 21:57:31.000000000","message":"I assume this is an alternative interface to the one Janet just built for Horizon, and that people can choose which interface they use.  Could we go into more detail about how we help users understand/use 2 different GUIs?  Does the admin choose 1, are both presented to the user, etc.?\n\nIf both were presented to the user, how would that work in Horizon?  Are there are 2 Policy tabs on Horizon (maybe labeled \"Policy\" for this one and \"Advanced Policy\" for Janet\u0027s)?  If someone writes policy in this version, can they edit it in Janet\u0027s (and vice-versa when appropriate)?  I\u0027m not suggesting all this functionality needs to go in with version 1, but I want to discuss how we envision the two GUIs working side by side in the long run.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"53d2ed611467c40de759435ca885898ebcaec1b5","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7ad32947_b548e12e","line":164,"in_reply_to":"bab921fb_061e38ba","updated":"2015-04-28 07:37:03.000000000","message":"In my opinion, policy abstraction provide users a more intuitive way to create policies, it will abstract typical policies. So it may have some disadvantages to express uncommonly used policys. But i think there need a unified lable of Janet\u0027s and policy abstraction to express and edit  users\u0027 policy. All policis create in policy-abstraction could be showed and edited in it.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":8215,"name":"Tim Hinrichs","email":"timothy.l.hinrichs@gmail.com","username":"thinrich"},"change_message_id":"f3868a049174636ba5d62cbf3126c14734a0e480","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_061e38ba","line":164,"in_reply_to":"bab921fb_106e8ac9","updated":"2015-04-23 16:35:04.000000000","message":"Good.  Any thought about how both those interfaces would look in Horizon?  Could people write a rule in one and edit it in the other?  Does the GUI allow you to edit any policy statement that the server has (that fits into the fragment of Datalog that the GUI supports)?","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":8215,"name":"Tim Hinrichs","email":"timothy.l.hinrichs@gmail.com","username":"thinrich"},"change_message_id":"f3868a049174636ba5d62cbf3126c14734a0e480","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_067518f8","line":164,"in_reply_to":"bab921fb_2d1dbb73","updated":"2015-04-23 16:35:04.000000000","message":"The Congress server will always store all the rules the user has created. We don\u0027t want the GUI to store them too (persistently), or else we\u0027ll have a bunch of synchronization problems between the server and GUI.  We want the server to be the source of truth for policy statements.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":7187,"name":"Janet Yu","email":"jwy@cs.stanford.edu","username":"jwy"},"change_message_id":"70bfbc6d2b237f84c2225c27a37384fc917d9940","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_cd72bf7c","line":164,"in_reply_to":"bab921fb_9872ca7b","updated":"2015-04-23 02:22:04.000000000","message":"I hadn\u0027t given much thought to editing. If a user can create a rule from either the non-abstracted form or the CLI, how will the abstracted form support editing those rules if the form has limited objects and attributes? Or maybe it won\u0027t be used for editing?\n\nAlso, you had mentioned in email that you would need a database to store information. Can you add details about what information you are planning on storing?","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"f469c1f8d18413a8dc5e9f16f2475072e531d0ab","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_106e8ac9","line":164,"in_reply_to":"bab921fb_9872ca7b","updated":"2015-04-23 02:58:56.000000000","message":"I think this abstracted form to create policies is an alternative to janet\u0027. It provides users some packaged policies for users to choose. Though it will not cover all scenarios, it may cover most of them. So users can choose create their policies in abstracted form or non-abstrtacted form.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"},{"author":{"_account_id":14438,"name":"zhang yali","email":"zhangyali369@huawei.com","username":"aa"},"change_message_id":"f469c1f8d18413a8dc5e9f16f2475072e531d0ab","unresolved":false,"context_lines":[{"line_number":161,"context_line":"End users can be able to write policies in Horizon and use some drop-down lists"},{"line_number":162,"context_line":"and some simple inputs to create a policy. Then Horizon will translate the"},{"line_number":163,"context_line":"information in UI into Datalog, which will be processed in Congress."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance impact"},{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab921fb_2d1dbb73","line":164,"in_reply_to":"bab921fb_cd72bf7c","updated":"2015-04-23 02:58:56.000000000","message":"I think in the GUI, we need to store all created policies to show what policies users have created and allow users to detele the policy they do not want.\r\nIn my opinion, Congress UI need to provide a unified label to show all policies user have created no matter the create way. And user can detele or edit policies in it. Policies create by abstracted form can store policies in it. too.","commit_id":"dd0370ea33733a71aa0fc40e5706b2ee5b103a9b"}]}
