)]}'
{"devstack/lib/cyborg":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"bc1a9709d0d4e9e44f3eb22852a5a4f839a28a7f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    CYBORG_API_URL\u003d\"$CYBORG_SERVICE_PROTOCOL://$CYBORG_SERVICE_HOST:$CYBORG_SERVICE_PORT\""},{"line_number":63,"context_line":"fi"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" nova glance neutron\""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"dfbec78f_52163c4b","line":65,"updated":"2019-05-15 23:41:09.000000000","message":"Why does this need to be a separate function?","commit_id":"661aa8e70875f70880c48e533ca8d37d33145105"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"7746217d938c9e5b1bc01db55d29681189e85f0f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    CYBORG_API_URL\u003d\"$CYBORG_SERVICE_PROTOCOL://$CYBORG_SERVICE_HOST:$CYBORG_SERVICE_PORT\""},{"line_number":63,"context_line":"fi"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" nova glance neutron\""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"dfbec78f_23e338a6","line":65,"in_reply_to":"dfbec78f_52163c4b","updated":"2019-05-16 05:53:17.000000000","message":"Only controller need this check. \nAnd these service are setup on controller. \nSo cyborg-agent installer does not need to check it.","commit_id":"661aa8e70875f70880c48e533ca8d37d33145105"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"bc1a9709d0d4e9e44f3eb22852a5a4f839a28a7f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" nova glance neutron\""},{"line_number":69,"context_line":"        for srv in $req_services; do"},{"line_number":70,"context_line":"            if ! is_service_enabled \"$srv\"; then"},{"line_number":71,"context_line":"                die $LINENO \"$srv should be enabled for Cyborg.\""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"dfbec78f_723ee0c1","line":68,"range":{"start_line":68,"start_character":24,"end_line":68,"end_character":43},"updated":"2019-05-15 23:41:09.000000000","message":"We do not need neutron as a dependency.\n\nWe should add Placement as a dependency.\n\nWhy should Cyborg install depend on Nova/Glance? Once could have a deployment with all FPGAs pre-programmed (so no bitstreams), or no firmware for devices. So, we shouldn\u0027t need Glance all the time.","commit_id":"661aa8e70875f70880c48e533ca8d37d33145105"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"7746217d938c9e5b1bc01db55d29681189e85f0f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" nova glance neutron\""},{"line_number":69,"context_line":"        for srv in $req_services; do"},{"line_number":70,"context_line":"            if ! is_service_enabled \"$srv\"; then"},{"line_number":71,"context_line":"                die $LINENO \"$srv should be enabled for Cyborg.\""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"dfbec78f_43f74c5a","line":68,"range":{"start_line":68,"start_character":24,"end_line":68,"end_character":43},"in_reply_to":"dfbec78f_723ee0c1","updated":"2019-05-16 05:53:17.000000000","message":"You are right. I just move the code does not change its logic.  \nAnd Cyborg should can be standalone without NOva. \n\nPlacement should be a dependency.\nOthers are not necessary.","commit_id":"661aa8e70875f70880c48e533ca8d37d33145105"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"bc1a9709d0d4e9e44f3eb22852a5a4f839a28a7f","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"# install_cyborg() - Install the things!"},{"line_number":78,"context_line":"function install_cyborg {"},{"line_number":79,"context_line":"    # make sure all needed service were enabled"},{"line_number":80,"context_line":"    x_ctrl_install_cyborg"},{"line_number":81,"context_line":"    setup_develop $CYBORG_DIR"},{"line_number":82,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"dfbec78f_3234e8dd","line":79,"range":{"start_line":79,"start_character":27,"end_line":79,"end_character":39},"updated":"2019-05-15 23:41:09.000000000","message":"Nit: \"services are\"","commit_id":"661aa8e70875f70880c48e533ca8d37d33145105"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"44838568489739cdaa672c120f26c3ba889a7652","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    CYBORG_API_URL\u003d\"$CYBORG_SERVICE_PROTOCOL://$CYBORG_SERVICE_HOST:$CYBORG_SERVICE_PORT\""},{"line_number":63,"context_line":"fi"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" placement\""}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"bfb3d3c7_97b78e3b","line":65,"range":{"start_line":65,"start_character":9,"end_line":65,"end_character":30},"updated":"2019-05-16 23:15:06.000000000","message":"What is the \"x_\" for? A better name may be \"install_cyborg_in_controller()\" or something like that.","commit_id":"555a7eca60cd7af39f005217fb43d9f23c569e6e"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"21b1dbd85b08f2f332a34029b9ccc848a9b69d64","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    CYBORG_API_URL\u003d\"$CYBORG_SERVICE_PROTOCOL://$CYBORG_SERVICE_HOST:$CYBORG_SERVICE_PORT\""},{"line_number":63,"context_line":"fi"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" placement\""}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"bfb3d3c7_e7dc001a","line":65,"range":{"start_line":65,"start_character":9,"end_line":65,"end_character":30},"in_reply_to":"bfb3d3c7_97b78e3b","updated":"2019-05-20 06:09:47.000000000","message":"extra install beside some common install. \nX usually means extra.\n\nHere I means, install some extra package on ctrl","commit_id":"555a7eca60cd7af39f005217fb43d9f23c569e6e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"44838568489739cdaa672c120f26c3ba889a7652","unresolved":false,"context_lines":[{"line_number":63,"context_line":"fi"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" placement\""},{"line_number":69,"context_line":"        for srv in $req_services; do"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"bfb3d3c7_d7dbc67a","line":66,"range":{"start_line":66,"start_character":40,"end_line":66,"end_character":70},"updated":"2019-05-16 23:15:06.000000000","message":"Do you think we can enable cyborg-cond automatically if cyborg-api is enabled? Both would be needed together.","commit_id":"555a7eca60cd7af39f005217fb43d9f23c569e6e"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"21b1dbd85b08f2f332a34029b9ccc848a9b69d64","unresolved":false,"context_lines":[{"line_number":63,"context_line":"fi"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"function x_ctrl_install_cyborg {"},{"line_number":66,"context_line":"    if is_service_enabled cyborg-api || is_service_enabled cyborg-cond; then"},{"line_number":67,"context_line":"        local req_services\u003d\"key\""},{"line_number":68,"context_line":"        req_services+\u003d\" placement\""},{"line_number":69,"context_line":"        for srv in $req_services; do"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"bfb3d3c7_27769808","line":66,"range":{"start_line":66,"start_character":40,"end_line":66,"end_character":70},"in_reply_to":"bfb3d3c7_d7dbc67a","updated":"2019-05-20 06:09:47.000000000","message":"They can be install on different node. \nThat depends on the deploy strategy.\nThe strategy can be complex.  But devstack is simple. \n\nMaybe I just judge cyborg-api, actually eve, cyborg-api and keystone can also be installed on different note. \n\nHere, if you look into the devstack function is_service_enable is simple can not cover the real world. \nDevstack is used for dev env.","commit_id":"555a7eca60cd7af39f005217fb43d9f23c569e6e"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"44838568489739cdaa672c120f26c3ba889a7652","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"# install_cyborg() - Install the things!"},{"line_number":78,"context_line":"function install_cyborg {"},{"line_number":79,"context_line":"    # make sure all needed services were enabled"},{"line_number":80,"context_line":"    x_ctrl_install_cyborg"},{"line_number":81,"context_line":"    setup_develop $CYBORG_DIR"},{"line_number":82,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":2,"id":"bfb3d3c7_37826251","line":79,"range":{"start_line":79,"start_character":36,"end_line":79,"end_character":38},"updated":"2019-05-16 23:15:06.000000000","message":"Nit: \"are enabled\"","commit_id":"555a7eca60cd7af39f005217fb43d9f23c569e6e"}],"devstack/plugin.sh":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9475a0183d01497806fa33838e73428ec5916c11","unresolved":false,"context_lines":[{"line_number":9,"context_line":"source $DEST/cyborg/devstack/lib/opae"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"function x-agent-pre-install {"},{"line_number":13,"context_line":"    if is_service_enabled cyborg-agent; then"},{"line_number":14,"context_line":"        # stack/pre-install - Called after (OS) setup is complete and before"},{"line_number":15,"context_line":"        # project source is installed"}],"source_content_type":"text/x-sh","patch_set":4,"id":"bfb3d3c7_4a65c1b4","line":12,"range":{"start_line":12,"start_character":9,"end_line":12,"end_character":28},"updated":"2019-05-20 22:23:30.000000000","message":"We use underscores in shell function names.\n\nThe use of the \"x_\" still seems strange to me. Why not just \"pre_install_agent\"?","commit_id":"6eec62ed5ad5305ccf2579f9eba9f13f9fd50a32"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9475a0183d01497806fa33838e73428ec5916c11","unresolved":false,"context_lines":[{"line_number":23,"context_line":"}"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"function x-agent-install {"},{"line_number":27,"context_line":"    if is_service_enabled cyborg-agent; then"},{"line_number":28,"context_line":"        # stack/install - Called after the layer 1 and 2 projects source and"},{"line_number":29,"context_line":"        # their dependencies have been installed"}],"source_content_type":"text/x-sh","patch_set":4,"id":"bfb3d3c7_0a5fc9e2","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":24},"updated":"2019-05-20 22:23:30.000000000","message":"\"install_agent\"","commit_id":"6eec62ed5ad5305ccf2579f9eba9f13f9fd50a32"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"9475a0183d01497806fa33838e73428ec5916c11","unresolved":false,"context_lines":[{"line_number":36,"context_line":"}"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"function x-agent-cleanup_cyborg {"},{"line_number":40,"context_line":"    if is_service_enabled cyborg-agent; then"},{"line_number":41,"context_line":"        if [[ \"$OPAE_INSTALL_ENABLE\" \u003d\u003d \"True\" ]]; then"},{"line_number":42,"context_line":"            uninstall_opae_packages"}],"source_content_type":"text/x-sh","patch_set":4,"id":"bfb3d3c7_4a0aa1d2","line":39,"range":{"start_line":39,"start_character":9,"end_line":39,"end_character":31},"updated":"2019-05-20 22:23:30.000000000","message":"Mixing hyphen and underscores can be confusing.\n\n Suggest \"cleanup_agent\".","commit_id":"6eec62ed5ad5305ccf2579f9eba9f13f9fd50a32"}],"doc/source/contributor/devstack_setup.rst":[{"author":{"_account_id":20754,"name":"Donny Davis","email":"donny@fortnebula.com","username":"donnydavis"},"change_message_id":"c3fd32da97248d3384a514239477c9a9e273f442","unresolved":false,"context_lines":[{"line_number":166,"context_line":"- If you do not want to setup cyborg-agent on controller, you can disable it."},{"line_number":167,"context_line":"- You do not need to enable cyborg-api and cyborg-cond on compute nodes."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Cell V2 Deployment"},{"line_number":170,"context_line":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Compute node services must be mapped to a cell before they can be used."},{"line_number":173,"context_line":"Cell V2 deployment, please ref [#CellV2]_."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"After each compute node is stacked, verify it shows up in the"},{"line_number":176,"context_line":"**nova service-list --binary nova-compute** output. The compute service is"},{"line_number":177,"context_line":"registered in the cell database asynchronously so this may require polling."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Once the compute node services shows up, run the **./tools/discover_hosts.sh**"},{"line_number":180,"context_line":"script from the control node to map compute hosts to the single cell. You can"},{"line_number":181,"context_line":"also simply run these 2 comands on the controller,"},{"line_number":182,"context_line":"**nova-manage cell_v2 discover_hosts --verbose** and"},{"line_number":183,"context_line":"**nova-manage cell_v2 simple_cell_setup**."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"The compute service running on the primary control node will be discovered"},{"line_number":186,"context_line":"automatically when the control node is stacked so this really only needs to"},{"line_number":187,"context_line":"be performed for subnodes."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Run DevStack"},{"line_number":190,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bfb3d3c7_0417aeef","line":187,"range":{"start_line":169,"start_character":0,"end_line":187,"end_character":26},"updated":"2019-05-21 16:02:53.000000000","message":"I think this is probably generic enough to be moved over to the devstack guide. Its useful for more than just cyborg and is not cyborg specific","commit_id":"6eec62ed5ad5305ccf2579f9eba9f13f9fd50a32"}]}
