Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ovirt/go-ovirt
Go SDK Source-Code for oVirt 4.x, generated by ovirt/ovirt-engine-sdk-go.
https://github.com/ovirt/go-ovirt
go go-library ovirt ovirt-api-metamodel ovirt-engine ovirt-management
Last synced: about 1 month ago
JSON representation
Go SDK Source-Code for oVirt 4.x, generated by ovirt/ovirt-engine-sdk-go.
- Host: GitHub
- URL: https://github.com/ovirt/go-ovirt
- Owner: oVirt
- License: apache-2.0
- Created: 2017-07-25T01:30:54.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-08-08T19:03:23.000Z (over 1 year ago)
- Last Synced: 2024-11-14T01:33:03.304Z (about 1 month ago)
- Topics: go, go-library, ovirt, ovirt-api-metamodel, ovirt-engine, ovirt-management
- Language: Go
- Homepage:
- Size: 2.91 MB
- Stars: 29
- Watchers: 17
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.adoc
- License: LICENSE.txt
Awesome Lists containing this project
README
# oVirt Go SDK
[![Build Status](https://travis-ci.org/oVirt/ovirt-engine-sdk-go.svg?branch=master)](https://travis-ci.org/oVirt/ovirt-engine-sdk-go)
[![Go Report Card](https://goreportcard.com/badge/github.com/oVirt/go-ovirt)](https://goreportcard.com/report/github.com/oVirt/go-ovirt)## Introduction
The oVirt Go SDK is a Go package that simplifies access to the
oVirt Engine API.> __IMPORTANT__: The code in this project is generated automatically by the [oVirt/ovirt-engine-sdk-go](https://github.com/oVirt/ovirt-engine-sdk-go). So if you want to know how to generate the code, please read the `README.md` in the [oVirt/ovirt-engine-sdk-go](https://github.com/oVirt/ovirt-engine-sdk-go) repository instead.
## Usage
To use the SDK you should import ovirtsdk package as follows:
```go
import (
ovirtsdk4 "github.com/ovirt/go-ovirt"
)
```> __IMPORTANT__: To make it easy to manage dependencies on stable go-ovirt releases, starting with go-ovirt `4.2.2`, we will move to semantic versioning. If you are still using `v4.0.x` via importing `gopkg.in/ovirt/go-ovirt.v4` or `4.2.1`, we highly recommend you to update to `4.2.2` or above. In product environment, please __NEVER__ adopt the master branch which will always be under heavy development.
>That will give you access to all the classes of the SDK, and in particular
to the `Connection` class. This is the entry point of the SDK,
and gives you access to the root of the tree of services of the API:```go
import (
"fmt"
"time"
ovirtsdk4 "github.com/ovirt/go-ovirt"
)// Create the connection to the api server
inputRawURL := "https://10.1.111.229/ovirt-engine/api"
conn, err := ovirtsdk4.NewConnectionBuilder().
URL(inputRawURL).
Username("admin@internal").
Password("qwer1234").
Insecure(true).
Compress(true).
Timeout(time.Second * 10).
Build()
if err != nil {
t.Fatalf("Make connection failed, reason: %s", err.Error())
}// Never forget to close connection
defer conn.Close()```
There are two ways of using the SDK, one is calling regular functions, which should check if error returned, the other is calling functions prefixed with `Must`, which is short and chain-function calling supported.
Calling the regular functions is recommended, because it is more accurate for catching errors.
> __IMPORTANT__: you should catch the panic errors by defining the recover-defer function.
### Regular _Recommended_
```go
import (
"fmt"
"time"
ovirtsdk4 "github.com/ovirt/go-ovirt"
)// Create the connection to the api server
inputRawURL := "https://10.1.111.229/ovirt-engine/api"
conn, err := ovirtsdk4.NewConnectionBuilder().
URL(inputRawURL).
Username("admin@internal").
Password("qwer1234").
Insecure(true).
Compress(true).
Timeout(time.Second * 10).
Build()
if err != nil {
t.Fatalf("Make connection failed, reason: %s", err.Error())
}defer conn.Close()
// Get the reference to the "clusters" service
clustersService := conn.SystemService().ClustersService()// Use the "list" method of the "clusters" service to list all the clusters of the system
clustersResponse, err := clustersService.List().Send()
if err != nil {
fmt.Printf("Failed to get cluster list, reason: %v\n", err)
return
}if clusters, ok := clustersResponse.Clusters(); ok {
// Print the datacenter names and identifiers
fmt.Printf("Cluster: (")
for _, cluster := range clusters.Slice() {
if clusterName, ok := cluster.Name(); ok {
fmt.Printf(" name: %v", clusterName)
}
if clusterId, ok := cluster.Id(); ok {
fmt.Printf(" id: %v", clusterId)
}
}
fmt.Println(")")
}```
### Must _Not-Recommended_
```go
import (
"fmt"
"time"
ovirtsdk4 "github.com/ovirt/go-ovirt"
)// Create the connection to the api server
inputRawURL := "https://10.1.111.229/ovirt-engine/api"
conn, err := ovirtsdk4.NewConnectionBuilder().
URL(inputRawURL).
Username("admin@internal").
Password("qwer1234").
Insecure(true).
Compress(true).
Timeout(time.Second * 10).
Build()
if err != nil {
t.Fatalf("Make connection failed, reason: %s", err.Error())
}defer conn.Close()
// To use `Must` methods, you should recover it if panics
defer func() {
if err := recover(); err != nil {
fmt.Printf("Panics occurs %v, try the non-Must methods to find the reason", err)
}
}()// Get the reference to the "clusters" service
clustersService := conn.SystemService().ClustersService()// Use the "list" method of the "clusters" service to list all the clusters of the system
clustersResponse := clustersService.List().MustSend()clusters := clustersResponse.MustClusters()
// Print the datacenter names and identifiers
fmt.Printf("Cluster: (")
for _, cluster := range clusters.Slice() {
fmt.Printf(" name: %v", cluster.MustName())
fmt.Printf(" id: %v", cluster.MustId())
}
fmt.Println(")")```
## More examples
You could refer to more examples under `examples/` directory.