Skip to content

Commit

Permalink
Merge pull request #11349 from kubevirt-bot/cherry-pick-11099-to-rele…
Browse files Browse the repository at this point in the history
…ase-1.2

[release-1.2] Follow-up #10970: Minor API fixes to get fsList disks
  • Loading branch information
kubevirt-bot committed Feb 26, 2024
2 parents 4aea5d0 + 834eb9a commit f26e45d
Show file tree
Hide file tree
Showing 13 changed files with 78 additions and 35 deletions.
1 change: 0 additions & 1 deletion api/api-rule-violations-known.list
Expand Up @@ -254,7 +254,6 @@ API rule violation: names_match,kubevirt.io/api/core/v1,LunTarget,ReadOnly
API rule violation: names_match,kubevirt.io/api/core/v1,NetworkConfiguration,NetworkInterface
API rule violation: names_match,kubevirt.io/api/core/v1,PITTimer,Enabled
API rule violation: names_match,kubevirt.io/api/core/v1,RTCTimer,Enabled
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceFileSystemDisk,BusType
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceFileSystemInfo,Filesystems
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceGuestAgentInfo,GAVersion
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceGuestOSInfo,VersionID
Expand Down
1 change: 0 additions & 1 deletion api/api-rule-violations.list
Expand Up @@ -254,7 +254,6 @@ API rule violation: names_match,kubevirt.io/api/core/v1,LunTarget,ReadOnly
API rule violation: names_match,kubevirt.io/api/core/v1,NetworkConfiguration,NetworkInterface
API rule violation: names_match,kubevirt.io/api/core/v1,PITTimer,Enabled
API rule violation: names_match,kubevirt.io/api/core/v1,RTCTimer,Enabled
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceFileSystemDisk,BusType
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceFileSystemInfo,Filesystems
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceGuestAgentInfo,GAVersion
API rule violation: names_match,kubevirt.io/api/core/v1,VirtualMachineInstanceGuestOSInfo,VersionID
Expand Down
8 changes: 3 additions & 5 deletions api/openapi-spec/swagger.json
Expand Up @@ -19733,17 +19733,15 @@
"description": "VirtualMachineInstanceFileSystemDisk represents the guest os FS disks",
"type": "object",
"required": [
"serial",
"bus-type"
"busType"
],
"properties": {
"bus-type": {
"busType": {
"type": "string",
"default": ""
},
"serial": {
"type": "string",
"default": ""
"type": "string"
}
}
},
Expand Down
1 change: 0 additions & 1 deletion pkg/virt-launcher/virtwrap/agent-poller/BUILD.bazel
Expand Up @@ -28,7 +28,6 @@ go_test(
embed = [":go_default_library"],
deps = [
"//pkg/virt-launcher/virtwrap/api:go_default_library",
"//staging/src/kubevirt.io/api/core/v1:go_default_library",
"//staging/src/kubevirt.io/client-go/testutils:go_default_library",
"//vendor/github.com/onsi/ginkgo/v2:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
Expand Down
32 changes: 25 additions & 7 deletions pkg/virt-launcher/virtwrap/agent-poller/agent_parser.go
Expand Up @@ -79,14 +79,20 @@ type User struct {
LoginTime float64 `json:"login-time"`
}

// Filesystem disk of the host
type FSDisk struct {
Serial string `json:"serial,omitempty"`
BusType string `json:"bus-type"`
}

// Filesystem of the host
type Filesystem struct {
Name string `json:"name"`
Mountpoint string `json:"mountpoint"`
Type string `json:"type"`
UsedBytes int `json:"used-bytes,omitempty"`
TotalBytes int `json:"total-bytes,omitempty"`
Disk []v1.VirtualMachineInstanceFileSystemDisk `json:"disk,omitempty"`
Name string `json:"name"`
Mountpoint string `json:"mountpoint"`
Type string `json:"type"`
UsedBytes int `json:"used-bytes,omitempty"`
TotalBytes int `json:"total-bytes,omitempty"`
Disk []FSDisk `json:"disk,omitempty"`
}

// AgentInfo from the guest VM serves the purpose
Expand Down Expand Up @@ -197,13 +203,25 @@ func parseFilesystem(agentReply string) ([]api.Filesystem, error) {
Type: fs.Type,
TotalBytes: fs.TotalBytes,
UsedBytes: fs.UsedBytes,
Disk: fs.Disk,
Disk: parseFSDisks(fs.Disk),
})
}

return convertedResult, nil
}

func parseFSDisks(fsDisks []FSDisk) []api.FSDisk {
disks := []api.FSDisk{}
for _, fsDisk := range fsDisks {
disks = append(disks, api.FSDisk{
Serial: fsDisk.Serial,
BusType: fsDisk.BusType,
})
}

return disks
}

// parseUsers from the agent response
func parseUsers(agentReply string) ([]api.User, error) {
result := []User{}
Expand Down
4 changes: 1 addition & 3 deletions pkg/virt-launcher/virtwrap/agent-poller/agent_parser_test.go
Expand Up @@ -23,8 +23,6 @@ import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"

v1 "kubevirt.io/api/core/v1"

"kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/api"
)

