Select Git revision
ExerciceRoutes.ts
vmCreds2csv.go 2.09 KiB
package cmdVM
import (
"os"
"fmt"
u "nexus-client/utils"
g "nexus-client/globals"
)
type Creds2csv struct {
Name string
}
func (cmd *Creds2csv)GetName() string {
return cmd.Name
}
func (cmd *Creds2csv)GetDesc() []string {
return []string{
"Creates a CSV file with the credentials required to attach to running VMs.",
"The written CSV file contains 3 columns: VM ID;VM name;password",
"If not the VM's owner: requires VM_ATTACH VM access capability or VM_ATTACH_ANY user capability."}
}
func (cmd *Creds2csv)PrintUsage() {
for _, desc := range cmd.GetDesc() {
u.PrintlnErr(desc)
}
u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
u.PrintlnErr("USAGE: ",cmd.GetName()," [ID ...] [regex ...] csvfile")
u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
printRegexUsageDetails()
}
func (cmd *Creds2csv)Run(args []string) int {
argc := len(args)
if argc < 2 {
cmd.PrintUsage()
return 1
}
csvFile := args[argc-1]
credsList, err := getFilteredVMCredentials("/vms/attach", args[:argc-1])
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
if len(credsList) == 0 {
u.PrintlnErr("Error: VM(s) not found.")
return 1
}
// Create file
f, err := os.Create(csvFile)
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
defer f.Close()
for _, creds := range credsList {
sep := string(g.CsvFieldSeparator)
_, err := fmt.Fprintln(f, creds.ID.String()+sep+creds.Name+sep+creds.Pwd)
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
}
u.Println(csvFile+" written successfully.")
return 0
}