)]}'
{"specs/newton/approved/nova-create-notification-scheduler-hints.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/nova-create-notification-scheduler-hints"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Creating Nova Servers should emit create notifications that contain"},{"line_number":14,"context_line":"scheduelr hints."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem Description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_9e469879","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":9},"updated":"2016-05-04 13:29:43.000000000","message":"nit: s/schedulr/scheduler/","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":25,"context_line":"---------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As a developer, I want to create a tool that consumes notifications and takes"},{"line_number":28,"context_line":"scheduler hints specified for an instance."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Proposed Change"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_3e066420","line":28,"updated":"2016-05-04 13:29:43.000000000","message":"Is there any specific use case in heat to consume these hints? What is the goal of the \u0027tool\u0027 you are mentioning here?","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    class InstanceCreatePayload(InstancePayload):"},{"line_number":47,"context_line":"        VERSION \u003d \u00271.1\u0027"},{"line_number":48,"context_line":"        fields \u003d {"},{"line_number":49,"context_line":"            \u0027scheduler_hints\u0027: fields.DictOfListOfStringsField(nullable\u003dTrue)"},{"line_number":50,"context_line":"        }"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        def __init__(self, instance):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_c16cb50a","line":49,"updated":"2016-05-04 13:29:43.000000000","message":"I think it is worth to mention that this is quite free form dict but it is hard to formulate better structure see the comment in: https://github.com/openstack/nova/blob/446d15568e00a483d909dc5c565d70baf29179ad/nova/objects/request_spec.py#L55-L58","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":60,"context_line":"filter_properties.get(\u0027scheduler_hints\u0027). Here is an example of the change to"},{"line_number":61,"context_line":"compute.instance.create.start to include the scheduler_hints::"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _build_and_run_instance(self, context, instance, image, injected_files,"},{"line_number":64,"context_line":"            admin_password, requested_networks, security_groups,"},{"line_number":65,"context_line":"            block_device_mapping, node, limits, filter_properties):"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        image_name \u003d image.get(\u0027name\u0027)"},{"line_number":68,"context_line":"        scheduler_hints \u003d filter_properties.get(\u0027scheduler_hints\u0027)"},{"line_number":69,"context_line":"        self._notify_about_instance_usage(context, instance, \u0027create.start\u0027,"},{"line_number":70,"context_line":"                extra_usage_info\u003d{"},{"line_number":71,"context_line":"                    \u0027image_name\u0027: image_name"},{"line_number":72,"context_line":"                    \u0027scheduler_hints\u0027: scheduler_hints})"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # ...rest of the code"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Alternatives"},{"line_number":77,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_01dd0d70","line":74,"range":{"start_line":63,"start_character":0,"end_line":74,"end_character":29},"updated":"2016-05-04 13:29:43.000000000","message":"I think this is too much detail, lets review this in the code review later.","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":79,"context_line":"The field can be added to a different base class such as InstancePayload, but"},{"line_number":80,"context_line":"the current use case only needs to consume from compute.instance.create.*"},{"line_number":81,"context_line":"notifications"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Data model impact"},{"line_number":84,"context_line":"-----------------"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_416c259c","line":82,"updated":"2016-05-04 13:29:43.000000000","message":"Another alternative to be fair is to let consumer query the nova API to get hints the server is booted with.","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":155,"context_line":"The added field to the notifications will depend on the new versioned format of"},{"line_number":156,"context_line":"compute.instance.create notifications. A patch [2] is already in progress for"},{"line_number":157,"context_line":"transforming compute.instance.create notifications among other notifications."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Testing"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_c1b31509","line":158,"updated":"2016-05-04 13:29:43.000000000","message":"++","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"851e3b6cdeb5f2ec864e68196d24d7319e803477","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Testing"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"There will be unit tests to check if the notification include the new field."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Documentation Impact"},{"line_number":165,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a122d0e_41f1c5cc","line":162,"updated":"2016-05-04 13:29:43.000000000","message":"The unit test is assumed by default. I think it is worth to mention that functional test coverage (along with the notification sample test) will be provided.","commit_id":"e47b3dc25695e84df080c05951f05ddb961b91a4"},{"author":{"_account_id":20158,"name":"Andy Hsiang","email":"yh418t@att.com","username":"yh418t"},"change_message_id":"df760ef7831eecdb97e6579f8dd26fac44d28291","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Use Cases"},{"line_number":25,"context_line":"---------"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As an operator, I would like to maintain inventory informatino outside of OpenStack"},{"line_number":28,"context_line":"by consuming events emitted when an instance is created. Today, instances do not"},{"line_number":29,"context_line":"have information about which heat stack they belong to. By exposing additional"},{"line_number":30,"context_line":"information in the notification, I would be able to use it to interact with other"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_5c5e8d45","line":27,"range":{"start_line":27,"start_character":51,"end_line":27,"end_character":62},"updated":"2016-05-05 14:37:28.000000000","message":"information","commit_id":"4d88f678548a562aade77bc7456aa871bea40df2"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"99d337b5bc14e990bfb8118cbc38679b17307ca8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"information in the notification, I would be able to use it to interact with other"},{"line_number":31,"context_line":"projects like Senlin or Heat. For example, if there is a problem on a specific"},{"line_number":32,"context_line":"instance during a VNF autoscaling operation, we would like to be able to identify"},{"line_number":33,"context_line":"the VNF and the heat stack information from the instance."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed Change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dab17558_b72b1033","line":33,"updated":"2016-05-05 21:28:40.000000000","message":"I\u0027m a little confused about something. It sounds like Heat would be a consumer of these notifications with scheduler hints, but Heat is also the one passing these scheduler hints in?\n\nAlso, I\u0027ve seen nothing here to indicate that scheduler hints specifically are needed. Could the same be accomplished by setting something in instance metadata at create time and having that in notifications?","commit_id":"7f311d117d881f598a636bf81136ac04518844f8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2de3c99124ec3f3b332f20743122fd7019eefcca","unresolved":false,"context_lines":[{"line_number":30,"context_line":"information in the notification, I would be able to use it to interact with other"},{"line_number":31,"context_line":"projects like Senlin or Heat. For example, if there is a problem on a specific"},{"line_number":32,"context_line":"instance during a VNF autoscaling operation, we would like to be able to identify"},{"line_number":33,"context_line":"the VNF and the heat stack information from the instance."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed Change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dab17558_37f9e0c9","line":33,"updated":"2016-05-05 21:24:55.000000000","message":"This is Heat information, not Nova. Why shouldn\u0027t Heat emit this information (stack tags) instead?","commit_id":"7f311d117d881f598a636bf81136ac04518844f8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2de3c99124ec3f3b332f20743122fd7019eefcca","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    class InstanceCreatePayload(InstancePayload):"},{"line_number":52,"context_line":"        VERSION \u003d \u00271.1\u0027"},{"line_number":53,"context_line":"        fields \u003d {"},{"line_number":54,"context_line":"            \u0027scheduler_hints\u0027: fields.DictOfListOfStringsField(nullable\u003dTrue)"},{"line_number":55,"context_line":"        }"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        def __init__(self, instance):"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dab17558_17f65cd7","line":54,"updated":"2016-05-05 21:24:55.000000000","message":"Huge -1 from me on this. Scheduler hints are not standardized and are non-interoperable random strings that are heavily deployer-dependent.","commit_id":"7f311d117d881f598a636bf81136ac04518844f8"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"99d337b5bc14e990bfb8118cbc38679b17307ca8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    class InstanceCreatePayload(InstancePayload):"},{"line_number":52,"context_line":"        VERSION \u003d \u00271.1\u0027"},{"line_number":53,"context_line":"        fields \u003d {"},{"line_number":54,"context_line":"            \u0027scheduler_hints\u0027: fields.DictOfListOfStringsField(nullable\u003dTrue)"},{"line_number":55,"context_line":"        }"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        def __init__(self, instance):"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dab17558_978c0c37","line":54,"updated":"2016-05-05 21:28:40.000000000","message":"I\u0027m really hesitant about exposing this because there is zero structure, and honestly very little meaning to these hints. A user could literally pass in the hint foo\u003dbar which the scheduler would completely ignore. Putting it in a notification gives a false sense that it had meaning.\n\nI think there needs to be a lot more information in here about how exactly these would be used and why something like metadata wouldn\u0027t work.","commit_id":"7f311d117d881f598a636bf81136ac04518844f8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2de3c99124ec3f3b332f20743122fd7019eefcca","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        }"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        def __init__(self, instance):"},{"line_number":58,"context_line":"            super(InstanceCreatePayload, self).__init__(instance)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* In the method nova.manager._build_and_run_instance, the extra_usage_info"},{"line_number":61,"context_line":"arguments for calls to nova.manager._notify_about_instance_usage will contain"}],"source_content_type":"text/x-rst","patch_set":6,"id":"dab17558_770368b9","line":58,"updated":"2016-05-05 21:24:55.000000000","message":"The above isn\u0027t necessary. It\u0027s the default constructor for a derived class in Python. But, whatever, this is a spec :)","commit_id":"7f311d117d881f598a636bf81136ac04518844f8"}]}
