Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
Change-Id: Idbad76db40b08e41cdc41789b487c9d476852c57
Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
     lab_user,
     GenerateTokenView,
     analytics_job,
-    resource_ci_metadata,
-    resource_ci_userdata,
-    resource_ci_userdata_directory,
-    all_images,
-    all_opsyss,
-    single_image,
-    single_opsys,
     user_bookings,
     specific_booking,
     extend_booking,
     all_users,
     images_for_template,
     available_templates,
+    resource_ci_metadata,
+    resource_ci_userdata,
+    resource_ci_userdata_directory,
+    all_images,
+    all_opsyss,
+    single_image,
+    single_opsys,
+    create_ci_file,
 )
 
 urlpatterns = [
     path('resource_inventory/availableTemplates', available_templates),
     path('resource_inventory/<int:template_id>/images', images_for_template),
 
+    path('resource_inventory/cloud/create', create_ci_file),
+
     path('users', all_users),
     path('labs', list_labs),
 
 
     return JsonResponse(users, safe=False)
 
 
+def create_ci_file(request):
+    token = auth_and_log(request, 'booking/makeCloudConfig')
+
+    if isinstance(token, HttpResponse):
+        return token
+
+    try:
+        cconf = request.body
+        d = yaml.load(cconf)
+        if not (type(d) is dict):
+            raise Exception()
+
+        cconf = CloudInitFile.create(text=cconf, priority=CloudInitFile.objects.count())
+
+        return JsonResponse({"id": cconf.id})
+    except Exception:
+        return JsonResponse({"error": "Provided config file was not valid yaml or was not a dict at the top level"})
+
+
 """
 Lab API Views
 """