<p>看看这个视频和GitHub repo,它演示了如何通过REST和Python修改池成员资格。在</p>
<p>最后,它是关于获取通过更新发送的正确json</p>
<p><a href="https://mix.office.com/watch/f4cvoa3cnfoe" rel="nofollow">https://mix.office.com/watch/f4cvoa3cnfoe</a></p>
<p>注意在下面的<code>/src</code>路径具有Python版本</p>
<p><a href="https://github.com/cicorias/AzureLoadbalancedPoolUpdater" rel="nofollow">https://github.com/cicorias/AzureLoadbalancedPoolUpdate</a>r</p>
<h2>方法和顺序</h2>
<p>实际上,您是从NIC的方向而不是从负载平衡器的角度出发。更新(PUT)针对的是“NIC”。在</p>
总的顺序是
<ol>
<li>获取虚拟机及其网卡</li>
<li>获取NIC与后端池的关系</li>
<li>通过将<code>loadBalancerBackendAddressPools</code>留空删除</li>
<li>通过将资源ID放入“loadBalancerBackendAddressPools”数组进行添加</li>
</ol>
<p>这里是通过PUT创建REST请求。在</p>
<pre><code>def build_request(vm_object, nic_object, load_balancer=None):
"""
:param vm_object : azure.mgmt.compute.VirtualMachine
:param nic_object : azure.mgmt.network.networkresourceprovider.NetworkInterface
:param load_balancer : azure.mgmt.network.LoadBalancer
:return: dict
"""
if load_balancer == None:
backend_pool = []
else:
backend_pool = [{ 'id' : load_balancer.load_balancer.backend_address_pools[0].id }]
request = {
'properties': {
'virtualMachine' : {
'id' : vm_object.virtual_machine.id
},
'ipConfigurations' : [{ #may have to build by hand
'properties' : {
'loadBalancerBackendAddressPools' : backend_pool,
'subnet' : {
'id' : nic_object.ip_configurations[0].subnet.id
}
},
'name' : nic_object.ip_configurations[0].name,
'id' : nic_object.ip_configurations[0].id
}]
},
'id' : nic_object.id,
'name' : nic_object.name,
'location' : vm_object.virtual_machine.location,
'type' : 'Microsoft.Network/networkInterfaces'
}
return request
</code></pre>