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