)]}'
{"README.md":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c759341c9afa2198f508d3df0269fc8780fcce9e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"The full API Specification can be found in [docs/monasca-api-spec.md](docs/monasca-api-spec.md)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"## Keystone Configuration"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"For secure operation of the Monasca API, the API must be configured to use Keystone in the configuration file under the middleware section. Monasca only works with a Keystone v3 server. The important parts of the configuration are explained below:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* serverVIP - This is the hostname or IP Address of the Keystone server"},{"line_number":20,"context_line":"* serverPort - The port for the Keystone server"},{"line_number":21,"context_line":"* useHttps - Whether to use https when making requests of the Keystone API"},{"line_number":22,"context_line":"* truststore - If useHttps is true and the Keystone server is not using a certificate signed by a public CA recognized by Java, the CA certificate can be placed in a truststore so the Monasca API will trust it, otherwise it will reject the https connection. This must be a JKS truststore"},{"line_number":23,"context_line":"* truststorePassword - The password for the above truststore"},{"line_number":24,"context_line":"* connSSLClientAuth - If the Keystone server requires the SSL client used by the Monasca server to have a specific client certificate, this should be true, false otherwise"},{"line_number":25,"context_line":"* keystore - The keystore holding the SSL Client certificate if connSSLClientAuth is true"},{"line_number":26,"context_line":"* keystorePassword - The password for the keystore"},{"line_number":27,"context_line":"* defaultAuthorizedRoles - An array of roles that authorize a user to access the complete Monasca API. User must have at least one of these roles. See below"},{"line_number":28,"context_line":"* readOnlyAuthorizedRoles - An array of roles that authorize a user to only GET (but not POST, PUT...) metrics.  See Keystone Roles below"},{"line_number":29,"context_line":"* agentAuthorizedRoles - An array of roles that authorize only the posting of metrics.  See Keystone Roles below"},{"line_number":30,"context_line":"* adminAuthMethod - \"password\" if the Monasca API should adminUser and adminPassword to login to the Keystone server to check the user\u0027s token, \"token\" if the Monasca API should use adminToken"},{"line_number":31,"context_line":"* adminUser - Admin user name"},{"line_number":32,"context_line":"* adminPassword - Admin user password"},{"line_number":33,"context_line":"* adminProjectId - Specify the project ID the api should use to request an admin token. Defaults to the admin user\u0027s default project. The adminProjectId option takes precedence over adminProjectName."},{"line_number":34,"context_line":"* adminProjectName - Specify the project name the api should use to request an admin token. Defaults to the admin user\u0027s default project. The adminProjectId option takes precedence over adminProjectName."},{"line_number":35,"context_line":"* adminToken - A valid admin user token if adminAuthMethod is token"},{"line_number":36,"context_line":"* timeToCacheToken - How long the Monasca API should cache the user\u0027s token before checking it again"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"### Keystone Roles"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":1,"id":"3f4b6375_d64213ab","line":36,"range":{"start_line":15,"start_character":0,"end_line":36,"end_character":100},"updated":"2017-10-25 15:43:21.000000000","message":"These options are Java specific. Please also move.","commit_id":"5df2f45bbaf6c70c22633a33a973e59662de0078"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c759341c9afa2198f508d3df0269fc8780fcce9e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* adminToken - A valid admin user token if adminAuthMethod is token"},{"line_number":36,"context_line":"* timeToCacheToken - How long the Monasca API should cache the user\u0027s token before checking it again"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"### Keystone Roles"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The Monasca API has two levels of access:"},{"line_number":41,"context_line":"* Full access - user can read/write metrics and Alarm Definitions and Alarms"},{"line_number":42,"context_line":"* Agent access - user can only write metrics"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"The reason for the \"Agent access\" level is because the Monasca Agent must be configured to use a Keystone user. Since the user and password are configured on all of the systems running the Monasca Agent, this user is most in danger of being compromised. If this user is limited to only writing metrics, then the damage can be limited."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"To configure the user to have full access, the user must have a role that is listed in defaultAuthorizedRoles. To configure a user to have only \"Agent access\", the user must have a role in agentAuthorizedRoles and none of the roles in defaultAuthorizedRoles."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"If you want to give users the ability to only view data, configure one or more roles in the readOnlyAuthorizedRoles list."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"## Design Overview"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":1,"id":"3f4b6375_16d9cbf1","line":48,"range":{"start_line":38,"start_character":0,"end_line":48,"end_character":121},"updated":"2017-10-25 15:43:21.000000000","message":"This part is more generic and could be left here. The configuration option names should be updated though. To list configuration options generate the sample config file:\n\n #tox -e genconfig\n\nand check the [security] section of the output file `etc/api-config.conf.sample` or compare [1].\n\nI\u0027m also fine with moving this completely as is to java.md.\n\n[1] https://github.com/openstack/monasca-api/blob/master/monasca_api/conf/security.py","commit_id":"5df2f45bbaf6c70c22633a33a973e59662de0078"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c759341c9afa2198f508d3df0269fc8780fcce9e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"If you want to give users the ability to only view data, configure one or more roles in the readOnlyAuthorizedRoles list."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"## Design Overview"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"### Architectural layers"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Requests flow through the following architectural layers from top to bottom:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* Resource"},{"line_number":57,"context_line":"  * Serves as the entrypoint into the service."},{"line_number":58,"context_line":"  * Responsible for handling web service requests, and performing structural request validation."},{"line_number":59,"context_line":"* Application"},{"line_number":60,"context_line":"  * Responsible for providing application level implementations for specific use cases."},{"line_number":61,"context_line":"* Domain"},{"line_number":62,"context_line":"  * Contains the technology agnostic core domain model and domain service definitions."},{"line_number":63,"context_line":"  * Responsible for upholding invariants and defining state transitions."},{"line_number":64,"context_line":"* Infrastructure"},{"line_number":65,"context_line":"  * Contains technology specific implementations of domain services."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"## Documentation"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":1,"id":"3f4b6375_d6de93d8","line":65,"range":{"start_line":50,"start_character":0,"end_line":65,"end_character":68},"updated":"2017-10-25 15:43:21.000000000","message":"Java specific. Please move.","commit_id":"5df2f45bbaf6c70c22633a33a973e59662de0078"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c759341c9afa2198f508d3df0269fc8780fcce9e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* API Specification: [/docs/monasca-api-spec.md](/docs/monasca-api-spec.md)."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"python monasca api implementation"},{"line_number":73,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"To install the python api implementation, git clone the source and run the"}],"source_content_type":"text/x-gfm","patch_set":1,"id":"3f4b6375_b69677ef","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":33},"updated":"2017-10-25 15:43:21.000000000","message":"I would just name it \u0027Quick start\u0027","commit_id":"5df2f45bbaf6c70c22633a33a973e59662de0078"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c9916bb46058f08554c2f82b767225a1afe11a1b","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"`monasca-api` is a RESTful API server that is designed with a [layered architecture](http://en.wikipedia.org/wiki/Multilayered_architecture)."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The full API Specification can be found in [docs/monasca-api-spec.md](docs/monasca-api-spec.md)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"## Documentation"}],"source_content_type":"text/x-gfm","patch_set":2,"id":"3f4b6375_4671b275","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":95},"updated":"2017-10-26 15:28:36.000000000","message":"This is redundant. Documentation section follows directly afterwards. Please remove.","commit_id":"e4dc9b27acd063ed8bf6e131a743cd7a62730619"}],"docs/java.md":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c9916bb46058f08554c2f82b767225a1afe11a1b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"* Infrastructure"},{"line_number":57,"context_line":"  * Contains technology specific implementations of domain services."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"## Java Build"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Requires [monasca-common](https://github.com/openstack/monasca-common). First clone this repository and then do mvn install. Then return to monasca-api and:"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":2,"id":"3f4b6375_26beb6fe","line":59,"range":{"start_line":59,"start_character":0,"end_line":59,"end_character":13},"updated":"2017-10-26 15:28:36.000000000","message":"Please move build and usage sections to the top.","commit_id":"e4dc9b27acd063ed8bf6e131a743cd7a62730619"}]}
