Documentation ¶
Overview ¶
pkg/providers/azure/client.go
pkg/providers/azure/provider.go
Index ¶
- Constants
- Variables
- func AssertResourceGroupCreated(t *testing.T, mockClient *MockClient, expectedName, expectedLocation string)
- func ConvertFromStringToResourceState(state string) (string, error)
- func GenerateTags(projectID, uniqueID string) map[string]*string
- func NewAzureClient(subscriptionID string) (azure_interface.AzureClienter, error)
- func NewTestContext() context.Context
- type AzureError
- type AzureProvider
- func (p *AzureProvider) AllMachinesComplete() bool
- func (p *AzureProvider) CancelAllDeployments(ctx context.Context)
- func (p *AzureProvider) CheckAuthentication(ctx context.Context) error
- func (p *AzureProvider) CreateResources(ctx context.Context) error
- func (p *AzureProvider) DeployBacalhauWorkers(ctx context.Context) error
- func (p *AzureProvider) DestroyDeployment(ctx context.Context, resourceGroupName string) error
- func (p *AzureProvider) DestroyResourceGroup(ctx context.Context, resourceGroupName string) error
- func (p *AzureProvider) DestroyResources(ctx context.Context, resourceGroupName string) error
- func (p *AzureProvider) FinalizeDeployment(ctx context.Context) error
- func (p *AzureProvider) GetAzureClient() azure_interface.AzureClienter
- func (p *AzureProvider) GetClusterDeployer() common_interface.ClusterDeployerer
- func (p *AzureProvider) GetOrCreateResourceGroup(ctx context.Context, resourceGroupName string, locationData string, ...) (*armresources.ResourceGroup, error)
- func (p *AzureProvider) GetResources(ctx context.Context, resourceGroupName string, tags map[string]*string) ([]interface{}, error)
- func (p *AzureProvider) GetSKUsByLocation(ctx context.Context, location string) ([]armcompute.ResourceSKU, error)
- func (p *AzureProvider) GetVMExternalIP(ctx context.Context, vmName string, locationData map[string]string) (string, error)
- func (p *AzureProvider) GetVMIPAddresses(ctx context.Context, resourceGroupName, vmName string) (string, string, error)
- func (p *AzureProvider) Initialize(ctx context.Context) error
- func (p *AzureProvider) ListAllResourceGroups(ctx context.Context) ([]*armresources.ResourceGroup, error)
- func (p *AzureProvider) ListAllResourcesInSubscription(ctx context.Context, tags map[string]*string) ([]interface{}, error)
- func (p *AzureProvider) PollResources(ctx context.Context) ([]interface{}, error)
- func (p *AzureProvider) PrepareDeployment(ctx context.Context) (*models.Deployment, error)
- func (p *AzureProvider) PrepareResourceGroup(ctx context.Context) error
- func (p *AzureProvider) ProcessMachinesConfig(ctx context.Context) (map[string]models.Machiner, map[string]bool, error)
- func (p *AzureProvider) SetAzureClient(client azure_interface.AzureClienter)
- func (p *AzureProvider) SetClusterDeployer(deployer common_interface.ClusterDeployerer)
- func (p *AzureProvider) StartResourcePolling(ctx context.Context) error
- func (p *AzureProvider) ValidateMachineType(ctx context.Context, location, machineType string) (bool, error)
- type BaseAzureTestSuite
- type LiveAzureClient
- func (c *LiveAzureClient) DeployTemplate(ctx context.Context, resourceGroupName string, deploymentName string, ...) (azure_interface.Pollerer, error)
- func (c *LiveAzureClient) DestroyResourceGroup(ctx context.Context, resourceGroupName string) error
- func (c *LiveAzureClient) GetNetworkInterface(ctx context.Context, resourceGroupName string, networkInterfaceName string) (*armnetwork.Interface, error)
- func (c *LiveAzureClient) GetOrCreateResourceGroup(ctx context.Context, rgName string, rgLocation string, tags map[string]string) (*armresources.ResourceGroup, error)
- func (c *LiveAzureClient) GetPublicIPAddress(ctx context.Context, resourceGroupName string, ...) (string, error)
- func (c *LiveAzureClient) GetResourceGroup(ctx context.Context, rgLocation string, rgName string) (*armresources.ResourceGroup, error)
- func (c *LiveAzureClient) GetResources(ctx context.Context, subscriptionID string, resourceGroupName string, ...) ([]interface{}, error)
- func (c *LiveAzureClient) GetSKUsByLocation(ctx context.Context, location string) ([]armcompute.ResourceSKU, error)
- func (c *LiveAzureClient) GetVMExternalIP(ctx context.Context, vmName string, locationData map[string]string) (string, error)
- func (c *LiveAzureClient) GetVirtualMachine(ctx context.Context, resourceGroupName string, vmName string) (*armcompute.VirtualMachine, error)
- func (c *LiveAzureClient) InitiateResourceGroupDeletion(ctx context.Context, resourceGroupName string) error
- func (c *LiveAzureClient) ListAllResourceGroups(ctx context.Context) ([]*armresources.ResourceGroup, error)
- func (c *LiveAzureClient) ListAllResourcesInSubscription(ctx context.Context, subscriptionID string, tags map[string]*string) ([]interface{}, error)
- func (c *LiveAzureClient) ListResourceGroups(ctx context.Context) ([]*armresources.ResourceGroup, error)
- func (c *LiveAzureClient) NewSubscriptionListPager(ctx context.Context, options *armsubscription.SubscriptionsClientListOptions) *runtime.Pager[armsubscription.SubscriptionsClientListResponse]
- func (c *LiveAzureClient) ResourceGroupExists(ctx context.Context, resourceGroupName string) (bool, error)
- func (c *LiveAzureClient) ValidateMachineType(ctx context.Context, location string, vmSize string) (bool, error)
- type MockClient
Constants ¶
const ( UpdateQueueSize = 100 ResourcePollingInterval = 2 * time.Second DebugFilePath = "/tmp/andaime-debug.log" DebugFilePermissions = 0644 WaitingForMachinesTime = 1 * time.Minute DefaultSSHUser = "andaimeuser" DefaultSSHPort = 22 )
Constants related to Azure Provider configurations.
Variables ¶
var NewAzureClientFunc = NewAzureClient
var NewAzureProviderFunc = NewAzureProvider
Functions ¶
func AssertResourceGroupCreated ¶
func AssertResourceGroupCreated( t *testing.T, mockClient *MockClient, expectedName, expectedLocation string, )
AssertResourceGroupCreated is a helper function to assert that a resource group was created
func GenerateTags ¶
generateTags creates a map of tags for Azure resources
func NewAzureClient ¶
func NewAzureClient(subscriptionID string) (azure_interface.AzureClienter, error)
NewAzureClient creates a new AzureClient.
func NewTestContext ¶
NewTestContext creates a new context for testing
Types ¶
type AzureError ¶
AzureError represents a custom error type for Azure operations.
func (AzureError) IsNotFound ¶
func (e AzureError) IsNotFound() bool
IsNotFound checks if the error indicates that a resource was not found.
type AzureProvider ¶
type AzureProvider struct { SubscriptionID string ResourceGroupName string Tags map[string]*string Client azure_interface.AzureClienter ClusterDeployer common_interface.ClusterDeployerer SSHClient sshutils.SSHClienter SSHUser string SSHPort int UpdateQueue chan display.UpdateAction UpdateMutex sync.Mutex // contains filtered or unexported fields }
AzureProvider implements the Providerer interface.
func NewAzureProvider ¶
func NewAzureProvider( ctx context.Context, subscriptionID string, ) (*AzureProvider, error)
NewAzureProvider creates and initializes a new AzureProvider instance with subscriptionID.
func NewAzureProviderFactory ¶
func NewAzureProviderFactory(ctx context.Context) (*AzureProvider, error)
func (*AzureProvider) AllMachinesComplete ¶
func (p *AzureProvider) AllMachinesComplete() bool
AllMachinesComplete checks if all machines in the deployment are marked as complete.
func (*AzureProvider) CancelAllDeployments ¶
func (p *AzureProvider) CancelAllDeployments(ctx context.Context)
CancelAllDeployments cancels all ongoing deployments.
func (*AzureProvider) CheckAuthentication ¶
func (p *AzureProvider) CheckAuthentication(ctx context.Context) error
func (*AzureProvider) CreateResources ¶
func (p *AzureProvider) CreateResources(ctx context.Context) error
func (*AzureProvider) DeployBacalhauWorkers ¶
func (p *AzureProvider) DeployBacalhauWorkers(ctx context.Context) error
func (*AzureProvider) DestroyDeployment ¶
func (p *AzureProvider) DestroyDeployment( ctx context.Context, resourceGroupName string, ) error
DestroyDeployment initiates the deletion of the specified Azure resource group
func (*AzureProvider) DestroyResourceGroup ¶
func (p *AzureProvider) DestroyResourceGroup(ctx context.Context, resourceGroupName string) error
DestroyResourceGroup deletes the specified resource group.
func (*AzureProvider) DestroyResources ¶
func (p *AzureProvider) DestroyResources(ctx context.Context, resourceGroupName string) error
DestroyResources destroys the specified resource group if it exists.
func (*AzureProvider) FinalizeDeployment ¶
func (p *AzureProvider) FinalizeDeployment(ctx context.Context) error
func (*AzureProvider) GetAzureClient ¶
func (p *AzureProvider) GetAzureClient() azure_interface.AzureClienter
func (*AzureProvider) GetClusterDeployer ¶
func (p *AzureProvider) GetClusterDeployer() common_interface.ClusterDeployerer
GetClusterDeployer returns the current ClusterDeployer.
func (*AzureProvider) GetOrCreateResourceGroup ¶
func (p *AzureProvider) GetOrCreateResourceGroup( ctx context.Context, resourceGroupName string, locationData string, tags map[string]string, ) (*armresources.ResourceGroup, error)
GetOrCreateResourceGroup retrieves an existing resource group or creates a new one if it doesn't exist.
func (*AzureProvider) GetResources ¶
func (*AzureProvider) GetSKUsByLocation ¶
func (p *AzureProvider) GetSKUsByLocation( ctx context.Context, location string, ) ([]armcompute.ResourceSKU, error)
func (*AzureProvider) GetVMExternalIP ¶
func (p *AzureProvider) GetVMExternalIP( ctx context.Context, vmName string, locationData map[string]string, ) (string, error)
GetVMExternalIP retrieves the external IP of a VM instance.
func (*AzureProvider) GetVMIPAddresses ¶
func (*AzureProvider) Initialize ¶
func (p *AzureProvider) Initialize(ctx context.Context) error
Initialize sets up the AzureProvider by configuring SSH keys and starting the update processor.
func (*AzureProvider) ListAllResourceGroups ¶
func (p *AzureProvider) ListAllResourceGroups( ctx context.Context, ) ([]*armresources.ResourceGroup, error)
func (*AzureProvider) ListAllResourcesInSubscription ¶
func (*AzureProvider) PollResources ¶
func (p *AzureProvider) PollResources(ctx context.Context) ([]interface{}, error)
func (*AzureProvider) PrepareDeployment ¶
func (p *AzureProvider) PrepareDeployment( ctx context.Context, ) (*models.Deployment, error)
func (*AzureProvider) PrepareResourceGroup ¶
func (p *AzureProvider) PrepareResourceGroup( ctx context.Context, ) error
PrepareResourceGroup prepares or creates a resource group for the Azure deployment. It ensures that a valid resource group name and location are set, creating them if necessary.
Parameters:
- ctx: The context.Context for the operation, used for cancellation and timeout.
Returns:
- error: An error if the resource group preparation fails, nil otherwise.
The function performs the following steps: 1. Retrieves the global deployment object. 2. Ensures a resource group name is set, appending a timestamp if necessary. 3. Determines the resource group location, using the first machine's location if not explicitly set. 4. Creates or retrieves the resource group using the Azure client. 5. Updates the global deployment object with the finalized resource group information.
func (*AzureProvider) ProcessMachinesConfig ¶
func (p *AzureProvider) ProcessMachinesConfig( ctx context.Context, ) (map[string]models.Machiner, map[string]bool, error)
This updates m.Deployment with machines and returns an error if any
func (*AzureProvider) SetAzureClient ¶
func (p *AzureProvider) SetAzureClient(client azure_interface.AzureClienter)
func (*AzureProvider) SetClusterDeployer ¶
func (p *AzureProvider) SetClusterDeployer(deployer common_interface.ClusterDeployerer)
SetClusterDeployer sets a new ClusterDeployer.
func (*AzureProvider) StartResourcePolling ¶
func (p *AzureProvider) StartResourcePolling(ctx context.Context) error
StartResourcePolling starts polling Azure resources for updates.
func (*AzureProvider) ValidateMachineType ¶
type BaseAzureTestSuite ¶
type BaseAzureTestSuite struct { suite.Suite MockAzureClient *azure_mocks.MockAzureClienter Ctx context.Context Deployment *models.Deployment }
func (*BaseAzureTestSuite) SetupSuite ¶
func (suite *BaseAzureTestSuite) SetupSuite()
func (*BaseAzureTestSuite) SetupTest ¶
func (suite *BaseAzureTestSuite) SetupTest()
func (*BaseAzureTestSuite) TearDownSuite ¶
func (suite *BaseAzureTestSuite) TearDownSuite()
type LiveAzureClient ¶
type LiveAzureClient struct {
// contains filtered or unexported fields
}
LiveAzureClient implements the AzureClienter interface using the Azure SDK.
func (*LiveAzureClient) DeployTemplate ¶
func (c *LiveAzureClient) DeployTemplate( ctx context.Context, resourceGroupName string, deploymentName string, template map[string]interface{}, params map[string]interface{}, tags map[string]*string, ) (azure_interface.Pollerer, error)
DeployTemplate deploys an ARM template.
func (*LiveAzureClient) DestroyResourceGroup ¶
func (c *LiveAzureClient) DestroyResourceGroup( ctx context.Context, resourceGroupName string, ) error
func (*LiveAzureClient) GetNetworkInterface ¶
func (c *LiveAzureClient) GetNetworkInterface( ctx context.Context, resourceGroupName string, networkInterfaceName string, ) (*armnetwork.Interface, error)
GetNetworkInterface retrieves a network interface.
func (*LiveAzureClient) GetOrCreateResourceGroup ¶
func (c *LiveAzureClient) GetOrCreateResourceGroup(ctx context.Context, rgName string, rgLocation string, tags map[string]string) (*armresources.ResourceGroup, error)
CreateResourceGroup creates a new resource group or returns an existing one
func (*LiveAzureClient) GetPublicIPAddress ¶
func (c *LiveAzureClient) GetPublicIPAddress( ctx context.Context, resourceGroupName string, publicIPAddress *armnetwork.PublicIPAddress, ) (string, error)
GetPublicIPAddress retrieves a public IP address.
func (*LiveAzureClient) GetResourceGroup ¶
func (c *LiveAzureClient) GetResourceGroup(ctx context.Context, rgLocation string, rgName string) (*armresources.ResourceGroup, error)
func (*LiveAzureClient) GetResources ¶
func (c *LiveAzureClient) GetResources( ctx context.Context, subscriptionID string, resourceGroupName string, tags map[string]*string) ([]interface{}, error)
GetResources retrieves resources based on subscriptionID, resourceGroupName, and tags.
func (*LiveAzureClient) GetSKUsByLocation ¶
func (c *LiveAzureClient) GetSKUsByLocation( ctx context.Context, location string, ) ([]armcompute.ResourceSKU, error)
GetSKUsByLocation retrieves SKUs available in a specific location.
func (*LiveAzureClient) GetVMExternalIP ¶
func (c *LiveAzureClient) GetVMExternalIP( ctx context.Context, vmName string, locationData map[string]string, ) (string, error)
GetVMExternalIP retrieves the external IP of a VM instance. Note: Implementation depends on how IPs are managed; this is a placeholder.
func (*LiveAzureClient) GetVirtualMachine ¶
func (c *LiveAzureClient) GetVirtualMachine( ctx context.Context, resourceGroupName string, vmName string, ) (*armcompute.VirtualMachine, error)
GetVirtualMachine retrieves a virtual machine.
func (*LiveAzureClient) InitiateResourceGroupDeletion ¶
func (c *LiveAzureClient) InitiateResourceGroupDeletion( ctx context.Context, resourceGroupName string, ) error
func (*LiveAzureClient) ListAllResourceGroups ¶
func (c *LiveAzureClient) ListAllResourceGroups( ctx context.Context, ) ([]*armresources.ResourceGroup, error)
ListAllResourceGroups lists all resource groups.
func (*LiveAzureClient) ListAllResourcesInSubscription ¶
func (c *LiveAzureClient) ListAllResourcesInSubscription( ctx context.Context, subscriptionID string, tags map[string]*string) ([]interface{}, error)
ListAllResourcesInSubscription lists all resources in a subscription with given tags.
func (*LiveAzureClient) ListResourceGroups ¶
func (c *LiveAzureClient) ListResourceGroups( ctx context.Context, ) ([]*armresources.ResourceGroup, error)
func (*LiveAzureClient) NewSubscriptionListPager ¶
func (c *LiveAzureClient) NewSubscriptionListPager( ctx context.Context, options *armsubscription.SubscriptionsClientListOptions, ) *runtime.Pager[armsubscription.SubscriptionsClientListResponse]
NewSubscriptionListPager returns a new subscription list pager.
func (*LiveAzureClient) ResourceGroupExists ¶
func (c *LiveAzureClient) ResourceGroupExists( ctx context.Context, resourceGroupName string, ) (bool, error)
ResourceGroupExists checks if a resource group exists.
func (*LiveAzureClient) ValidateMachineType ¶
func (c *LiveAzureClient) ValidateMachineType( ctx context.Context, location string, vmSize string, ) (bool, error)
ValidateMachineType checks if the specified machine type is valid in the given location.
type MockClient ¶
MockClient is a mock implementation of the Client interface
func NewMockClient ¶
func NewMockClient() *MockClient
NewMockClient creates a new MockClient with common expectations set