From 617234f7ffb5d4ae8331f2de8e340d262a629f7d Mon Sep 17 00:00:00 2001 From: Máhonfai Bálint <mbalint314@gmail.com> Date: Thu, 28 May 2020 18:34:43 +0200 Subject: [PATCH] Add function to mass create VMs for a list of users --- circle/vm/models/instance.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/circle/vm/models/instance.py b/circle/vm/models/instance.py index 0bb759a..91fe995 100644 --- a/circle/vm/models/instance.py +++ b/circle/vm/models/instance.py @@ -439,6 +439,28 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin, return [cls.create(cps, disks, networks, req_traits, tags) for cps in customized_params] + @classmethod + def mass_create_for_users(cls, template, users, **kwargs): + """ + Create and deploy an instance of a template + for each user in a list of users. + """ + user_instances = [] + user_id = None + try: + for user_id in users: + user_instances.append(User.objects.get(profile__org_id=user_id)) + except User.DoesNotExist: + raise Exception("User with id %s doesn't exist" % user_id) + + instances = [] + for user in user_instances: + instance = cls.create_from_template(template, user, **kwargs) + instance.deploy(user=user) + instances.append(instance) + + return instances + def clean(self, *args, **kwargs): self.time_of_suspend, self.time_of_delete = self.get_renew_times() super(Instance, self).clean(*args, **kwargs) -- libgit2 0.26.0