1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#################################################################
#
# Copyright 2015 Ericsson AB
# All Rights Reserved
#
# Author: Manuel Buil <Manuel.Buil@ericsson.com>
# Version: 0.1
#
#################################################################
from novaclient.v2 import client as nova
from keystoneclient.v2_0 import client as keystone
from glanceclient import client as glance
class OpenStack_API:
def __init__(self, authurl, tenantName, tenantUser, tenantPass):
self.authurl = authurl
self.tenantName = tenantName
self.tenantUser = tenantUser
self.tenantPass = tenantPass
def get_token(self):
# Establish connection to Openstack controller
osconn = keystone.Client(username=self.tenantUser,
password=self.tenantPass,
tenant_name=self.tenantName,
auth_url=self.authurl)
token = osconn.auth_token
return token
def get_endpoint(self, service_type, endpoint_type):
# Establish connection to Openstack controller
osconn = keystone.Client(username=self.tenantUser,
password=self.tenantPass,
tenant_name=self.tenantName,
auth_url=self.authurl)
endpoint = osconn.service_catalog.url_for(
service_type=service_type, endpoint_type=endpoint_type)
return endpoint
def find_image(self, SF_type):
# Find in glance the image that matches the SF we want to deploy
token = self.get_token()
endpoint = self.get_endpoint('image', 'publicURL')
osconn = glance.Client('1', endpoint=endpoint, token=token)
image_list = osconn.images.list()
for item in image_list:
try:
image_type = item.properties.get('image_type', None)
image_id = None
if (image_type == SF_type):
image_id = item.id
break
except:
print("Errrorr")
# Search image which matches the SF type
return image_id
def create_vm(self, name, image, flavor, nics=None):
# Establish connection to Openstack controller
osconn = nova.Client(self.tenantUser,
self.tenantPass,
self.tenantName,
self.authurl,
service_type="compute")
try:
if nics is None:
vm = osconn.servers.create(name, image, flavor)
else:
vm = osconn.servers.create(name, image, flavor, nics)
except:
print("Something wrong happened while creating the VM")
vm = None
return vm
|