)]}'
{"doc/source/image_src/plantuml/class_diagram_efficacy_indicator.txt":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"@startuml"},{"line_number":2,"context_line":"class \"Base Strategy\" {"},{"line_number":3,"context_line":"  String goal"},{"line_number":4,"context_line":"  Solution execute()"},{"line_number":5,"context_line":"}"},{"line_number":6,"context_line":"class \"Energy Base Strategy\" {"}],"source_content_type":"text/plain","patch_set":2,"id":"3afc51ec_88afcde2","line":3,"range":{"start_line":3,"start_character":2,"end_line":3,"end_character":13},"updated":"2016-03-11 17:36:35.000000000","message":"If we want to have i18n on goals, I think we should have this unique name/identifier but also a translatable field (`display_name`?). This would then have to be exposed through the API.","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":1,"context_line":"@startuml"},{"line_number":2,"context_line":"class \"Base Strategy\" {"},{"line_number":3,"context_line":"  String goal"},{"line_number":4,"context_line":"  Solution execute()"},{"line_number":5,"context_line":"}"},{"line_number":6,"context_line":"class \"Energy Base Strategy\" {"}],"source_content_type":"text/plain","patch_set":2,"id":"1af94dfe_f3861db8","line":3,"range":{"start_line":3,"start_character":2,"end_line":3,"end_character":13},"in_reply_to":"3afc51ec_88afcde2","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  boolean isMandatory \u003d true"},{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":"class EnergyEfficacySpecification {"},{"line_number":24,"context_line":"  Dictionary : IndicatorSpecification[] indicatorsDescription"},{"line_number":25,"context_line":"  boolean checkEfficacyIndicators(Solution)"},{"line_number":26,"context_line":"  Object getGlobalEfficacy(Solution)"},{"line_number":27,"context_line":"}"}],"source_content_type":"text/plain","patch_set":2,"id":"3afc51ec_c8e7153f","line":24,"range":{"start_line":24,"start_character":40,"end_line":24,"end_character":61},"updated":"2016-03-11 17:36:35.000000000","message":"nit: can you snake_case the attribute names?","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  boolean isMandatory \u003d true"},{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":"class EnergyEfficacySpecification {"},{"line_number":24,"context_line":"  Dictionary : IndicatorSpecification[] indicatorsDescription"},{"line_number":25,"context_line":"  boolean checkEfficacyIndicators(Solution)"},{"line_number":26,"context_line":"  Object getGlobalEfficacy(Solution)"},{"line_number":27,"context_line":"}"}],"source_content_type":"text/plain","patch_set":2,"id":"1af94dfe_6e04e414","line":24,"range":{"start_line":24,"start_character":40,"end_line":24,"end_character":61},"in_reply_to":"3afc51ec_c8e7153f","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":"class EnergyEfficacySpecification {"},{"line_number":24,"context_line":"  Dictionary : IndicatorSpecification[] indicatorsDescription"},{"line_number":25,"context_line":"  boolean checkEfficacyIndicators(Solution)"},{"line_number":26,"context_line":"  Object getGlobalEfficacy(Solution)"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":"class Efficacy {"}],"source_content_type":"text/plain","patch_set":2,"id":"3afc51ec_689361a4","line":25,"range":{"start_line":25,"start_character":10,"end_line":25,"end_character":33},"updated":"2016-03-11 17:36:35.000000000","message":"nit: can you snake_case the method names?","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":22,"context_line":"}"},{"line_number":23,"context_line":"class EnergyEfficacySpecification {"},{"line_number":24,"context_line":"  Dictionary : IndicatorSpecification[] indicatorsDescription"},{"line_number":25,"context_line":"  boolean checkEfficacyIndicators(Solution)"},{"line_number":26,"context_line":"  Object getGlobalEfficacy(Solution)"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":"class Efficacy {"}],"source_content_type":"text/plain","patch_set":2,"id":"1af94dfe_0e144042","line":25,"range":{"start_line":25,"start_character":10,"end_line":25,"end_character":33},"in_reply_to":"3afc51ec_689361a4","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class EnergyEfficacySpecification {"},{"line_number":24,"context_line":"  Dictionary : IndicatorSpecification[] indicatorsDescription"},{"line_number":25,"context_line":"  boolean checkEfficacyIndicators(Solution)"},{"line_number":26,"context_line":"  Object getGlobalEfficacy(Solution)"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":"class Efficacy {"},{"line_number":29,"context_line":"  Dictionary : IndicatorValue[] indicators"}],"source_content_type":"text/plain","patch_set":2,"id":"3afc51ec_08e9fd1a","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":26},"updated":"2016-03-11 17:36:35.000000000","message":"ditto","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class EnergyEfficacySpecification {"},{"line_number":24,"context_line":"  Dictionary : IndicatorSpecification[] indicatorsDescription"},{"line_number":25,"context_line":"  boolean checkEfficacyIndicators(Solution)"},{"line_number":26,"context_line":"  Object getGlobalEfficacy(Solution)"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":"class Efficacy {"},{"line_number":29,"context_line":"  Dictionary : IndicatorValue[] indicators"}],"source_content_type":"text/plain","patch_set":2,"id":"1af94dfe_ee10f450","line":26,"range":{"start_line":26,"start_character":9,"end_line":26,"end_character":26},"in_reply_to":"3afc51ec_08e9fd1a","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"}],"specs/mitaka/approved/efficacy-indicator.rst":[{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"recommended action plan."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an administrator, I would like to be able to compare the efficacy of"},{"line_number":53,"context_line":"several strategies for the same optimization goal"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As a strategy developer, I will provide a list of indicators that can be"},{"line_number":56,"context_line":"evaluated during the execution of the audit and displayed to the administrator"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_7fa94fdf","line":53,"updated":"2016-02-25 07:18:48.000000000","message":"Do we support multiple strategies for same goal now? When and how to select one?","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":50,"context_line":"recommended action plan."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an administrator, I would like to be able to compare the efficacy of"},{"line_number":53,"context_line":"several strategies for the same optimization goal"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As a strategy developer, I will provide a list of indicators that can be"},{"line_number":56,"context_line":"evaluated during the execution of the audit and displayed to the administrator"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_b0f8004b","line":53,"in_reply_to":"bae84128_7fa94fdf","updated":"2016-03-16 13:21:03.000000000","message":"Yes, there can be several strategies for a given goal, but only one is used today depending on the configuration in the watcher.conf file.\nIn the future, we intend to write a blueprint regarding a strategy selector component that would be able to automatically select the appropriate strategy depending on the efficacy","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"indicators with a name and a value (the name is used as the key for each"},{"line_number":73,"context_line":"indicator and should be unique)."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The same dictionary should also be added to the `solution`_ generated by"},{"line_number":76,"context_line":"each `Strategy`_ (which contains a non scheduled list of actions)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"We propose to use the `DDD Specification Pattern`_ to express the constraints"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_b27b1329","line":75,"range":{"start_line":75,"start_character":49,"end_line":75,"end_character":57},"updated":"2016-02-25 07:18:48.000000000","message":"What\u0027s the difference between class solution and action_plan?","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":72,"context_line":"indicators with a name and a value (the name is used as the key for each"},{"line_number":73,"context_line":"indicator and should be unique)."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The same dictionary should also be added to the `solution`_ generated by"},{"line_number":76,"context_line":"each `Strategy`_ (which contains a non scheduled list of actions)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"We propose to use the `DDD Specification Pattern`_ to express the constraints"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_10bd7468","line":75,"range":{"start_line":75,"start_character":49,"end_line":75,"end_character":57},"in_reply_to":"bae84128_b27b1329","updated":"2016-03-16 13:21:03.000000000","message":"You can find the answer in the glossary. See the definition of a Solution here :\nhttps://factory.b-com.com/www/watcher/doc/watcher/glossary.html#solution","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"**checkEfficacyIndicators(Solution)** method of the"},{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should be possible to call a **getGlobalEfficacy(Solution)** method from"},{"line_number":103,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_122abf7e","line":100,"updated":"2016-02-25 07:18:48.000000000","message":"Which python lib do you plan for the check?","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":97,"context_line":"**checkEfficacyIndicators(Solution)** method of the"},{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should be possible to call a **getGlobalEfficacy(Solution)** method from"},{"line_number":103,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_f04d689a","line":100,"in_reply_to":"bae84128_122abf7e","updated":"2016-03-16 13:21:03.000000000","message":"We intend to use Voluptuous lib. \nWe mentionned it later in the spec. (in the Work items) but I have added an extra explanation here.","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"It should be possible to call a **getGlobalEfficacy(Solution)** method from"},{"line_number":103,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":104,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":105,"context_line":"ponderated sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_b201533c","line":102,"range":{"start_line":102,"start_character":34,"end_line":102,"end_character":51},"updated":"2016-02-25 07:18:48.000000000","message":"This global score is only used for comparison to pick up the most efficient strategy, right?\nHow about getGlobalEfficacy just return an class instance based on indicators dictionary. After operator overwriting, we can just compare it. Then no need checkEfficacyIndicators.","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"indicators would be returned:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"- **nb_migrations**: the number of virtual machine migrations"},{"line_number":111,"context_line":"- **nb_empty_nodes**: the number of evacuated nodes (i.e. compute nodes without"},{"line_number":112,"context_line":"  any virtual machine)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"And the global score of efficacy would be computed with the following formula:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_f292bbf5","line":111,"range":{"start_line":111,"start_character":4,"end_line":111,"end_character":18},"updated":"2016-02-25 07:18:48.000000000","message":"who and when to calculate such indicators?","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":108,"context_line":"indicators would be returned:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"- **nb_migrations**: the number of virtual machine migrations"},{"line_number":111,"context_line":"- **nb_empty_nodes**: the number of evacuated nodes (i.e. compute nodes without"},{"line_number":112,"context_line":"  any virtual machine)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"And the global score of efficacy would be computed with the following formula:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_b02be093","line":111,"range":{"start_line":111,"start_character":4,"end_line":111,"end_character":18},"in_reply_to":"bae84128_f292bbf5","updated":"2016-03-16 13:21:03.000000000","message":"those indicators are computed by the strategy after it has built the solution.\nI have added some more details about this in this paragraph and I also added a work item dealing with it.","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":144,"context_line":"  * We may need to store in the database a list of efficacy indicators"},{"line_number":145,"context_line":"    associated with the action plan"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new **Goal** obect should be stored in the Watcher database with the"},{"line_number":148,"context_line":"following information:"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"  * the unique id of the goal"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_5248c787","line":147,"range":{"start_line":147,"start_character":15,"end_line":147,"end_character":20},"updated":"2016-02-25 07:18:48.000000000","message":"object","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":144,"context_line":"  * We may need to store in the database a list of efficacy indicators"},{"line_number":145,"context_line":"    associated with the action plan"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new **Goal** obect should be stored in the Watcher database with the"},{"line_number":148,"context_line":"following information:"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"  * the unique id of the goal"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_0b38a59f","line":147,"range":{"start_line":147,"start_character":15,"end_line":147,"end_character":20},"in_reply_to":"bae84128_5248c787","updated":"2016-03-16 13:21:03.000000000","message":"Done","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"Here is the list of foreseen work items:"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"* add a new **Goal** object in **/watcher/db/sqlalchemy/models.py**"},{"line_number":329,"context_line":"* add a new **goal.py** class in the **/watcher/objects/** package"},{"line_number":330,"context_line":"* add a dictionary to **BaseSolution** and **ActionPlan** classes to store the"},{"line_number":331,"context_line":"  list of efficacy indicator values."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_ff1c3fc3","line":328,"updated":"2016-02-25 07:18:48.000000000","message":"Is Goal object loaded by stevedore?","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"Here is the list of foreseen work items:"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"* add a new **Goal** object in **/watcher/db/sqlalchemy/models.py**"},{"line_number":329,"context_line":"* add a new **goal.py** class in the **/watcher/objects/** package"},{"line_number":330,"context_line":"* add a dictionary to **BaseSolution** and **ActionPlan** classes to store the"},{"line_number":331,"context_line":"  list of efficacy indicator values."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_cb1ebd62","line":328,"in_reply_to":"bae84128_ff1c3fc3","updated":"2016-03-16 13:21:03.000000000","message":"No, goals are provided by the base strategy class which is dedicated to a given goal. All strategies will derive from this base class. \nSee the other blueprint :\nhttps://blueprints.launchpad.net/watcher/+spec/get-goal-from-strategy","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"0c544abbcdfb2563822993e9f8c1629ebcca8ec6","unresolved":false,"context_lines":[{"line_number":345,"context_line":"  - **getGlobalEfficacy(Solution)** which returns the computed global efficacy"},{"line_number":346,"context_line":"    value."},{"line_number":347,"context_line":"* implement a base class dedicated to a goal that will hold a list of possible"},{"line_number":348,"context_line":"  `Strategies`_ and an efficacy specification."},{"line_number":349,"context_line":"* when the `Watcher Decision Engine`_ service is started, Watcher should"},{"line_number":350,"context_line":"  browse the list of available goals, get for each goal the list of efficacy"},{"line_number":351,"context_line":"  indicator descriptions and store them in the `Watcher database`_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bae84128_5f2a8be8","line":348,"updated":"2016-02-25 07:18:48.000000000","message":"How do decide which strategies belongs to which goal, via config files? Like EnergySaving:Strategy1,strategy2","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"b27d8c5c799882ac8c37506e13ba066d8bf18fed","unresolved":false,"context_lines":[{"line_number":345,"context_line":"  - **getGlobalEfficacy(Solution)** which returns the computed global efficacy"},{"line_number":346,"context_line":"    value."},{"line_number":347,"context_line":"* implement a base class dedicated to a goal that will hold a list of possible"},{"line_number":348,"context_line":"  `Strategies`_ and an efficacy specification."},{"line_number":349,"context_line":"* when the `Watcher Decision Engine`_ service is started, Watcher should"},{"line_number":350,"context_line":"  browse the list of available goals, get for each goal the list of efficacy"},{"line_number":351,"context_line":"  indicator descriptions and store them in the `Watcher database`_."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7af24918_eb50d90c","line":348,"in_reply_to":"bae84128_5f2a8be8","updated":"2016-03-16 13:21:03.000000000","message":"The base strategy class will return the unique goal name.\nYou only need to derive your strategy from a base strategy class to associate it to the goal.\nSee the other blueprint :\nhttps://blueprints.launchpad.net/watcher/+spec/get-goal-from-strategy","commit_id":"a6f9ad70ea8c9f65ba14f585db70b27f88163cdc"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":94,"context_line":"singleton of the **XYZEfficacySpecification** class in order to make sure"},{"line_number":95,"context_line":"the generated solution contains the expected efficacy indicators. In other"},{"line_number":96,"context_line":"words, in each strategy, it should be possible to call the"},{"line_number":97,"context_line":"**checkEfficacyIndicators(Solution)** method of the"},{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_686fe192","line":97,"range":{"start_line":97,"start_character":2,"end_line":97,"end_character":25},"updated":"2016-03-11 17:36:35.000000000","message":"nit: can you snake_case this?","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":94,"context_line":"singleton of the **XYZEfficacySpecification** class in order to make sure"},{"line_number":95,"context_line":"the generated solution contains the expected efficacy indicators. In other"},{"line_number":96,"context_line":"words, in each strategy, it should be possible to call the"},{"line_number":97,"context_line":"**checkEfficacyIndicators(Solution)** method of the"},{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_2e8e5c78","line":97,"range":{"start_line":97,"start_character":2,"end_line":97,"end_character":25},"in_reply_to":"3afc51ec_686fe192","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **getGlobalEfficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"ponderated sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_68f6c1d8","line":104,"range":{"start_line":104,"start_character":34,"end_line":104,"end_character":51},"updated":"2016-03-11 17:36:35.000000000","message":"ditto","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **getGlobalEfficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"ponderated sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_6eeea423","line":104,"range":{"start_line":104,"start_character":34,"end_line":104,"end_character":51},"in_reply_to":"3afc51ec_68f6c1d8","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":343,"context_line":"  description of the expected efficacy indicators for a given goal and the"},{"line_number":344,"context_line":"  needed methods:"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"  - **checkEfficacyIndicators(Solution)** which returns a boolean. The"},{"line_number":347,"context_line":"    developer may use the `Voluptuous Python data validation library`_ to"},{"line_number":348,"context_line":"    define the constraints on the efficacy indicators in this method."},{"line_number":349,"context_line":"  - **getGlobalEfficacy(Solution)** which returns the computed global efficacy"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_1dd65dc5","line":346,"range":{"start_line":346,"start_character":6,"end_line":346,"end_character":29},"updated":"2016-03-11 17:36:35.000000000","message":"nit: can you snake_case this function name please?","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":343,"context_line":"  description of the expected efficacy indicators for a given goal and the"},{"line_number":344,"context_line":"  needed methods:"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"  - **checkEfficacyIndicators(Solution)** which returns a boolean. The"},{"line_number":347,"context_line":"    developer may use the `Voluptuous Python data validation library`_ to"},{"line_number":348,"context_line":"    define the constraints on the efficacy indicators in this method."},{"line_number":349,"context_line":"  - **getGlobalEfficacy(Solution)** which returns the computed global efficacy"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_aef8ace6","line":346,"range":{"start_line":346,"start_character":6,"end_line":346,"end_character":29},"in_reply_to":"3afc51ec_1dd65dc5","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":346,"context_line":"  - **checkEfficacyIndicators(Solution)** which returns a boolean. The"},{"line_number":347,"context_line":"    developer may use the `Voluptuous Python data validation library`_ to"},{"line_number":348,"context_line":"    define the constraints on the efficacy indicators in this method."},{"line_number":349,"context_line":"  - **getGlobalEfficacy(Solution)** which returns the computed global efficacy"},{"line_number":350,"context_line":"    value."},{"line_number":351,"context_line":"* implement a base class dedicated to a goal that will hold a list of possible"},{"line_number":352,"context_line":"  `Strategies`_ and an efficacy specification."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_bde5a9a9","line":349,"range":{"start_line":349,"start_character":6,"end_line":349,"end_character":23},"updated":"2016-03-11 17:36:35.000000000","message":"ditto","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":346,"context_line":"  - **checkEfficacyIndicators(Solution)** which returns a boolean. The"},{"line_number":347,"context_line":"    developer may use the `Voluptuous Python data validation library`_ to"},{"line_number":348,"context_line":"    define the constraints on the efficacy indicators in this method."},{"line_number":349,"context_line":"  - **getGlobalEfficacy(Solution)** which returns the computed global efficacy"},{"line_number":350,"context_line":"    value."},{"line_number":351,"context_line":"* implement a base class dedicated to a goal that will hold a list of possible"},{"line_number":352,"context_line":"  `Strategies`_ and an efficacy specification."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_2ee5bc36","line":349,"range":{"start_line":349,"start_character":6,"end_line":349,"end_character":23},"in_reply_to":"3afc51ec_bde5a9a9","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":351,"context_line":"* implement a base class dedicated to a goal that will hold a list of possible"},{"line_number":352,"context_line":"  `Strategies`_ and an efficacy specification."},{"line_number":353,"context_line":"* when the `Watcher Decision Engine`_ service is started, Watcher should"},{"line_number":354,"context_line":"  browse the list of available goals, get for each goal the list of efficacy"},{"line_number":355,"context_line":"  indicator descriptions and store them in the `Watcher database`_."},{"line_number":356,"context_line":"* update all existing strategies so that they compute efficacy indicators at"},{"line_number":357,"context_line":"  the end of their **execute()** method, just before returning a `solution`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_48b6658b","line":354,"range":{"start_line":354,"start_character":13,"end_line":354,"end_character":36},"updated":"2016-03-11 17:36:35.000000000","message":"Shouldn\u0027t we expose this through the Watcher API? I mean, if we want to have both Watcher Dashboard and Watcher CLI to have the same behaviour, they should be able to retrieve this very same list (with i18n).\nOtherwise, maybe we should (re)build some reference table containing all the translations within Watcher DB whenever we start the decision engine so we can access them directly without having to go through the API.","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":351,"context_line":"* implement a base class dedicated to a goal that will hold a list of possible"},{"line_number":352,"context_line":"  `Strategies`_ and an efficacy specification."},{"line_number":353,"context_line":"* when the `Watcher Decision Engine`_ service is started, Watcher should"},{"line_number":354,"context_line":"  browse the list of available goals, get for each goal the list of efficacy"},{"line_number":355,"context_line":"  indicator descriptions and store them in the `Watcher database`_."},{"line_number":356,"context_line":"* update all existing strategies so that they compute efficacy indicators at"},{"line_number":357,"context_line":"  the end of their **execute()** method, just before returning a `solution`_."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_ad026909","line":354,"range":{"start_line":354,"start_character":13,"end_line":354,"end_character":36},"in_reply_to":"3afc51ec_48b6658b","updated":"2016-03-16 13:20:18.000000000","message":"In the paragraph \"REST API impact\" it is already written that the list of available goals will be returned through the Watcher API.","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"0af2522d4560fd287ba6c1bf9bfc1417845b39af","unresolved":false,"context_lines":[{"line_number":354,"context_line":"  browse the list of available goals, get for each goal the list of efficacy"},{"line_number":355,"context_line":"  indicator descriptions and store them in the `Watcher database`_."},{"line_number":356,"context_line":"* update all existing strategies so that they compute efficacy indicators at"},{"line_number":357,"context_line":"  the end of their **execute()** method, just before returning a `solution`_."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"Dependencies"},{"line_number":360,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afc51ec_bd4929d3","line":357,"updated":"2016-03-11 17:36:35.000000000","message":"We also have to update the devstack plugin setup to adapt it (remove the auto watcher_goals config setup).","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"cf77b5dabf7963bb882e4fedd5887f43229bfe33","unresolved":false,"context_lines":[{"line_number":354,"context_line":"  browse the list of available goals, get for each goal the list of efficacy"},{"line_number":355,"context_line":"  indicator descriptions and store them in the `Watcher database`_."},{"line_number":356,"context_line":"* update all existing strategies so that they compute efficacy indicators at"},{"line_number":357,"context_line":"  the end of their **execute()** method, just before returning a `solution`_."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"Dependencies"},{"line_number":360,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1af94dfe_6d6ea197","line":357,"in_reply_to":"3afc51ec_bd4929d3","updated":"2016-03-16 13:20:18.000000000","message":"Done","commit_id":"85d85f9fab068535a53069b215051226d1903e56"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"aead8236b4509f20aa48a161564b0444f73218ea","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Today, Watcher does not provide efficacy indicators to give more accuracy to"},{"line_number":27,"context_line":"an action plan. An administrator would require to have an idea of the level"},{"line_number":28,"context_line":"of optimization Watcher can provide. The indicators must be related to the"},{"line_number":29,"context_line":"initial goal set in the audit template,for example if the goal is \"thermal"},{"line_number":30,"context_line":"optimization\", we should provide an estimated average inlet temperature of the"},{"line_number":31,"context_line":"cluster (or an estimated decrease in % of the average inlet temperature)."},{"line_number":32,"context_line":"These indicators must be computed by the chosen strategy."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_eef787f3","line":29,"range":{"start_line":29,"start_character":39,"end_line":29,"end_character":40},"updated":"2016-03-20 14:01:23.000000000","message":"Nit: missing space","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Today, Watcher does not provide efficacy indicators to give more accuracy to"},{"line_number":27,"context_line":"an action plan. An administrator would require to have an idea of the level"},{"line_number":28,"context_line":"of optimization Watcher can provide. The indicators must be related to the"},{"line_number":29,"context_line":"initial goal set in the audit template,for example if the goal is \"thermal"},{"line_number":30,"context_line":"optimization\", we should provide an estimated average inlet temperature of the"},{"line_number":31,"context_line":"cluster (or an estimated decrease in % of the average inlet temperature)."},{"line_number":32,"context_line":"These indicators must be computed by the chosen strategy."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_ebcf6eb1","line":29,"range":{"start_line":29,"start_character":39,"end_line":29,"end_character":40},"in_reply_to":"fa0719c6_eef787f3","updated":"2016-04-01 15:29:20.000000000","message":"Done","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"7c26b0133f487099740c1a64385156d83633d71b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"singleton of the **XYZEfficacySpecification** class in order to make sure"},{"line_number":95,"context_line":"the generated solution contains the expected efficacy indicators. In other"},{"line_number":96,"context_line":"words, in each strategy, it should be possible to call the"},{"line_number":97,"context_line":"**check_efficacy_indicators(Solution)** method of the"},{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_0d803ef4","line":97,"range":{"start_line":97,"start_character":28,"end_line":97,"end_character":36},"updated":"2016-03-31 19:26:31.000000000","message":"nit: I personally find Solution a confusing word. It can mean anything. I would prefer we call it what is is and not a genreic name like Solution. I decided to only make one comment about this here and not replicate the comment all over the files.","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"singleton of the **XYZEfficacySpecification** class in order to make sure"},{"line_number":95,"context_line":"the generated solution contains the expected efficacy indicators. In other"},{"line_number":96,"context_line":"words, in each strategy, it should be possible to call the"},{"line_number":97,"context_line":"**check_efficacy_indicators(Solution)** method of the"},{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_a9bda603","line":97,"range":{"start_line":97,"start_character":28,"end_line":97,"end_character":36},"in_reply_to":"ba0121b8_0d803ef4","updated":"2016-04-01 15:29:20.000000000","message":"We have officially defined \"Solution\" in the glossary:\nhttps://factory.b-com.com/www/watcher/doc/watcher/glossary.html#solution\nWhat would you suggest instead ?","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"aead8236b4509f20aa48a161564b0444f73218ea","unresolved":false,"context_lines":[{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"},{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_0ecabba1","line":101,"range":{"start_line":101,"start_character":16,"end_line":101,"end_character":59},"updated":"2016-03-20 14:01:23.000000000","message":"Let\u0027s only do this if the license is Apache 2.","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"f0ecae5604d062ab14e9492b4afb723c739f8c8c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"},{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_9769b08e","line":101,"range":{"start_line":101,"start_character":16,"end_line":101,"end_character":59},"in_reply_to":"fa0719c6_0ecabba1","updated":"2016-03-21 10:25:53.000000000","message":"What is the problem with the BSD license ? \n\nWe are currently using BSD for:\nenum34;python_version\u003d\u003d\u00272.7\u0027 or python_version\u003d\u003d\u00272.6\u0027 or python_version\u003d\u003d\u00273.3\u0027 # BSD\njsonpatch\u003e\u003d1.1 # BSD\npecan\u003e\u003d1.0.0 # BSD\nPrettyTable\u003c0.8,\u003e\u003d0.7 # BSD\ndiscover # BSD\nmock\u003e\u003d1.2 # BSD","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"7c26b0133f487099740c1a64385156d83633d71b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"**XYZEfficacySpecification** which returns a boolean saying whether all"},{"line_number":99,"context_line":"mandatory efficacy indicators are provided in a given `solution`_ and"},{"line_number":100,"context_line":"whether the indicator values are compliant with the expected types and ranges"},{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_edccea8a","line":101,"range":{"start_line":101,"start_character":16,"end_line":101,"end_character":59},"in_reply_to":"fa0719c6_9769b08e","updated":"2016-03-31 19:26:31.000000000","message":"jed56 +1","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"202456cc78be8ef59a130d6b2ed697ba9a314988","unresolved":false,"context_lines":[{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"ponderated sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_1b61d4d3","line":104,"range":{"start_line":104,"start_character":32,"end_line":104,"end_character":65},"updated":"2016-03-23 10:47:49.000000000","message":"The methods which obtaining other other efficacy like **get_average_cpu_load** also require to achieve in this BP?\nWhich algorithm intended use？","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"ponderated sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_09df723a","line":104,"range":{"start_line":104,"start_character":32,"end_line":104,"end_character":65},"in_reply_to":"fa0719c6_1b61d4d3","updated":"2016-04-01 15:29:20.000000000","message":"For all other efficacy indicators, we need to be generic and only return a list of key-value pairs.\nIt\u0027s only for the global efficacy indicator that we provide a common method because we know that it will be relevant for any strategy.","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"7c26b0133f487099740c1a64385156d83633d71b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"ponderated sum of the different efficacy indicators."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"For example, for the **BASIC_CONSOLIDATION** goal, the following efficacy"},{"line_number":110,"context_line":"indicators would be returned:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_edcfca53","line":107,"range":{"start_line":107,"start_character":0,"end_line":107,"end_character":10},"updated":"2016-03-31 19:26:31.000000000","message":"does this just mean weighted sum?","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"ponderated sum of the different efficacy indicators."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"For example, for the **BASIC_CONSOLIDATION** goal, the following efficacy"},{"line_number":110,"context_line":"indicators would be returned:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_b8520311","line":107,"range":{"start_line":107,"start_character":0,"end_line":107,"end_character":10},"in_reply_to":"ba0121b8_edcfca53","updated":"2016-04-01 15:29:20.000000000","message":"Done","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":17898,"name":"Jinquan Ni","email":"ni.jinquan@zte.com.cn","username":"jinquanni"},"change_message_id":"202456cc78be8ef59a130d6b2ed697ba9a314988","unresolved":false,"context_lines":[{"line_number":110,"context_line":"indicators would be returned:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- **nb_migrations**: the number of virtual machine migrations"},{"line_number":113,"context_line":"- **nb_empty_nodes**: the number of evacuated nodes (i.e. compute nodes without"},{"line_number":114,"context_line":"  any virtual machine)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"And the global score of efficacy would be computed with the following formula:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_80e0cffb","line":113,"range":{"start_line":113,"start_character":36,"end_line":113,"end_character":45},"updated":"2016-03-23 10:47:49.000000000","message":"Nit：What is the meaning here？ This word easy to confuse with nova\u0027s evacuate","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":110,"context_line":"indicators would be returned:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- **nb_migrations**: the number of virtual machine migrations"},{"line_number":113,"context_line":"- **nb_empty_nodes**: the number of evacuated nodes (i.e. compute nodes without"},{"line_number":114,"context_line":"  any virtual machine)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"And the global score of efficacy would be computed with the following formula:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_58eac7db","line":113,"range":{"start_line":113,"start_character":36,"end_line":113,"end_character":45},"in_reply_to":"fa0719c6_80e0cffb","updated":"2016-04-01 15:29:20.000000000","message":"Done","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"aead8236b4509f20aa48a161564b0444f73218ea","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"::"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"  global_score \u003d (nb_empty_nodes/nb_migrations*100)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"All those efficacy indicators are computed at the end of the **execute()**"},{"line_number":123,"context_line":"method of the strategy when a `solution`_ has been found."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_4ec4b391","line":120,"range":{"start_line":120,"start_character":33,"end_line":120,"end_character":46},"updated":"2016-03-20 14:01:23.000000000","message":"Just for thoughts... need to handle the case when this is 0.","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"f0ecae5604d062ab14e9492b4afb723c739f8c8c","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"::"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"  global_score \u003d (nb_empty_nodes/nb_migrations*100)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"All those efficacy indicators are computed at the end of the **execute()**"},{"line_number":123,"context_line":"method of the strategy when a `solution`_ has been found."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_576f1892","line":120,"range":{"start_line":120,"start_character":33,"end_line":120,"end_character":46},"in_reply_to":"fa0719c6_4ec4b391","updated":"2016-03-21 10:25:53.000000000","message":"+1","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"::"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"  global_score \u003d (nb_empty_nodes/nb_migrations*100)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"All those efficacy indicators are computed at the end of the **execute()**"},{"line_number":123,"context_line":"method of the strategy when a `solution`_ has been found."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_d8d2575b","line":120,"range":{"start_line":120,"start_character":33,"end_line":120,"end_character":46},"in_reply_to":"fa0719c6_4ec4b391","updated":"2016-04-01 15:29:20.000000000","message":"Done","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"7c26b0133f487099740c1a64385156d83633d71b","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"::"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"  global_score \u003d (nb_empty_nodes/nb_migrations*100)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"All those efficacy indicators are computed at the end of the **execute()**"},{"line_number":123,"context_line":"method of the strategy when a `solution`_ has been found."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_edf6aa8d","line":120,"range":{"start_line":120,"start_character":33,"end_line":120,"end_character":46},"in_reply_to":"fa0719c6_576f1892","updated":"2016-03-31 19:26:31.000000000","message":"+1","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"7c26b0133f487099740c1a64385156d83633d71b","unresolved":false,"context_lines":[{"line_number":170,"context_line":"* PATCH /v1/action_plans"},{"line_number":171,"context_line":"* GET /v1/action_plans/detail"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"The type **ActionPlan** will contain a new **efficacy** object with a"},{"line_number":174,"context_line":"dictionary of indicators."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Here is a sample of the new JSON payload for an action plan which includes"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_cd82c6c7","line":173,"range":{"start_line":173,"start_character":45,"end_line":173,"end_character":53},"updated":"2016-03-31 19:26:31.000000000","message":"nit: while correct this sounds french to me. effectiveness?","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":170,"context_line":"* PATCH /v1/action_plans"},{"line_number":171,"context_line":"* GET /v1/action_plans/detail"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"The type **ActionPlan** will contain a new **efficacy** object with a"},{"line_number":174,"context_line":"dictionary of indicators."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Here is a sample of the new JSON payload for an action plan which includes"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_58b2c74c","line":173,"range":{"start_line":173,"start_character":45,"end_line":173,"end_character":53},"in_reply_to":"ba0121b8_cd82c6c7","updated":"2016-04-01 15:29:20.000000000","message":"We already renamed the indicator from efficiency to efficacy.","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"7c26b0133f487099740c1a64385156d83633d71b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"Work Items"},{"line_number":329,"context_line":"----------"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Here is the list of foreseen work items:"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"* add a new **Goal** object in **/watcher/db/sqlalchemy/models.py**"},{"line_number":334,"context_line":"* add a new **goal.py** class in the **/watcher/objects/** package"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_0d62fe09","line":331,"range":{"start_line":331,"start_character":12,"end_line":331,"end_character":39},"updated":"2016-03-31 19:26:31.000000000","message":"do we have any adds/changes to the python client?","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"04b70b51c8ed7017e657b6d40204bab9c892e5f4","unresolved":false,"context_lines":[{"line_number":328,"context_line":"Work Items"},{"line_number":329,"context_line":"----------"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Here is the list of foreseen work items:"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"* add a new **Goal** object in **/watcher/db/sqlalchemy/models.py**"},{"line_number":334,"context_line":"* add a new **goal.py** class in the **/watcher/objects/** package"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba0121b8_78434baf","line":331,"range":{"start_line":331,"start_character":12,"end_line":331,"end_character":39},"in_reply_to":"ba0121b8_0d62fe09","updated":"2016-04-01 15:29:20.000000000","message":"Done","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"aead8236b4509f20aa48a161564b0444f73218ea","unresolved":false,"context_lines":[{"line_number":420,"context_line":".. _Watcher Decision Engine: https://factory.b-com.com/www/watcher/doc/watcher/architecture.html#watcher-decision-engine"},{"line_number":421,"context_line":".. _Watcher database: https://factory.b-com.com/www/watcher/doc/watcher/architecture.html#watcher-database"},{"line_number":422,"context_line":".. _DDD Specification Pattern: http://martinfowler.com/apsupp/spec.pdf"},{"line_number":423,"context_line":".. _Voluptuous Python data validation library: https://github.com/alecthomas/voluptuous"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa0719c6_8e036bb8","line":423,"range":{"start_line":423,"start_character":47,"end_line":423,"end_character":87},"updated":"2016-03-20 14:01:23.000000000","message":"I looked at the license and I\u0027m not sure we should rely on this.","commit_id":"c1928f8a9ba9d5311c363b29a770c9a289110f40"}],"specs/newton/approved/efficacy-indicator.rst":[{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":38,"context_line":"is the best."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"In an even longer run, it will enable Watcher to automatically decide which"},{"line_number":41,"context_line":"strategy to use (via some *StrategySelector* component in the"},{"line_number":42,"context_line":"`Watcher Decision Engine`_)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_d79f5301","line":41,"updated":"2016-04-25 10:10:11.000000000","message":"You can also say the same thing with the planner selector.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":38,"context_line":"is the best."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"In an even longer run, it will enable Watcher to automatically decide which"},{"line_number":41,"context_line":"strategy to use (via some *StrategySelector* component in the"},{"line_number":42,"context_line":"`Watcher Decision Engine`_)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_00ad159b","line":41,"in_reply_to":"1a122d0e_d79f5301","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":40,"context_line":"In an even longer run, it will enable Watcher to automatically decide which"},{"line_number":41,"context_line":"strategy to use (via some *StrategySelector* component in the"},{"line_number":42,"context_line":"`Watcher Decision Engine`_)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Use Cases"},{"line_number":46,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_97183b86","line":43,"updated":"2016-04-25 10:10:11.000000000","message":"Can you add a link with the blueprints strategy selector and planner selector ?\n\nwatcher-strategy-selector\nwatcher-planner-selector","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"In an even longer run, it will enable Watcher to automatically decide which"},{"line_number":41,"context_line":"strategy to use (via some *StrategySelector* component in the"},{"line_number":42,"context_line":"`Watcher Decision Engine`_)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Use Cases"},{"line_number":46,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_6094c943","line":43,"in_reply_to":"1a122d0e_97183b86","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"f554e3424edc0ece1ff871b5c9f81e4a95c7e7c7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"strategy to use (via some *StrategySelector* component in the"},{"line_number":42,"context_line":"`Watcher Decision Engine`_)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Use Cases"},{"line_number":46,"context_line":"----------"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_fa9a2a6d","line":44,"updated":"2016-04-25 16:10:37.000000000","message":"We should also add that we have a dependency with the blueprint \"persistent-audit-parameters\" to determine on which strategy these indicators are related.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":41,"context_line":"strategy to use (via some *StrategySelector* component in the"},{"line_number":42,"context_line":"`Watcher Decision Engine`_)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Use Cases"},{"line_number":46,"context_line":"----------"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_bb9610ed","line":44,"in_reply_to":"1a122d0e_fa9a2a6d","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":49,"context_line":"judge if the proposed optimization fit my objectives before running the"},{"line_number":50,"context_line":"recommended action plan."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an administrator, I would like to be able to compare the efficacy of"},{"line_number":53,"context_line":"several strategies for the same optimization goal"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As a strategy developer, I will provide a list of indicators that can be"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_b7ebb777","line":52,"updated":"2016-04-25 10:10:11.000000000","message":"nit: compare in a fair way.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":49,"context_line":"judge if the proposed optimization fit my objectives before running the"},{"line_number":50,"context_line":"recommended action plan."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As an administrator, I would like to be able to compare the efficacy of"},{"line_number":53,"context_line":"several strategies for the same optimization goal"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As a strategy developer, I will provide a list of indicators that can be"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_00b235e5","line":52,"in_reply_to":"1a122d0e_b7ebb777","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"weighted sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_72776d9f","line":104,"updated":"2016-04-25 10:10:11.000000000","message":"The global efficacy have to be handled by the goal.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":101,"context_line":"(we may rely on `Voluptuous Python data validation library`_ to manage the"},{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"weighted sum of the different efficacy indicators."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_5b241cc5","line":104,"in_reply_to":"1a122d0e_72776d9f","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"weighted sum of the different efficacy indicators."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_92604937","line":105,"updated":"2016-04-25 10:10:11.000000000","message":"In case of a new implementation of get_global_efficacy we have a problem of compatibility.\nYou can see below an example:\ne.g :\nversion_1 \u003d\u003e global_score \u003d (nb_empty_nodes/nb_migration*100)\nversion_2 \u003d\u003e global_score \u003d (nb_empty_nodes/nb_migration*100) + decrease of the wear out in pourcentage.\n\nIt is no longer possible to compare the global score.\n\nSo, how do we manage this problem ?\n\nWe have the same problem if we add or remove indicators.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":102,"context_line":"schema definition and validation of indicators)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"It should be possible to call a **get_global_efficacy(Solution)** method from"},{"line_number":105,"context_line":"the **XYZEfficacySpecification** class which returns a global score of efficacy"},{"line_number":106,"context_line":"for a given `solution`_. This global score would be computed using a"},{"line_number":107,"context_line":"weighted sum of the different efficacy indicators."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_ffe193fd","line":105,"in_reply_to":"1a122d0e_92604937","updated":"2016-05-04 13:53:13.000000000","message":"OK, I have added a sentence saying that whenever the goal class is updated, we should change the action plan and audit state to CANCELLED in order to make sure the data are always relevant.\nI have also added a new Scenario in the Use Cases paragraph about this.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Of course, in this case, we should handle the case when **nb_migrations** is 0."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"All those efficacy indicators are computed in the **_post_execute()** method of"},{"line_number":125,"context_line":"the strategy, i.e. just after a `solution`_ has been found in the"},{"line_number":126,"context_line":"**_do_execute()** method."},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_32b5f530","line":124,"updated":"2016-04-25 10:10:11.000000000","message":"s/computed/set \n\nIt is possible that the indicators are computed incrementally during the execution of the strategy.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Of course, in this case, we should handle the case when **nb_migrations** is 0."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"All those efficacy indicators are computed in the **_post_execute()** method of"},{"line_number":125,"context_line":"the strategy, i.e. just after a `solution`_ has been found in the"},{"line_number":126,"context_line":"**_do_execute()** method."},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_9fa05fa7","line":124,"in_reply_to":"1a122d0e_32b5f530","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"9c16692f5d2cc8709462db1f9c27fb46fabfbbc4","unresolved":false,"context_lines":[{"line_number":207,"context_line":"              \"uuid\": \"9ef4d84c-41e8-4418-9220-ce55be0436af\","},{"line_number":208,"context_line":"              \"efficacy\" : ["},{"line_number":209,"context_line":"                  {"},{"line_number":210,"context_line":"                      \"name\" : \"Global efficacy score\","},{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_e52e78f9","line":210,"range":{"start_line":210,"start_character":32,"end_line":210,"end_character":53},"updated":"2016-04-22 09:50:10.000000000","message":"As I understand it, the global efficacy score is calculated at the Goal level using the indicator values that are provided during the execution of the strategy. Here, I can\u0027t really see the separation between the two. So is it expected or should we not divide them as followed:\n\n{\n  [...],\n  \"global_efficacy\": 89,\n  \"efficacy_indicators\": [\n    {\n      \"name\": \"Average CPU load\",\n      \"value\": 22\n    },\n    {\n      \"name\": \"Average inlet temperature\",\n      \"value\": 34\n    },\n    {\n      \"name\": \"Number of sleeping hosts\",\n      \"value\": 2\n    }\n  ]\n}","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":207,"context_line":"              \"uuid\": \"9ef4d84c-41e8-4418-9220-ce55be0436af\","},{"line_number":208,"context_line":"              \"efficacy\" : ["},{"line_number":209,"context_line":"                  {"},{"line_number":210,"context_line":"                      \"name\" : \"Global efficacy score\","},{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_7fb8e3c7","line":210,"range":{"start_line":210,"start_character":32,"end_line":210,"end_character":53},"in_reply_to":"1a122d0e_b2f625f7","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":207,"context_line":"              \"uuid\": \"9ef4d84c-41e8-4418-9220-ce55be0436af\","},{"line_number":208,"context_line":"              \"efficacy\" : ["},{"line_number":209,"context_line":"                  {"},{"line_number":210,"context_line":"                      \"name\" : \"Global efficacy score\","},{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_9fb5ffd1","line":210,"range":{"start_line":210,"start_character":32,"end_line":210,"end_character":53},"in_reply_to":"1a122d0e_e52e78f9","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":207,"context_line":"              \"uuid\": \"9ef4d84c-41e8-4418-9220-ce55be0436af\","},{"line_number":208,"context_line":"              \"efficacy\" : ["},{"line_number":209,"context_line":"                  {"},{"line_number":210,"context_line":"                      \"name\" : \"Global efficacy score\","},{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_b2f625f7","line":210,"range":{"start_line":210,"start_character":32,"end_line":210,"end_character":53},"in_reply_to":"1a122d0e_e52e78f9","updated":"2016-04-25 10:10:11.000000000","message":"Yes, I agree we should have a strong separation between the indicators and the global score.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":208,"context_line":"              \"efficacy\" : ["},{"line_number":209,"context_line":"                  {"},{"line_number":210,"context_line":"                      \"name\" : \"Global efficacy score\","},{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"},{"line_number":214,"context_line":"                      \"name\" : \"Average CPU load\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_32685587","line":211,"updated":"2016-04-25 10:10:11.000000000","message":"We should add a specific/separate field in the action_plan for the global efficacy score in order to facilitate the calculation and the usage.\nThe indicators are computed by the strategies and the global score is computed by the goal loaded by stevedor.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":208,"context_line":"              \"efficacy\" : ["},{"line_number":209,"context_line":"                  {"},{"line_number":210,"context_line":"                      \"name\" : \"Global efficacy score\","},{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"},{"line_number":214,"context_line":"                      \"name\" : \"Average CPU load\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_dfaf777b","line":211,"in_reply_to":"1a122d0e_32685587","updated":"2016-05-04 13:53:13.000000000","message":"Done","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"1dd71b140ccc71bc88e8bb5fdff196d1cc01bd50","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"},{"line_number":214,"context_line":"                      \"name\" : \"Average CPU load\","},{"line_number":215,"context_line":"                      \"value\" : \"22\""},{"line_number":216,"context_line":"                  },"},{"line_number":217,"context_line":"                  {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_922cc94b","line":214,"updated":"2016-04-25 10:10:11.000000000","message":"How do we keep the link between the mandatory indicators and their description given by the goal and the results ? \nI don\u0027t think this is a good idea to use the \"name\" as a foreign key. Moreover, we don\u0027t precise where the contract(mandatory indicators) are stored ? \n\nMoreover, if we remove a goal, we will have some problems of integrity.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"},{"author":{"_account_id":19214,"name":"Vincent Mahe","email":"vincent.mahe@b-com.com","username":"vmahe35"},"change_message_id":"d57235995d6e6ce8612124536aaffcc1727d15dc","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                      \"value\" : \"89\""},{"line_number":212,"context_line":"                  },"},{"line_number":213,"context_line":"                  {"},{"line_number":214,"context_line":"                      \"name\" : \"Average CPU load\","},{"line_number":215,"context_line":"                      \"value\" : \"22\""},{"line_number":216,"context_line":"                  },"},{"line_number":217,"context_line":"                  {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_42d6f0f1","line":214,"in_reply_to":"1a122d0e_922cc94b","updated":"2016-05-04 13:53:13.000000000","message":"OK, I have added a little explanation about how the link can be done between the list of indicators in the action plan object and in the goal object.\nI have also added some details saying that a new table must be created in the database which will store the list of indicator specifications and a foreign key refering to the associated goal.","commit_id":"d67131c5f36fe1da077794566bc0c8e6b91e4b87"}]}
