X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FRO.git;a=blobdiff_plain;f=RO-VIM-openstack%2Fosm_rovim_openstack%2Fvimconn_openstack.py;h=1083e3911b92d8570c97952c41ba135fdfca50bd;hp=c59bf9045cc65ccebd663af569e2d474d4465c33;hb=ebaba1f2fc89f24327e576f3a9235a94c8fade30;hpb=80135b928ab442c38898750b4751480205b4affc diff --git a/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py b/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py index c59bf904..1083e391 100644 --- a/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py +++ b/RO-VIM-openstack/osm_rovim_openstack/vimconn_openstack.py @@ -30,32 +30,29 @@ to the VIM connector's SFC resources as follows: - Service Function Path (OSM) -> Port Chain (Neutron) """ -from osm_ro_plugin import vimconn - -# import json +import copy +from http.client import HTTPException import logging -import netaddr -import time -import yaml +from pprint import pformat import random import re -import copy -from pprint import pformat -from novaclient import client as nClient, exceptions as nvExceptions -from keystoneauth1.identity import v2, v3 +import time + +from cinderclient import client as cClient +from glanceclient import client as glClient +import glanceclient.exc as gl1Exceptions from keystoneauth1 import session +from keystoneauth1.identity import v2, v3 import keystoneclient.exceptions as ksExceptions -import keystoneclient.v3.client as ksClient_v3 import keystoneclient.v2_0.client as ksClient_v2 -from glanceclient import client as glClient -import glanceclient.exc as gl1Exceptions -from cinderclient import client as cClient - -# TODO py3 check that this base exception matches python2 httplib.HTTPException -from http.client import HTTPException -from neutronclient.neutron import client as neClient +import keystoneclient.v3.client as ksClient_v3 +import netaddr from neutronclient.common import exceptions as neExceptions +from neutronclient.neutron import client as neClient +from novaclient import client as nClient, exceptions as nvExceptions +from osm_ro_plugin import vimconn from requests.exceptions import ConnectionError +import yaml __author__ = "Alfonso Tierno, Gerardo Garcia, Pablo Montes, xFlow Research, Igor D.C., Eduardo Sousa" __date__ = "$22-sep-2017 23:59:59$" @@ -864,6 +861,14 @@ class vimconnector(vimconn.VimConnector): if self.config.get("disable_network_port_security"): network_dict["port_security_enabled"] = False + if self.config.get("neutron_availability_zone_hints"): + hints = self.config.get("neutron_availability_zone_hints") + + if isinstance(hints, str): + hints = [hints] + + network_dict["availability_zone_hints"] = hints + new_net = self.neutron.create_network({"network": network_dict}) # print new_net # create subnetwork, even if there is no profile @@ -1169,6 +1174,8 @@ class vimconnector(vimconn.VimConnector): flavor_dict["ram"], flavor_dict["vcpus"], flavor_dict["disk"], + flavor_dict.get("ephemeral", 0), + flavor_dict.get("swap", 0), ) # numa=None extended = flavor_dict.get("extended", {}) @@ -1188,7 +1195,13 @@ class vimconnector(vimconn.VimConnector): continue # TODO - flavor_data = (flavor.ram, flavor.vcpus, flavor.disk) + flavor_data = ( + flavor.ram, + flavor.vcpus, + flavor.disk, + flavor.ephemeral, + flavor.swap if isinstance(flavor.swap, int) else 0, + ) if flavor_data == flavor_target: return flavor.id elif ( @@ -1338,10 +1351,12 @@ class vimconnector(vimconn.VimConnector): # create flavor new_flavor = self.nova.flavors.create( - name, - ram, - vcpus, - flavor_data.get("disk", 0), + name=name, + ram=ram, + vcpus=vcpus, + disk=flavor_data.get("disk", 0), + ephemeral=flavor_data.get("ephemeral", 0), + swap=flavor_data.get("swap", 0), is_public=flavor_data.get("is_public", True), ) # add metadata