duckdb_parser

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 20, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CodeNoVMs             = "NO_VMS"
	CodeMissingVMID       = "MISSING_VM_ID"
	CodeMissingVMName     = "MISSING_VM_NAME"
	CodeMissingPowerstate = "MISSING_POWERSTATE"
)

Validation codes for errors

View Source
const (
	CodeEmptyHosts      = "EMPTY_HOSTS"
	CodeEmptyDatastores = "EMPTY_DATASTORES"
	CodeEmptyNetworks   = "EMPTY_NETWORKS"
	CodeEmptyCPU        = "EMPTY_CPU"
	CodeEmptyMemory     = "EMPTY_MEMORY"
	CodeEmptyDisks      = "EMPTY_DISKS"
	CodeEmptyNICs       = "EMPTY_NICS"
)

Validation codes for warnings

Variables

This section is empty.

Functions

func InsertConcerns

func InsertConcerns(ctx context.Context, db *sql.DB, builder *ConcernValuesBuilder) error

InsertConcerns executes the bulk insert of concerns into the database.

Types

type AllResourceBreakdowns

type AllResourceBreakdowns struct {
	CpuCores  VMResourceBreakdown
	RamGB     VMResourceBreakdown
	DiskCount VMResourceBreakdown
	DiskGB    VMResourceBreakdown
	NicCount  VMResourceBreakdown
}

AllResourceBreakdowns holds all resource breakdowns by migrability.

type ConcernValuesBuilder

type ConcernValuesBuilder struct {
	// contains filtered or unexported fields
}

ConcernValuesBuilder builds SQL VALUES for bulk inserting concerns.

func NewConcernValuesBuilder

func NewConcernValuesBuilder() *ConcernValuesBuilder

NewConcernValuesBuilder creates a new ConcernValuesBuilder.

func (*ConcernValuesBuilder) Append

func (cb *ConcernValuesBuilder) Append(vmID string, concerns ...models.Concern) *ConcernValuesBuilder

Append adds concerns for a VM to the builder.

func (*ConcernValuesBuilder) Build

func (cb *ConcernValuesBuilder) Build() string

Build returns the VALUES clause string, or empty string if no values.

func (*ConcernValuesBuilder) IsEmpty

func (cb *ConcernValuesBuilder) IsEmpty() bool

IsEmpty returns true if no concerns have been added.

type DiskSizeTierSummary

type DiskSizeTierSummary struct {
	VMCount     int
	TotalSizeTB float64
}

DiskSizeTierSummary contains VM count and total size for a disk size tier.

type DiskTypeSummary

type DiskTypeSummary struct {
	Type        string
	VMCount     int
	TotalSizeTB float64
}

DiskTypeSummary contains disk usage aggregated by datastore type.

type Filters

type Filters struct {
	Cluster    string // filter by cluster name
	VmId       string // filter by vm ID
	OS         string // filter by OS name (for VMs)
	PowerState string // filter by power state (for VMs)
}

Filters for querying data.

type MigrationIssue

type MigrationIssue struct {
	ID         string
	Label      string
	Category   string
	Assessment string
	Count      int
}

MigrationIssue represents an aggregated migration issue.

type Options

type Options struct {
	Limit  int // max results (0 = unlimited)
	Offset int // skip first N results
}

Options for pagination.

type Parser

type Parser struct {
	// contains filtered or unexported fields
}

Parser provides methods for parsing and querying VMware inventory data.

func New

func New(db *sql.DB, validator Validator) *Parser

New creates a new Parser with optional validator.

func (*Parser) AllocatedMemoryMB

func (p *Parser) AllocatedMemoryMB(ctx context.Context, filters Filters) (int, error)

AllocatedMemoryMB returns sum of memory (MB) for powered-on VMs.

func (*Parser) AllocatedVCPUs

func (p *Parser) AllocatedVCPUs(ctx context.Context, filters Filters) (int, error)

AllocatedVCPUs returns sum of vCPUs for powered-on VMs.

func (*Parser) CPUTierDistribution

func (p *Parser) CPUTierDistribution(ctx context.Context, filters Filters) (map[string]int, error)

CPUTierDistribution returns VM distribution by CPU tier.

func (*Parser) Clusters

func (p *Parser) Clusters(ctx context.Context) ([]string, error)

Clusters returns a list of unique cluster names.

func (*Parser) ClustersPerDatacenter

func (p *Parser) ClustersPerDatacenter(ctx context.Context) ([]int, error)

ClustersPerDatacenter returns cluster count per datacenter.

func (*Parser) DatacenterCount

