Skip to content

Commit

Permalink
The description field is not imported (#40)
Browse files Browse the repository at this point in the history
Related to: harvester/harvester#6464

Signed-off-by: Volker Theile <vtheile@suse.com>
votdev authored Oct 7, 2024
1 parent 03a8ef0 commit 0eff95e
Showing 1 changed file with 28 additions and 9 deletions.
37 changes: 28 additions & 9 deletions pkg/source/openstack/client.go
Original file line number Diff line number Diff line change
@@ -34,11 +34,12 @@ import (
)

const (
NotUniqueName = "notUniqueName"
NotServerFound = "noServerFound"
defaultInterval = 10 * time.Second
defaultCount = 30
pollingTimeout = 2 * 60 * 60 // in seconds
NotUniqueName = "notUniqueName"
NotServerFound = "noServerFound"
defaultInterval = 10 * time.Second
defaultCount = 30
pollingTimeout = 2 * 60 * 60 // in seconds
annotationDescription = "field.cattle.io/description"
)

type Client struct {
@@ -54,6 +55,15 @@ type ExtendedVolume struct {
VolumeImageMetadata map[string]string `json:"volume_image_metadata,omitempty"`
}

// ExtendedServer The original `Server` structure does not contain the `Description` field.
// References:
// - https://github.com/gophercloud/gophercloud/pull/1505
// - https://docs.openstack.org/api-ref/compute/?expanded=list-all-metadata-detail%2Ccreate-server-detail#show-server-details
type ExtendedServer struct {
servers.Server
Description string `json:"description,omitempty"`
}

// NewClient will generate a GopherCloud client
func NewClient(ctx context.Context, endpoint string, region string, secret *corev1.Secret) (*Client, error) {
username, ok := secret.Data["username"]
@@ -332,7 +342,7 @@ func (c *Client) GenerateVirtualMachine(vm *migration.VirtualMachineImport) (*ku
return nil, fmt.Errorf("error looking up flavor: %v", err)
}

uefi, tpm, secureboot, err := c.ImageFirmwareSettings(vmObj)
uefi, tpm, secureboot, err := c.ImageFirmwareSettings(&vmObj.Server)
if err != nil {
return nil, fmt.Errorf("error getting firware settings: %v", err)
}
@@ -349,6 +359,13 @@ func (c *Client) GenerateVirtualMachine(vm *migration.VirtualMachineImport) (*ku
},
}

if vmObj.Description != "" {
if newVM.GetAnnotations() == nil {
newVM.Annotations = make(map[string]string)
}
newVM.ObjectMeta.Annotations[annotationDescription] = vmObj.Description
}

vmSpec := kubevirt.VirtualMachineSpec{
RunStrategy: &[]kubevirt.VirtualMachineRunStrategy{kubevirt.RunStrategyRerunOnFailure}[0],
Template: &kubevirt.VirtualMachineInstanceTemplateSpec{
@@ -562,13 +579,15 @@ func (c *Client) checkOrGetUUID(input string) (string, error) {
return filteredServers[0].ID, nil
}

func (c *Client) findVM(name string) (*servers.Server, error) {
func (c *Client) findVM(name string) (*ExtendedServer, error) {
parsedUUID, err := c.checkOrGetUUID(name)
if err != nil {
return nil, err
}
return servers.Get(c.computeClient, parsedUUID).Extract()

sr := servers.Get(c.computeClient, parsedUUID)
var s ExtendedServer
err = sr.ExtractInto(&s)
return &s, err
}

type networkInfo struct {

0 comments on commit 0eff95e

Please sign in to comment.