vm

package
v0.0.50 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2025 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const AzureArmCompute = "azure-arm-compute"
View Source
const (
	MIN_WINDOWS_OS_DISK_SIZE = 200
)

Variables

This section is empty.

Functions

func ExtractResourceGroupFromID

func ExtractResourceGroupFromID(ctx context.Context, id string) string

func FromCloudyVirtualMachine

func FromCloudyVirtualMachine(ctx context.Context, cloudyVM *models.VirtualMachine) armcompute.VirtualMachine

func IsAvailable

func IsAvailable(restrictions []*armcompute.ResourceSKURestrictions) bool

func IsInLocation

func IsInLocation(region string, locations []*string) bool

func LongIdToShortId

func LongIdToShortId(longId string) string

func SizeFromResource

func SizeFromResource(ctx context.Context, res *armcompute.ResourceSKU) *cloudyvm.VmSize

func ToCloudyVirtualMachine

func ToCloudyVirtualMachine(ctx context.Context, azVM *armcompute.VirtualMachine) *models.VirtualMachine

func ToCloudyVirtualMachineLocation

func ToCloudyVirtualMachineLocation(location *string) *models.VirtualMachineLocation

func ToCloudyVirtualMachineSize

func ToCloudyVirtualMachineSize(ctx context.Context, resource *armcompute.ResourceSKU) *models.VirtualMachineSize

func UpdateCloudyVirtualMachine

func UpdateCloudyVirtualMachine(vm *models.VirtualMachine, responseVirtualMachine armcompute.VirtualMachine) error

func VMAddTag

func VMAddTag(ctx context.Context)

func VMGetPowerState

func VMGetPowerState(vm *armcompute.VirtualMachine) string

Types

type AzureVMController

type AzureVMController struct {
	Vault  *keyvault.KeyVault
	Client *armcompute.VirtualMachinesClient
	Usage  *armcompute.UsageClient
	Config *AzureVMControllerConfig
	// contains filtered or unexported fields
}

func NewAzureVMController

func NewAzureVMController(ctx context.Context, config *AzureVMControllerConfig) (*AzureVMController, error)

func (*AzureVMController) ConfigureDiskSize

