import logging
import socket
import sys
+import traceback
import warnings
import paramiko
"""
raise VimConnNotImplemented("Should have implemented this")
+ def get_affinity_group(self, affinity_group_id):
+ """Obtain affinity or anti affinity group details from the VIM
+ Returns the flavor dict details {'id':<>, 'name':<>, other vim specific }
+ Raises an exception upon error or if not found
+ """
+ raise VimConnNotImplemented("Should have implemented this")
+
+ def new_affinity_group(self, affinity_group_data):
+ """Adds an affinity or anti affinity group to VIM
+ affinity_group_data contains a dictionary with information, keys:
+ name: name in VIM for the affinity or anti-affinity group
+ type: affinity or anti-affinity
+ scope: Only nfvi-node allowed
+ Returns the affinity or anti affinity group identifier
+ """
+ raise VimConnNotImplemented("Should have implemented this")
+
+ def delete_affinity_group(self, affinity_group_id):
+ """Deletes an affinity or anti affinity group from the VIM identified by its id
+ Returns the used id or raise an exception
+ """
+ raise VimConnNotImplemented("Should have implemented this")
+
def new_image(self, image_dict):
"""Adds a tenant image to VIM
Returns the image id or raises an exception if failed
start,
image_id,
flavor_id,
+ affinity_group_list,
net_list,
cloud_config=None,
disk_list=None,
Params:
'start': (boolean) indicates if VM must start or created in pause mode.
'image_id','flavor_id': image and flavor VIM id to use for the VM
+ affinity_group_list: list of affinity groups, each one is a dictionary.
+ Ignore if empty.
'net_list': list of interfaces, each one is a dictionary with:
'name': (optional) name for the interface.
'net_id': VIM network id where this interface must be connect to. Mandatory for type==virtual
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(
- ip_addr, username=user, password=password, pkey=pkey, timeout=10
+ ip_addr, username=user, password=password, pkey=pkey, timeout=30
)
for command in commands:
- (i, o, e) = client.exec_command(command, timeout=10)
+ (i, o, e) = client.exec_command(command, timeout=30)
returncode = o.channel.recv_exit_status()
outerror = e.read()
if returncode != 0:
text = "run_command='{}' Error='{}'".format(command, outerror)
+ self.logger.debug(traceback.format_tb(e.__traceback__))
raise VimConnUnexpectedResponse(
"Cannot inject ssh key in VM: '{}'".format(text)
)
-
return
except (
socket.error,
paramiko.AuthenticationException,
paramiko.SSHException,
) as message:
+ self.logger.debug(traceback.format_exc())
raise VimConnUnexpectedResponse(
"Cannot inject ssh key in VM: '{}' - {}".format(
ip_addr, str(message)
)
)
-
return
# Optional methods