)]}'
{"monasca_agent/collector/checks_d/libvirt.py":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6eca78f99b20163e43b45dfdabad3028afd7b52a","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        # A VM being in SHUTOFF state may have many reasons, we try to be more specific here"},{"line_number":580,"context_line":"        if inst_state[0] \u003d\u003d libvirt.VIR_DOMAIN_SHUTOFF:"},{"line_number":581,"context_line":"            if inst_state[1] in DOM_SHUTOFF_STATES:"},{"line_number":582,"context_line":"                metatag \u003d {\u0027detail\u0027: DOM_SHUTOFF_STATES[inst_state[1]]}"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        self.gauge(\u0027host_alive_status\u0027, dom_status, dimensions\u003ddims_customer,"},{"line_number":585,"context_line":"                   delegated_tenant\u003dinstance_cache.get(inst_name)[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_962c859a","line":582,"range":{"start_line":582,"start_character":16,"end_line":582,"end_character":71},"updated":"2016-11-28 16:29:29.000000000","message":"Should you add these lines?\n\nelse:\n   metatag \u003d {\u0027detail\u0027: DOM_STATES[libvirt.VIR_DOMAIN_SHUTOFF]}","commit_id":"7b9bc1116843d4f125daf06c74e69e5a868fb1c8"},{"author":{"_account_id":24322,"name":"Tomáš Zvala","email":"tomas@zvala.cz","username":"tzvala"},"change_message_id":"3d1f2d12c4d24499d198af1e8c4c83549b4a78dd","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        # A VM being in SHUTOFF state may have many reasons, we try to be more specific here"},{"line_number":580,"context_line":"        if inst_state[0] \u003d\u003d libvirt.VIR_DOMAIN_SHUTOFF:"},{"line_number":581,"context_line":"            if inst_state[1] in DOM_SHUTOFF_STATES:"},{"line_number":582,"context_line":"                metatag \u003d {\u0027detail\u0027: DOM_SHUTOFF_STATES[inst_state[1]]}"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        self.gauge(\u0027host_alive_status\u0027, dom_status, dimensions\u003ddims_customer,"},{"line_number":585,"context_line":"                   delegated_tenant\u003dinstance_cache.get(inst_name)[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_f698597a","line":582,"range":{"start_line":582,"start_character":16,"end_line":582,"end_character":71},"in_reply_to":"5a74a57a_962c859a","updated":"2016-11-28 19:57:20.000000000","message":"There already is a metatag set on line #578, we\u0027re only replacing it here. Though I guess for better clarity, adding it won\u0027t hurt.","commit_id":"7b9bc1116843d4f125daf06c74e69e5a868fb1c8"},{"author":{"_account_id":24458,"name":"Premysl Kouril","email":"p.kouril@cra.cz"},"change_message_id":"eca03f71d638cabfb657f0e737812952021c2280","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            if inst_state[1] in DOM_SHUTOFF_STATES:"},{"line_number":582,"context_line":"                metatag \u003d {\u0027detail\u0027: DOM_SHUTOFF_STATES[inst_state[1]]}"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        self.gauge(\u0027host_alive_status\u0027, dom_status, dimensions\u003ddims_customer,"},{"line_number":585,"context_line":"                   delegated_tenant\u003dinstance_cache.get(inst_name)[\u0027tenant_id\u0027],"},{"line_number":586,"context_line":"                   hostname\u003dinstance_cache.get(inst_name)[\u0027hostname\u0027],"},{"line_number":587,"context_line":"                   value_meta\u003dmetatag)"},{"line_number":588,"context_line":"        self.gauge(\u0027vm.host_alive_status\u0027, dom_status,"},{"line_number":589,"context_line":"                   dimensions\u003ddims_operations,"},{"line_number":590,"context_line":"                   value_meta\u003dmetatag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a71b18c_97cb1b53","line":587,"range":{"start_line":584,"start_character":8,"end_line":587,"end_character":38},"updated":"2016-12-02 12:52:03.000000000","message":"We are seeing one problem here. Our use case is, that we want to create alarm on this metric but this alarm should be triggered only if the instance has crashed (the libvirt state is VIR_DOMAIN_SHUTOFF and shut off state is VIR_DOMAIN_SHUTOFF_CRASHED. Given that the metric posts \"dom_status\" as the value, it is impossible for the alarm to differentiate between instance crash and legitimate instance shutdown (in which case we don\u0027t want to trigger the alarm). \n\nSo although this patch fixes the metadata information, it is insufficient when it comes to creating alarms on metric\u0027s value.\n\nThinking about possible solutions:\n\n1) posting extra metric which would contain the shutoff reason\n2) create monasca libvirt plugin own set of states which would map to tuples of \"libvirt states\" and libvirt state reasons\" (so we would have unique states, represented by single number","commit_id":"7b9bc1116843d4f125daf06c74e69e5a868fb1c8"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"96de74d02b9de91b5de18e4db1e2fc856e0baae1","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            if inst_state[1] in DOM_SHUTOFF_STATES:"},{"line_number":582,"context_line":"                metatag \u003d {\u0027detail\u0027: DOM_SHUTOFF_STATES[inst_state[1]]}"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        self.gauge(\u0027host_alive_status\u0027, dom_status, dimensions\u003ddims_customer,"},{"line_number":585,"context_line":"                   delegated_tenant\u003dinstance_cache.get(inst_name)[\u0027tenant_id\u0027],"},{"line_number":586,"context_line":"                   hostname\u003dinstance_cache.get(inst_name)[\u0027hostname\u0027],"},{"line_number":587,"context_line":"                   value_meta\u003dmetatag)"},{"line_number":588,"context_line":"        self.gauge(\u0027vm.host_alive_status\u0027, dom_status,"},{"line_number":589,"context_line":"                   dimensions\u003ddims_operations,"},{"line_number":590,"context_line":"                   value_meta\u003dmetatag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_eeecdbbc","line":587,"range":{"start_line":584,"start_character":8,"end_line":587,"end_character":38},"in_reply_to":"3a71b18c_97cb1b53","updated":"2017-01-18 11:43:07.000000000","message":"Would the VM ping check at, https://github.com/openstack/monasca-agent/blob/master/docs/Libvirt.md#ping-checks, resolve your problem.\n\nThis check pings the VM, but it is primarily meant to determine if the VM is running or crashed. It is more reliable than using the libvirt states as it is possible to have a VM where the operating-system has crashed, but libvirt still reports that it is OK.","commit_id":"7b9bc1116843d4f125daf06c74e69e5a868fb1c8"},{"author":{"_account_id":24458,"name":"Premysl Kouril","email":"p.kouril@cra.cz"},"change_message_id":"9c021b32b94d62e21c3ba64d521cec73fa4e0ae3","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            if inst_state[1] in DOM_SHUTOFF_STATES:"},{"line_number":582,"context_line":"                metatag \u003d {\u0027detail\u0027: DOM_SHUTOFF_STATES[inst_state[1]]}"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"        self.gauge(\u0027host_alive_status\u0027, dom_status, dimensions\u003ddims_customer,"},{"line_number":585,"context_line":"                   delegated_tenant\u003dinstance_cache.get(inst_name)[\u0027tenant_id\u0027],"},{"line_number":586,"context_line":"                   hostname\u003dinstance_cache.get(inst_name)[\u0027hostname\u0027],"},{"line_number":587,"context_line":"                   value_meta\u003dmetatag)"},{"line_number":588,"context_line":"        self.gauge(\u0027vm.host_alive_status\u0027, dom_status,"},{"line_number":589,"context_line":"                   dimensions\u003ddims_operations,"},{"line_number":590,"context_line":"                   value_meta\u003dmetatag)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a3c09a3_6feaa575","line":587,"range":{"start_line":584,"start_character":8,"end_line":587,"end_character":38},"in_reply_to":"7a3c09a3_eeecdbbc","updated":"2017-01-18 12:47:36.000000000","message":"We actually do use VM ping check too but both checks have different purpose: \n\nYou are right that the ping check is more informative because it is more high level but we as a service provider cannot generally do that because the Operating system is responsibility of customer. \n\nWe use libvirt check to check from the operator point of view that we are actually providing the service (that the VM is running from the point of view of virtualization).\n\nSo the idea here really would be to do something about the libvirt heatlh check so that the implementation is better/more informative.","commit_id":"7b9bc1116843d4f125daf06c74e69e5a868fb1c8"}]}