func (p *Parser) DatacenterCount(ctx context.Context) (int, error)

DatacenterCount returns count of unique datacenters.

func (*Parser) Datastores

func (p *Parser) Datastores(ctx context.Context, filters Filters, options Options) ([]models.Datastore, error)

Datastores returns datastores with optional filters and pagination.

func (*Parser) DiskSizeTierDistribution

func (p *Parser) DiskSizeTierDistribution(ctx context.Context, filters Filters) (map[string]DiskSizeTierSummary, error)

DiskSizeTierDistribution returns VM distribution by disk size tier.

func (*Parser) DiskTypeSummary

func (p *Parser) DiskTypeSummary(ctx context.Context, filters Filters) ([]DiskTypeSummary, error)

DiskTypeSummary returns disk usage aggregated by datastore type.

func (*Parser) HostPowerStateCounts

func (p *Parser) HostPowerStateCounts(ctx context.Context, filters Filters) (map[string]int, error)

HostPowerStateCounts returns host power state distribution.

func (*Parser) Hosts

func (p *Parser) Hosts(ctx context.Context, filters Filters, options Options) ([]models.Host, error)

Hosts returns hosts with optional filters and pagination.

func (*Parser) IngestRvTools

func (p *Parser) IngestRvTools(ctx context.Context, excelFile string) (ValidationResult, error)

IngestRvTools ingests data from an RVTools Excel file, runs VM validation if a validator is configured, and validates the schema for required tables/columns. Returns a ValidationResult with errors (fatal) and warnings (non-fatal). If ValidationResult.HasErrors() is true, the inventory cannot be built.

func (*Parser) IngestSqlite

func (p *Parser) IngestSqlite(ctx context.Context, sqliteFile string) (ValidationResult, error)

IngestSqlite ingests data from a forklift SQLite database, runs VM validation if a validator is configured, and validates the schema for required tables/columns. Returns a ValidationResult with errors (fatal) and warnings (non-fatal). If ValidationResult.HasErrors() is true, the inventory cannot be built.

func (*Parser) Init

func (p *Parser) Init() error

Init creates the database schema.

func (*Parser) MemoryTierDistribution

func (p *Parser) MemoryTierDistribution(ctx context.Context, filters Filters) (map[string]int, error)

MemoryTierDistribution returns VM distribution by memory tier.

func (*Parser) MigratableVMCount

func (p *Parser) MigratableVMCount(ctx context.Context, filters Filters) (int, error)

MigratableVMCount returns count of VMs without Critical concerns.

func (*Parser) MigratableWithWarningsVMCount

func (p *Parser) MigratableWithWarningsVMCount(ctx context.Context, filters Filters) (int, error)

MigratableWithWarningsVMCount returns count of VMs with Warning but no Critical concerns.

func (*Parser) MigrationIssues

func (p *Parser) MigrationIssues(ctx context.Context, filters Filters, category string) ([]MigrationIssue, error)

MigrationIssues returns aggregated migration issues by category.

func (*Parser) Networks

func (p *Parser) Networks(ctx context.Context, filters Filters, options Options) ([]models.Network, error)

Networks returns networks with optional filters and pagination.

func (*Parser) NotMigratableVMCount

func (p *Parser) NotMigratableVMCount(ctx context.Context, filters Filters) (int, error)

NotMigratableVMCount returns count of VMs with Critical concerns.

func (*Parser) OsSummary

func (p *Parser) OsSummary(ctx context.Context, filters Filters) ([]models.Os, error)

OsSummary returns OS distribution with optional filters.

func (*Parser) PowerStateCounts

func (p *Parser) PowerStateCounts(ctx context.Context, filters Filters) (map[string]int, error)

PowerStateCounts returns VM power state distribution.

func (*Parser) ResourceBreakdowns

func (p *Parser) ResourceBreakdowns(ctx context.Context, filters Filters) (AllResourceBreakdowns, error)

ResourceBreakdowns returns all resource breakdowns by migrability status.

func (*Parser) TotalHostCPUCores

func (p *Parser) TotalHostCPUCores(ctx context.Context, filters Filters) (int, error)

TotalHostCPUCores returns sum of physical CPU cores across hosts.

func (*Parser) TotalHostMemoryMB

func (p *Parser) TotalHostMemoryMB(ctx context.Context, filters Filters) (int, error)

TotalHostMemoryMB returns sum of host memory (MB).

func (*Parser) TotalResources

func (p *Parser) TotalResources(ctx context.Context, filters Filters) (ResourceTotals, error)

