Documentation
¶
Index ¶
- Constants
- func ExtractResourceGroupFromID(ctx context.Context, id string) string
- func FromCloudyVirtualMachine(ctx context.Context, cloudyVM *models.VirtualMachine) armcompute.VirtualMachine
- func IsAvailable(restrictions []*armcompute.ResourceSKURestrictions) bool
- func IsInLocation(region string, locations []*string) bool
- func LongIdToShortId(longId string) string
- func NewAzureVirtualMachineManager(ctx context.Context, credentials *cloudyazure.AzureCredentials, ...) (cloudyvm.VirtualMachineManager, error)
- func SizeFromResource(ctx context.Context, res *armcompute.ResourceSKU) *cloudyvm.VmSize
- func ToCloudyVirtualMachine(ctx context.Context, azVM *armcompute.VirtualMachine) *models.VirtualMachine
- func ToCloudyVirtualMachineLocation(location *string) *models.VirtualMachineLocation
- func ToCloudyVirtualMachineSize(ctx context.Context, resource *armcompute.ResourceSKU) *models.VirtualMachineSize
- func UpdateCloudyVirtualMachine(vm *models.VirtualMachine, responseVirtualMachine armcompute.VirtualMachine) error
- func VMAddTag(ctx context.Context)
- func VMGetPowerState(vm *armcompute.VirtualMachine) string
- type AzureVMController
- func (vmc *AzureVMController) ConfigureDiskSize(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (int32, error)
- func (vmc *AzureVMController) ConfigureVmOsDiskOsTypeType(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) *armcompute.OperatingSystemTypes
- func (vmc *AzureVMController) ConfigureVmOsProfile(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) *armcompute.OSProfile
- func (vmc *AzureVMController) Create(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineConfiguration, error)
- func (vmc *AzureVMController) CreateNIC(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration, subnetId string) error
- func (vmc *AzureVMController) CreateNSG(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (string, error)
- func (vmc *AzureVMController) CreateVirtualMachine(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error
- func (vmc *AzureVMController) Delete(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineConfiguration, error)
- func (vmc *AzureVMController) DeleteNIC(ctx context.Context, vmId string, nicName string) error
- func (vmc *AzureVMController) DeleteVM(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error
- func (vmc *AzureVMController) DeleteVMOSDisk(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error
- func (vmc *AzureVMController) FindBestSubnet(ctx context.Context, availableSubnets []string) (string, error)
- func (vmc *AzureVMController) GetAvailableIPS(ctx context.Context, subnet string) (int, error)
- func (vmc *AzureVMController) GetLatestImageVersion(ctx context.Context, imageName string) (string, error)
- func (vmc *AzureVMController) GetLimits(ctx context.Context) ([]*cloudyvm.VirtualMachineLimit, error)
- func (vmc *AzureVMController) GetNIC(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineNetwork, error)
- func (vmc *AzureVMController) GetNSG(ctx context.Context, name string) (*armnetwork.SecurityGroup, error)
- func (vmc *AzureVMController) GetVM(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineConfiguration, error)
- func (vmc *AzureVMController) GetVMSize(ctx context.Context, size string) (*cloudyvm.VmSize, error)
- func (vmc *AzureVMController) GetVMSizes(ctx context.Context) (map[string]*cloudyvm.VmSize, error)
- func (vmc *AzureVMController) GetVmOsDisk(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineDisk, error)
- func (vmc *AzureVMController) ListAll(ctx context.Context) ([]*cloudyvm.VirtualMachineStatus, error)
- func (vmc *AzureVMController) ListWithTag(ctx context.Context, tag string) ([]*cloudyvm.VirtualMachineStatus, error)
- func (vmc *AzureVMController) SetState(ctx context.Context, state cloudyvm.VirtualMachineAction, vmName string, ...) (*cloudyvm.VirtualMachineStatus, error)
- func (vmc *AzureVMController) Start(ctx context.Context, vmName string, wait bool) error
- func (vmc *AzureVMController) Status(ctx context.Context, vmName string) (*cloudyvm.VirtualMachineStatus, error)
- func (vmc *AzureVMController) Stop(ctx context.Context, vmName string, wait bool) error
- func (vmc *AzureVMController) Terminate(ctx context.Context, vmName string, wait bool) error
- func (vmc *AzureVMController) ValidateConfiguration(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error
- type AzureVMControllerConfig
- type AzureVMControllerFactory
- type AzureVirtualMachineManager
- func (vmm *AzureVirtualMachineManager) Configure(ctx context.Context) error
- func (vmm *AzureVirtualMachineManager) Create(ctx context.Context, vm *models.VirtualMachine) (*models.VirtualMachine, error)
- func (vmm *AzureVirtualMachineManager) CreateNic(ctx context.Context, vm *models.VirtualMachine) (*models.VirtualMachineNic, error)
- func (vmm *AzureVirtualMachineManager) Deallocate(ctx context.Context, vmName string) error
- func (vmm *AzureVirtualMachineManager) Delete(ctx context.Context, vmId string) error
- func (vmm *AzureVirtualMachineManager) DeleteDisk(ctx context.Context, diskName string) error
- func (vmm *AzureVirtualMachineManager) DeleteNic(ctx context.Context, nic *models.VirtualMachineNic) error
- func (vmm *AzureVirtualMachineManager) DeleteNics(ctx context.Context, nics []*models.VirtualMachineNic) error
- func (vmm *AzureVirtualMachineManager) GetAll(ctx context.Context, filter string, attrs []string, includeState bool) (*[]models.VirtualMachine, error)
- func (vmm *AzureVirtualMachineManager) GetAllDisks(ctx context.Context) ([]*models.VirtualMachineDisk, error)
- func (vmm *AzureVirtualMachineManager) GetAllNics(ctx context.Context) ([]*models.VirtualMachineNic, error)
- func (vmm *AzureVirtualMachineManager) GetAllSizes(ctx context.Context) (map[string]*models.VirtualMachineSize, error)
- func (vmm *AzureVirtualMachineManager) GetAllVmDisks(ctx context.Context, vmId string) ([]*models.VirtualMachineDisk, error)
- func (vmm *AzureVirtualMachineManager) GetById(ctx context.Context, id string, includeState bool) (*models.VirtualMachine, error)
- func (vmm *AzureVirtualMachineManager) GetLatestImageVersion(ctx context.Context, imageName string) (string, error)
- func (vmm *AzureVirtualMachineManager) GetNics(ctx context.Context, vmId string) ([]*models.VirtualMachineNic, error)
- func (vmm *AzureVirtualMachineManager) GetOsDisk(ctx context.Context, vmId string) (*models.VirtualMachineDisk, error)
- func (vmm *AzureVirtualMachineManager) GetSizesForTemplate(ctx context.Context, template models.VirtualMachineTemplate) (matches map[string]*models.VirtualMachineSize, ...)
- func (vmm *AzureVirtualMachineManager) GetSizesWithUsage(ctx context.Context) (map[string]*models.VirtualMachineSize, error)
- func (vmm *AzureVirtualMachineManager) GetUsage(ctx context.Context) (map[string]models.VirtualMachineFamily, error)
- func (vmm *AzureVirtualMachineManager) RunCommand(ctx context.Context, vmId string, script string) error
- func (vmm *AzureVirtualMachineManager) RunPowershell(ctx context.Context, vmID, script string) error
- func (vmm *AzureVirtualMachineManager) Start(ctx context.Context, vmName string) error
- func (vmm *AzureVirtualMachineManager) Stop(ctx context.Context, vmName string) error
- func (vmm *AzureVirtualMachineManager) Update(ctx context.Context, vm *models.VirtualMachine) (*models.VirtualMachine, error)
- type ScoredVMSize
- type VirtualMachineManagerConfig
Constants ¶
const AzureArmCompute = "azure-arm-compute"
const (
MIN_WINDOWS_OS_DISK_SIZE = 200
)
Variables ¶
This section is empty.
Functions ¶
func FromCloudyVirtualMachine ¶
func FromCloudyVirtualMachine(ctx context.Context, cloudyVM *models.VirtualMachine) armcompute.VirtualMachine
func IsAvailable ¶
func IsAvailable(restrictions []*armcompute.ResourceSKURestrictions) bool
func IsInLocation ¶
func LongIdToShortId ¶
func NewAzureVirtualMachineManager ¶
func NewAzureVirtualMachineManager(ctx context.Context, credentials *cloudyazure.AzureCredentials, config *VirtualMachineManagerConfig) (cloudyvm.VirtualMachineManager, error)
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 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 (vmc *AzureVMController) ConfigureVmOsDiskOsTypeType(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) *armcompute.OperatingSystemTypes
func (*AzureVMController) ConfigureVmOsProfile ¶
func (vmc *AzureVMController) ConfigureVmOsProfile(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) *armcompute.OSProfile
func (*AzureVMController) Create ¶
func (vmc *AzureVMController) Create(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineConfiguration, error)
func (*AzureVMController) CreateNIC ¶
func (vmc *AzureVMController) CreateNIC(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration, subnetId string) error
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 ¶
func (vmc *AzureVMController) CreateNSG(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (string, error)
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) Delete ¶
func (vmc *AzureVMController) Delete(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineConfiguration, error)
func (*AzureVMController) DeleteVM ¶
func (vmc *AzureVMController) DeleteVM(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error
func (*AzureVMController) DeleteVMOSDisk ¶
func (vmc *AzureVMController) DeleteVMOSDisk(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) error
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 ¶
Finds the best subnet based on IP availabilty
func (*AzureVMController) GetLatestImageVersion ¶
func (*AzureVMController) GetLimits ¶
func (vmc *AzureVMController) GetLimits(ctx context.Context) ([]*cloudyvm.VirtualMachineLimit, error)
func (*AzureVMController) GetNIC ¶
func (vmc *AzureVMController) GetNIC(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineNetwork, error)
Find NIC if it already exists
func (*AzureVMController) GetNSG ¶
func (vmc *AzureVMController) GetNSG(ctx context.Context, name string) (*armnetwork.SecurityGroup, error)
func (*AzureVMController) GetVM ¶
func (vmc *AzureVMController) GetVM(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineConfiguration, error)
Find VM if it already exists
func (*AzureVMController) GetVMSizes ¶
func (*AzureVMController) GetVmOsDisk ¶
func (vmc *AzureVMController) GetVmOsDisk(ctx context.Context, vm *cloudyvm.VirtualMachineConfiguration) (*cloudyvm.VirtualMachineDisk, error)
func (*AzureVMController) ListAll ¶
func (vmc *AzureVMController) ListAll(ctx context.Context) ([]*cloudyvm.VirtualMachineStatus, error)
func (*AzureVMController) ListWithTag ¶
func (vmc *AzureVMController) ListWithTag(ctx context.Context, tag string) ([]*cloudyvm.VirtualMachineStatus, error)
func (*AzureVMController) SetState ¶
func (vmc *AzureVMController) SetState(ctx context.Context, state cloudyvm.VirtualMachineAction, vmName string, wait bool) (*cloudyvm.VirtualMachineStatus, error)
func (*AzureVMController) Status ¶
func (vmc *AzureVMController) Status(ctx context.Context, vmName string) (*cloudyvm.VirtualMachineStatus, 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 (vmm *AzureVirtualMachineManager) Create(ctx context.Context, vm *models.VirtualMachine) (*models.VirtualMachine, error)
func (*AzureVirtualMachineManager) CreateNic ¶
func (vmm *AzureVirtualMachineManager) CreateNic(ctx context.Context, vm *models.VirtualMachine) (*models.VirtualMachineNic, error)
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 (vmm *AzureVirtualMachineManager) DeleteNic(ctx context.Context, nic *models.VirtualMachineNic) error
func (*AzureVirtualMachineManager) DeleteNics ¶
func (vmm *AzureVirtualMachineManager) DeleteNics(ctx context.Context, nics []*models.VirtualMachineNic) error
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 (vmm *AzureVirtualMachineManager) GetAllDisks(ctx context.Context) ([]*models.VirtualMachineDisk, error)
func (*AzureVirtualMachineManager) GetAllNics ¶
func (vmm *AzureVirtualMachineManager) GetAllNics(ctx context.Context) ([]*models.VirtualMachineNic, error)
func (*AzureVirtualMachineManager) GetAllSizes ¶
func (vmm *AzureVirtualMachineManager) GetAllSizes(ctx context.Context) (map[string]*models.VirtualMachineSize, error)
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 (vmm *AzureVirtualMachineManager) GetNics(ctx context.Context, vmId string) ([]*models.VirtualMachineNic, error)
func (*AzureVirtualMachineManager) GetOsDisk ¶
func (vmm *AzureVirtualMachineManager) GetOsDisk(ctx context.Context, vmId string) (*models.VirtualMachineDisk, error)
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 (vmm *AzureVirtualMachineManager) GetUsage(ctx context.Context) (map[string]models.VirtualMachineFamily, error)
func (*AzureVirtualMachineManager) RunCommand ¶
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 ¶
func (vmm *AzureVirtualMachineManager) Update(ctx context.Context, vm *models.VirtualMachine) (*models.VirtualMachine, error)
type ScoredVMSize ¶
type ScoredVMSize struct { Score float64 Size *models.VirtualMachineSize }