with the definition of the method to be implemented.
"""
-import logging
-import paramiko
-import socket
-from io import StringIO
-import yaml
-import sys
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from http import HTTPStatus
+from io import StringIO
+import logging
+import socket
+import sys
+import traceback
import warnings
+import paramiko
+import yaml
+
__author__ = "Alfonso Tierno, Igor D.C."
__date__ = "$14-aug-2017 23:59:59$"
"""
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
"""Returns the VM instance information from VIM"""
raise VimConnNotImplemented("Should have implemented this")
- def delete_vminstance(self, vm_id, created_items=None):
+ def delete_vminstance(self, vm_id, created_items=None, volumes_to_hold=None):
"""
Removes a VM instance from VIM and its associated elements
:param vm_id: VIM identifier of the VM, provided by method new_vminstance
"chmod 644 ~/.ssh/authorized_keys",
"chmod 700 ~/.ssh/",
}
+
+ logging.basicConfig(
+ format="%(asctime)s %(levelname)s %(name)s %(filename)s:%(lineno)s %(message)s"
+ )
+ logging.getLogger("paramiko").setLevel(logging.DEBUG)
client = paramiko.SSHClient()
try:
pkey = None
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,
+ auth_timeout=60,
)
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
"""
raise VimConnNotImplemented("SFC support not implemented")
+ def migrate_instance(self, vm_id, compute_host=None):
+ """Migrate a vdu
+ Params:
+ vm_id: ID of an instance
+ compute_host: Host to migrate the vdu to
+ Returns the vm state or raises an exception upon error
+ """
+ raise VimConnNotImplemented("Should have implemented this")
+
+ def resize_instance(self, vm_id, flavor_id=None):
+ """
+ resize a vdu
+ param:
+ vm_id: ID of an instance
+ flavor_id: flavor_id to resize the vdu to
+ """
+ raise VimConnNotImplemented("Should have implemented this")
+
# NOT USED METHODS in current version. Deprecated
@deprecated
def host_vim2gui(self, host, server_dict):