TotalResources returns aggregated resource totals.

func (*Parser) VCenterID

func (p *Parser) VCenterID(ctx context.Context) (string, error)

VCenterID returns the vCenter UUID.

func (*Parser) VMCount

func (p *Parser) VMCount(ctx context.Context, filters Filters) (int, error)

VMCount returns the count of VMs with optional filters.

func (*Parser) VMCountByNetwork

func (p *Parser) VMCountByNetwork(ctx context.Context, filters Filters) (map[string]int, error)

VMCountByNetwork returns VM count per network.

func (*Parser) VMs

func (p *Parser) VMs(ctx context.Context, filters Filters, options Options) ([]models.VM, error)

VMs returns VMs with optional filters and pagination.

func (*Parser) ValidateSchema

func (p *Parser) ValidateSchema(ctx context.Context) ValidationResult

ValidateSchema checks the ingested schema for required tables, columns, and data. It returns a ValidationResult with errors (fatal) and warnings (non-fatal).

type QueryBuilder

type QueryBuilder struct{}

QueryBuilder builds SQL queries from templates.

func NewBuilder

func NewBuilder() *QueryBuilder

NewBuilder creates a new Builder.

func (*QueryBuilder) AllocatedMemoryQuery

func (b *QueryBuilder) AllocatedMemoryQuery(filters Filters) (string, error)

AllocatedMemoryQuery builds the allocated memory query.

func (*QueryBuilder) AllocatedVCPUsQuery

func (b *QueryBuilder) AllocatedVCPUsQuery(filters Filters) (string, error)

AllocatedVCPUsQuery builds the allocated vCPUs query.

func (*QueryBuilder) CPUTierQuery

func (b *QueryBuilder) CPUTierQuery(filters Filters) (string, error)

CPUTierQuery builds the CPU tier distribution query.

func (*QueryBuilder) ClustersPerDatacenterQuery

func (b *QueryBuilder) ClustersPerDatacenterQuery() (string, error)

ClustersPerDatacenterQuery builds the clusters per datacenter query.

func (*QueryBuilder) ClustersQuery

func (b *QueryBuilder) ClustersQuery() (string, error)

ClustersQuery builds the clusters query.

func (*QueryBuilder) CreateSchemaQuery

func (b *QueryBuilder) CreateSchemaQuery() (string, error)

CreateSchemaQuery returns queries to create all RVTools tables with proper schema.

func (*QueryBuilder) DatacenterCountQuery

func (b *QueryBuilder) DatacenterCountQuery() (string, error)

DatacenterCountQuery builds the datacenter count query.

func (*QueryBuilder) DatastoreQuery

func (b *QueryBuilder) DatastoreQuery(filters Filters, options Options) (string, error)

DatastoreQuery builds the datastore query with filters and pagination.

func (*QueryBuilder) DiskSizeTierQuery

func (b *QueryBuilder) DiskSizeTierQuery(filters Filters) (string, error)

DiskSizeTierQuery builds the disk size tier distribution query.

func (*QueryBuilder) DiskTypeSummaryQuery

func (b *QueryBuilder) DiskTypeSummaryQuery(filters Filters) (string, error)

DiskTypeSummaryQuery builds the disk type summary query.

func (*QueryBuilder) HostPowerStateCountsQuery

func (b *QueryBuilder) HostPowerStateCountsQuery(filters Filters) (string, error)

HostPowerStateCountsQuery builds the host power state counts query.

func (*QueryBuilder) HostQuery

func (b *QueryBuilder) HostQuery(filters Filters, options Options) (string, error)

HostQuery builds the host query with filters and pagination.

func (*QueryBuilder) IngestRvtoolsQuery

func (b *QueryBuilder) IngestRvtoolsQuery(filePath string) (string, error)

IngestRvtoolsQuery returns a query that inserts data from an RVTools Excel file into schema tables.

func (*QueryBuilder) IngestSqliteQuery

func (b *QueryBuilder) IngestSqliteQuery(filePath string) (string, error)

IngestSqliteQuery returns a query that creates RVTools-shaped tables from a forklift SQLite database.

func (*QueryBuilder) MemoryTierQuery

func (b *QueryBuilder) MemoryTierQuery(filters Filters) (string, error)

MemoryTierQuery builds the memory tier distribution query.

func (*QueryBuilder) MigratableCountQuery

func (b *QueryBuilder) MigratableCountQuery(filters Filters) (string, error)

MigratableCountQuery builds the migratable VMs count query.

func (*QueryBuilder) MigratableWithWarningsCountQuery

