Commit 13928bea by Szabolcs Gelencser

Implement create_azure_interface task.

parent 1562b83b
...@@ -8,6 +8,88 @@ from vm import VMNetwork ...@@ -8,6 +8,88 @@ from vm import VMNetwork
from vmcelery import native_ovs from vmcelery import native_ovs
driver = getenv("HYPERVISOR_TYPE", "test") driver = getenv("HYPERVISOR_TYPE", "test")
from azure.common.credentials import ServicePrincipalCredentials
import azure.mgmt.network
SUBSCRIPTION_ID = getenv('SUBSCRIPTION_ID')
CLIENT_ID = getenv('CLIENT_ID')
SECRET = getenv('SECRET')
TENANT = getenv('TENANT')
GROUP_NAME = getenv('GROUP_NAME')
REGION = getenv('REGION')
credentials = ServicePrincipalCredentials(
client_id = CLIENT_ID,
secret = SECRET,
tenant = TENANT,
)
network_client = azure.mgmt.network.NetworkManagementClient(
credentials,
SUBSCRIPTION_ID
)
@celery.task
def create_azure_interface(ifacepk, vlan_name):
""" Create azure network interface """
public_ip_name = "pip_%d" % ifacepk
network_interface_name = "nic_%d" % ifacepk
subnet = network_client.subnets.get(
GROUP_NAME, vlan_name, "%s.subnet" % vlan_name)
# create public ip #TODO: should be optional
pub_ip_poller = network_client.public_ip_addresses.create_or_update(
GROUP_NAME,
public_ip_name,
azure.mgmt.network.models.PublicIPAddress(
location=REGION,
public_ip_allocation_method= \
azure.mgmt.network.models.IPAllocationMethod.dynamic,
idle_timeout_in_minutes=4,
),
)
try:
pub_ip_poller.wait()
public_ip_id = pub_ip_poller.result().id
logging.info("created public ip with id: %s" % public_ip_id)
except Exception, e:
logging.error("cloud not create public ip")
logging.error(str(e))
return None
# create nic
nic_poller = network_client.network_interfaces.create_or_update(
GROUP_NAME,
network_interface_name,
azure.mgmt.network.models.NetworkInterface(
location=REGION,
ip_configurations=[
azure.mgmt.network.models.NetworkInterfaceIPConfiguration(
name='default',
private_ip_allocation_method= \
azure.mgmt.network.models.IPAllocationMethod.dynamic,
subnet=subnet,
public_ip_address=azure.mgmt.network.models.PublicIPAddress(
id=public_ip_id,
),
),
],
),
)
try:
nic_poller.wait()
nic_id = nic_poller.result().id
logging.info("created network interface with id: %s" % nic_id)
return nic_id
except Exception, e:
logging.error("cloud not create network interface")
logging.error(str(e))
#TODO: should delete public ip (rollback)
return None
@celery.task @celery.task
def create(network): def create(network):
......
GitPython==0.3.6
Pillow==2.3.0
amqp==1.4.9
anyjson==0.3.3
azure==2.0.0rc6
azure-batch==1.0.0
azure-common==1.1.4
azure-mgmt==0.30.0rc6
azure-mgmt-batch==1.0.0
azure-mgmt-compute==0.30.0rc6
azure-mgmt-keyvault==0.30.0rc6
azure-mgmt-logic==1.0.0
azure-mgmt-network==0.30.0rc6
azure-mgmt-nspkg==1.0.0
azure-mgmt-redis==1.0.0
azure-mgmt-resource==0.30.0rc6
azure-mgmt-scheduler==1.0.0
azure-mgmt-storage==0.30.0rc6
azure-nspkg==1.0.0
azure-servicebus==0.20.3
azure-servicemanagement-legacy==0.20.4
azure-storage==0.33.0
billiard==3.3.0.23
celery==3.1.17 celery==3.1.17
certifi==2016.9.26
cffi==1.8.3
chardet==2.3.0
cryptography==1.5.2
decorator==3.4.0 decorator==3.4.0
enum34==1.1.6
futures==3.0.5
gitdb==0.6.4
idna==2.1
ipaddress==1.0.17
isodate==0.5.4
keyring==9.3.1
kombu==3.0.35
lxml==3.4.2 lxml==3.4.2
msrest==0.4.4
msrestazure==0.4.3
oauthlib==2.0.0
psutil==1.1.3 psutil==1.1.3
Pillow==2.3.0 pyasn1==0.1.9
GitPython==0.3.6 pycparser==2.14
python-dateutil==2.5.3
pytz==2016.6.1
requests==2.11.1
requests-oauthlib==0.7.0
six==1.10.0
smmap==0.9.0
wsgiref==0.1.2
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment