On 18-11-2014 09:17, Yu Xin Huo wrote:
- When I open the dialog "Edit" on a VM without snapshots, the error KCHSNAP0007E* is shown. That's because the VM doesn't have snapshots but the UI should handle that and do nothing. Not having snapshots is not an error from the UI perspective.
Let us discuss why it returns a 404, anyway, the uri has nothing wrong, to me, 404 means I am requesting a wrong thing.

Actually, 404 doesn't mean there's something wrong with the URL, it means the resource on the requested URL could not be found, which, in my opinion, is the case here. But I discussed this also with Aline and she agrees that the request should return an empty dict in when there's no current snapshot, so I'll send a patch to change this.

why sometimes it returns 500.


Can you paste the stack trace of this error as well? I have no idea of what might have happened just by looking at the code 500, that's a generic status code. Only then I can understand and fix this issue.

- I cannot create a snapshot at all. Whenever I click on the button '+', the error "KCHAPI0006E: Unable to parse JSON request" is shown.
Can you make the backend code more robust, I have to submit an empty json below. If submit nothing, then error above.

OK, I'll change the backend so it can receive nothing as input.


- I cannot revert to the current snapshot. The button "Revert" becomes disabled whenever the current snapshot is selected. And that's a very important use case. Suppose I just created a snapshot. Then I mistakenly removed some files on my guest system and I want to revert to that snapshot. With the current UI, I'm not able to do that.
Corrected since it can revert to current snapshot. By this way, radio button add no value, so change back to original UI to make revert an item level action.

Good.


- There's no visual feedback when I click on the button "Revert". When I click on it and the revert operation starts, nothing happens. The user might click on it again thinking that the button wasn't clicked on the first time. Also there's no way to know if the revert operation finished.

Good. But I guess the loading Kimchi icon won't appear again if the user closes the dialog and reopens it. That should be easier to implement if the revert operation returns a task, which is not the case now - but will be in the future. So this looks good for now.

- If the user clicks on the button "Revert", closes the dialog "Edit" and reopens it while the revert operation is still happening, the error KCHSNAP0007E* is shown and the tab "Snapshot" is rendered empty, even if there are snapshots to be listed on the VM. The same problem also happens when the user clicks on the button with the trash can, instead of "Revert", and closes the dialog and reopens it while the operation hasn't finished.
Seems like 'Revert', 'Create snapshot', 'delete', 'list snapshots' are all exclusive, disable all buttons when any action is ongoing, and only list existing snapshots when no snapshot creation is ongoing.
Revert is not a long task, it should response within 5 secs, then user should wait there for it to complete, or else make it a long task also.

Revert can be a very long task, depending on the type of snapshot and the VM memory size. But as Kimchi only supports snapshot with shutoff VMs and those snapshots are usually fast to be created and reverted, we can keep the non-task operation. But that should change soon.

- Why isn't there a button "Revert" on each snapshot line? The button with the trash can is there, the button "Revert" should also be there. That's an action that applies to only one snapshot at a time, just like delete. Other actions in other tabs, like "Edit", are also shown on the relevant line instead of at the top of the dialog. The button "+" is different, though, because it doesn't act in one entry alone, it acts on the whole set of items. So that makes sense for me to be at the top.
Changed it back as it can revert back to current snapshot and radio button has no value here.

Good.

Please correct all those 500 error above and below


I'll look into this issue and fix it.



I don't know what happened there. Please paste the stack trace so I can identify and fix the issue.