Expand Down Expand Up @@ -288,7 +286,7 @@ var _ = Describe("Qemu agent poller", func() {
Type: "ext",
TotalBytes: 99999,
UsedBytes: 33333,
Disk: []v1.VirtualMachineInstanceFileSystemDisk{
Disk: []api.FSDisk{
{
Serial: "testserial-1234",
BusType: "scsi",
Expand Down
19 changes: 17 additions & 2 deletions pkg/virt-launcher/virtwrap/api/deepcopy_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion pkg/virt-launcher/virtwrap/api/schema.go
Expand Up @@ -157,13 +157,18 @@ type FSFreeze struct {
Status string
}

type FSDisk struct {
Serial string
BusType string
}

type Filesystem struct {
Name string
Mountpoint string
Type string
UsedBytes int
TotalBytes int
Disk []v1.VirtualMachineInstanceFileSystemDisk
Disk []FSDisk
}

type User struct {
Expand Down
16 changes: 14 additions & 2 deletions pkg/virt-launcher/virtwrap/manager.go
Expand Up @@ -2029,7 +2029,7 @@ func (l *LibvirtDomainManager) GetGuestInfo() v1.VirtualMachineInstanceGuestAgen
FileSystemType: fs.Type,
UsedBytes: fs.UsedBytes,
TotalBytes: fs.TotalBytes,
Disk: fs.Disk,
Disk: l.parseFSDisks(fs.Disk),
})
}

Expand Down Expand Up @@ -2074,7 +2074,7 @@ func (l *LibvirtDomainManager) GetFilesystems() []v1.VirtualMachineInstanceFileS
FileSystemType: fs.Type,
UsedBytes: fs.UsedBytes,
TotalBytes: fs.TotalBytes,
Disk: fs.Disk,
Disk: l.parseFSDisks(fs.Disk),
})
}

Expand Down Expand Up @@ -2177,6 +2177,18 @@ func (l *LibvirtDomainManager) InjectLaunchSecret(vmi *v1.VirtualMachineInstance
return nil
}

func (l *LibvirtDomainManager) parseFSDisks(fsDisks []api.FSDisk) []v1.VirtualMachineInstanceFileSystemDisk {
disks := []v1.VirtualMachineInstanceFileSystemDisk{}
for _, fsDisk := range fsDisks {
disks = append(disks, v1.VirtualMachineInstanceFileSystemDisk{
Serial: fsDisk.Serial,
BusType: fsDisk.BusType,
})
}

return disks
}

// check whether VMI has a certain condition
func vmiHasCondition(vmi *v1.VirtualMachineInstance, cond v1.VirtualMachineInstanceConditionType) bool {
if vmi == nil {
Expand Down
8 changes: 4 additions & 4 deletions pkg/virt-launcher/virtwrap/manager_test.go
Expand Up @@ -2208,7 +2208,7 @@ var _ = Describe("Manager", func() {
Type: "fs",
UsedBytes: 0,
TotalBytes: 0,
Disk: []v1.VirtualMachineInstanceFileSystemDisk{
Disk: []api.FSDisk{
{
BusType: "scsi",
Serial: "testserial-1234",
Expand Down Expand Up @@ -2271,7 +2271,7 @@ var _ = Describe("Manager", func() {
Type: "fs",
UsedBytes: 0,
TotalBytes: 0,
Disk: []v1.VirtualMachineInstanceFileSystemDisk{
Disk: []api.FSDisk{
{
BusType: "scsi",
Serial: "testserial-1234",
Expand All @@ -2298,7 +2298,7 @@ var _ = Describe("Manager", func() {
Type: "fs",
UsedBytes: 0,
TotalBytes: 0,
Disk: []v1.VirtualMachineInstanceFileSystemDisk{
Disk: []api.FSDisk{
{
BusType: "scsi",
Serial: "testserial-1234",
Expand Down Expand Up @@ -2344,7 +2344,7 @@ var _ = Describe("Manager", func() {
Type: "fs",
UsedBytes: 0,
TotalBytes: 0,
Disk: []v1.VirtualMachineInstanceFileSystemDisk{
Disk: []api.FSDisk{
{
BusType: "scsi",
Serial: "testserial-1234",
Expand Down
4 changes: 2 additions & 2 deletions staging/src/kubevirt.io/api/core/v1/types.go
Expand Up @@ -2229,8 +2229,8 @@ type VirtualMachineInstanceFileSystemList struct {

// VirtualMachineInstanceFileSystemDisk represents the guest os FS disks
type VirtualMachineInstanceFileSystemDisk struct {
Serial string `json:"serial"`
BusType string `json:"bus-type"`
Serial string `json:"serial,omitempty"`
BusType string `json:"busType"`
}

// VirtualMachineInstanceFileSystem represents guest os disk
Expand Down
9 changes: 4 additions & 5 deletions staging/src/kubevirt.io/client-go/api/openapi_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion tests/vmi_configuration_test.go
Expand Up @@ -1454,7 +1454,8 @@ var _ = Describe("[sig-compute]Configurations", decorators.SigCompute, func() {
return false
}

return len(fsList.Items) > 0 && fsList.Items[0].DiskName != "" && fsList.Items[0].MountPoint != ""
return len(fsList.Items) > 0 && fsList.Items[0].DiskName != "" && fsList.Items[0].MountPoint != "" &&
len(fsList.Items[0].Disk) > 0 && fsList.Items[0].Disk[0].BusType != ""

}, 240*time.Second, 2).Should(BeTrue(), "Should have some filesystem")
})
Expand Down

0 comments on commit f26e45d

Please sign in to comment.