Skip to content

Commit

Permalink
Merge pull request #230 from elotl/azure-vnet-name-parsing
Browse files Browse the repository at this point in the history
Require setting resourceGroup in provider.yaml for Azure fixes #228
  • Loading branch information
hidalgopl authored Mar 25, 2021
2 parents 20046d1 + 831a0d3 commit a80d595
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 12 deletions.
4 changes: 2 additions & 2 deletions pkg/server/cloud/azure/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ func getAzureConnection(subscriptionID string) (*AzureClient, error) {
return az, nil
}

func NewAzureClient(controllerID, nametag, subscriptionID, region, vNetName, subnetName string) (*AzureClient, error) {
func NewAzureClient(controllerID, nametag, subscriptionID, region, vNetName, subnetName, resourceGroup string) (*AzureClient, error) {
az, err := getAzureConnection(subscriptionID)
if err != nil {
return nil, util.WrapError(err, "Could not create Azure API client")
Expand All @@ -132,7 +132,7 @@ func NewAzureClient(controllerID, nametag, subscriptionID, region, vNetName, sub
}

// if the user specified a vNet, use that, otherwise create the vNet
err = az.setupClusterVNet(vNetName, subnetName)
err = az.setupClusterVNet(vNetName, subnetName, resourceGroup)
if err != nil {
return az, util.WrapError(err, "Error setting up cluster virtual network")
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/server/cloud/azure/azure_functional_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func TestAzureCloud(t *testing.T) {
controllerID = api.SimpleNameGenerator.GenerateName(testControllerID)
}

az, err := NewAzureClient(controllerID, controllerID, testSubscriptionID, testRegion, testVNetName, testSubnetName)
az, err := NewAzureClient(controllerID, controllerID, testSubscriptionID, testRegion, testVNetName, testSubnetName, "")
if executorNStr == "" {
// When not running on Jenkins, clean up resources.
defer cleanupFromTest(az)
Expand Down
11 changes: 5 additions & 6 deletions pkg/server/cloud/azure/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,14 @@ func splitVNetName(vNetName string) (string, string) {
return resourceGroup, vNetName
}

func (az *AzureClient) getVNet(fullVNetName string) (VirtualNetworkAttributes, error) {
resourceGroup, vNetName := splitVNetName(fullVNetName)
func (az *AzureClient) getVNet(vNetName, resourceGroup string) (VirtualNetworkAttributes, error) {
ctx := context.Background()
timeoutCtx, cancel := context.WithTimeout(ctx, azureDefaultTimeout)
defer cancel()
azVNet, err := az.vnets.Get(timeoutCtx, resourceGroup, vNetName, "")
var vNetAttrs VirtualNetworkAttributes
if err != nil {
return vNetAttrs, util.WrapError(err, "Error getting virtual network %s", fullVNetName)
return vNetAttrs, util.WrapError(err, "Error getting virtual network %s in resourceGroup %s", vNetName, resourceGroup)
}
vNetAttrs, err = toVNetAttrs(&azVNet)
if err != nil {
Expand All @@ -91,12 +90,12 @@ func (az *AzureClient) getVNet(fullVNetName string) (VirtualNetworkAttributes, e
// If the user supplied a vNetName, use that vNet
// -- query it, see if it exists, get the resource group
// otherwise use the local VNet
func (az *AzureClient) setupClusterVNet(vNetName, subnetName string) error {
func (az *AzureClient) setupClusterVNet(vNetName, subnetName, resourceGroup string) error {
if vNetName != "" {
if subnetName == "" {
return fmt.Errorf("Error setting up azure networking: a subnet name (cloud.azure.subnetName) must be supplied in provider.yaml if a virtual network name is specified in provider.yaml")
}
vnet, err := az.getVNet(vNetName)
vnet, err := az.getVNet(vNetName, resourceGroup)
if err != nil {
return err
}
Expand Down Expand Up @@ -218,7 +217,7 @@ func (az *AzureClient) getLocalInstanceNetwork() (VirtualNetworkAttributes, clou
}
klog.V(2).Infof("local machine is connected to subnet %s", subnetNames[0])

vNet, err := az.getVNet(vNetNames[0])
vNet, err := az.getVNet(vNetNames[0], "")
if err != nil {
return vNet, subnet, util.WrapError(err, "Error looking up local machine's vNet %s. Please specify a virtualNetworkName and subnetName in provider.yaml", vNetNames[0])
}
Expand Down
5 changes: 5 additions & 0 deletions pkg/server/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ type AzureConfig struct {
SubscriptionID string `json:"subscriptionID"`
Location string `json:"location"`
VNetName string `json:"virtualNetworkName"`
ResourceGroup string `json:"resourceGroup"`
SubnetName string `json:"subnetName"`
TenantID string `json:"tenantID"`
ClientID string `json:"clientID"`
Expand Down Expand Up @@ -348,6 +349,7 @@ func configureCloudProvider(cf *ServerConfigFile, controllerID, nametag string)
cc.Azure.Location,
cc.Azure.VNetName,
cc.Azure.SubnetName,
cc.Azure.ResourceGroup,
)
if err != nil {
return nil, util.WrapError(err, "Error creating Azure cloud client")
Expand Down Expand Up @@ -513,6 +515,9 @@ func validateAzureConfig(cf *AzureConfig) field.ErrorList {
if cf.ClientSecret == blankTemplateValue {
allErrs = append(allErrs, field.Required(fldPath.Child("clientSecret"), "clientSecret must be set in provider.yaml or pulled from the environment"))
}
if cf.ResourceGroup == blankTemplateValue || cf.ResourceGroup == "" {
allErrs = append(allErrs, field.Required(fldPath.Child("resourceGroup"), "resourceGroup must be set in provider.yaml"))
}

return allErrs
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/util/k8s/kubeconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,15 +69,15 @@ func createKubeConfigFromSecret(rm *manager.ResourceManager, serverURL, saSecret
func validateKubeconfig(config *clientcmdapi.Config) error {
cc, err := clientcmd.NewDefaultClientConfig(*config, &clientcmd.ConfigOverrides{}).ClientConfig()
if err != nil {
return util.WrapError(err, "validating kubeconfig")
return util.WrapError(err, "getting client config")
}
clientset, err := kubernetes.NewForConfig(cc)
if err != nil {
return util.WrapError(err, "validating kubeconfig")
return util.WrapError(err, "getting clientset")
}
_, err = clientset.ServerVersion()
if err != nil {
return util.WrapError(err, "validating kubeconfig")
return util.WrapError(err, "getting server version")
}
return nil
}

0 comments on commit a80d595

Please sign in to comment.