duckdb_parser

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CodeNoVMs          = "NO_VMS"
	CodeMissingVMID    = "MISSING_VM_ID"
	CodeMissingVMName  = "MISSING_VM_NAME"
	CodeMissingCluster = "MISSING_CLUSTER"
)

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  inventory.ResourceBreakdown
	RamGB     inventory.ResourceBreakdown
	DiskCount inventory.ResourceBreakdown
	DiskGB    inventory.ResourceBreakdown
	NicCount  inventory.ResourceBreakdown
}

AllResourceBreakdowns holds all resource breakdowns by migrability. Uses inventory.ResourceBreakdown to avoid type duplication.

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 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 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) BuildInventory added in v0.5.0

func (p *Parser) BuildInventory(ctx context.Context) (*inventory.Inventory, error)

BuildInventory constructs domain inventory from parsed data. It builds both vcenter-level and per-cluster inventories.

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) ClusterDatacenters added in v0.5.0

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

ClusterDatacenters returns a mapping of cluster name to datacenter name.

func (*Parser) ClusterObjectIDs added in v0.5.0

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

ClusterObjectIDs returns a mapping of cluster name to Object ID from vCluster sheet.

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]inventory.DiskSizeTierSummary, error)

DiskSizeTierDistribution returns VM distribution by disk size tier.

func (*Parser) DiskTypeSummary

func (p *Parser) DiskTypeSummary(ctx context.Context, filters Filters) ([]inventory.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) ([]inventory.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) NicTierDistribution added in v0.5.0

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

NicTierDistribution returns VM distribution by NIC count tier.

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) VMsWithSharedDisksCount added in v0.5.0

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

VMsWithSharedDisksCount returns count of VMs that have at least one shared disk.

func (*Parser) ValidateSchema

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

ValidateSchema checks the ingested schema for required tables, columns, and data. The table parameter specifies which table to validate VM data against (e.g., "vinfo_raw" for RVTools, "vinfo" for SQLite). 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) ClusterDatacentersQuery added in v0.5.0

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

ClusterDatacentersQuery builds the cluster to datacenter mapping query.

func (*QueryBuilder) ClusterObjectIDsQuery added in v0.5.0

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

ClusterObjectIDsQuery builds the cluster name to Object ID mapping 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) NicTierQuery added in v0.5.0

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

NicTierQuery builds the NIC count tier distribution query.

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.

func (*QueryBuilder) VMsWithSharedDisksCountQuery added in v0.5.0

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

VMsWithSharedDisksCountQuery builds the VMs with shared disks count query.

type ResourceTotals

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

ResourceTotals contains aggregated resource totals.

type ValidationIssue

type ValidationIssue struct {
	Code    string // Machine-readable code (e.g., "NO_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