Skip to content

Commit

Permalink
Add user-level messages to fix #6
Browse files Browse the repository at this point in the history
  • Loading branch information
Pavel Anni committed Jan 21, 2025
1 parent 654bfcf commit fd28426
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 18 deletions.
31 changes: 14 additions & 17 deletions cmd/create_lab.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,12 @@ func createLab(lab *types.Lab) (*types.Lab, error) {
}
lab.ObjectMeta.Labels["delete_after"] = timeutil.FormatDeleteAfter(time.Now().Add(duration))

if err := labSvc.Create(lab); err != nil { // labSvc is a package variable created in root.go
fmt.Printf("Lab %s: Creating lab resources on the cloud...\n", lab.ObjectMeta.Name)
labSvc.Logger.Info("Creating new lab",
"name", lab.ObjectMeta.Name,
"nodes", len(lab.Spec.Servers))
labSvc.Logger.Debug("Lab configuration", "lab", lab) // Detailed config for debugging
if err := labSvc.Create(lab); err != nil { // labSvc is a package variable created in root.go
return nil, err
}
// get the lab again to get the status
Expand All @@ -78,35 +83,27 @@ func createLab(lab *types.Lab) (*types.Lab, error) {
return nil, err
}
lab.Status = labUpdated.Status
fmt.Printf("Creating lab %s...\n", lab.ObjectMeta.Name)
labSvc.Logger.Info("Creating new lab",
"name", lab.ObjectMeta.Name,
"nodes", len(lab.Spec.Servers))
labSvc.Logger.Debug("Lab configuration", "lab", lab) // Detailed config for debugging

if lab.Spec.Ansible.Playbook != "" {
fmt.Printf("Running Ansible playbook %s...\n", lab.Spec.Ansible.Playbook)
} else {
fmt.Println("No playbook specified. Skipping Ansible configuration.")
}

fmt.Printf("Lab %s: Creating DNS records...\n", lab.ObjectMeta.Name)
if err := addDNSRecords(lab); err != nil {
return nil, err
}
// Create ansible inventory file
fmt.Printf("Lab %s: Creating ansible inventory file...\n", lab.ObjectMeta.Name)
err = labSvc.CreateAnsibleInventoryFile(lab)
if err != nil {
return nil, err
}
// Run ansible playbook
if lab.Spec.Ansible.Playbook != "" {
fmt.Printf("Lab %s: Running Ansible playbook %s...\n", lab.ObjectMeta.Name, lab.Spec.Ansible.Playbook)
} else {
fmt.Printf("Lab %s: No playbook specified. Skipping Ansible configuration.\n", lab.ObjectMeta.Name)
}

if lab.Spec.Ansible.Playbook != "" {
err = labSvc.RunAnsiblePlaybook(lab)
if err != nil {
return nil, err
}
} else {
labSvc.Logger.Debug("No playbook specified", "lab", lab)
fmt.Println("No playbook specified. Skipping Ansible playbook.")
}
return lab, nil
}
Expand Down
16 changes: 15 additions & 1 deletion internal/lab/lab.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ func (m *ManagerSvc) Create(lab *types.Lab) error {
Name: config.DefaultAdminKeyName,
},
}
fmt.Printf("Creating lab admin key %s...\n", labAdminKeyName)
labAdminPublicKey, err := m.SshManager.CreateLocalKeyPair(labAdminKeyName)
if err != nil {
return err
Expand All @@ -115,6 +116,11 @@ func (m *ManagerSvc) Create(lab *types.Lab) error {
ttl = config.DefaultTTL
}
// Create servers
serversString := ""
for _, serverSpec := range lab.Spec.Servers {
serversString += serverSpec.Name + ", "
}
fmt.Printf("Creating %d servers: %s\n", len(lab.Spec.Servers), serversString)
specServers := lab.Spec.Servers
servers := make([]*types.Server, 0)
for _, serverSpec := range specServers {
Expand All @@ -135,6 +141,7 @@ func (m *ManagerSvc) Create(lab *types.Lab) error {
Image: serverSpec.Image,
},
}
fmt.Printf("Creating server %s...\n", s.ObjectMeta.Name)
result, err := m.Provider.CreateServer(options.ServerCreateOpts{
Name: s.ObjectMeta.Name,
Type: s.Spec.ServerType,
Expand All @@ -152,6 +159,7 @@ func (m *ManagerSvc) Create(lab *types.Lab) error {
}

// Wait for servers to be ready
fmt.Println("Waiting for servers to be ready...")
timeout := 30 * time.Minute
attempts := 20
results, err := serverchecker.CheckServers(servers, m.Logger, timeout, attempts)
Expand All @@ -164,8 +172,13 @@ func (m *ManagerSvc) Create(lab *types.Lab) error {
return fmt.Errorf("server %s not ready", result.Server.ObjectMeta.Name)
}
}

fmt.Println("Servers are ready")
// Create volumes
volumesString := ""
for _, volumeSpec := range lab.Spec.Volumes {
volumesString += volumeSpec.Name + ", "
}
fmt.Printf("Creating %d volumes: %s\n", len(lab.Spec.Volumes), volumesString)
volumes := lab.Spec.Volumes
for _, volumeSpec := range volumes {
if !volumeSpec.Automount { // if not specified, default to false
Expand All @@ -190,6 +203,7 @@ func (m *ManagerSvc) Create(lab *types.Lab) error {
Format: volumeSpec.Format,
},
}
fmt.Printf("Creating volume %s...\n", v.ObjectMeta.Name)
_, err := m.Provider.CreateVolume(options.VolumeCreateOpts{
Name: v.ObjectMeta.Name,
Size: v.Spec.Size,
Expand Down

0 comments on commit fd28426

Please sign in to comment.