Skip to content
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

refactor + fix #6

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 21 additions & 18 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@ import (
"context"
"encoding/json"
"fmt"
"os"
"os/signal"
"strconv"

"github.com/KittenConnect/rh-api/model"
"github.com/KittenConnect/rh-api/util"
"github.com/joho/godotenv"
amqp "github.com/rabbitmq/amqp091-go"
"os"
"strconv"
"time"
)

func failWithError(err error, formatString string, args ...any) {
if err != nil {
util.Err(fmt.Errorf(fmt.Sprintf("%s: %w",formatString), append(args, err)...).Error())
util.Err(fmt.Errorf(fmt.Sprintf("%s: %w", formatString), append(args, err)...).Error())
}
}

Expand Down Expand Up @@ -107,8 +108,18 @@ func main() {
os.Exit(-1)
}

// cancel context for whole conde
foreverCtx, foreverCancel := context.WithCancel(context.Background())

// Canal pour signaler la fin du programme
forever := make(chan bool)
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, os.Interrupt)
// catch signal
go func() {
<-sigs
fmt.Printf("You pressed ctrl + C. User interrupted infinite loop.")
foreverCancel()
}()

go func() {
for d := range msgs {
Expand All @@ -125,10 +136,6 @@ func main() {
if err != nil {
util.Warn("error creating or updating VM : %w", err)

dur, _ := time.ParseDuration("10s")
ctx, cancel := context.WithTimeout(context.Background(), dur)
defer cancel()

newMsg := msg
newMsg.FailCount--

Expand All @@ -142,8 +149,7 @@ func main() {
"x-delay": RETRY_DELAY * 1000,
}

chErr := ch.PublishWithContext(
ctx,
chErr := ch.Publish(
incomingQueue,
inQ.Name,
false,
Expand All @@ -165,16 +171,11 @@ func main() {

util.Success("VM %s is up to date", msg.Hostname)

dur, _ := time.ParseDuration("10s")
ctx, cancel := context.WithTimeout(context.Background(), dur)
defer cancel()

newMsg := msg

newMsgJson, _ := json.Marshal(newMsg)

chErr := ch.PublishWithContext(
ctx,
chErr := ch.Publish(
"",
outQ.Name,
false,
Expand All @@ -191,8 +192,10 @@ func main() {
}
}()
}
util.Info("End of queue reaches exit now !")
foreverCancel()
}()

util.Info(" [*] Waiting for messages. To exit press CTRL+C")
<-forever
<-foreverCtx.Done()
}
22 changes: 6 additions & 16 deletions model/VirtualMachine.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,11 @@ func NewVM(n *Netbox, msg Message) *VirtualMachine {
return vm
}

func (vm *VirtualMachine) Get() models.WritableVirtualMachineWithConfigContext {
// dev chnage name ?
// Get: return tableVirtualMachineWithConfigContext for vm
func (vm *VirtualMachine) Get() *models.WritableVirtualMachineWithConfigContext {
// todo: implement netbox func
return models.WritableVirtualMachineWithConfigContext{
return &models.WritableVirtualMachineWithConfigContext{
Cluster: &vm.Cluster.ID,
Name: &vm.Name,
Status: vm.Status,
Expand All @@ -50,17 +52,7 @@ func (vm *VirtualMachine) Get() models.WritableVirtualMachineWithConfigContext {
}

func (vm *VirtualMachine) Create(msg Message) (*virtualization.VirtualizationVirtualMachinesCreateCreated, error) {
conf := models.WritableVirtualMachineWithConfigContext{
Cluster: &vm.Cluster.ID,
Name: &vm.Name,
Status: vm.Status,

CustomFields: map[string]interface{}{
"kc_serial_": msg.GetSerial(),
},
}

params := virtualization.NewVirtualizationVirtualMachinesCreateParams().WithData(&conf)
params := virtualization.NewVirtualizationVirtualMachinesCreateParams().WithData(vm.Get())
return vm.n.Client.Virtualization.VirtualizationVirtualMachinesCreate(params, nil)
}

Expand All @@ -70,10 +62,8 @@ func (vm *VirtualMachine) CreateOrUpdate(msg Message) {

// Update vm infos to netbox
func (vm *VirtualMachine) Update() error {
data := vm.Get()

updateParams := &virtualization.VirtualizationVirtualMachinesPartialUpdateParams{
Data: &data,
Data: vm.Get(),
ID: vm.NetboxId,
}

Expand Down
6 changes: 3 additions & 3 deletions model/netbox.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ type Netbox struct {
}

// NewNetbox return a fresh Netbox object
func NewNetbox() Netbox {
func NewNetbox() *Netbox {
nbx := Netbox{
ctx: context.Background(),
Client: nil,

_isConnected: false,
}

return nbx
return &nbx
}

func (n *Netbox) IsConnected() bool {
Expand All @@ -54,7 +54,7 @@ func (n *Netbox) Connect() error {
}

func (n *Netbox) GetDefaultTimeout() time.Duration {
return time.Duration(30) * time.Second
return 30 * time.Second
}

func (n *Netbox) getIpAddress(ip string) *models.WritableIPAddress {
Expand Down