Skip to content

Commit

Permalink
Azure: Testing
Browse files Browse the repository at this point in the history
  • Loading branch information
jhixson74 committed Mar 29, 2024
1 parent 177cc2f commit 0d8c1ab
Showing 1 changed file with 172 additions and 31 deletions.
203 changes: 172 additions & 31 deletions pkg/infrastructure/azure/azure.go
Expand Up @@ -117,12 +117,12 @@ func (p *Provider) InfraReady(ctx context.Context, in clusterapi.InfraReadyInput
platform := installConfig.Platform.Azure
subscriptionID := session.Credentials.SubscriptionID
cloudConfiguration := session.CloudConfig
clusterDomain := in.InstallConfig.Config.ClusterDomain()
clusterName := in.InstallConfig.Config.ObjectMeta.Name
baseDomain := in.InstallConfig.Config.BaseDomain
//clusterDomain := in.InstallConfig.Config.ClusterDomain()
//clusterName := in.InstallConfig.Config.ObjectMeta.Name
//baseDomain := in.InstallConfig.Config.BaseDomain

resourceGroupName := p.ResourceGroupName
baseDomainResourceGroupName := in.InstallConfig.Config.Azure.BaseDomainResourceGroupName
//baseDomainResourceGroupName := in.InstallConfig.Config.Azure.BaseDomainResourceGroupName
storageAccountName := fmt.Sprintf("cluster%s", randomString(5))
containerName := "vhd"
blobName := fmt.Sprintf("rhcos%s.vhd", randomString(5))
Expand Down Expand Up @@ -170,33 +170,41 @@ func (p *Provider) InfraReady(ctx context.Context, in clusterapi.InfraReadyInput
storageURL := fmt.Sprintf("https://%s.blob.core.windows.net", storageAccountName)
blobURL := fmt.Sprintf("%s/%s/%s", storageURL, containerName, blobName)

useIPv6 := false
for _, network := range in.InstallConfig.Config.Networking.ServiceNetwork {
if network.IP.To4() == nil {
useIPv6 = true
}
}

// Create DNS entries
err = CreateDNSEntries(ctx, &CreateDNSEntriesInput{
SubscriptionID: subscriptionID,
ResourceGroupName: resourceGroupName,
BaseDomainResourceGroupName: baseDomainResourceGroupName,
BaseDomain: baseDomain,
ClusterDomain: clusterDomain,
ClusterName: clusterName,
Region: platform.Region,
InfraID: in.InfraID,
Private: in.InstallConfig.Config.Publish == types.InternalPublishingStrategy,
UseIPv6: useIPv6,
Tags: tags,
CloudName: platform.CloudName,
TokenCredential: tokenCredential,
CloudConfiguration: cloudConfiguration,
})
err = createDNSEntries(ctx, in)
if err != nil {
log.Fatalf("failed to create DNS entries: %v", err)
}
/*
useIPv6 := false
for _, network := range in.InstallConfig.Config.Networking.ServiceNetwork {
if network.IP.To4() == nil {
useIPv6 = true
}
}
*/

// Create DNS entries
/*
err = CreateDNSEntries(ctx, &CreateDNSEntriesInput{
SubscriptionID: subscriptionID,
ResourceGroupName: resourceGroupName,
BaseDomainResourceGroupName: baseDomainResourceGroupName,
BaseDomain: baseDomain,
ClusterDomain: clusterDomain,
ClusterName: clusterName,
Region: platform.Region,
InfraID: in.InfraID,
Private: in.InstallConfig.Config.Publish == types.InternalPublishingStrategy,
UseIPv6: useIPv6,
Tags: tags,
CloudName: platform.CloudName,
TokenCredential: tokenCredential,
CloudConfiguration: cloudConfiguration,
})
if err != nil {
log.Fatalf("failed to create DNS entries: %v", err)
}
*/

// Create user assigned identity
userAssignedIdentityName := fmt.Sprintf("%s-identity", in.InfraID)
Expand Down Expand Up @@ -360,6 +368,11 @@ func (p *Provider) InfraReady(ctx context.Context, in clusterapi.InfraReadyInput
return err
}

err = createLoadBalancers(ctx, in)
if err != nil {
return err
}

p.ResourceGroupName = resourceGroupName
p.StorageAccountName = storageAccountName
p.StorageURL = storageURL
Expand Down Expand Up @@ -433,9 +446,7 @@ func (p Provider) Ignition(ctx context.Context, in clusterapi.IgnitionInput) ([]
return ignShim, nil
}

// PostProvision provisions an external Load Balancer (when appropriate), and adds configuration
// for the MCS to the CAPI-provisioned internal LB.
func (*Provider) PostProvision(ctx context.Context, in clusterapi.PostProvisionInput) error {
func createLoadBalancers(ctx context.Context, in clusterapi.InfraReadyInput) error {
ssn, err := in.InstallConfig.Azure.Session()
if err != nil {
return fmt.Errorf("error retrieving Azure session: %w", err)
Expand Down Expand Up @@ -482,6 +493,96 @@ func (*Provider) PostProvision(ctx context.Context, in clusterapi.PostProvisionI
}
logrus.Debugf("created load balancer: %s", *loadBalancer.ID)

/*
vmClient, err := armcompute.NewVirtualMachinesClient(subscriptionID, ssn.TokenCreds, nil)
if err != nil {
return fmt.Errorf("error creating vm client: %w", err)
}
nicClient, err := armnetwork.NewInterfacesClient(ssn.Credentials.SubscriptionID, ssn.TokenCreds, nil)
if err != nil {
return fmt.Errorf("error creating nic client: %w", err)
}
*/

/*
vmIDs, err := getControlPlaneIDs(in.Client, in.InstallConfig.Config.ControlPlane.Replicas, in.InfraID)
if err != nil {
return fmt.Errorf("failed to get control plane VM IDs: %w", err)
}
vmInput := &vmInput{
infraID: in.InfraID,
resourceGroup: resourceGroup,
vmClient: vmClient,
nicClient: nicClient,
ids: vmIDs,
bap: loadBalancer.Properties.BackendAddressPools[0],
}
if err = associateVMToBackendPool(ctx, *vmInput); err != nil {
return fmt.Errorf("failed to associate control plane VMs with external load balancer: %w", err)
}
*/
}

return nil
}

// PostProvision provisions an external Load Balancer (when appropriate), and adds configuration
// for the MCS to the CAPI-provisioned internal LB.
func (p *Provider) PostProvision(ctx context.Context, in clusterapi.PostProvisionInput) error {
ssn, err := in.InstallConfig.Azure.Session()
if err != nil {
return fmt.Errorf("error retrieving Azure session: %w", err)
}

resourceGroup := fmt.Sprintf("%s-rg", in.InfraID)
if in.InstallConfig.Config.Azure.ResourceGroupName != "" {
resourceGroup = in.InstallConfig.Config.Azure.ResourceGroupName
}

subscriptionID := ssn.Credentials.SubscriptionID
networkClientFactory, err := armnetwork.NewClientFactory(subscriptionID, ssn.TokenCreds, nil)
if err != nil {
return fmt.Errorf("error creating network client factory: %w", err)
}
lbClient := networkClientFactory.NewLoadBalancersClient()
loadBalancer, err := lbClient.Get(ctx, resourceGroup, fmt.Sprintf("%s-internal", in.InfraID), nil)
if err != nil {
return err
}
/*
lbInput := &lbInput{
infraID: in.InfraID,
region: in.InstallConfig.Config.Azure.Region,
resourceGroup: resourceGroup,
subscriptionID: ssn.Credentials.SubscriptionID,
lbClient: lbClient,
pipClient: networkClientFactory.NewPublicIPAddressesClient(),
}
intLoadBalancer, err := updateInternalLoadBalancer(ctx, lbInput)
if err != nil {
return fmt.Errorf("failed to update internal load balancer: %w", err)
}
logrus.Debugf("updated internal load balancer: %s", *intLoadBalancer.ID)
*/

if in.InstallConfig.Config.Publish == types.ExternalPublishingStrategy {
/*
publicIP, err := createPublicIP(ctx, lbInput)
if err != nil {
return fmt.Errorf("failed to create public ip: %w", err)
}
logrus.Debugf("created public ip: %s", *publicIP.ID)
loadBalancer, err := createExternalLoadBalancer(ctx, publicIP, lbInput)
if err != nil {
return fmt.Errorf("failed to create load balancer: %w", err)
}
logrus.Debugf("created load balancer: %s", *loadBalancer.ID)
*/

vmClient, err := armcompute.NewVirtualMachinesClient(subscriptionID, ssn.TokenCreds, nil)
if err != nil {
return fmt.Errorf("error creating vm client: %w", err)
Expand Down Expand Up @@ -510,6 +611,46 @@ func (*Provider) PostProvision(ctx context.Context, in clusterapi.PostProvisionI
}
}

/*
installConfig := in.InstallConfig.Config
platform := installConfig.Platform.Azure
//subscriptionID := ssn.Credentials.SubscriptionID
cloudConfiguration := ssn.CloudConfig
clusterDomain := in.InstallConfig.Config.ClusterDomain()
clusterName := in.InstallConfig.Config.ObjectMeta.Name
baseDomain := in.InstallConfig.Config.BaseDomain
resourceGroupName := p.ResourceGroupName
baseDomainResourceGroupName := in.InstallConfig.Config.Azure.BaseDomainResourceGroupName
useIPv6 := false
for _, network := range in.InstallConfig.Config.Networking.ServiceNetwork {
if network.IP.To4() == nil {
useIPv6 = true
}
}
// Create DNS entries
err = CreateDNSEntries(ctx, &CreateDNSEntriesInput{
SubscriptionID: subscriptionID,
ResourceGroupName: resourceGroupName,
BaseDomainResourceGroupName: baseDomainResourceGroupName,
BaseDomain: baseDomain,
ClusterDomain: clusterDomain,
ClusterName: clusterName,
Region: platform.Region,
InfraID: in.InfraID,
Private: in.InstallConfig.Config.Publish == types.InternalPublishingStrategy,
UseIPv6: useIPv6,
Tags: p.Tags,
CloudName: platform.CloudName,
TokenCredential: ssn.TokenCreds,
CloudConfiguration: cloudConfiguration,
})
if err != nil {
log.Fatalf("failed to create DNS entries: %v", err)
}
*/

return nil
}

Expand Down

0 comments on commit 0d8c1ab

Please sign in to comment.