diff --git a/opennebula_api/models.py b/opennebula_api/models.py index c93e4f9d..bb39af42 100644 --- a/opennebula_api/models.py +++ b/opennebula_api/models.py @@ -67,12 +67,12 @@ class OpenNebulaManager(): except WrongNameError as wrong_name_err: opennebula_user = self.oneadmin_client.call(oca.User.METHODS['allocate'], email, password, 'core') + return opennebula_user except ConnectionRefusedError: print('Could not connect to host: {host} via protocol {protocol}'.format( host=settings.OPENNEBULA_DOMAIN, protocol=settings.OPENNEBULA_PROTOCOL) ) - return opennebula_user def _get_user_pool(self): try: user_pool = oca.UserPool(self.oneadmin_client) @@ -99,3 +99,35 @@ class OpenNebulaManager(): ) return vm_id + def create_template(self, name, cores, memory, disk_size): + """Create and add a new template to opennebula. + :param name: A string representation describing the template. + Used as label in view. + :param cores: Amount of virtual cpu cores for the VM. + :param memory: Amount of RAM for the VM (MB) + :param disk_size: Amount of disk space for VM (MB) + """ + template_string_formatter = """ + """ + template_id = oca.VmTemplate.allocate( + self.oneadmin_client, + template_string_formatter.format( + name=name, + vcpu=cores, + cpu=0.1*cores, + size=1024 * disk_size, + memory=1024 * memory + ) + ) + + return template_id diff --git a/opennebula_api/tests.py b/opennebula_api/tests.py index 6852fd1b..7781fa41 100644 --- a/opennebula_api/tests.py +++ b/opennebula_api/tests.py @@ -18,7 +18,11 @@ class OpenNebulaManagerTestCases(TestCase): def test_model_can_connect_to_server(self): """Test the opennebula manager model can connect to a server.""" - self.assertFalse(self.manager is None) + try: + version = self.manager.version() + except: + version = None + self.assertFalse(version is None) def test_model_can_create_user(self): """Test the opennebula manager model can create a new user.""" @@ -46,8 +50,10 @@ class VirtualMachineTemplateTestCase(TestCase): self.disk_size = 10.0 self.manager = OpenNebulaManager(email=None, password=None, create_user=False) - self.opennebula_id = self.manager.create_template(self.cores, self.memory, - self.disk_size) + self.opennebula_id = self.manager.create_template(name=self.template_name, + cores=self.cores, + memory=self.memory, + disk_size=self.disk_size) self.template = VirtualMachineTemplate(opennebula_id=self.opennebula_id, base_price=self.base_price,