)]}'
{"id":"openstack%2Fnova~706","triplet_id":"openstack%2Fnova~master~I6b4794419509e0f9b71c8be9f235d8d999baa884","project":"openstack/nova","branch":"master","hashtags":[],"change_id":"I6b4794419509e0f9b71c8be9f235d8d999baa884","subject":"Move console.log to a ringbuffer","status":"ABANDONED","created":"2011-09-28 14:01:21.000000000","updated":"2012-01-24 06:04:19.000000000","total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"ae240de8cca07574a3ab5aa85f77fc5213ed8c07","_number":706,"virtual_id_number":706,"owner":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"actions":{},"labels":{"Verified":{"all":[{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},{"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"disliked":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"all":[{"value":0,"date":"2011-10-07 00:28:48.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},{"value":-1,"date":"2011-11-03 04:24:35.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},{"value":0,"date":"2011-10-20 12:05:15.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},{"value":0,"date":"2011-10-07 09:13:34.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},{"value":0,"date":"2011-10-25 12:53:29.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},{"value":0,"date":"2011-10-13 07:00:59.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},{"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},{"value":0,"permitted_voting_range":{"min":0,"max":1},"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},{"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2011-09-30 16:32:19.000000000","updated_by":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"reviewer":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"state":"REVIEWER"},{"updated":"2011-10-03 22:58:35.000000000","updated_by":{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},"reviewer":{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},"state":"REVIEWER"},{"updated":"2011-10-07 00:28:48.000000000","updated_by":{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},"reviewer":{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},"state":"REVIEWER"},{"updated":"2011-10-13 07:00:59.000000000","updated_by":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"reviewer":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"state":"REVIEWER"},{"updated":"2011-10-20 12:05:15.000000000","updated_by":{"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},"reviewer":{"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},"state":"REVIEWER"},{"updated":"2011-10-25 12:53:29.000000000","updated_by":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"reviewer":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"state":"REVIEWER"},{"updated":"2011-11-03 04:24:35.000000000","updated_by":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"reviewer":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"state":"REVIEWER"}],"messages":[{"id":"56d8a9c8beaf3cda6eb859b47923769de4c36a16","author":{"_account_id":706,"name":"Brian Lamar","email":"brian.lamar@rackspace.com","username":"blamar"},"date":"2011-09-28 14:56:55.000000000","message":"Patch Set 1:\n\nCouple quick observations/questions:\n\n1) This will absolutely work.\n\n2) There are simpler (yet seemingly more inefficient?) ways of creating a circular buffer/file in Python, do we need to be this complex for efficiency? I\u0027m fine if the answer is yes. One of the one\u0027s I\u0027ve used in the past is given as an example here (the one using collections.deque).\n\nhttp://stackoverflow.com/questions/6293868/a-text-file-circular-buffer-in-python\nhttp://stackoverflow.com/questions/4151320/efficient-circular-buffer\n\n3) There is a lot of code here without tests. I\u0027d love to take your word on the accuracy of the code, but tests help me push the approve button.","accounts_in_message":[],"_revision_number":1},{"id":"663d0b46458f70da518029ba005dc3cb597825af","author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"date":"2011-09-28 19:49:13.000000000","message":"Patch Set 1:\n\nRandom question - what happens if nova-compute goes down? Does the pipe fill up eventually and the guest block?","accounts_in_message":[],"_revision_number":1},{"id":"ac383d0aa23216fe6fae31b36b558b0476fa4147","author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"date":"2011-09-29 13:35:55.000000000","message":"Patch Set 1:\n\nwhen you raise ValueError, you should let the string go through gettext.\nie:\n- raise ValueError(\u0027RingBuffer size out of range\u0027)\n+ raise ValueError(_(\u0027RingBuffer size out of range\u0027))","accounts_in_message":[],"_revision_number":1},{"id":"7b573ae4808f1240d275df19905c8b9232574fd8","author":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"date":"2011-09-29 18:33:31.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"e01e035e0ddaca9597898d64c88cfc51bd83a0a2","author":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"date":"2011-09-29 19:19:09.000000000","message":"Patch Set 2:\n\n@Brian\n\n1) Thanks! I appreciate your time in looking at this for me.\n\n2) I don\u0027t think it\u0027s appropriate to use a deque for two reasons:\n\na) I\u0027m trying to keep behaviour the same as before, so after a restart, get_console_output() still needs to return old console data. If I were to use an in-memory buffer only, this would not work. Thus I concluded that a disk-backed store was required.\n\nb) A deque can only store discrete objects, rather than a buffer. One of the examples you linked to, for example, uses lines. As I\u0027m solving this from a security perspective, if I did store lines the guest would still be able to DoS the host by using a really long line. To get around this I\u0027d have to use a deque in a more clever way. Using it to store a byte per entry would force get_console_output to iterate over each of 64k entries, which is horrible. Or I\u0027d have to do something really clever with chunking entries into the dequeue by reads, but this would be complex to manage and result in a confusingly variable buffer size. Either way, I\u0027d have to wrap the implementation into a RingBuffer-style class.\n\nI tried to find a sensible implementation of a ringbuffer, found none, so I wrote one which solved both of these issues. It\u0027s nicely encapsulated in a simple API anyway, so the underlying implementation can be changed without issues. I\u0027ve now added some unit tests for the ringbuffer too.\n\n3) I\u0027ve added unit tests for the RingBuffer and ConsoleLogger which is the main code that I\u0027m adding. As I\u0027m not adding any new functionality, existing functional tests should suffice. The only sensible way that I can think of implementing a regression test would be to test an image that generates lots (eg. 128k) of console output, and check that get_console_output returns only the last 64k. I haven\u0027t found anything suitable in the existing test framework. Is there an existing mock that I could use? I\u0027d appreciate some guidance whether this is required and how I might approach it.\n\n@Mark\n\nI\u0027m now restarting the logger threads when nova-compute is restarted. I\u0027ve tested (by hand) to see what the behaviour is when data is written to the console from inside the guest while nova-compute is down. Previously, everything worked fine. Now, a small amount of data is fine (presumably buffered within the FIFO). A large amount of data appears to hang the guest, and it doesn\u0027t resume when nova is restarted. This happens at around the 64k mark. I wonder if this the FIFO buffer size?\n\nSo it seems that a quick restart of nova-compute is fine, but if it\u0027s down for an extended period then there will be a problem. I\u0027m not sure how this situation can be improved. It\u0027s certainly better than the existing DoS possibility.\n\nIf we want to do better, then I can see three options:\n\n1) nova-compute spawns FIFO-reading/ringbuffer-writing processes that will outlive nova-compute (instead of threads). Perhaps it could leave a pid file in the instance directories to manage termination.\n\n2) qemu is patched to support writing to a disk-based ringbuffer directly in some kind of agreed format. nova will need to be able to read this format, libvirt\u0027s XML schema will need to be extended so that nova can specify the request to qemu and libvirt will need to be patched to support this.\n\n3) qemu is patched to do some kind of internal buffering. But it can\u0027t buffer an indefinite amount, so what should it do if the buffer is full?\n\nFundamentally the issue seems to be that writing to a ringbuffer from a FIFO requires a thread somewhere, unless it\u0027s embedded into qemu, and that nova currently have any other thread that lasts the lifetime of a guest.\n\nAny other suggestions?\n\n@Scott\n\nI\u0027ve now done this, thanks!","accounts_in_message":[],"_revision_number":2},{"id":"528e84340f9df9b35274bddc269d475d4e5f34d7","author":{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},"date":"2011-09-29 19:19:53.000000000","message":"Patch Set 2: I would prefer that you didn\u0027t submit this\n\nAlways using ringbuffered logging makes sense in public cloud, but in private cloud you may not want to do that, and indeed may have regulations preventing you from destroying logged data.\n\nThis should be enabled via a flag.\n\nIt also seems that having the compute driver keep all those file handles may not be as good as having it spawn a process per-instance to handle logging.","accounts_in_message":[],"_revision_number":2},{"id":"4536954668c4be78419ffc82805d64800fe4a65a","author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"date":"2011-09-30 16:32:19.000000000","message":"Patch Set 2:\n\nIn response to Todd, this is a serious issue in private or public cloud.  It is expected that the instance is somehow \"constrained\" so that it cannot negatively affect other instances.\n\nIn a private cloud, the owner of the cloud may be less likely to suffer malicious attack.  However, the possibility of accidental exploit and a loss of service is still present.  Additionally, even a \"private cloud\" may have external facing services that could be compromised, and then that instance attacked.","accounts_in_message":[],"_revision_number":2},{"id":"11149710eb74a943bb1680936ab7e8daac081eb3","author":{"_account_id":1082,"name":"Scott Moser","email":"smoser@ubuntu.com","username":"smoser"},"date":"2011-09-30 16:36:13.000000000","message":"Patch Set 2:\n\ni should have stated, but I think that the flag to set this variable to a given size is sufficient.  Ie, the user owner of the cloud coudl set it to 100M, which would likely mean it would never hurt anything.\n\nClearly the potential loss of data should be minimized, though.","accounts_in_message":[],"_revision_number":2},{"id":"dfde611a745274218d52bf11b6c6740bb3a5fd8e","author":{"_account_id":236,"name":"Monsyne Dragon","email":"mdragon@rackspace.com","username":"mdragon"},"date":"2011-10-03 22:58:35.000000000","message":"Patch Set 2:\n\nHmm..... Could we simply use a separate logrotator process (like Cronolog with the FIFO patch, or somesuch) to manage this? This could live separately from the nova-compute, and avoid hanging the guest if compute is stopped.","accounts_in_message":[],"_revision_number":2},{"id":"298e3c381ba6e14b0c15f19aa77fd645762a320f","author":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"date":"2011-10-05 17:17:24.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"cf195b960cc70a8500eaf3e3e21f3c4decea14b1","author":{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},"date":"2011-10-07 00:28:48.000000000","message":"Patch Set 3:\n\nThis must be optional, for regulatory compliance reasons.  Risking a resource exhaustion is okay, but losing logs isn\u0027t.\n\nI see a couple of ways forward.  First is to just enable/disable this via a flag.  Second is to specify an external program to handle the pipe, in which case my program can just keep everything (or write it remotely, which solves both of our problems).","accounts_in_message":[],"_revision_number":3},{"id":"783f2c90b45707ea8cc6e580b82ad1465f0402bc","author":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"date":"2011-10-07 09:13:34.000000000","message":"Patch Set 3:\n\nTodd,\n\nI\u0027d be happy to implement this if there is general consensus. Unfortunately enabling/disabling the entire patch with a flag would be complex: I\u0027ve had to modify the libvirt xml template file, so we\u0027d need to have two templates or dynamically change it or something.\n\nBut I\u0027m confused. Exactly which part of which regulation requires this behaviour?\n\nAFAIK, no other system retains the console output (Amazon: last 64k [?]; non-virtualised machine: just what appears on the screen that nobody reads as it scrolls by). Doesn\u0027t this mean that they are all out of compliance?\n\nExactly how much space does this regulation require must be retained for logging? Can we not just set the (sparse) ringbuffer to this required size? Or does the regulation require a disk of infinite space?\n\nAnd what exactly makes the console output a \"log\" under these regulations? What other system logs the console output of a virtual machine in this way? Can the guest not write to a remote syslog? How is compliance achieved when a system isn\u0027t running virtualised and thus console logging is not available?\n\nNote that the existing implementation of get_console_output requires the entire console output to fit in memory, so right now we don\u0027t have an unlimited get_console_output size anyway. If you need this extra functionality, shouldn\u0027t that be going into a separate change request?","accounts_in_message":[],"_revision_number":3},{"id":"5093d4b849f8929dbe91d5f2f4e52aa21a60d1ee","author":{"_account_id":706,"name":"Brian Lamar","email":"brian.lamar@rackspace.com","username":"blamar"},"date":"2011-10-07 22:19:07.000000000","message":"Patch Set 3: (2 inline comments)\n\nHey Robie, sorry for the lapse in my review here.\n\nI don\u0027t think that this console output is subject to the laws that Todd is suggesting. However, I also wouldn\u0027t be surprised. :)\n\nThis is a big case of something that I struggle with on a day to day basis: Should we implement the feature with code or should deployers be responsible for their setups? I would say that this is an uncommon enough situation that falls into the category of \"do it in code\" as there isn\u0027t a standard way (that I know of) for deployers to reproduce the functionality of your ring buffer. You mentioned before that there is a kernel module out there (emlog) but it\u0027s not standard/updated enough to make people depend on it IMO.\n\nI included some inline suggestions, as making this patch optional is a good goal and shouldn\u0027t be too difficult to accomplish. You should just be able to add a flag, then add a couple of lines to the libvirt/connection.py. In my opinion the flag should be ON by default to be the most gentle to potential operations teams.\n\nThanks for adding tests for the buffer class!","accounts_in_message":[],"_revision_number":3},{"id":"aaffc325789251a53a762bcb40f6fb2ac83a8d28","author":{"_account_id":34,"name":"Todd Willey","email":"todd@ansolabs.com","username":"xtoddx"},"date":"2011-10-10 21:51:10.000000000","message":"Patch Set 3:\n\nI\u0027m concerned about FISMA compliance.\n\nFISMA requires each project to analyze their own points of data collection to determine what is relevant and what isn\u0027t.  If something is relevant, then it has to be archived, duplicated, and protected.  At very high levels this can mean printing the most important types of logging messages to a line printer in a room with restricted access.\n\nSpecifically, since tools like cloud-init talk to the infrastructure layer it is good to have correlation between the client logs and server logs (nova-compute) to verify and track access and failures.  It may be possible to have FISMA compliant infrastructure without retaining console logs from instances, but if you want to have a compliant services layer that is built on top of nova (ie, provided inside of virtual machines), you\u0027ll probably want to keep those logs.  There probably are ways to use syslog-ng or kin to do it, but I favor an approach to keep everything by default, since disk is cheap and text is tiny.\n\nI know this patch is important to prevent resource exhaustion, but it is possible to use a flag and template variable to accomplish this without removing the current behavior.  Alternatively, using a helper application to do this lets us both be happy by using different helpers, and has the nice side-effect of not breaking or dropping messages from console logging if nova-compute crashes or needs a restart (for example in the case of upgrades).","accounts_in_message":[],"_revision_number":3},{"id":"bfd3c46122491a7343ffd1e0b4cadaa4f6aba893","author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"date":"2011-10-13 07:00:59.000000000","message":"Patch Set 3:\n\n\u003e So it seems that a quick restart of nova-compute is fine, \n\u003e but if it\u0027s down for an extended period then there will be \n\u003e a problem. I\u0027m not sure how this situation can be improved. \n\nI think this is a blocker, especially now that I understand our current recommendation for folks upgrading a zone ...\n\nBasically, you take down all the nova-compute services during an upgrade. The theory is that, while you have a period where API operations is unavailable, the VMs themselves keep running ... and that\u0027s what really matters.\n\nSo, we are *designing* for nova compute being down for an extended period of time.\n\n\u003e It\u0027s certainly better than the existing DoS possibility.\n\nHmm, am I missing something here?\n\nlogrotate can rotate files just fine - even when program\u0027s can\u0027t be notified to re-open the file - just by truncating it in place. See its copytruncate option. Can we not do the same? Or even just recommend folks use logrotate?","accounts_in_message":[],"_revision_number":3},{"id":"986bd3442ea896d9a2e72a1f76d05ed2600dd670","author":{"_account_id":979,"name":"Dave Walker","email":"email@daviey.com","username":"davewalker"},"date":"2011-10-20 12:05:15.000000000","message":"Patch Set 3:\n\nUnless I have mistaken logrotate it operates by request, such as cron or triggering a rotate.  This means that logrotate would have to run at the minimum every 60s, as \n$ cat /dev/urandom \u003e /dev/ttyS0, can run really rather quickly. :)\n\nThe other option is something like rotatelogs, where the log would be piped through an app... feels kinda dirty to me.\n\nPersonally, i\u0027m a fan of this being self contained within nova - rather than using external tools.  I\u0027d quite like to see this merged as is, as it /does work/..  The benefit of getting it in early, means people can find bugs. :)\n\nIf we keep discussing this until deep into the cycle, we risk merging late or worse, releasing Essex with this pretty serious DoS hole.\n\nNote, Ubuntu is already carrying this patch - we haven\u0027t yet had negative feedback.","accounts_in_message":[],"_revision_number":3},{"id":"b0d1668429091a2f3190aab3b6c807e48f37e11f","author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"date":"2011-10-25 12:53:29.000000000","message":"Patch Set 3:\n\nThis branch fails to merge cleanly w/ Master.","accounts_in_message":[],"_revision_number":3},{"id":"995c9979c7ae3442f3dc8a6a2d43c02f485258d5","author":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"date":"2011-10-25 12:57:45.000000000","message":"Patch Set 3:\n\nApart from the clean merge with master, is there any other reason why this patch will not be accepted right now? If there are other reasons this cannot be merged now, I see little point in continuously rebasing it until other issues are resolved.","accounts_in_message":[],"_revision_number":3},{"id":"79fec42b910f88372deb265e1a0dc1f9432debdc","author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"date":"2011-11-03 04:24:35.000000000","message":"Patch Set 3: I would prefer that you didn\u0027t submit this\n\nI\u0027m with Mark on this one.  I don\u0027t think we can merge this as is if it hangs the guest when nova-compute is down for a significant period of time.  A separate process seems like a reasonable solution.  The fisma concerns aren\u0027t a huge blocker for me.  I think there are other ways around it, and we can add a flag later if it is really needed.","accounts_in_message":[],"_revision_number":3},{"id":"35bc7bccdaf79f92c5576797a97edf391e05ca24","author":{"_account_id":9,"name":"LaunchpadSync","username":"launchpadsync"},"date":"2012-01-24 06:04:18.000000000","message":"Patch Set 3:\n\ncode review expired after 2 weeks of no activity","accounts_in_message":[],"_revision_number":3},{"id":"436788a735e7c44b1df92817ca12beb7013c67f0","author":{"_account_id":9,"name":"LaunchpadSync","username":"launchpadsync"},"date":"2012-01-24 06:04:19.000000000","message":"Patch Set 3: Abandoned\n\ncode review expired after 2 weeks of no activity","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"d2de4796838d0686923bd259875e7a2404af263c","revisions":{"a5b8859fc8dab525ea3633c232efbb84b629c22d":{"kind":"REWORK","_number":1,"created":"2011-09-28 14:01:21.000000000","uploader":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"ref":"refs/changes/06/706/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/06/706/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/06/706/1"}}},"commit":{"parents":[{"commit":"a2646129bc9dbd9dec57bdde7f510e0ea7bbddea","subject":"Merge \"compute_api create*() and schedulers refactoring\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a2646129bc9dbd9dec57bdde7f510e0ea7bbddea"}]}],"author":{"name":"Robie Basak","email":"robie.basak@canonical.com","date":"2011-09-28 13:45:30.000000000","tz":60},"committer":{"name":"Robie Basak","email":"robie.basak@canonical.com","date":"2011-09-28 13:58:24.000000000","tz":60},"subject":"Move console.log to a ringbuffer","message":"Move console.log to a ringbuffer\n\nPrevent a DoS by storing console output in a ringbuffer on the host,\ninstead of allowing it to grow indefinitely. Fixes bug 832507.\n\nChange-Id: I6b4794419509e0f9b71c8be9f235d8d999baa884\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a5b8859fc8dab525ea3633c232efbb84b629c22d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/a5b8859fc8dab525ea3633c232efbb84b629c22d"}]},"branch":"refs/heads/master"},"98fe88c3dd41077450d7b7546547d270274eeb85":{"kind":"REWORK","_number":2,"created":"2011-09-29 18:33:31.000000000","uploader":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"ref":"refs/changes/06/706/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/06/706/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/06/706/2"}}},"commit":{"parents":[{"commit":"070e60d21776ea2b32ac557a0661d2025ef111d8","subject":"Merge \"Fixes euca-describe-instances failing or not showing IPs\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/070e60d21776ea2b32ac557a0661d2025ef111d8"}]}],"author":{"name":"Robie Basak","email":"robie.basak@canonical.com","date":"2011-09-28 13:45:30.000000000","tz":60},"committer":{"name":"Robie Basak","email":"robie.basak@canonical.com","date":"2011-09-29 18:32:42.000000000","tz":60},"subject":"Move console.log to a ringbuffer","message":"Move console.log to a ringbuffer\n\nPrevent a DoS by storing console output in a ringbuffer on the host,\ninstead of allowing it to grow indefinitely. Fixes bug 832507.\n\nChange-Id: I6b4794419509e0f9b71c8be9f235d8d999baa884\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/98fe88c3dd41077450d7b7546547d270274eeb85"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/98fe88c3dd41077450d7b7546547d270274eeb85"}]},"branch":"refs/heads/master"},"d2de4796838d0686923bd259875e7a2404af263c":{"kind":"REWORK","_number":3,"created":"2011-10-05 17:17:24.000000000","uploader":{"_account_id":1620,"name":"Robie Basak","email":"robie.basak@canonical.com","username":"racb"},"ref":"refs/changes/06/706/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/nova","ref":"refs/changes/06/706/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/nova refs/changes/06/706/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/nova refs/changes/06/706/3"}}},"commit":{"parents":[{"commit":"981f52794ed41b6f25dfc4a25b4b736e8f030a0f","subject":"Set error state on spawn error + integration test.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/981f52794ed41b6f25dfc4a25b4b736e8f030a0f"}]}],"author":{"name":"Robie Basak","email":"robie.basak@canonical.com","date":"2011-09-28 13:45:30.000000000","tz":60},"committer":{"name":"Robie Basak","email":"robie.basak@canonical.com","date":"2011-10-05 17:14:32.000000000","tz":60},"subject":"Move console.log to a ringbuffer","message":"Move console.log to a ringbuffer\n\nPrevent a DoS by storing console output in a ringbuffer on the host,\ninstead of allowing it to grow indefinitely. Fixes bug 832507.\n\nChange-Id: I6b4794419509e0f9b71c8be9f235d8d999baa884\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/d2de4796838d0686923bd259875e7a2404af263c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/nova/commit/d2de4796838d0686923bd259875e7a2404af263c"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