func (b *QueryBuilder) MigratableWithWarningsCountQuery(filters Filters) (string, error)

MigratableWithWarningsCountQuery builds the migratable with warnings count query.

func (*QueryBuilder) MigrationIssuesQuery

func (b *QueryBuilder) MigrationIssuesQuery(filters Filters, category string) (string, error)

MigrationIssuesQuery builds the migration issues query.

func (*QueryBuilder) NetworkQuery

func (b *QueryBuilder) NetworkQuery(filters Filters, options Options) (string, error)

NetworkQuery builds the network query with filters and pagination.

func (*QueryBuilder) NotMigratableCountQuery

func (b *QueryBuilder) NotMigratableCountQuery(filters Filters) (string, error)

NotMigratableCountQuery builds the not migratable VMs count query.

func (*QueryBuilder) OsQuery

func (b *QueryBuilder) OsQuery(filters Filters) (string, error)

OsQuery builds the OS summary query with filters.

func (*QueryBuilder) PowerStateCountsQuery

func (b *QueryBuilder) PowerStateCountsQuery(filters Filters) (string, error)

PowerStateCountsQuery builds the power state counts query.

func (*QueryBuilder) ResourceBreakdownsQuery

func (b *QueryBuilder) ResourceBreakdownsQuery(filters Filters) (string, error)

ResourceBreakdownsQuery builds the resource breakdowns query.

func (*QueryBuilder) ResourceTotalsQuery

func (b *QueryBuilder) ResourceTotalsQuery(filters Filters) (string, error)

ResourceTotalsQuery builds the resource totals query.

func (*QueryBuilder) TotalHostCPUsQuery

func (b *QueryBuilder) TotalHostCPUsQuery(filters Filters) (string, error)

TotalHostCPUsQuery builds the total host CPUs query.

func (*QueryBuilder) TotalHostMemoryQuery

func (b *QueryBuilder) TotalHostMemoryQuery(filters Filters) (string, error)

TotalHostMemoryQuery builds the total host memory query.

func (*QueryBuilder) VCenterQuery

func (b *QueryBuilder) VCenterQuery() (string, error)

VCenterQuery builds the vCenter ID query.

func (*QueryBuilder) VMCountByNetworkQuery

func (b *QueryBuilder) VMCountByNetworkQuery(filters Filters) (string, error)

VMCountByNetworkQuery builds the VM count by network query.

func (*QueryBuilder) VMCountQuery

func (b *QueryBuilder) VMCountQuery(filters Filters) (string, error)

VMCountQuery builds the VM count query with filters.

func (*QueryBuilder) VMQuery

func (b *QueryBuilder) VMQuery(filters Filters, options Options) (string, error)

VMQuery builds the VM query with filters and pagination.

type ResourceTotals

type ResourceTotals struct {
	TotalCPUCores  int
	TotalRAMGB     int
	TotalDiskCount int
	TotalDiskGB    int
	TotalNICCount  int
}

ResourceTotals contains aggregated resource totals.

type VMResourceBreakdown

type VMResourceBreakdown struct {
	Total                          int
	TotalForMigratable             int
	TotalForMigratableWithWarnings int
	TotalForNotMigratable          int
}

VMResourceBreakdown contains resource totals split by migrability status.

type ValidationIssue

type ValidationIssue struct {
	Code    string // Machine-readable code (e.g., "MISSING_VMS", "EMPTY_HOSTS")
	Table   string // Affected table name
	Column  string // Affected column name (if applicable)
	Message string // Human-readable description
}

ValidationIssue represents a single validation problem.

type ValidationResult

type ValidationResult struct {
	Errors   []ValidationIssue
	Warnings []ValidationIssue
}

ValidationResult contains errors and warnings from schema validation. Errors indicate the inventory cannot be built. Warnings indicate the inventory can be built but with missing data.

func (ValidationResult) Error

func (v ValidationResult) Error() error

Error returns a combined error message if there are errors, nil otherwise.

func (ValidationResult) HasErrors

func (v ValidationResult) HasErrors() bool

HasErrors returns true if there are any validation errors.

func (ValidationResult) HasWarnings

func (v ValidationResult) HasWarnings() bool

HasWarnings returns true if there are any validation warnings.

func (ValidationResult) IsValid

func (v ValidationResult) IsValid() bool

IsValid returns true if there are no errors (warnings are acceptable).

type Validator

type Validator interface {
	Validate(ctx context.Context, vm models.VM) ([]models.Concern, error)
}

Validator interface for OPA validation. Returns slice of concerns (a VM can have multiple).

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL