)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     chenke \u003cchen.ke14@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-09-12 13:48:59 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add show-datamodel-api.rst for blueprint show-datamodel-api"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I945465353a2267c86747dbf7535902c4ca40f591"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_b0b95a16","line":7,"range":{"start_line":7,"start_character":26,"end_line":7,"end_character":59},"updated":"2018-09-12 06:47:19.000000000","message":"Implements: blueprint show-datamodel-api\n\nhttps://docs.openstack.org/infra/manual/developers.html#committing-a-change","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"}],"specs/stein/approved/show-datamodel-api.rst":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Add show datamodel command line API"},{"line_number":2,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_f06d9299","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":35},"updated":"2018-09-12 06:47:19.000000000","message":"\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\u003d\u003d\nAdd show datamodel command line API\n\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\u003d\u003d","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Add show datamodel command line API"},{"line_number":2,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_9051bedc","line":1,"updated":"2018-09-12 06:47:19.000000000","message":"Do not remove License comment.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"3bb4832816cf0c9ccba99f77458bc43da6cd9f00","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Add show datamodel command line API"},{"line_number":2,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_b27c5e71","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":35},"in_reply_to":"3f79a3b5_f06d9299","updated":"2018-09-20 05:51:17.000000000","message":"thanks for your advice,i will update this file after a period of time.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Add show datamodel command line API"},{"line_number":2,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Problem description"},{"line_number":5,"context_line":"\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":1,"id":"3f79a3b5_906a1e7f","line":2,"updated":"2018-09-12 06:47:19.000000000","message":"Need blank line before URL.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Problem description"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Before optimizing resources for instances, the administrator wants to view the information of the instance in the specified scope through the command line."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Use Cases"},{"line_number":10,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_d0c89657","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":155},"updated":"2018-09-12 06:47:19.000000000","message":"This is just use case for me. \n\nFor example, problem is \"the administrator can not see the infrastructure needs to be optimized without creating audit\".","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"We can refer to the \"strategy list\" command, add the command line api in the watcherclient. After receiving the request, the watcher-api notifies the watcher-decision to get the datamodel, then parses and returns."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* watcher datmodel list [--audit \u003caudit\u003e]"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_50b9e6e9","line":20,"range":{"start_line":20,"start_character":17,"end_line":20,"end_character":20},"updated":"2018-09-12 06:47:19.000000000","message":"interface?","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* watcher datmodel list [--audit \u003caudit\u003e]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In watcherclient, we can add \"datamodel.py,datamodel_shell.py\" to send datamodel list requeset and receive the result."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_30df8a3b","line":22,"range":{"start_line":22,"start_character":10,"end_line":22,"end_character":18},"updated":"2018-09-12 06:47:19.000000000","message":"datamodel?","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"REST API impact"},{"line_number":41,"context_line":"---------------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"None"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Security impact"},{"line_number":46,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_b015dae7","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":4},"updated":"2018-09-12 06:47:19.000000000","message":"In proposed change, this spec says we can add \"datamdel.py\" which means we add REST API.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Developer impact"},{"line_number":71,"context_line":"----------------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The developer can use \"watcher datamodel list --audit audit_id\" to query the information of the instance in the specified scope."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_f0c91279","line":73,"updated":"2018-09-12 06:47:19.000000000","message":"Adding CLI is for end user impact rather than for developer.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"Work Items"},{"line_number":89,"context_line":"----------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_10a84e8a","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":4},"updated":"2018-09-12 06:47:19.000000000","message":"Please break down your work you need to do.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Documentation Impact"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"None"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_30e9cab6","line":109,"range":{"start_line":109,"start_character":1,"end_line":109,"end_character":4},"updated":"2018-09-12 06:47:19.000000000","message":"If We add REST API, at least api-ref is updated.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5cdf6c2090848c22acbfafb19b0cd2437b95581a","unresolved":false,"context_lines":[{"line_number":112,"context_line":"References"},{"line_number":113,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"* https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"History"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3f79a3b5_d0cdf65e","line":115,"range":{"start_line":115,"start_character":0,"end_line":115,"end_character":67},"updated":"2018-09-12 06:47:19.000000000","message":"blueprint itself is not needed in References.","commit_id":"bd0261bc6a56cd9d6f59bfa80c8670381652ee74"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d195aad529a6fa9785ae5a023c69335993b28c34","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Proposed change"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"We can refer to the \"strategy list\" command, add the command line api in the watcherclient. After receiving the request, the watcher-api notifies the watcher-decision to get the datamodel, then parses and returns."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_799cbb5a","line":18,"range":{"start_line":18,"start_character":66,"end_line":18,"end_character":69},"updated":"2018-10-11 06:40:36.000000000","message":"interface is better","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d195aad529a6fa9785ae5a023c69335993b28c34","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Proposed change"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"We can refer to the \"strategy list\" command, add the command line api in the watcherclient. After receiving the request, the watcher-api notifies the watcher-decision to get the datamodel, then parses and returns."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_99e2f79b","line":18,"range":{"start_line":18,"start_character":137,"end_line":18,"end_character":165},"updated":"2018-10-11 06:40:36.000000000","message":"watcher-api calls watcher-decision-engine to retrieve information about the data model","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d195aad529a6fa9785ae5a023c69335993b28c34","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"We can refer to the \"strategy list\" command, add the command line api in the watcherclient. After receiving the request, the watcher-api notifies the watcher-decision to get the datamodel, then parses and returns."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* watcher datmodel list [--audit \u003caudit\u003e]"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_59f69f92","line":20,"range":{"start_line":20,"start_character":42,"end_line":20,"end_character":52},"updated":"2018-10-11 06:40:36.000000000","message":"could be like this:","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"d195aad529a6fa9785ae5a023c69335993b28c34","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"We can refer to the \"strategy list\" command, add the command line api in the watcherclient. After receiving the request, the watcher-api notifies the watcher-decision to get the datamodel, then parses and returns."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* watcher datmodel list [--audit \u003caudit\u003e]"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_19a587a0","line":20,"range":{"start_line":20,"start_character":17,"end_line":20,"end_character":20},"updated":"2018-10-11 06:40:36.000000000","message":"ditto","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6ae360a3bb72d7cf8e6b0af3cf1ad02dc24de291","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The command line api used in watcherclient like this:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* watcher datmodel list [--audit \u003caudit\u003e]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In watcherclient, we can add \"datamodel.py,datamodel_shell.py\" to send datamodel list requeset and receive the result."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_47dd0e6b","line":22,"range":{"start_line":22,"start_character":10,"end_line":22,"end_character":11},"updated":"2018-09-20 04:42:03.000000000","message":"s/datmodel/datamodel","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6ae360a3bb72d7cf8e6b0af3cf1ad02dc24de291","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* watcher datmodel list [--audit \u003caudit\u003e]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In watcherclient, we can add \"datamodel.py,datamodel_shell.py\" to send datamodel list requeset and receive the result."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In watcher-api, we can add \"datamodel.py\" to recieve the watcherclient\u0027s request and call watcher-decision module."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_073ab696","line":24,"range":{"start_line":24,"start_character":89,"end_line":24,"end_character":90},"updated":"2018-09-20 04:42:03.000000000","message":"s/requeset/request","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6ae360a3bb72d7cf8e6b0af3cf1ad02dc24de291","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"In watcherclient, we can add \"datamodel.py,datamodel_shell.py\" to send datamodel list requeset and receive the result."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In watcher-api, we can add \"datamodel.py\" to recieve the watcherclient\u0027s request and call watcher-decision module."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In watcher-decision, we can get datamodel data according to the specified scope, then parses the datamodel and return to watcher-api."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_275012d5","line":26,"updated":"2018-09-20 04:42:03.000000000","message":"It is better to write s/watcher-decision/watcher-decision-engine","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6ae360a3bb72d7cf8e6b0af3cf1ad02dc24de291","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"REST API impact"},{"line_number":41,"context_line":"---------------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"None"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_076396b2","line":42,"updated":"2018-09-20 04:42:03.000000000","message":"Are you just adding a command, not API??I think a GET API needs to be added","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"3bb4832816cf0c9ccba99f77458bc43da6cd9f00","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"REST API impact"},{"line_number":41,"context_line":"---------------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"None"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_325a8e1d","line":42,"in_reply_to":"3f79a3b5_076396b2","updated":"2018-09-20 05:51:17.000000000","message":"both command and API,maybe i didn\u0027t describe it clearly. i will according your advice and update this docs after a period of time. thank you .","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6ae360a3bb72d7cf8e6b0af3cf1ad02dc24de291","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Work Items"},{"line_number":89,"context_line":"----------"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"None"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_67f84ac3","line":90,"updated":"2018-09-20 04:42:03.000000000","message":"Add work items in points","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6ae360a3bb72d7cf8e6b0af3cf1ad02dc24de291","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Documentation Impact"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"None"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_c70d9ee7","line":109,"updated":"2018-09-20 04:42:03.000000000","message":"CLI and API Documents need to be updated","commit_id":"686503e10626dbb1b501fcc28eaace9070954e5e"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"77be278e1158322c6b359efab9ac64db602248c1","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Add Show Datamodel Command Line Interface"},{"line_number":9,"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"  https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_9e6128d7","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":41},"updated":"2018-10-27 02:06:56.000000000","message":"\u0027Add Show DataModel API\u0027 maybe better","commit_id":"64ae605b6571d46daa047cd8b74bbd0b4a5e34b2"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5f093e0154e397a2a43a8430bdc455322f01a142","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"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The user can not see the datamodel directly without viewing"},{"line_number":18,"context_line":"the watcher-decision-engine.log."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Use Cases"},{"line_number":21,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_e405267a","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":32},"updated":"2018-10-29 01:06:22.000000000","message":"Could you explain why this is a problem?","commit_id":"64ae605b6571d46daa047cd8b74bbd0b4a5e34b2"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"77be278e1158322c6b359efab9ac64db602248c1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Use Cases"},{"line_number":21,"context_line":"----------"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"As a watcher user, I want to use show datamodel interface to"},{"line_number":24,"context_line":"see the information of the instance in the specified scope."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_bec42495","line":23,"range":{"start_line":23,"start_character":5,"end_line":23,"end_character":12},"updated":"2018-10-27 02:06:56.000000000","message":"Watcher","commit_id":"64ae605b6571d46daa047cd8b74bbd0b4a5e34b2"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"77be278e1158322c6b359efab9ac64db602248c1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"see the information of the instance in the specified scope."},{"line_number":25,"context_line":""},{"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"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"We can refer to the \"strategy list\" command, add the command line interface"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_bea3c4af","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":15},"updated":"2018-10-27 02:06:56.000000000","message":"Please list the proposed changes in detail，you can refer to\nhttp://specs.openstack.org/openstack/watcher-specs/specs/queens/implemented/watcher-multi-datasource.html","commit_id":"64ae605b6571d46daa047cd8b74bbd0b4a5e34b2"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"77be278e1158322c6b359efab9ac64db602248c1","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"REST API impact"},{"line_number":59,"context_line":"---------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"- Add a new command line interface: watcher datamodel list [--audit \u003caudit\u003e]"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_7e1e8c0d","line":58,"range":{"start_line":58,"start_character":0,"end_line":58,"end_character":15},"updated":"2018-10-27 02:06:56.000000000","message":"please list the new API and its request \u0026 response","commit_id":"64ae605b6571d46daa047cd8b74bbd0b4a5e34b2"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"5f093e0154e397a2a43a8430bdc455322f01a142","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Other end user impact"},{"line_number":75,"context_line":"---------------------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"None"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Performance Impact"},{"line_number":80,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_64c8364c","line":77,"updated":"2018-10-29 01:06:22.000000000","message":"This section should include an impact on python-watcherclient.\nhttps://specs.openstack.org/openstack/watcher-specs/specs/stein/approved/stein-template.html#other-end-user-impact","commit_id":"64ae605b6571d46daa047cd8b74bbd0b4a5e34b2"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9ce3fa3eb6906bfc5a9759454f89036107d9cef0","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Add Show Datamodel API"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfd5e7cf_faba46dc","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":18},"updated":"2019-01-09 04:02:10.000000000","message":"We have three Cluster Data Models, baremetal, storage and compute.\nIs this spec limited to compute?","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"1e08a7b56fa21c01ae91acccb4f8a0ae496ecb93","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Add Show Datamodel API"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_1c413d3a","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":18},"in_reply_to":"bfdaf3ff_e97db6e7","updated":"2019-01-15 02:37:50.000000000","message":"I got it, Thank you.","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"05cdf5a84fabfa16385d3b9fd0439c0394b048ee","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Add Show Datamodel API"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_e97db6e7","line":8,"range":{"start_line":8,"start_character":8,"end_line":8,"end_character":18},"in_reply_to":"dfd5e7cf_faba46dc","updated":"2019-01-14 01:41:41.000000000","message":"yes, this spec is just a datamodel that shows the compute. The reason is that baremetal and storage and compute have different data formats. However, openstak-client only allows one of them when displaying, so we selected the most important compute datamodel to display after discussion.","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9ce3fa3eb6906bfc5a9759454f89036107d9cef0","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The command line interface used in watcherclient could be like this:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* watcher datamodel list [--audit \u003caudit_id\u003e]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"In watcherclient, we can add **\"datamodel.py,datamodel_shell.py\"** to send"},{"line_number":42,"context_line":"datamodel list request and receive the result."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfd5e7cf_3d0be88e","line":39,"range":{"start_line":39,"start_character":25,"end_line":39,"end_character":45},"updated":"2019-01-09 04:02:10.000000000","message":"Why don\u0027t we use \u0027watcher datamodel show \u003caudit_id\u003e\u0027?","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"1e08a7b56fa21c01ae91acccb4f8a0ae496ecb93","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The command line interface used in watcherclient could be like this:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"* watcher datamodel list [--audit \u003caudit_id\u003e]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"In watcherclient, we can add **\"datamodel.py,datamodel_shell.py\"** to send"},{"line_number":42,"context_line":"datamodel list request and receive the result."}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_fc455944","line":39,"range":{"start_line":39,"start_character":25,"end_line":39,"end_character":45},"in_reply_to":"dfd5e7cf_3d0be88e","updated":"2019-01-15 02:37:50.000000000","message":"How about this question?","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9ce3fa3eb6906bfc5a9759454f89036107d9cef0","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Response"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * **instance_uuid**: UUID of an instance"},{"line_number":77,"context_line":"  * **node_uuid**: UUID of an compute node"},{"line_number":78,"context_line":"  * **instance_state**: state of instance"},{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfd5e7cf_7d9bb071","line":80,"range":{"start_line":76,"start_character":3,"end_line":80,"end_character":35},"updated":"2019-01-09 04:02:10.000000000","message":"Compute CDM is tree, not list. Response would be JSON format.","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9ce3fa3eb6906bfc5a9759454f89036107d9cef0","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Add following **datamodel** REST:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* GET /v1/datamodels"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Normal http response code(200)"},{"line_number":68,"context_line":"  * Expected error http response code(400,401)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Request"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  * **audit_uuid (Optional)**: UUID of an audit"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Response"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * **instance_uuid**: UUID of an instance"},{"line_number":77,"context_line":"  * **node_uuid**: UUID of an compute node"},{"line_number":78,"context_line":"  * **instance_state**: state of instance"},{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfd5e7cf_daff4265","line":80,"range":{"start_line":65,"start_character":0,"end_line":80,"end_character":35},"updated":"2019-01-09 04:02:10.000000000","message":"It is better to move Request and Response under GET linke this:\n\n* GET /v1/datamodels\n\n  * Normal http response code(200)\n  * Expected error http response code(400,401)\n\n　* Parameters\n\n    * Request\n\n      * **audit_uuid (Optional)**: UUID of an audit\n\n    * Response\n\n      * **instance_uuid**: UUID of an instance\n      * **node_uuid**: UUID of an compute node\n      * **instance_state**: state of instance\n      * **node_state**: state of compute node\n      * **in_state**: state of instance","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"a16cf548380d65ee297d9fbdb7380968475a9de1","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Add following **datamodel** REST:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* GET /v1/datamodels"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Normal http response code(200)"},{"line_number":68,"context_line":"  * Expected error http response code(400,401)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Request"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  * **audit_uuid (Optional)**: UUID of an audit"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Response"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * **instance_uuid**: UUID of an instance"},{"line_number":77,"context_line":"  * **node_uuid**: UUID of an compute node"},{"line_number":78,"context_line":"  * **instance_state**: state of instance"},{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9fdfeff1_e162c8d8","line":80,"range":{"start_line":65,"start_character":0,"end_line":80,"end_character":35},"in_reply_to":"bfdaf3ff_9c8a0d19","updated":"2019-01-21 02:47:34.000000000","message":"Sorry,i got it. Actually when i implement the code, I return a data in json format. However, as I said in the last sentence, the display of datamodel data needs to be compatible with the client\u0027s list data format, rather than the show method. So i built a json format like this:\n{\n    \"context\": [\n        {\n\t\t\t\"instance_uuid\": \"9e7cbe91-b391-4394-a42c-68996a4fd555\",\n\t\t\t\"node_uuid\": \"90d7da5c-d432-4eba-89b4-743c9f1e6cfa\",\n\t\t\t\"instance_state\": \"active\",\n\t\t\t\"instance_name\": \"vm_4\",\n\t\t\t\"instance_vcpus\": 16,\n\t\t\t\"instance_memory\": \"2048\",\n\t\t\t\"instance_disk\": \"10\",\n\t\t\t\"instance_disk_capacity\": \"35\",\n\t\t\t\"node_name\": \"node_1\",\n\t\t\t\"node_vcpus\": 48,\n\t\t\t\"node_memory\": \"4096\",\n\t\t\t\"node_disk\": \"40\",\n\t\t\t\"node_disk_capacity\": \"60\"\n        },\n        {\n\t\t\t\"instance_uuid\": \"8e7cbe91-b391-4394-a42c-68996a4fd555\",\n\t\t\t\"node_uuid\": \"80d7da5c-d432-4eba-89b4-743c9f1e6cfa\",\n\t\t\t\"instance_state\": \"active\",\n\t\t\t\"instance_name\": \"vm_5\",\n\t\t\t\"instance_vcpus\": 16,\n\t\t\t\"instance_memory\": \"2048\",\n\t\t\t\"instance_disk\": \"10\",\n\t\t\t\"instance_disk_capacity\": \"35\",\n\t\t\t\"node_name\": \"node_2\",\n\t\t\t\"node_vcpus\": 48,\n\t\t\t\"node_memory\": \"4096\",\n\t\t\t\"node_disk\": \"40\",\n\t\t\t\"node_disk_capacity\": \"60\"\n        }\n    ]\n}","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"1e08a7b56fa21c01ae91acccb4f8a0ae496ecb93","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Add following **datamodel** REST:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* GET /v1/datamodels"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Normal http response code(200)"},{"line_number":68,"context_line":"  * Expected error http response code(400,401)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Request"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  * **audit_uuid (Optional)**: UUID of an audit"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Response"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * **instance_uuid**: UUID of an instance"},{"line_number":77,"context_line":"  * **node_uuid**: UUID of an compute node"},{"line_number":78,"context_line":"  * **instance_state**: state of instance"},{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_9c8a0d19","line":80,"range":{"start_line":65,"start_character":0,"end_line":80,"end_character":35},"in_reply_to":"bfdaf3ff_a987aed7","updated":"2019-01-15 02:37:50.000000000","message":"Response can be JSON. For example, \n/v1/strategies/{strategy_ident} returns the response which includes parameters_spec of type JSON.\nSee: https://developer.openstack.org/api-ref/resource-optimization/?expanded\u003dshow-strategy-detail\n\n$ watcher strategy show b4c7d18b-cfbc-4021-9610-dba60d7085da\n+-----------------+---------------------------------------------------------------------------------------------+\n| Field           | Value                                                                                       |\n+-----------------+---------------------------------------------------------------------------------------------+\n| UUID            | b4c7d18b-cfbc-4021-9610-dba60d7085da                                                        |\n| Name            | vm_workload_consolidation                                                                   |\n| Display name    | VM Workload Consolidation Strategy                                                          |\n| Goal            | server_consolidation                                                                        |\n| Parameters spec | {                                                                                           |\n|                 |   \"period\": {                                                                               |\n|                 |     \"default\": 3600,                                                                        |\n|                 |     \"type\": \"number\",                                                                       |\n|                 |     \"description\": \"The time interval in seconds for getting statistic aggregation\"         |\n|                 |   },                                                                                        |\n|                 |   \"granularity\": {                                                                          |\n|                 |     \"default\": 300,                                                                         |\n|                 |     \"type\": \"number\",                                                                       |\n|                 |     \"description\": \"The time between two measures in an aggregated timeseries of a metric.\" |\n|                 |   }                                                                                         |\n|                 | }                                                                                           |\n+-----------------+---------------------------------------------------------------------------------------------+","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"05cdf5a84fabfa16385d3b9fd0439c0394b048ee","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Add following **datamodel** REST:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* GET /v1/datamodels"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"  * Normal http response code(200)"},{"line_number":68,"context_line":"  * Expected error http response code(400,401)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* Request"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  * **audit_uuid (Optional)**: UUID of an audit"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"* Response"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"  * **instance_uuid**: UUID of an instance"},{"line_number":77,"context_line":"  * **node_uuid**: UUID of an compute node"},{"line_number":78,"context_line":"  * **instance_state**: state of instance"},{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_a987aed7","line":80,"range":{"start_line":65,"start_character":0,"end_line":80,"end_character":35},"in_reply_to":"dfd5e7cf_daff4265","updated":"2019-01-14 01:41:41.000000000","message":"yes, in the watcher-decision process, compute CDM saves to the python object by inheriting the directed graph, which is different from action and audit because they are stored in the database. In order to be compatible with the interface they display on the watcher-client side, it is designed to return to watcher-client as a list.\n\nThanks for your suggestion, I think this request and respose will let others know more about the returned data format.","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9ce3fa3eb6906bfc5a9759454f89036107d9cef0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * Normal http response code(200)"},{"line_number":85,"context_line":"  * Expected error http response code(400,401)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfd5e7cf_ba691e26","line":82,"range":{"start_line":82,"start_character":2,"end_line":82,"end_character":27},"updated":"2019-01-09 04:02:10.000000000","message":"/v1/strategies/detail is called by \u0027watcher strategy list --detail\u0027.\nIf you refer to \u0027watcher strategy list\u0027, this REST API is called from \u0027watcher datemodel list --detail\u0027. Is this correct?","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"1e08a7b56fa21c01ae91acccb4f8a0ae496ecb93","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * Normal http response code(200)"},{"line_number":85,"context_line":"  * Expected error http response code(400,401)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_fcd559e6","line":82,"range":{"start_line":82,"start_character":2,"end_line":82,"end_character":27},"in_reply_to":"bfdaf3ff_4c73b081","updated":"2019-01-15 02:37:50.000000000","message":"If you refer to Services API, you will develop the three APIs.\n- /v1/datamodels\n- /v1/datamodels/detail\n- /v1/datamodels/{datamodel_ident}\n\nServices API is defined here.\nhttps://developer.openstack.org/api-ref/resource-optimization/#services","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"0bd2115bd86021d573add930b86646437a874422","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  * **node_state**: state of compute node"},{"line_number":80,"context_line":"  * **in_state**: state of instance"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* GET /v1/datamodels/detail"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * Normal http response code(200)"},{"line_number":85,"context_line":"  * Expected error http response code(400,401)"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_4c73b081","line":82,"range":{"start_line":82,"start_character":2,"end_line":82,"end_character":27},"in_reply_to":"dfd5e7cf_ba691e26","updated":"2019-01-14 02:20:12.000000000","message":"i think this is ok.","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9ce3fa3eb6906bfc5a9759454f89036107d9cef0","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Documentation Impact"},{"line_number":186,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"A documentation explaining how to use \u0027watcher datamodel list [--audit \u003caudit\u003e]\u0027"},{"line_number":189,"context_line":"REST API"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfd5e7cf_bd7a7821","line":188,"updated":"2019-01-09 04:02:10.000000000","message":"* A documentation explaining how to use \u0027watcher datamodel list [--audit \u003caudit\u003e]\u0027\n\n* Update API Reference\n\n* Update REST API Version History","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"0bd2115bd86021d573add930b86646437a874422","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Documentation Impact"},{"line_number":186,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"A documentation explaining how to use \u0027watcher datamodel list [--audit \u003caudit\u003e]\u0027"},{"line_number":189,"context_line":"REST API"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bfdaf3ff_6c70f473","line":188,"in_reply_to":"dfd5e7cf_bd7a7821","updated":"2019-01-14 02:20:12.000000000","message":"ok, thanks.","commit_id":"8af504244fa1aff8ab90da9a289b26ec03574c46"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"0691cbe58f2ed530315318882b794aca25ef8191","unresolved":false,"context_lines":[{"line_number":105,"context_line":"  * **node_disk_capacity**: disk capacity of node"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* Example JSON representation of Datamodel"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"::"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"9fdfeff1_ed67d750","line":108,"range":{"start_line":108,"start_character":2,"end_line":108,"end_character":42},"updated":"2019-01-24 02:47:39.000000000","message":"maybe better if we separate node from instance:\n {\n    \"compute\": [\n      {\n        \"node_uuid\": \"90d7da5c-d432-4eba-89b4-743c9f1e6cfa\",\n        \"node_name\": \"node_1\",\n        \"node_vcpus\": 48,\n        \"node_memory\": \"4096\",\n        \"node_disk\": \"40\",\n        \"node_disk_capacity\": \"60\"\n         \"servers\":[\n           {\n         \"instance_uuid\": \"9e7cbe91-b391-4394-a42c-68996a4fd555\",\n        \"instance_state\": \"active\",\n        \"instance_name\": \"vm_4\",\n        \"instance_vcpus\": 16,\n        \"instance_memory\": \"2048\",\n        \"instance_disk\": \"10\",\n        \"instance_disk_capacity\": \"35\",\n            }\n            {\n        \"instance_uuid\": \"8e7cbe91-b391-4394-a42c-68996a4fd555\",\n        \"instance_state\": \"active\",\n        \"instance_name\": \"vm_5\",\n        \"instance_vcpus\": 16,\n        \"instance_memory\": \"2048\",\n        \"instance_disk\": \"10\",\n        \"instance_disk_capacity\": \"35\",\n            }\n           ]\n      },\n      {\n        \"node_uuid\": \"80d7da5c-d432-4eba-89b4-743c9f1e6cfa\",\n        \"node_name\": \"node_2\",\n        \"node_vcpus\": 48,\n        \"node_memory\": \"4096\",\n        \"node_disk\": \"40\",\n        \"node_disk_capacity\": \"60\"\n         \"servers\":[\n           {\n        \"instance_uuid\": \"628cbe91-b391-4394-a42c-68996a4fd555\",\n        \"instance_state\": \"active\",\n        \"instance_name\": \"vm_6\",\n        \"instance_vcpus\": 8,\n        \"instance_memory\": \"2048\",\n        \"instance_disk\": \"10\",\n        \"instance_disk_capacity\": \"35\",\n            }\n           ]\n      }\n    ]\n  }","commit_id":"611a399989310f104084aae4b6d3ccf712b5b9b1"}]}
