)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"286bd0d3714f59db831d79230d4b95a404581564","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RST directive to discover and generate drivers doc"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patchset introduces a new custon directive called \u0027drivers-doc\u0027"},{"line_number":10,"context_line":"which loads all available drivers under a given namespace and import"},{"line_number":11,"context_line":"their respective docstring into the .rst document."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"bae84128_85ef5986","line":9,"range":{"start_line":9,"start_character":31,"end_line":9,"end_character":37},"updated":"2016-02-22 13:49:14.000000000","message":"custom?","commit_id":"88e7da0a17ff391b334ca1092199b7546bebbf10"}],"watcher/applier/actions/change_nova_service_state.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ChangeNovaServiceState(base.BaseAction):"},{"line_number":30,"context_line":"    \"\"\"Changes the state of a given hypervisor"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    *Requirements*:"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    * A Nova service"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    STATE \u003d \u0027state\u0027"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_ea3e0dd9","line":35,"range":{"start_line":30,"start_character":0,"end_line":35,"end_character":7},"updated":"2016-02-16 11:28:09.000000000","message":"By using the nova terminology: \nDisables or enables the nova-compute service, deployed on a host\n\nBy using this action, you will be able to update the state of a nova-compute service. A disabled nova-compute service can not be selected by the nova scheduler for future deployment of server.\n\nThe action\u0027s schema is:\nschema \u003d Schema({\n \u0027resource_id\u0027: str,\n \u0027state\u0027: \u0027str\u0027,\n})\n\nthe resource_id references a nova-compute service name (list of available nova-compute services is returned by this command: nova service-list --binary nova-compute). state value should either \u0027ONLINE\u0027 or \u0027OFFLINE\u0027.","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"00b3fc487944779d81f72aaefe2f665cb79db98e","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ChangeNovaServiceState(base.BaseAction):"},{"line_number":30,"context_line":"    \"\"\"Changes the state of a given hypervisor"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    *Requirements*:"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    * A Nova service"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    STATE \u003d \u0027state\u0027"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_e49599e4","line":35,"range":{"start_line":30,"start_character":0,"end_line":35,"end_character":7},"in_reply_to":"dae33548_ea3e0dd9","updated":"2016-02-16 15:07:05.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"}],"watcher/applier/actions/migration.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class Migrate(base.BaseAction):"},{"line_number":34,"context_line":"    \"\"\"Migrates an instance from a given hypervisor to another"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This action can be done using"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    *Requirements*:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * A Nova service"},{"line_number":41,"context_line":"    * The targeted instance should be on a shared storage (i.e. NFS)"},{"line_number":42,"context_line":"    * Live migrations should be possible"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # input parameters constants"},{"line_number":46,"context_line":"    MIGRATION_TYPE \u003d \u0027migration_type\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_eab9ed7a","line":43,"range":{"start_line":34,"start_character":0,"end_line":43,"end_character":7},"updated":"2016-02-16 11:28:09.000000000","message":"By using the nova terminology: \nLive-Migrates a server to a destination nova-compute host.\n \nThis action will allow you to migrate a server to another Compute destination host. If both source and destination hosts provide local disks, you can set the block_migration parameter to True (not supported for now). If either host uses shared storage, the migration fails if you set this parameter to True.\n\nThe action\u0027s schema is:\n\nschema \u003d Schema({\n \u0027resource_id\u0027: str,\n \u0027migration_type\u0027: \u0027str\u0027,\n \u0027dst_hypervisor\u0027: str,\n \u0027src_hypervisor\u0027: str,\n})\n\nresource_id is the UUID of the server to migrate. Only live migration is supported, with block_migration set to False. src_hypervisor and dst_hypervisor are respectively the source and the destination Compute hostname (list of available Compute hosts is returned by this command: nova service-list --binary nova-compute).","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"00b3fc487944779d81f72aaefe2f665cb79db98e","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class Migrate(base.BaseAction):"},{"line_number":34,"context_line":"    \"\"\"Migrates an instance from a given hypervisor to another"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This action can be done using"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    *Requirements*:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * A Nova service"},{"line_number":41,"context_line":"    * The targeted instance should be on a shared storage (i.e. NFS)"},{"line_number":42,"context_line":"    * Live migrations should be possible"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # input parameters constants"},{"line_number":46,"context_line":"    MIGRATION_TYPE \u003d \u0027migration_type\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_df8f8021","line":43,"range":{"start_line":34,"start_character":0,"end_line":43,"end_character":7},"in_reply_to":"dae33548_eab9ed7a","updated":"2016-02-16 15:07:05.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"20be6c2099bd9287398d18cf6b37cb976093c6e5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"class Migrate(base.BaseAction):"},{"line_number":34,"context_line":"    \"\"\"Live-Migrates a server to a destination nova-compute host."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This action will allow you to migrate a server to another Compute"},{"line_number":37,"context_line":"    destination host. If both source and destination hosts provide local disks,"},{"line_number":38,"context_line":"    you can set the block_migration parameter to True (not supported for now)."},{"line_number":39,"context_line":"    If either host uses shared storage, the migration fails if you set this"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_37a58346","line":36,"range":{"start_line":36,"start_character":62,"end_line":36,"end_character":63},"updated":"2016-02-18 08:48:05.000000000","message":"lowercase as below","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2c9a50e8352c4932ca1091ed84957f55982887fb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"class Migrate(base.BaseAction):"},{"line_number":34,"context_line":"    \"\"\"Live-Migrates a server to a destination nova-compute host."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This action will allow you to migrate a server to another Compute"},{"line_number":37,"context_line":"    destination host. If both source and destination hosts provide local disks,"},{"line_number":38,"context_line":"    you can set the block_migration parameter to True (not supported for now)."},{"line_number":39,"context_line":"    If either host uses shared storage, the migration fails if you set this"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_8bf6e38c","line":36,"range":{"start_line":36,"start_character":62,"end_line":36,"end_character":63},"in_reply_to":"dae33548_37a58346","updated":"2016-02-18 13:32:14.000000000","message":"Done","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"20be6c2099bd9287398d18cf6b37cb976093c6e5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"Live-Migrates a server to a destination nova-compute host."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This action will allow you to migrate a server to another Compute"},{"line_number":37,"context_line":"    destination host. If both source and destination hosts provide local disks,"},{"line_number":38,"context_line":"    you can set the block_migration parameter to True (not supported for now)."},{"line_number":39,"context_line":"    If either host uses shared storage, the migration fails if you set this"},{"line_number":40,"context_line":"    parameter to True."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    The action schema is::"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_3750e20a","line":40,"range":{"start_line":37,"start_character":22,"end_line":40,"end_character":22},"updated":"2016-02-18 08:48:05.000000000","message":"block_migrate parameter is hardcode for now to False...","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2c9a50e8352c4932ca1091ed84957f55982887fb","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    \"\"\"Live-Migrates a server to a destination nova-compute host."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    This action will allow you to migrate a server to another Compute"},{"line_number":37,"context_line":"    destination host. If both source and destination hosts provide local disks,"},{"line_number":38,"context_line":"    you can set the block_migration parameter to True (not supported for now)."},{"line_number":39,"context_line":"    If either host uses shared storage, the migration fails if you set this"},{"line_number":40,"context_line":"    parameter to True."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    The action schema is::"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_0b31335a","line":40,"range":{"start_line":37,"start_character":22,"end_line":40,"end_character":22},"in_reply_to":"dae33548_3750e20a","updated":"2016-02-18 13:32:14.000000000","message":"Done","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"}],"watcher/applier/actions/nop.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class Nop(base.BaseAction):"},{"line_number":31,"context_line":"    \"\"\"This action is used for testing purposes and does nothing.\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    MESSAGE \u003d \u0027message\u0027"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_4dcf537f","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":68},"updated":"2016-02-16 11:28:09.000000000","message":"This action just log a message.\n\nthe action\u0027s schema is :\n\nschema \u003d Schema({\n \u0027message\u0027: str,\n})","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"}],"watcher/applier/actions/sleep.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class Sleep(base.BaseAction):"},{"line_number":31,"context_line":"    \"\"\"Makes the executor of the action plan wait for a given duration\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    DURATION \u003d \u0027duration\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_2dc64f49","line":32,"updated":"2016-02-16 11:28:09.000000000","message":"The action\u0027s schema is :\nschema \u003d Schema({\n \u0027duration\u0027: float,\n})\n\nduration is expressed by seconds.","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"00b3fc487944779d81f72aaefe2f665cb79db98e","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class Sleep(base.BaseAction):"},{"line_number":31,"context_line":"    \"\"\"Makes the executor of the action plan wait for a given duration\"\"\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    DURATION \u003d \u0027duration\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_daee6e8a","line":32,"in_reply_to":"dae33548_2dc64f49","updated":"2016-02-16 15:07:05.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":36,"context_line":"         \u0027duration\u0027: float,"},{"line_number":37,"context_line":"        })"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    The `duration` is expressed by seconds."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    DURATION \u003d \u0027duration\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_c0fbaa77","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":34},"updated":"2016-02-18 09:51:55.000000000","message":"s/by/in","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2c9a50e8352c4932ca1091ed84957f55982887fb","unresolved":false,"context_lines":[{"line_number":36,"context_line":"         \u0027duration\u0027: float,"},{"line_number":37,"context_line":"        })"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    The `duration` is expressed by seconds."},{"line_number":40,"context_line":"    \"\"\""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    DURATION \u003d \u0027duration\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_6b343f49","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":34},"in_reply_to":"dae33548_c0fbaa77","updated":"2016-02-18 13:32:14.000000000","message":"Done","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"}],"watcher/decision_engine/planner/default.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\"Default planner implementation"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    This implementation comes with basic rules with a fixed set of action types"},{"line_number":34,"context_line":"    that are weighted."},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    priorities \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_4d55934e","line":34,"updated":"2016-02-16 11:28:09.000000000","message":"An action having a lower weight will be scheduled before the other ones.","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"00b3fc487944779d81f72aaefe2f665cb79db98e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    \"\"\"Default planner implementation"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    This implementation comes with basic rules with a fixed set of action types"},{"line_number":34,"context_line":"    that are weighted."},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    priorities \u003d {"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_9a94e6e2","line":34,"in_reply_to":"dae33548_4d55934e","updated":"2016-02-16 15:07:05.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"}],"watcher/decision_engine/strategy/strategies/basic_consolidation.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":"*Good Consolidation Strategy*:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The workloads of the VMs are changing over the time"},{"line_number":23,"context_line":"and often tend to migrate from one physical machine to another."},{"line_number":24,"context_line":"Hence, the traditional and offline heuristics such as bin packing"},{"line_number":25,"context_line":"are not applicable for the placement VM in cloud computing."},{"line_number":26,"context_line":"So, the decision Engine optimizer provides placement strategy considering"},{"line_number":27,"context_line":"not only the performance effects but also the workload characteristics of"},{"line_number":28,"context_line":"VMs and others metrics like the power consumption and"},{"line_number":29,"context_line":"the tenants constraints (SLAs)."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The watcher optimizer uses an online VM placement technique"},{"line_number":32,"context_line":"based on machine learning and meta-heuristics that must handle:"},{"line_number":33,"context_line":"- Multi-objectives"},{"line_number":34,"context_line":"- Contradictory objectives"},{"line_number":35,"context_line":"- Adapt to changes dynamically"},{"line_number":36,"context_line":"- Fast convergence"},{"line_number":37,"context_line":"\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"from oslo_log import log"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b09e38b6","line":37,"range":{"start_line":19,"start_character":0,"end_line":37,"end_character":3},"updated":"2016-02-16 11:28:09.000000000","message":"is it the right place for this docstring ?","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"8404b7bb81d6bd6467fb70d56a177acca34b16ee","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":"*Good Consolidation Strategy*:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The workloads of the VMs are changing over the time"},{"line_number":23,"context_line":"and often tend to migrate from one physical machine to another."},{"line_number":24,"context_line":"Hence, the traditional and offline heuristics such as bin packing"},{"line_number":25,"context_line":"are not applicable for the placement VM in cloud computing."},{"line_number":26,"context_line":"So, the decision Engine optimizer provides placement strategy considering"},{"line_number":27,"context_line":"not only the performance effects but also the workload characteristics of"},{"line_number":28,"context_line":"VMs and others metrics like the power consumption and"},{"line_number":29,"context_line":"the tenants constraints (SLAs)."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The watcher optimizer uses an online VM placement technique"},{"line_number":32,"context_line":"based on machine learning and meta-heuristics that must handle:"},{"line_number":33,"context_line":"- Multi-objectives"},{"line_number":34,"context_line":"- Contradictory objectives"},{"line_number":35,"context_line":"- Adapt to changes dynamically"},{"line_number":36,"context_line":"- Fast convergence"},{"line_number":37,"context_line":"\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"from oslo_log import log"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_1bdd77e0","line":37,"range":{"start_line":19,"start_character":0,"end_line":37,"end_character":3},"in_reply_to":"dae33548_b09e38b6","updated":"2016-02-16 15:13:26.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class BasicConsolidation(BaseStrategy):"},{"line_number":54,"context_line":"    \"\"\"Basic offline Consolidation using live migration"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    This is designed is a lightweight consolidation mechanism which moves the"},{"line_number":57,"context_line":"    aggregate operating point of the cluster to increase the number of servers"},{"line_number":58,"context_line":"    with moderate to high load and minimize the number of servers with low"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_7bfdb139","line":55,"updated":"2016-02-16 11:28:09.000000000","message":"We should use nova terminology:\n instance -\u003e server\n physical server -\u003e Compute host\ndocstring plan could be: \n* Description *\n* Requirements *\n* Limitations *\n* Spec URL * \n    None","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"00b3fc487944779d81f72aaefe2f665cb79db98e","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class BasicConsolidation(BaseStrategy):"},{"line_number":54,"context_line":"    \"\"\"Basic offline Consolidation using live migration"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    This is designed is a lightweight consolidation mechanism which moves the"},{"line_number":57,"context_line":"    aggregate operating point of the cluster to increase the number of servers"},{"line_number":58,"context_line":"    with moderate to high load and minimize the number of servers with low"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_7535b4f5","line":55,"in_reply_to":"dae33548_7bfdb139","updated":"2016-02-16 15:07:05.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":"The workloads of the VMs are changing over the time"},{"line_number":21,"context_line":"and often tend to migrate from one physical machine to another."},{"line_number":22,"context_line":"Hence, the traditional and offline heuristics such as bin packing"},{"line_number":23,"context_line":"are not applicable for the placement VM in cloud computing."},{"line_number":24,"context_line":"So, the decision Engine optimizer provides placement strategy considering"},{"line_number":25,"context_line":"not only the performance effects but also the workload characteristics of"},{"line_number":26,"context_line":"VMs and others metrics like the power consumption and"},{"line_number":27,"context_line":"the tenants constraints (SLAs)."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The watcher optimizer uses an online VM placement technique"},{"line_number":30,"context_line":"based on machine learning and meta-heuristics that must handle:"},{"line_number":31,"context_line":"- Multi-objectives"},{"line_number":32,"context_line":"- Contradictory objectives"},{"line_number":33,"context_line":"- Adapt to changes dynamically"},{"line_number":34,"context_line":"- Fast convergence"},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from oslo_log import log"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_c061ea06","line":35,"range":{"start_line":19,"start_character":0,"end_line":35,"end_character":3},"updated":"2016-02-18 09:51:55.000000000","message":"is this text used in doc ? if not, I don\u0027t think we need it","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2c9a50e8352c4932ca1091ed84957f55982887fb","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":"The workloads of the VMs are changing over the time"},{"line_number":21,"context_line":"and often tend to migrate from one physical machine to another."},{"line_number":22,"context_line":"Hence, the traditional and offline heuristics such as bin packing"},{"line_number":23,"context_line":"are not applicable for the placement VM in cloud computing."},{"line_number":24,"context_line":"So, the decision Engine optimizer provides placement strategy considering"},{"line_number":25,"context_line":"not only the performance effects but also the workload characteristics of"},{"line_number":26,"context_line":"VMs and others metrics like the power consumption and"},{"line_number":27,"context_line":"the tenants constraints (SLAs)."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The watcher optimizer uses an online VM placement technique"},{"line_number":30,"context_line":"based on machine learning and meta-heuristics that must handle:"},{"line_number":31,"context_line":"- Multi-objectives"},{"line_number":32,"context_line":"- Contradictory objectives"},{"line_number":33,"context_line":"- Adapt to changes dynamically"},{"line_number":34,"context_line":"- Fast convergence"},{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from oslo_log import log"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_a0566103","line":35,"range":{"start_line":19,"start_character":0,"end_line":35,"end_character":3},"in_reply_to":"dae33548_c061ea06","updated":"2016-02-18 13:32:14.000000000","message":"As discussed, it is not used in the generated doc. As this bit does not really help with regard to this strategy, I will change it to some broad description of \"server consolidation\" which this strategy belongs to.","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class BasicConsolidation(base.BaseStrategy):"},{"line_number":52,"context_line":"    \"\"\"Basic offline Consolidation using live migration"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    *Description*"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_00fc723c","line":52,"range":{"start_line":52,"start_character":21,"end_line":52,"end_character":34},"updated":"2016-02-18 09:51:55.000000000","message":"s/Consolidation/consolidation","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2c9a50e8352c4932ca1091ed84957f55982887fb","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class BasicConsolidation(base.BaseStrategy):"},{"line_number":52,"context_line":"    \"\"\"Basic offline Consolidation using live migration"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    *Description*"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_c03f25b2","line":52,"range":{"start_line":52,"start_character":21,"end_line":52,"end_character":34},"in_reply_to":"dae33548_00fc723c","updated":"2016-02-18 13:32:14.000000000","message":"Done","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"20be6c2099bd9287398d18cf6b37cb976093c6e5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    - It has been developed only for tests."},{"line_number":66,"context_line":"    - It assumes that the virtual machine and the compute node are on the same"},{"line_number":67,"context_line":"      private network."},{"line_number":68,"context_line":"    - It assume that live migrations are possible"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    *Spec URL*"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_77370bff","line":68,"updated":"2016-02-18 08:48:05.000000000","message":"add: block migration is not supported","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"}],"watcher/decision_engine/strategy/strategies/dummy_strategy.py":[{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    *Description*"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    This strategy does not provide any useful optimization. Indeed, its only"},{"line_number":32,"context_line":"    purpose is to be used by within Tempest tests."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    *Requirements*"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_4b0b3b24","line":32,"range":{"start_line":32,"start_character":29,"end_line":32,"end_character":35},"updated":"2016-02-18 09:51:55.000000000","message":"s/by within/by","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"}],"watcher/decision_engine/strategy/strategies/outlet_temp_control.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"e869a2959e83e01e73cd87997c58f5f85a4679c5","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class OutletTempControl(base.BaseStrategy):"},{"line_number":33,"context_line":"    \"\"\"[PoC]Outlet temperature control using live migration"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    It is a migration strategy based on the Outlet Temperature of physical"},{"line_number":36,"context_line":"    servers. It generates solutions to move a workload whenever a server\u0027s"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_9b85155b","line":33,"updated":"2016-02-16 11:28:09.000000000","message":"We should use nova terminology:\n instance -\u003e server\n physical server -\u003e Compute host\n\ndocstring plan could be: \n\n* Description *\n    Towards to software defined infrastructure ...\n    It is a migration strategy based  ....\n* Requirements *\n    Hardware: ...\n\n* Limitations *\n\n    This is the\n    reason why we simply plan a single virtual machine migration.\n    So it\u0027s better to use this algorithm with CONTINUOUS audits.\n\n* Spec URL * \n    None","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"00b3fc487944779d81f72aaefe2f665cb79db98e","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class OutletTempControl(base.BaseStrategy):"},{"line_number":33,"context_line":"    \"\"\"[PoC]Outlet temperature control using live migration"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    It is a migration strategy based on the Outlet Temperature of physical"},{"line_number":36,"context_line":"    servers. It generates solutions to move a workload whenever a server\u0027s"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_383161ed","line":33,"in_reply_to":"dae33548_9b85155b","updated":"2016-02-16 15:07:05.000000000","message":"Done","commit_id":"7b4a3e877e7f717079eacacbbf1b0929887c3731"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"*Good Thermal Strategy*:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Towards to software defined infrastructure, the power and thermal"},{"line_number":24,"context_line":"intelligences is being adopted to optimize workload, which can help"},{"line_number":25,"context_line":"improve efficiency, reduce power, as well as to improve datacenter PUE"},{"line_number":26,"context_line":"and lower down operation cost in data center."},{"line_number":27,"context_line":"Outlet (Exhaust Air) Temperature is one of the important thermal"},{"line_number":28,"context_line":"telemetries to measure thermal/workload status of server."},{"line_number":29,"context_line":"\"\"\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from oslo_log import log"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_cbe10b2c","line":29,"range":{"start_line":20,"start_character":0,"end_line":29,"end_character":3},"updated":"2016-02-18 09:51:55.000000000","message":"is this text used in doc ?","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class OutletTempControl(base.BaseStrategy):"},{"line_number":45,"context_line":"    \"\"\"[PoC]Outlet temperature control using live migration"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    *Description*"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_8b66e3ea","line":45,"updated":"2016-02-18 09:51:55.000000000","message":"s/[PoC]Outlet/[PoC] Outlet","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    *Description*"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    It is a migration strategy based on the Outlet Temperature of compute"},{"line_number":50,"context_line":"    hosts. It generates solutions to move a workload whenever a server\u0027s"},{"line_number":51,"context_line":"    outlet temperature is higher than the specified threshold."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_6ba43f07","line":49,"range":{"start_line":49,"start_character":44,"end_line":49,"end_character":45},"updated":"2016-02-18 09:51:55.000000000","message":"lowercase","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":11750,"name":"Antoine Cabot","email":"antoine.cabot@b-com.com","username":"antoinecabot"},"change_message_id":"a5b5c7cdb85d8bade611aed5642e88ed3a9c97ff","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    *Description*"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    It is a migration strategy based on the Outlet Temperature of compute"},{"line_number":50,"context_line":"    hosts. It generates solutions to move a workload whenever a server\u0027s"},{"line_number":51,"context_line":"    outlet temperature is higher than the specified threshold."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"dae33548_ab9927c6","line":49,"range":{"start_line":49,"start_character":50,"end_line":49,"end_character":52},"updated":"2016-02-18 09:51:55.000000000","message":"lowercase","commit_id":"5af088beca45e6618e5878b906181c4d15cfcb04"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"286bd0d3714f59db831d79230d4b95a404581564","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    *Limitations*"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    - This is a proof of concept that is not meant to be used in production"},{"line_number":64,"context_line":"    - We cannot forecast how many serverss should be migrated. This is the"},{"line_number":65,"context_line":"      reason why we only plan a single virtual machine migration at a time."},{"line_number":66,"context_line":"      So it\u0027s better to use this algorithm with `CONTINUOUS` audits."},{"line_number":67,"context_line":"    - It assume that live migrations are possible"}],"source_content_type":"text/x-python","patch_set":8,"id":"bae84128_a5a37d4e","line":64,"range":{"start_line":64,"start_character":34,"end_line":64,"end_character":42},"updated":"2016-02-22 13:49:14.000000000","message":"/serverss/servers","commit_id":"88e7da0a17ff391b334ca1092199b7546bebbf10"}]}
