Documentation
¶
Index ¶
- Variables
- func ConvertToVirtualMachineIdentity(nodeIdentities []string) *armcompute.VirtualMachineIdentity
- func CreateVirtualMachine(ctx context.Context, client VirtualMachinesAPI, rg, vmName string, ...) (*armcompute.VirtualMachine, error)
- func GenerateResourceName(nodeClaimName string) string
- func GetAllSingleValuedRequirementLabels(instanceType *corecloudprovider.InstanceType) map[string]string
- func GetCapacityType(instance *armcompute.VirtualMachine) string
- func GetManagedExtensionNames(provisionMode string) []string
- func GetNICListQueryBuilder(rg string) *kql.Builder
- func GetVMListQueryBuilder(rg string) *kql.Builder
- func NewQueryRequest(subscriptionID *string, query string) *arg.QueryRequest
- func UpdateVirtualMachine(ctx context.Context, client VirtualMachinesAPI, rg, vmName string, ...) error
- type AZClient
- type AzureResourceGraphAPI
- type DefaultProvider
- func (p *DefaultProvider) BeginCreate(ctx context.Context, nodeClass *v1beta1.AKSNodeClass, ...) (*VirtualMachinePromise, error)
- func (p *DefaultProvider) Delete(ctx context.Context, resourceName string) error
- func (p *DefaultProvider) DeleteNic(ctx context.Context, nicName string) error
- func (p *DefaultProvider) Get(ctx context.Context, vmName string) (*armcompute.VirtualMachine, error)
- func (p *DefaultProvider) GetNic(ctx context.Context, rg, nicName string) (*armnetwork.Interface, error)
- func (p *DefaultProvider) List(ctx context.Context) ([]*armcompute.VirtualMachine, error)
- func (p *DefaultProvider) ListNics(ctx context.Context) ([]*armnetwork.Interface, error)
- func (p *DefaultProvider) Update(ctx context.Context, vmName string, update armcompute.VirtualMachineUpdate) error
- type NetworkInterfacesAPI
- type Provider
- type Resource
- type SubnetsAPI
- type VirtualMachineExtensionsAPI
- type VirtualMachinePromise
- type VirtualMachinesAPI
Constants ¶
This section is empty.
Variables ¶
var ( CapacityTypeToPriority = map[string]string{ karpv1.CapacityTypeSpot: string(armcompute.VirtualMachinePriorityTypesSpot), karpv1.CapacityTypeOnDemand: string(armcompute.VirtualMachinePriorityTypesRegular), } PriorityToCapacityType = map[string]string{ string(armcompute.VirtualMachinePriorityTypesSpot): karpv1.CapacityTypeSpot, string(armcompute.VirtualMachinePriorityTypesRegular): karpv1.CapacityTypeOnDemand, } SubscriptionQuotaReachedReason = "SubscriptionQuotaReached" AllocationFailureReason = "AllocationFailure" ZonalAllocationFailureReason = "ZonalAllocationFailure" OverconstrainedZonalAllocationFailureReason = "OverconstrainedZonalAllocationFailure" OverconstrainedAllocationFailureReason = "OverconstrainedAllocationFailure" SKUNotAvailableReason = "SKUNotAvailable" SubscriptionQuotaReachedTTL = 1 * time.Hour AllocationFailureTTL = 1 * time.Hour SKUNotAvailableSpotTTL = 1 * time.Hour SKUNotAvailableOnDemandTTL = 23 * time.Hour )
Functions ¶
func ConvertToVirtualMachineIdentity ¶
func ConvertToVirtualMachineIdentity(nodeIdentities []string) *armcompute.VirtualMachineIdentity
func CreateVirtualMachine ¶
func CreateVirtualMachine(ctx context.Context, client VirtualMachinesAPI, rg, vmName string, vm armcompute.VirtualMachine) (*armcompute.VirtualMachine, error)
func GenerateResourceName ¶
func GetAllSingleValuedRequirementLabels ¶
func GetAllSingleValuedRequirementLabels(instanceType *corecloudprovider.InstanceType) map[string]string
GetAllSingleValuedRequirementLabels converts instanceType.Requirements to labels Like instanceType.Requirements.Labels() it uses single-valued requirements Unlike instanceType.Requirements.Labels() it does not filter out restricted Node labels
func GetCapacityType ¶
func GetCapacityType(instance *armcompute.VirtualMachine) string
func GetManagedExtensionNames ¶ added in v1.6.2
GetManagedExtensionNames gets the names of the VM extensions managed by Karpenter. This is a set of 1 or 2 extensions (depending on provisionMode): aksIdentifyingExtension and (sometimes) cse.
func GetNICListQueryBuilder ¶ added in v0.6.2
GetNICListQueryBuilder returns a KQL query builder for listing NICs with nodepool tags
func GetVMListQueryBuilder ¶ added in v0.6.2
GetVMListQueryBuilder returns a KQL query builder for listing VMs with nodepool tags
func NewQueryRequest ¶
func NewQueryRequest(subscriptionID *string, query string) *arg.QueryRequest
func UpdateVirtualMachine ¶
func UpdateVirtualMachine(ctx context.Context, client VirtualMachinesAPI, rg, vmName string, updates armcompute.VirtualMachineUpdate) error
Types ¶
type AZClient ¶
type AZClient struct {
NodeImageVersionsClient imagefamilytypes.NodeImageVersionsAPI
ImageVersionsClient imagefamilytypes.CommunityGalleryImageVersionsAPI
NodeBootstrappingClient imagefamilytypes.NodeBootstrappingAPI
// SKU CLIENT is still using track 1 because skewer does not support the track 2 path. We need to refactor this once skewer supports track 2
SKUClient skewer.ResourceClient
LoadBalancersClient loadbalancer.LoadBalancersAPI
NetworkSecurityGroupsClient networksecuritygroup.API
SubscriptionsClient zone.SubscriptionsAPI
// contains filtered or unexported fields
}
TODO: Move this to another package that more correctly reflects its usage across multiple providers
func NewAZClient ¶
func NewAZClient(ctx context.Context, cfg *auth.Config, env *auth.Environment, cred azcore.TokenCredential) (*AZClient, error)
nolint: gocyclo
func NewAZClientFromAPI ¶
func NewAZClientFromAPI( virtualMachinesClient VirtualMachinesAPI, azureResourceGraphClient AzureResourceGraphAPI, virtualMachinesExtensionClient VirtualMachineExtensionsAPI, interfacesClient NetworkInterfacesAPI, subnetsClient SubnetsAPI, loadBalancersClient loadbalancer.LoadBalancersAPI, networkSecurityGroupsClient networksecuritygroup.API, imageVersionsClient imagefamilytypes.CommunityGalleryImageVersionsAPI, nodeImageVersionsClient imagefamilytypes.NodeImageVersionsAPI, nodeBootstrappingClient imagefamilytypes.NodeBootstrappingAPI, skuClient skewer.ResourceClient, subscriptionsClient zone.SubscriptionsAPI, ) *AZClient
func (*AZClient) SubnetsClient ¶ added in v1.6.2
func (c *AZClient) SubnetsClient() SubnetsAPI
type AzureResourceGraphAPI ¶
type AzureResourceGraphAPI interface {
Resources(ctx context.Context, query armresourcegraph.QueryRequest, options *armresourcegraph.ClientResourcesOptions) (armresourcegraph.ClientResourcesResponse, error)
}
type DefaultProvider ¶ added in v0.7.0
type DefaultProvider struct {
// contains filtered or unexported fields
}
func NewDefaultProvider ¶ added in v0.7.0
func NewDefaultProvider( azClient *AZClient, instanceTypeProvider instancetype.Provider, launchTemplateProvider *launchtemplate.Provider, loadBalancerProvider *loadbalancer.Provider, networkSecurityGroupProvider *networksecuritygroup.Provider, offeringsCache *cache.UnavailableOfferings, location string, resourceGroup string, subscriptionID string, provisionMode string, ) *DefaultProvider
func (*DefaultProvider) BeginCreate ¶ added in v1.4.0
func (p *DefaultProvider) BeginCreate( ctx context.Context, nodeClass *v1beta1.AKSNodeClass, nodeClaim *karpv1.NodeClaim, instanceTypes []*corecloudprovider.InstanceType, ) (*VirtualMachinePromise, error)
BeginCreate creates an instance given the constraints. instanceTypes should be sorted by priority for spot capacity type. Note that the returned instance may not be finished provisioning yet. Errors that occur on the "sync side" of the VM create, such as quota/capacity, BadRequest due to invalid user input, and similar, will have the error returned here. Errors that occur on the "async side" of the VM create (after the request is accepted, or after polling the VM create and while ) will be returned from the VirtualMachinePromise.Wait() function.
func (*DefaultProvider) Delete ¶ added in v0.7.0
func (p *DefaultProvider) Delete(ctx context.Context, resourceName string) error
func (*DefaultProvider) DeleteNic ¶ added in v0.7.2
func (p *DefaultProvider) DeleteNic(ctx context.Context, nicName string) error
func (*DefaultProvider) Get ¶ added in v0.7.0
func (p *DefaultProvider) Get(ctx context.Context, vmName string) (*armcompute.VirtualMachine, error)
func (*DefaultProvider) GetNic ¶ added in v0.7.0
func (p *DefaultProvider) GetNic(ctx context.Context, rg, nicName string) (*armnetwork.Interface, error)
func (*DefaultProvider) List ¶ added in v0.7.0
func (p *DefaultProvider) List(ctx context.Context) ([]*armcompute.VirtualMachine, error)
func (*DefaultProvider) ListNics ¶ added in v0.7.2
func (p *DefaultProvider) ListNics(ctx context.Context) ([]*armnetwork.Interface, error)
ListNics returns all network interfaces in the resource group that have the nodepool tag
func (*DefaultProvider) Update ¶ added in v0.7.0
func (p *DefaultProvider) Update(ctx context.Context, vmName string, update armcompute.VirtualMachineUpdate) error
Update updates the VM with the given updates. If Tags are specified, the tags are also updated on the associated network interface and VM extensions. Note that this means that this method can fail if the extensions have not been created yet. It is expected that the caller handles this and retries the update to propagate the tags to the extensions once they're created.
type NetworkInterfacesAPI ¶
type NetworkInterfacesAPI interface {
BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, networkInterfaceName string, parameters armnetwork.Interface, options *armnetwork.InterfacesClientBeginCreateOrUpdateOptions) (*runtime.Poller[armnetwork.InterfacesClientCreateOrUpdateResponse], error)
BeginDelete(ctx context.Context, resourceGroupName string, networkInterfaceName string, options *armnetwork.InterfacesClientBeginDeleteOptions) (*runtime.Poller[armnetwork.InterfacesClientDeleteResponse], error)
Get(ctx context.Context, resourceGroupName string, networkInterfaceName string, options *armnetwork.InterfacesClientGetOptions) (armnetwork.InterfacesClientGetResponse, error)
UpdateTags(ctx context.Context, resourceGroupName string, networkInterfaceName string, tags armnetwork.TagsObject, options *armnetwork.InterfacesClientUpdateTagsOptions) (armnetwork.InterfacesClientUpdateTagsResponse, error)
}
type Provider ¶
type Provider interface {
BeginCreate(context.Context, *v1beta1.AKSNodeClass, *karpv1.NodeClaim, []*corecloudprovider.InstanceType) (*VirtualMachinePromise, error)
Get(context.Context, string) (*armcompute.VirtualMachine, error)
List(context.Context) ([]*armcompute.VirtualMachine, error)
Delete(context.Context, string) error
Update(context.Context, string, armcompute.VirtualMachineUpdate) error
GetNic(context.Context, string, string) (*armnetwork.Interface, error)
DeleteNic(context.Context, string) error
ListNics(context.Context) ([]*armnetwork.Interface, error)
}
type Resource ¶
type Resource = map[string]interface{}
func GetResourceData ¶
func GetResourceData(ctx context.Context, client AzureResourceGraphAPI, req arg.QueryRequest) ([]Resource, error)
Queries Azure Resource Graph using Resources() and returns a list of all pages of data.
type SubnetsAPI ¶ added in v1.6.2
type SubnetsAPI interface {
Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, subnetName string, options *armnetwork.SubnetsClientGetOptions) (armnetwork.SubnetsClientGetResponse, error)
}
type VirtualMachineExtensionsAPI ¶
type VirtualMachineExtensionsAPI interface {
BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, vmExtensionName string, extensionParameters armcompute.VirtualMachineExtension, options *armcompute.VirtualMachineExtensionsClientBeginCreateOrUpdateOptions) (*runtime.Poller[armcompute.VirtualMachineExtensionsClientCreateOrUpdateResponse], error)
BeginUpdate(ctx context.Context, resourceGroupName string, vmName string, vmExtensionName string, extensionParameters armcompute.VirtualMachineExtensionUpdate, options *armcompute.VirtualMachineExtensionsClientBeginUpdateOptions) (*runtime.Poller[armcompute.VirtualMachineExtensionsClientUpdateResponse], error)
}
type VirtualMachinePromise ¶ added in v1.4.0
type VirtualMachinePromise struct {
VM *armcompute.VirtualMachine
Wait func() error
}
type VirtualMachinesAPI ¶
type VirtualMachinesAPI interface {
BeginCreateOrUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcompute.VirtualMachine, options *armcompute.VirtualMachinesClientBeginCreateOrUpdateOptions) (*runtime.Poller[armcompute.VirtualMachinesClientCreateOrUpdateResponse], error)
Get(ctx context.Context, resourceGroupName string, vmName string, options *armcompute.VirtualMachinesClientGetOptions) (armcompute.VirtualMachinesClientGetResponse, error)
BeginUpdate(ctx context.Context, resourceGroupName string, vmName string, parameters armcompute.VirtualMachineUpdate, options *armcompute.VirtualMachinesClientBeginUpdateOptions) (*runtime.Poller[armcompute.VirtualMachinesClientUpdateResponse], error)
BeginDelete(ctx context.Context, resourceGroupName string, vmName string, options *armcompute.VirtualMachinesClientBeginDeleteOptions) (*runtime.Poller[armcompute.VirtualMachinesClientDeleteResponse], error)
}