-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue 30 #129
base: master
Are you sure you want to change the base?
Issue 30 #129
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a lot that needs to be cleaned up for this to be merged.
Follow the style of other files in this repository.
Use interfaces instead of swapping out functions in tests.
Only break long lines of code into multiple lines.
) | ||
|
||
var ( | ||
uri = flag.String("uri", "qemu:///system", `URI to connect to the libvirtd host.`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nitpick, use quotes instead of backticks since we don't need quotes inside the string.
|
||
var ( | ||
uri = flag.String("uri", "qemu:///system", `URI to connect to the libvirtd host.`) | ||
domainName = flag.String("domainName", "mydomain", "This is the domain to run commands against.") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove "This is".
func main() { | ||
flag.Parse() | ||
|
||
libvirtGoMonitor := qmp.NewLibvirtGoMonitor(*uri, *domainName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's just go with mon
for consistency with other documentation.
log.Fatalf("Unable to connect: %v\n", err) | ||
} | ||
|
||
eventsChans, err := libvirtGoMonitor.Events() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
events
for consistency with other documentation.
) | ||
|
||
var ( | ||
uri = flag.String("uri", "qemu:///system", `URI to connect to the libvirtd host.`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nitpick, use quotes instead of backticks since we don't need quotes inside the string.
|
||
// We only support lifecycleEvents for now | ||
if lifecycleEvent, ok := | ||
eventDetails.(libvirt.DomainLifecycleEvent); ok { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Move this up on the same line as the assignment. Only break up excessively long lines.
Seconds int64 `json:"seconds"` | ||
Microseconds int64 `json:"microseconds"` | ||
} | ||
timestamp := TimeStamp{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use the existing Timestamp
type in this package.
Microseconds int64 `json:"microseconds"` | ||
} | ||
timestamp := TimeStamp{ | ||
int64(now.Second()), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Used keyed struct literals.
} | ||
timestamp := TimeStamp{ | ||
int64(now.Second()), | ||
int64(now.Second() / int(time.Microsecond)), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Used keyed struct literals.
@@ -0,0 +1,357 @@ | |||
// Copyright 2016 The go-qemu Authors. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All tests need to make use of interfaces instead of swapping out functions at the package level.
@mdlayher great points! Specially the use of interfaces for stubbing functions. I honestly didn't like my approach either, but no alternatives came to mind. I'll start working on this tonight. |
Sounds good. Apologies for all the comments; just trying to keep things consistent throughout the repo where possible. |
@mdlayher any feedback on my latest commits? |
This involves some additional changes to overcome breaking changes from go-libvirt. These are the new changes in this revision of go-libvirt since the last release go-qemu has been using: * remove invitation to empty IRC channel * rpc_test: use Libvirt.addStream to add streams * MockLibvirt: deep-copy response before adding ID * monitor socket conn state in initLibvirtComms * libvirttest: use atomic to read "serial" * integration: wait for Disconnected before assert * add CODEOWNERS * Merge pull request digitalocean#152 from clarkwalcott/readme_update_rpc_link * Docs: Update README with working link * expose Libvirt.Disconnected method * Add NetworkUpdateCompat * update libvirt configuration step for new releases * search generated include directory for header files * ci updates (digitalocean#142) * integration tests (digitalocean#141) * take dialer as input instead of already existing connection (digitalocean#140) * support authentication via polkit (digitalocean#138) * fix some stream problems (digitalocean#137) * Merge pull request digitalocean#136 from digitalocean/jenni/fix_potential_segfault * write lock only needed for actual write * rm unneeded nil'ing of reader and writer * socket Disconnect close can race with nil of conn * Merge pull request digitalocean#135 from digitalocean/jenni/update_cgo * run go get golang.org/x/tools/go/internal/[email protected] * Merge pull request digitalocean#134 from digitalocean/jenni/add_socket_type * change socket to pointer ref * Merge branch 'master' of github.com:digitalocean/go-libvirt into jenni/add_socket_type * Merge pull request digitalocean#133 from digitalocean/jenni/fix_event_unsubscribe_race * reorder stream shutdown/delete * fix race in disconnect of event stream cleanup * add socket type to handle socket connection management * Merge pull request digitalocean#132 from digitalocean/jenni/fix_client_deadlock * fix typo and func conciseness * move listen and cleanup into a func * add timeout on waiting for disconnected * move temporary read error check to a function * Libvirt chan socketCleanupDone -> disconnected * fix accidental go fmt of generated files * add connect/disconnect to unit tests * add tests for callback cleanup on connection disconnect * fix rpc lookup test * fix deadlocked clients on lack of libvirt response * add more robust connection error checking * Merge pull request digitalocean#131 from digitalocean/jenni/fix_invalid_test_data * fix incorrect test data * Merge pull request digitalocean#130 from digitalocean/jenni/stream_shutdown * fix missing stream shutdown in lifecycle subscribe * Merge pull request digitalocean#129 from digitalocean/geoff/vet-cleanup * remove travis config file * Clean up some linter errors * Merge pull request digitalocean#125 from dmacvicar/dmacvicar_puberror * Run generators against libvirt 7.2.0 * Unexport From* (ErrorDomain) * golint * go fmt * libvirt.Error: expose only Code and Message * Run generators against libvirt 7.1.0 * go fmt * Make libvirtError public (libvirt.Error) * github actions (digitalocean#128) * internal/event/stream: fixes unsafe queue access (digitalocean#127) * Merge pull request digitalocean#124 from sam-github/check-wrapped-errors * Check wrapped errors for IsNotFound() * Fix two race conditions related to Disconnect (digitalocean#120) * Merge pull request digitalocean#119 from weizhouapache/readme-add-tls-port * README: Add missing tls port in example * README: Add example connect to libvirt via TLS over TCP (digitalocean#118) * Add overload for Connect() to allow other libvirt drivers (digitalocean#117)
Here is one implementation of the Monitor using the https://github.com/rgbkrk/libvirt-go package.
Let me know if you there is anything you would like me to change.