Go examples¶
Generated from eve-iac OpenAPI/semantics. Do not edit manually.
Task-oriented examples using the current public SDK. These snippets are generated with the API reference.
Import versus from_eve¶
- Import (
importProject/import_project/ImportProject) clones an existing EVE source lab into a new IaC project and a managed working copy. It must not mutatesource_lab. - from_eve is
reconcileProjectwithdirection: "from_eve". It updates files in an existing project from that project's managed lab. It is not Import.
Create a client¶
client, err := eveiac.NewClient(eveiac.Config{
URL: "https://eve.example:8787",
Token: "",
CAPEM: caPEM,
TimeoutMs: 15000,
})
Authenticate / login¶
anon, err := eveiac.NewClient(eveiac.Config{URL: url, CAPEM: caPEM})
session, err := anon.Login(ctx, eveiac.LoginRequest{Username: "admin", Password: "secret"})
token := ""
if session != nil && session.Token != nil {
token = *session.Token
}
client, err := eveiac.NewClient(eveiac.Config{URL: url, Token: token, CAPEM: caPEM})
Get session¶
session, err := client.GetSession(ctx)
List templates¶
templates, err := client.ListTemplates(ctx, nil)
listed, err := client.ListTemplates(ctx, &eveiac.ListTemplatesQuery{Provisioned: eveiac.Ptr("true")})
Import an existing EVE-NG lab¶
imported, err := client.ImportProject(ctx, eveiac.ImportProjectRequest{
Lab: "/IaC/example.unl",
Manifest: eveiac.Ptr(manifest),
YAML: eveiac.Ptr(yaml),
Files: files,
})
// Import clones source_lab. It is not reconcile from_eve.
Validate¶
result, err := client.ValidateProject(ctx, eveiac.ValidateProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files})
Plan¶
plan, err := client.PlanProject(ctx, eveiac.PlanProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files})
Deploy¶
deployed, err := client.DeployProject(ctx, eveiac.DeployProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files})
Reconcile to_eve¶
applied, err := client.ReconcileProject(ctx, eveiac.ReconcileProjectRequest{
Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files, Direction: eveiac.Ptr("to_eve"),
})
Reconcile from_eve¶
pulled, err := client.ReconcileProject(ctx, eveiac.ReconcileProjectRequest{
Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files, Direction: eveiac.Ptr("from_eve"),
})
Status¶
status, err := client.GetProjectStatus(ctx, eveiac.GetProjectStatusRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files})
Inspect¶
observed, err := client.InspectProject(ctx, eveiac.InspectProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files})
Start nodes¶
result, err := client.ExecProject(ctx, eveiac.ExecProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files, Action: "start"})
Stop nodes¶
result, err := client.ExecProject(ctx, eveiac.ExecProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files, Action: "stop"})
Wipe nodes¶
result, err := client.ExecProject(ctx, eveiac.ExecProjectRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files, Action: "wipe"})
List consoles¶
consoles, err := client.ListProjectConsoles(ctx, eveiac.ListProjectConsolesRequest{Lab: eveiac.Ptr(lab), Manifest: eveiac.Ptr(manifest), YAML: eveiac.Ptr(yaml), Files: files})
Execute a console command¶
data, err := client.ExecConsole(ctx, eveiac.ExecConsoleRequest{Lab: eveiac.Ptr(lab), Node: eveiac.Ptr("n_1"), Command: eveiac.Ptr("show version")})
Stream console¶
attached, err := client.AttachConsole(ctx, eveiac.AttachConsoleRequest{Lab: eveiac.Ptr(lab), Node: eveiac.Ptr("n_1")})
ticket := ""
if attached != nil && attached.Stream != nil {
ticket = eveiac.ConsoleStreamTicket(*attached.Stream)
}
conn, err := client.StreamConsole(ctx, ticket)
Error handling¶
session, err := client.GetSession(ctx)
if err != nil {
if eveiac.IsAuthError(err) {
return err
}
return err
}
_ = session