Skip to content

Commit

Permalink
Support for Instances and updated on records IM (#68)
Browse files Browse the repository at this point in the history
## LXD, KVM, Native
Support for multiple instances of the same FDU
## Record IM
Added more record related fields and information
## API updates
Some changes in API.FDU

- fdu_id = api.fdu.onboard(descriptor)
- instance_id = api.fdu.define(fdu_id, node_id)
- api.fdu.configure(instance_id)
- api.fdu.start(instance_id)
- api.fdu.stop(instance_id)
- api.fdu.clean(instance_id)
- api.fdu_undefine(instance_id)

Helpers

- instance_id = api.fdu.instantiate(fdu_id, node_id) : define, configure and start
- api.fdu.terminate(instance_id) : stop, clean, undefine
- api.fdu.get_nodes(fdu_uuid) -> node where the fdu is instantiated
- api.fdu.instance_list(fdu_uuid) -> dict of {node_id: [instances list]}
  • Loading branch information
gabrik committed Apr 17, 2019
1 parent b83e5f8 commit 7b5738d
Show file tree
Hide file tree
Showing 20 changed files with 1,929 additions and 1,377 deletions.
62 changes: 29 additions & 33 deletions fos-plugins/KVM/KVMFDU.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,46 +22,42 @@

class KVMFDU(FDU):

def __init__(self, uuid, name, interfaces, connection_points, image,
comp_requirements, configuration, ssh_key):

def __init__(self, uuid,fdu_uuid,node, status, accelerators, io_ports,
interfaces, connection_points, hypervisor_info):
super(KVMFDU, self).__init__()
self.uuid = uuid
self.name = name
self.fdu_uuid = fdu_uuid
self.node = node
self.status = status
self.accelerators = accelerators
self.io_ports = io_ports
self.interfaces = interfaces
self.cps = connection_points
self.image = image
self.configuration = configuration
self.ssh_key = ssh_key
self.comp_requirements = comp_requirements
self.xml = None
self.cdrom = None
self.disk = None
self.hv_info = hypervisor_info
self.error_code = 0
self.error_msg = ''
self.migration_properties = None
self.image = None
self.comp_requirements = None
self.devices = None
self.conf = None
self.profiles = None
self.configuration = None
self.name = 'v{}'.format(uuid)

@staticmethod
def from_descriptor(desciptor):
fdu = KVMFDU(desciptor.get('uuid'),
desciptor.get('name'),
desciptor.get('interfaces'),
desciptor.get('connection_points'),
desciptor.get('image'),
desciptor.get('computation_requirements'),
desciptor.get('configuration'),
desciptor.get('ssh-key'))
return fdu

@staticmethod
def to_descriptor(fdu):
d = {
'name': fdu.name,
'uuid': fdu.uuid,
'computation_requirements': json.dumps(fdu.comp_requirements),
'base_image': json.dumps(fdu.image),
'hypervisor_type': 'KVM',
'interfaces': json.dumps(fdu.interfaces),
'connection_points': json.dumps(fdu.cps)
}
return d
def from_record(record):
fdu = KVMFDU(record.get('uuid'),
record.get('fdu_uuid'),
record.get('node'),
record.get('status'),
record.get('accelerators'),
record.get('io_ports'),
record.get('interfaces'),
record.get('connection_points'),
record.get('hypervisor_info'))
return fdu

def on_define(self):
self.state = State.DEFINED
Expand Down
437 changes: 231 additions & 206 deletions fos-plugins/KVM/KVM_plugin

Large diffs are not rendered by default.

44 changes: 27 additions & 17 deletions fos-plugins/LXD/LXDFDU.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,34 +20,44 @@

class LXDFDU(FDU):

def __init__(self, uuid, name, interfaces, connection_points, image,
comp_requirements, configuration, ssh_keys):

def __init__(self, uuid,fdu_uuid,node, status, accelerators, io_ports,
interfaces, connection_points, hypervisor_info):
super(LXDFDU, self).__init__()
self.uuid = uuid
self.name = name
self.fdu_uuid = fdu_uuid
self.node = node
self.status = status
self.accelerators = accelerators
self.io_ports = io_ports
self.interfaces = interfaces
self.cps = connection_points
self.image = image
self.configuration = configuration
self.ssh_key = ssh_keys
self.comp_requirements = comp_requirements
self.hv_info = hypervisor_info
self.error_code = 0
self.error_msg = ''
self.migration_properties = None
self.image = None
self.comp_requirements = None
self.devices = None
self.conf = None
self.profiles = None
self.configuration = None
self.name = 'c{}'.format(uuid)

@staticmethod
def from_descriptor(desciptor):
fdu = LXDFDU(desciptor.get('uuid'),
desciptor.get('name'),
desciptor.get('interfaces'),
desciptor.get('connection_points'),
desciptor.get('image'),
desciptor.get('computation_requirements'),
desciptor.get('configuration'),
desciptor.get('ssh-key'))
def from_record(record):
fdu = LXDFDU(record.get('uuid'),
record.get('fdu_uuid'),
record.get('node'),
record.get('status'),
record.get('accelerators'),
record.get('io_ports'),
record.get('interfaces'),
record.get('connection_points'),
record.get('hypervisor_info'))
return fdu



def on_defined(self):
self.state = State.DEFINED

Expand Down
Loading

0 comments on commit 7b5738d

Please sign in to comment.