Merge "Azure: don't require full subnet id"
This commit is contained in:
commit
8d2e723605
|
@ -243,6 +243,18 @@ class AzureAdapter(statemachine.Adapter):
|
|||
self.provider.rate_limit)
|
||||
with open(self.provider.auth_path) as f:
|
||||
self.azul = azul.AzureCloud(json.load(f))
|
||||
if provider_config.subnet_id:
|
||||
self.subnet_id = provider_config.subnet_id
|
||||
else:
|
||||
if isinstance(provider_config.network, str):
|
||||
net_info = {'network': provider_config.network}
|
||||
else:
|
||||
net_info = provider_config.network
|
||||
subnet = self.azul.subnets.get(
|
||||
net_info.get('resource-group', self.provider.resource_group),
|
||||
net_info['network'],
|
||||
net_info.get('subnet', 'default'))
|
||||
self.subnet_id = subnet['id']
|
||||
|
||||
def getCreateStateMachine(self, hostname, label, metadata, retries):
|
||||
return AzureCreateStateMachine(
|
||||
|
@ -390,11 +402,11 @@ class AzureAdapter(statemachine.Adapter):
|
|||
|
||||
if ipv4:
|
||||
ip_configs.append(make_ip_config('nodepool-v4-ip-config',
|
||||
'IPv4', self.provider.subnet_id,
|
||||
'IPv4', self.subnet_id,
|
||||
pip4))
|
||||
if ipv6:
|
||||
ip_configs.append(make_ip_config('nodepool-v6-ip-config',
|
||||
'IPv6', self.provider.subnet_id,
|
||||
'IPv6', self.subnet_id,
|
||||
pip6))
|
||||
|
||||
nic_data = {
|
||||
|
|
|
@ -126,32 +126,60 @@ class AzureCRUD:
|
|||
|
||||
def get(self, resource_group_name, name):
|
||||
url = self.url(
|
||||
'{_resource}/{_resourceName}',
|
||||
_resource=self.resource,
|
||||
_resourceName=name,
|
||||
'{}/{}'.format(self.resource, name),
|
||||
resourceGroupName=resource_group_name,
|
||||
)
|
||||
return self.cloud.get(url)
|
||||
|
||||
def create(self, resource_group_name, name, params):
|
||||
url = self.url(
|
||||
'{_resource}/{_resourceName}',
|
||||
_resource=self.resource,
|
||||
_resourceName=name,
|
||||
'{}/{}'.format(self.resource, name),
|
||||
resourceGroupName=resource_group_name,
|
||||
)
|
||||
return self.cloud.put(url, params)
|
||||
|
||||
def delete(self, resource_group_name, name):
|
||||
url = self.url(
|
||||
'{_resource}/{_resourceName}',
|
||||
_resource=self.resource,
|
||||
_resourceName=name,
|
||||
'{}/{}'.format(self.resource, name),
|
||||
resourceGroupName=resource_group_name,
|
||||
)
|
||||
return self.cloud.delete(url)
|
||||
|
||||
|
||||
class AzureSubnetCRUD(AzureCRUD):
|
||||
def list(self, resource_group_name, virtual_network_name):
|
||||
url = self.url(
|
||||
self.resource,
|
||||
resourceGroupName=resource_group_name,
|
||||
virtualNetworkName=virtual_network_name,
|
||||
)
|
||||
return self.cloud.paginate(self.cloud.get(url))
|
||||
|
||||
def get(self, resource_group_name, virtual_network_name, name):
|
||||
url = self.url(
|
||||
'{}/{}'.format(self.resource, name),
|
||||
resourceGroupName=resource_group_name,
|
||||
virtualNetworkName=virtual_network_name,
|
||||
)
|
||||
return self.cloud.get(url)
|
||||
|
||||
def create(self, resource_group_name, virtual_network_name, name, params):
|
||||
url = self.url(
|
||||
'{}/{}'.format(self.resource, name),
|
||||
resourceGroupName=resource_group_name,
|
||||
virtualNetworkName=virtual_network_name,
|
||||
)
|
||||
return self.cloud.put(url, params)
|
||||
|
||||
def delete(self, resource_group_name, virtual_network_name, name):
|
||||
url = self.url(
|
||||
'{}/{}'.format(self.resource, name),
|
||||
resourceGroupName=resource_group_name,
|
||||
virtualNetworkName=virtual_network_name,
|
||||
)
|
||||
return self.cloud.delete(url)
|
||||
|
||||
|
||||
class AzureDictResponse(dict):
|
||||
def __init__(self, response, *args):
|
||||
super().__init__(*args)
|
||||
|
@ -193,6 +221,10 @@ class AzureCloud:
|
|||
self.resource_groups = AzureResourceGroupsCRUD(
|
||||
self,
|
||||
'2020-06-01')
|
||||
self.subnets = AzureSubnetCRUD(
|
||||
self,
|
||||
'Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets',
|
||||
'2020-07-01')
|
||||
|
||||
def get(self, url, codes=[200]):
|
||||
return self.request('GET', url, None, codes)
|
||||
|
|
|
@ -175,6 +175,7 @@ class AzureProviderConfig(ProviderConfig):
|
|||
self.zuul_public_key = self.provider['zuul-public-key']
|
||||
self.location = self.provider['location']
|
||||
self.subnet_id = self.provider.get('subnet-id')
|
||||
self.network = self.provider.get('network')
|
||||
# Don't use these directly; these are default values for
|
||||
# labels.
|
||||
self.public_ipv4 = self.provider.get('public-ipv4', False)
|
||||
|
@ -213,7 +214,12 @@ class AzureProviderConfig(ProviderConfig):
|
|||
v.Required('location'): str,
|
||||
v.Required('resource-group'): str,
|
||||
v.Required('resource-group-location'): str,
|
||||
v.Required('subnet-id'): str,
|
||||
'subnet-id': str,
|
||||
'network': v.Any(str, {
|
||||
'resource-group': str,
|
||||
'network': str,
|
||||
'subnet': str,
|
||||
}),
|
||||
v.Required('cloud-images'): [provider_cloud_images],
|
||||
v.Required('auth-path'): str,
|
||||
'ipv4': bool,
|
||||
|
|
Loading…
Reference in New Issue