func (vmc *AzureVMController) ConfigureDiskSize(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (int32, error)

func (*AzureVMController) ConfigureVmOsDiskOsTypeType

func (*AzureVMController) ConfigureVmOsProfile

func (*AzureVMController) CreateNIC

CreateNIC - Creates the Network Interface for the virtual machine. It mimics the terraform code listed below. The elements used by this method are: - VM Name / ID (from vm) - Region (from factory) - Resource Group (from factory) - Subnet ID (from vm)

Once created the NIC has an ID and an IP address that we care about. The VirtualMachineConfiguration input is mutated to add the appropriate information.

 az network nic create \
 	--resource-group go-on-azure  \
	--vnet-name go-on-azure-vmVNET \
	--subnet go-on-azure-vmSubnet \
	--name uvm-gotest-ip
resource "azurerm_network_interface" "main-nic" {
    name                      = join("-", [var.vdi-name, random_string.random.result])
    location                  = data.azurerm_resource_group.main-rg.location
    resource_group_name       = data.azurerm_resource_group.main-rg.name

	ip_configuration {
		name                          = join("-", [var.vdi-name, "IP"])
		subnet_id                     = data.azurerm_subnet.main-subnet.id
		private_ip_address_allocation = "Dynamic"
    }
}

NOT WORKING YET

func (*AzureVMController) CreateNSG

data "azurerm_network_security_group" "vdi-security-group" {
    name = var.vdi-nsg
    resource_group_name = data.azurerm_resource_group.main-rg.name
}

func (*AzureVMController) CreateVirtualMachine

func (vmc *AzureVMController) CreateVirtualMachine(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error

CreateVirtualMachine

resource "azurerm_linux_virtual_machine" "main-vm" {
    name                    = var.vdi-name
    computer_name           = var.vdi-name
    admin_username          = "salt"
    resource_group_name     = var.app-rg-name
    location                = var.def-location
    size                    = var.vdi-size
    source_image_id         = "/subscriptions/${var.subscription-id}/resourceGroups/${var.app-rg-name}/providers/Microsoft.Compute/galleries/${var.source-image-gallery-name}/images/${var.source-image}/versions/${var.source-image-version}"
    network_interface_ids   = [
        azurerm_network_interface.main-nic.id,
    ]

    admin_ssh_key {
        username = "salt"
        public_key = file("${path.module}/vdi-terraform_id_rsa.pub")
    }

    os_disk {
        caching              = "ReadWrite"
        storage_account_type = "Standard_LRS"
    }

    tags = {
        Application            = "SKYBORG"
        "Functional Area "     = "VDI"
        "User Principle Name"  = var.user-principle-name
    }
}

func (*AzureVMController) DeleteNIC

func (vmc *AzureVMController) DeleteNIC(ctx context.Context, vmId string, nicName string) error

func (*AzureVMController) DeleteVM

func (*AzureVMController) DeleteVMOSDisk

func (*AzureVMController) FindBestSubnet

func (vmc *AzureVMController) FindBestSubnet(ctx context.Context, availableSubnets []string) (string, error)

Finds the best subnet based on IP availabilty

func (*AzureVMController) GetAvailableIPS

func (vmc *AzureVMController) GetAvailableIPS(ctx context.Context, subnet string) (int, error)

Finds the best subnet based on IP availabilty

func (*AzureVMController) GetLatestImageVersion

func (vmc *AzureVMController) GetLatestImageVersion(ctx context.Context, imageName string) (string, error)

func (*AzureVMController) GetLimits

func (*AzureVMController) GetNIC

Find NIC if it already exists

func (*AzureVMController) GetNSG

func (*AzureVMController) GetVM

Find VM if it already exists

func (*AzureVMController) GetVMSize

func (vmc *AzureVMController) GetVMSize(ctx context.Context, size string) (*cloudyvm.VmSize, error)

func (*AzureVMController) GetVMSizes

func (vmc *AzureVMController) GetVMSizes(ctx context.Context) (map[string]*cloudyvm.VmSize, error)

func (*AzureVMController) GetVmOsDisk

func (*AzureVMController) ListAll

func (*AzureVMController) ListWithTag

func (vmc *AzureVMController) ListWithTag(ctx context.Context, tag string) ([]*cloudyvm.VirtualMachineStatus, error)

func (*AzureVMController) SetState

func (*AzureVMController) Start

func (vmc *AzureVMController) Start(ctx context.Context, vmName string, wait bool) error

func (*AzureVMController) Status

func (*AzureVMController) Stop

func (vmc *AzureVMController) Stop(ctx context.Context, vmName string, wait bool) error

func (*AzureVMController) Terminate

func (vmc *AzureVMController) Terminate(ctx context.Context, vmName string, wait bool) error

func (*AzureVMController) ValidateConfiguration

func (vmc *AzureVMController) ValidateConfiguration(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error

type AzureVMControllerConfig

type AzureVMControllerConfig struct {
	cloudyazure.AzureCredentials
	SubscriptionID string
	ResourceGroup  string

	// ??
	NetworkResourceGroup            string // From Environment Variable
	SourceImageGalleryResourceGroup string
	SourceImageGalleryName          string   // From Environment Variable
	Vnet                            string   // From Environment Variable
	AvailableSubnets                []string // From Environment Variable
	NetworkSecurityGroupName        string   // From Environment Variable
	NetworkSecurityGroupID          string   // From Environment Variable
	// SaltCmd                         string   // From Environment Variable
	VaultURL string

	DomainControllerOverride string
	DomainControllers        []*string // From Environment Variable

	LogBody bool
}

type AzureVMControllerFactory

type AzureVMControllerFactory struct{}

func (*AzureVMControllerFactory) Create

func (f *AzureVMControllerFactory) Create(cfg interface{}) (cloudyvm.VMController, error)

func (*AzureVMControllerFactory) FromEnv

func (f *AzureVMControllerFactory) FromEnv(env *cloudy.Environment) (interface{}, error)

type AzureVirtualMachineManager

type AzureVirtualMachineManager struct {
	LogBody bool
	// contains filtered or unexported fields
}

func (*AzureVirtualMachineManager) Configure

func (vmm *AzureVirtualMachineManager) Configure(ctx context.Context) error

func (*AzureVirtualMachineManager) Create

func (*AzureVirtualMachineManager) CreateNic

func (*AzureVirtualMachineManager) Deallocate

func (vmm *AzureVirtualMachineManager) Deallocate(ctx context.Context, vmName string) error

func (*AzureVirtualMachineManager) Delete

func (vmm *AzureVirtualMachineManager) Delete(ctx context.Context, vmId string) error

func (*AzureVirtualMachineManager) DeleteDisk

func (vmm *AzureVirtualMachineManager) DeleteDisk(ctx context.Context, diskName string) error

func (*AzureVirtualMachineManager) DeleteNic

func (*AzureVirtualMachineManager) DeleteNics

func (*AzureVirtualMachineManager) GetAll

func (vmm *AzureVirtualMachineManager) GetAll(ctx context.Context, filter string, attrs []string, includeState bool) (*[]models.VirtualMachine, error)

Queries Azure for the details of all VMs.

If includeState is true, this will also retrieve the state of the VMs (running, stopped, etc.)
If includeState is false, vm.State will be an empty string

func (*AzureVirtualMachineManager) GetAllDisks

func (*AzureVirtualMachineManager) GetAllNics

func (*AzureVirtualMachineManager) GetAllSizes

func (*AzureVirtualMachineManager) GetAllVmDisks

func (vmm *AzureVirtualMachineManager) GetAllVmDisks(ctx context.Context, vmId string) ([]*models.VirtualMachineDisk, error)

func (*AzureVirtualMachineManager) GetById

func (vmm *AzureVirtualMachineManager) GetById(ctx context.Context, id string, includeState bool) (*models.VirtualMachine, error)

Queries Azure for the details of a single VM.

If includeState is true, this will also retrieve the state of the VM (running, stopped, etc.)
If includeState is false, vm.State will be an empty string

func (*AzureVirtualMachineManager) GetLatestImageVersion

func (vmm *AzureVirtualMachineManager) GetLatestImageVersion(ctx context.Context, imageName string) (string, error)

This function was unused in v1 It would need the config to have the source image gallery name in it

func (*AzureVirtualMachineManager) GetNics

func (*AzureVirtualMachineManager) GetOsDisk

func (*AzureVirtualMachineManager) GetSizesForTemplate

func (vmm *AzureVirtualMachineManager) GetSizesForTemplate(ctx context.Context, template models.VirtualMachineTemplate) (
	matches map[string]*models.VirtualMachineSize,
	worse map[string]*models.VirtualMachineSize,
	better map[string]*models.VirtualMachineSize,
	err error)

func (*AzureVirtualMachineManager) GetSizesWithUsage

func (vmm *AzureVirtualMachineManager) GetSizesWithUsage(ctx context.Context) (map[string]*models.VirtualMachineSize, error)

func (*AzureVirtualMachineManager) GetUsage

func (*AzureVirtualMachineManager) RunCommand

func (vmm *AzureVirtualMachineManager) RunCommand(ctx context.Context, vmId string, script string) error

func (*AzureVirtualMachineManager) RunPowershell

func (vmm *AzureVirtualMachineManager) RunPowershell(ctx context.Context, vmID, script string) error

func (*AzureVirtualMachineManager) Start

func (vmm *AzureVirtualMachineManager) Start(ctx context.Context, vmName string) error

func (*AzureVirtualMachineManager) Stop

func (vmm *AzureVirtualMachineManager) Stop(ctx context.Context, vmName string) error

func (*AzureVirtualMachineManager) Update

type ScoredVMSize

type ScoredVMSize struct {
	Score float64
	Size  *models.VirtualMachineSize
}

type VirtualMachineManagerConfig

type VirtualMachineManagerConfig struct {
	DomainControllers []*string
	SubnetIds         []string
	VnetResourceGroup string
	VnetId            string
}

Jump to

Keyboard shortcuts

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