Commit feeea6da by Szabolcs Gelencser

Comment unused celery tasks, configure local celery transport

parent 1d8b8edb
......@@ -3,8 +3,26 @@
<component name="ChangeListManager">
<list default="true" id="1fbec8af-5a7c-40f9-b994-83ac07d1ae1d" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/circle/dashboard/views/template.py" afterPath="$PROJECT_DIR$/circle/dashboard/views/template.py" />
<change beforePath="$PROJECT_DIR$/circle/circle/db.sqlite3" afterPath="$PROJECT_DIR$/circle/circle/db.sqlite3" />
<change beforePath="$PROJECT_DIR$/circle/circle/settings/base.py" afterPath="$PROJECT_DIR$/circle/circle/settings/base.py" />
<change beforePath="$PROJECT_DIR$/circle/common/models.py" afterPath="$PROJECT_DIR$/circle/common/models.py" />
<change beforePath="$PROJECT_DIR$/circle/dashboard/views/vm.py" afterPath="$PROJECT_DIR$/circle/dashboard/views/vm.py" />
<change beforePath="$PROJECT_DIR$/circle/firewall/tasks/local_tasks.py" afterPath="$PROJECT_DIR$/circle/firewall/tasks/local_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/firewall/tasks/remote_tasks.py" afterPath="$PROJECT_DIR$/circle/firewall/tasks/remote_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/manager/mancelery.py" afterPath="$PROJECT_DIR$/circle/manager/mancelery.py" />
<change beforePath="$PROJECT_DIR$/circle/manager/moncelery.py" afterPath="$PROJECT_DIR$/circle/manager/moncelery.py" />
<change beforePath="$PROJECT_DIR$/circle/manager/scheduler.py" afterPath="$PROJECT_DIR$/circle/manager/scheduler.py" />
<change beforePath="$PROJECT_DIR$/circle/manager/slowcelery.py" afterPath="$PROJECT_DIR$/circle/manager/slowcelery.py" />
<change beforePath="$PROJECT_DIR$/circle/storage/tasks/local_tasks.py" afterPath="$PROJECT_DIR$/circle/storage/tasks/local_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/storage/tasks/storage_tasks.py" afterPath="$PROJECT_DIR$/circle/storage/tasks/storage_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/models/activity.py" afterPath="$PROJECT_DIR$/circle/vm/models/activity.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/operations.py" afterPath="$PROJECT_DIR$/circle/vm/operations.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/tasks/__init__.py" afterPath="$PROJECT_DIR$/circle/vm/tasks/__init__.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/tasks/agent_tasks.py" afterPath="$PROJECT_DIR$/circle/vm/tasks/agent_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/tasks/local_tasks.py" afterPath="$PROJECT_DIR$/circle/vm/tasks/local_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/tasks/net_tasks.py" afterPath="$PROJECT_DIR$/circle/vm/tasks/net_tasks.py" />
<change beforePath="$PROJECT_DIR$/circle/vm/tasks/vm_tasks.py" afterPath="$PROJECT_DIR$/circle/vm/tasks/vm_tasks.py" />
<change beforePath="$PROJECT_DIR$/requirements/circlestack.txt" afterPath="$PROJECT_DIR$/requirements/circlestack.txt" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
......@@ -34,21 +52,11 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="template-list.html" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/template-list.html">
<file leaf-file-name="base.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/circle/circle/settings/base.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="125">
<caret line="16" column="18" lean-forward="true" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="template.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/template.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="270" column="69" lean-forward="false" selection-start-line="270" selection-start-column="69" selection-end-line="270" selection-end-column="69" />
<state relative-caret-position="363">
<caret line="408" column="27" lean-forward="false" selection-start-line="408" selection-start-column="27" selection-end-line="408" selection-end-column="27" />
<folding />
</state>
</provider>
......@@ -66,12 +74,6 @@
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>vm_op</find>
<find>hidden</find>
<find>removeint</find>
<find>remove_in</find>
<find>instance_id</find>
<find>favor</find>
<find>favourite</find>
<find>favouritev</find>
<find>v</find>
......@@ -96,6 +98,12 @@
<find>vxlandele</find>
<find>vxlandeta</find>
<find>exclude</find>
<find>lease</find>
<find>lease</find>
<find>installed</find>
<find>celery.task</find>
<find>@celery.task</find>
<find>celery</find>
</findStrings>
<replaceStrings>
<replace>'ACTIVE'</replace>
......@@ -103,6 +111,7 @@
<replace>&lt;pk:slug&gt;</replace>
<replace>network/horizon/client_side/</replace>
<replace>RequestDecideRequiredMixin</replace>
<replace>#@celery.task</replace>
</replaceStrings>
<dirStrings>
<dir>$PROJECT_DIR$/circle/dashboard/templates/dashboard</dir>
......@@ -117,25 +126,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html" />
<option value="$PROJECT_DIR$/circle/dashboard/templatetags/instance_tags.py" />
<option value="$PROJECT_DIR$/circle/dashboard/templates/dashboard/template-edit.html" />
<option value="$PROJECT_DIR$/circle/dashboard/views/util.py" />
<option value="$PROJECT_DIR$/circle/dashboard/urls.py" />
<option value="$PROJECT_DIR$/circle/circle/os_policies/glance_policy.json" />
<option value="$PROJECT_DIR$/circle/circle/os_policies/keystone_policy.json" />
<option value="$PROJECT_DIR$/circle/openstack_auth/plugin/password.py" />
<option value="$PROJECT_DIR$/circle/openstack_auth/policy.py" />
<option value="$PROJECT_DIR$/circle/circle/os_policies/circle_policy.json" />
<option value="$PROJECT_DIR$/circle/openstack_auth/user.py" />
<option value="$PROJECT_DIR$/circle/middleware.py" />
<option value="$PROJECT_DIR$/circle/dashboard/templates/dashboard/base.html" />
<option value="$PROJECT_DIR$/circle/request/models.py" />
<option value="$PROJECT_DIR$/circle/request/views.py" />
<option value="$PROJECT_DIR$/circle/circle/middleware.py" />
<option value="$PROJECT_DIR$/circle/manage.py" />
<option value="$PROJECT_DIR$/circle/openstack_auth/urls.py" />
<option value="$PROJECT_DIR$/circle/dashboard/templates/auth/login.html" />
<option value="$PROJECT_DIR$/circle/circle/settings/local.py" />
<option value="$PROJECT_DIR$/circle/openstack_auth/views.py" />
<option value="$PROJECT_DIR$/circle/circle/urls.py" />
......@@ -143,13 +133,10 @@
<option value="$PROJECT_DIR$/requirements/circlestack.txt" />
<option value="$PROJECT_DIR$/circle/vm/models/instance.py" />
<option value="$PROJECT_DIR$/circle/dashboard/tables.py" />
<option value="$PROJECT_DIR$/circle/vm/models/activity.py" />
<option value="$PROJECT_DIR$/circle/vm/models/__init__.py" />
<option value="$PROJECT_DIR$/circle/vm/admin.py" />
<option value="$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-plain-image-create.html" />
<option value="$PROJECT_DIR$/circle/circle/settings/base.py" />
<option value="$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/_network-public-ip-add.html" />
<option value="$PROJECT_DIR$/circle/vm/operations.py" />
<option value="$PROJECT_DIR$/circle/dashboard/forms.py" />
<option value="$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html" />
<option value="$PROJECT_DIR$/circle/dashboard/models.py" />
......@@ -166,8 +153,30 @@
<option value="$PROJECT_DIR$/circle/network/views.py" />
<option value="$PROJECT_DIR$/circle/network/tables.py" />
<option value="$PROJECT_DIR$/circle/network/templates/network/vxlan-edit.html" />
<option value="$PROJECT_DIR$/circle/dashboard/views/vm.py" />
<option value="$PROJECT_DIR$/circle/dashboard/views/template.py" />
<option value="$PROJECT_DIR$/COPYING" />
<option value="$PROJECT_DIR$/circle/manager/moncelery.py" />
<option value="$PROJECT_DIR$/circle/manager/slowcelery.py" />
<option value="$PROJECT_DIR$/circle/manager/scheduler.py" />
<option value="$PROJECT_DIR$/circle/manager/mancelery.py" />
<option value="$PROJECT_DIR$/circle/common/models.py" />
<option value="$PROJECT_DIR$/circle/vm/models/activity.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks/agent_tasks.py" />
<option value="$PROJECT_DIR$/circle/firewall/tasks/local_tasks.py" />
<option value="$PROJECT_DIR$/circle/firewall/tasks/remote_tasks.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks/net_tasks.py" />
<option value="$PROJECT_DIR$/circle/storage/tasks/local_tasks.py" />
<option value="$PROJECT_DIR$/circle/storage/tasks/storage_tasks.py" />
<option value="$PROJECT_DIR$/circle/vm/operations.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks/local_tasks.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks/vm_tasks.py" />
<option value="$PROJECT_DIR$/circle/dashboard/views/vm.py" />
<option value="$PROJECT_DIR$/circle/manager/leasemanager.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks.py" />
<option value="$PROJECT_DIR$/circle/circle/settings/base.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks/__init__.py" />
<option value="$PROJECT_DIR$/circle/vm/__init__.py" />
<option value="$PROJECT_DIR$/circle/vm/tasks/test.py" />
</list>
</option>
</component>
......@@ -242,7 +251,19 @@
<item name="cloud" type="b2602c69:ProjectViewProjectNode" />
<item name="cloud" type="462c0819:PsiDirectoryNode" />
<item name="circle" type="462c0819:PsiDirectoryNode" />
<item name="dashboard" type="462c0819:PsiDirectoryNode" />
<item name="vm" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="cloud" type="b2602c69:ProjectViewProjectNode" />
<item name="cloud" type="462c0819:PsiDirectoryNode" />
<item name="circle" type="462c0819:PsiDirectoryNode" />
<item name="vm" type="462c0819:PsiDirectoryNode" />
<item name="tasks" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="cloud" type="b2602c69:ProjectViewProjectNode" />
<item name="cloud" type="462c0819:PsiDirectoryNode" />
<item name="requirements" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
......@@ -257,7 +278,7 @@
<property name="settings.editor.selected.configurable" value="watcher.settings" />
<property name="NewWatcherDialog.advanced.open" value="true" />
<property name="DefaultHtmlFileTemplate" value="HTML File" />
<property name="SearchEverywhereHistoryKey" value="templateli&#9;null&#9;null&#10;te&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/template-list.html&#10;vmcrea&#9;null&#9;null&#10;index-tem&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-templates.html&#10;index&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;urls&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;vxla&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-edit.html&#10;operat&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/operations.py&#10;network&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail/network.html&#10;vmdetail&#9;null&#9;null&#10;vmdeta&#9;null&#9;null&#10;forms.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/forms.py&#10;urls.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;nova&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json&#10;neutron_p&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/os_policies/neutron_policy.json&#10;operations&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;base-d&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/confirm/base-delete.html&#10;indexvi&#9;null&#9;null&#10;vm-de&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html&#10;index-v&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;detailvi&#9;null&#9;null&#10;nova.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json&#10;operation&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;base&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;indev&#9;null&#9;null&#10;indexview&#9;null&#9;null&#10;operatio&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;vxlanc&#9;null&#9;null&#10;plain&#9;null&#9;null&#10;base.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;local&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/local.py&#10;views.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_auth/views.py&#10;login.html&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/auth/login.html&#10;LoginVi&#9;null&#9;null&#10;indexv&#9;null&#9;null&#10;index-vm&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;index.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/views/index.py&#10;bas&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/base.py&#10;save&#9;null&#9;null&#10;plainc&#9;null&#9;null&#10;templatedet&#9;null&#9;null&#10;instancetemp&#9;null&#9;null&#10;instancetem&#9;null&#9;null&#10;url&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;vmcreate&#9;null&#9;null&#10;opera&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;templat&#9;null&#9;null&#10;vmadd&#9;null&#9;null&#10;addinterfa&#9;null&#9;null&#10;addin&#9;null&#9;null" />
<property name="SearchEverywhereHistoryKey" value="local&#9;null&#9;null&#10;base&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;base.py&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;templateli&#9;null&#9;null&#10;te&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/template-list.html&#10;vmcrea&#9;null&#9;null&#10;index-tem&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-templates.html&#10;index&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;urls&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;vxla&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-edit.html&#10;operat&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/operations.py&#10;network&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail/network.html&#10;vmdetail&#9;null&#9;null&#10;vmdeta&#9;null&#9;null&#10;forms.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/forms.py&#10;urls.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;nova&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json&#10;neutron_p&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/os_policies/neutron_policy.json&#10;operations&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;base-d&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/confirm/base-delete.html&#10;indexvi&#9;null&#9;null&#10;vm-de&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html&#10;index-v&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;detailvi&#9;null&#9;null&#10;nova.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json&#10;operation&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;indev&#9;null&#9;null&#10;indexview&#9;null&#9;null&#10;operatio&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;vxlanc&#9;null&#9;null&#10;plain&#9;null&#9;null&#10;base.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;views.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_auth/views.py&#10;login.html&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/auth/login.html&#10;LoginVi&#9;null&#9;null&#10;indexv&#9;null&#9;null&#10;index-vm&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;index.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/views/index.py&#10;bas&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/base.py&#10;save&#9;null&#9;null&#10;plainc&#9;null&#9;null&#10;templatedet&#9;null&#9;null&#10;instancetemp&#9;null&#9;null&#10;instancetem&#9;null&#9;null&#10;url&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;vmcreate&#9;null&#9;null&#10;opera&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;templat&#9;null&#9;null&#10;vmadd&#9;null&#9;null&#10;addinterfa&#9;null&#9;null" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
......@@ -404,20 +425,20 @@
<component name="ToolWindowManager">
<frame x="-2" y="-1" width="1370" height="751" extended-state="0" />
<layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32980973" sideWeight="0.4978701" order="6" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.329653" sideWeight="0.4978701" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.7097792" sideWeight="0.51283985" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32492113" sideWeight="0.50453174" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32492113" sideWeight="0.4976526" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43023255" sideWeight="0.43610224" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32769555" sideWeight="0.49574015" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32492113" sideWeight="0.4954683" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20015106" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32492113" sideWeight="0.5023474" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25830814" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Docker" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3280757" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="SciView" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.7097792" sideWeight="0.48716012" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.7097792" sideWeight="0.48413897" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
......@@ -497,6 +518,11 @@
<line>69</line>
<option name="timeStamp" value="317" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/circle/vm/tasks/local_periodic_tasks.py</url>
<line>43</line>
<option name="timeStamp" value="351" />
</line-breakpoint>
</breakpoints>
<breakpoints-dialog>
<breakpoints-dialog />
......@@ -508,7 +534,7 @@
</properties>
</breakpoint>
</default-breakpoints>
<option name="time" value="351" />
<option name="time" value="358" />
</breakpoint-manager>
<watches-manager />
</component>
......@@ -623,412 +649,420 @@ certifi.where()</expression-string>
</expressions>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/requirements/circlestack.txt">
<entry file="file://$PROJECT_DIR$/circle/request/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="11" column="14" lean-forward="false" selection-start-line="11" selection-start-column="14" selection-end-line="11" selection-end-column="14" />
<state relative-caret-position="44">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/circle/settings/local.py">
<entry file="file://$PROJECT_DIR$/circle/network/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-600">
<caret line="38" column="0" lean-forward="true" selection-start-line="38" selection-start-column="0" selection-end-line="38" selection-end-column="0" />
<state relative-caret-position="237">
<caret line="29" column="32" lean-forward="true" selection-start-line="29" selection-start-column="32" selection-end-line="29" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-plain-image-create.html">
<entry file="file://$PROJECT_DIR$/circle/network/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="221">
<caret line="13" column="0" lean-forward="false" selection-start-line="13" selection-start-column="0" selection-end-line="13" selection-end-column="0" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/v2/servers.py">
<entry file="file://$PROJECT_DIR$/circle/dashboard/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="734" column="37" lean-forward="false" selection-start-line="734" selection-start-column="37" selection-end-line="734" selection-end-column="37" />
<state relative-caret-position="194">
<caret line="926" column="6" lean-forward="false" selection-start-line="926" selection-start-column="6" selection-end-line="926" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/detail.py">
<entry file="file://$PROJECT_DIR$/circle/openstack_api/nova.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="115" column="0" lean-forward="false" selection-start-line="115" selection-start-column="0" selection-end-line="115" selection-end-column="0" />
<state relative-caret-position="423">
<caret line="160" column="0" lean-forward="true" selection-start-line="160" selection-start-column="0" selection-end-line="160" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/console.html">
<entry file="file://$PROJECT_DIR$/circle/network/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="380">
<caret line="387" column="0" lean-forward="false" selection-start-line="387" selection-start-column="0" selection-end-line="387" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/_network-port-add.html">
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="238">
<caret line="14" column="55" lean-forward="false" selection-start-line="14" selection-start-column="55" selection-end-line="14" selection-end-column="55" />
<folding>
<element signature="n#style#0;n#select#0;n#div#0;n#form#0;n#div#0;n#!!top" expanded="false" />
</folding>
<state relative-caret-position="66">
<caret line="784" column="39" lean-forward="false" selection-start-line="784" selection-start-column="39" selection-end-line="784" selection-end-column="39" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/openstack_api/keystone.py">
<entry file="file://$PROJECT_DIR$/circle/openstack_api/neutron.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="289">
<caret line="634" column="31" lean-forward="false" selection-start-line="634" selection-start-column="19" selection-end-line="634" selection-end-column="31" />
<state relative-caret-position="202">
<caret line="1384" column="4" lean-forward="false" selection-start-line="1384" selection-start-column="4" selection-end-line="1384" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/_network-public-ip-add.html">
<entry file="file://$PROJECT_DIR$/circle/common/operations.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="34">
<caret line="2" column="65" lean-forward="true" selection-start-line="2" selection-start-column="46" selection-end-line="2" selection-end-column="65" />
<state relative-caret-position="52">
<caret line="89" column="0" lean-forward="false" selection-start-line="89" selection-start-column="0" selection-end-line="89" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/openstack_api/base.py">
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="156" column="0" lean-forward="false" selection-start-line="156" selection-start-column="0" selection-end-line="156" selection-end-column="0" />
<state relative-caret-position="1088">
<caret line="88" column="29" lean-forward="false" selection-start-line="88" selection-start-column="29" selection-end-line="88" selection-end-column="29" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/openstack_api/utils/memoized.py">
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/util.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="148">
<caret line="104" column="0" lean-forward="false" selection-start-line="104" selection-start-column="0" selection-end-line="104" selection-end-column="0" />
<state relative-caret-position="44">
<caret line="107" column="41" lean-forward="false" selection-start-line="107" selection-start-column="27" selection-end-line="107" selection-end-column="41" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/base.py">
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/list.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="156">
<caret line="87" column="0" lean-forward="false" selection-start-line="87" selection-start-column="0" selection-end-line="87" selection-end-column="0" />
<state relative-caret-position="358">
<caret line="159" column="0" lean-forward="false" selection-start-line="159" selection-start-column="0" selection-end-line="159" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/circle/settings/base.py">
<entry file="file://$PROJECT_DIR$/circle/network/operations.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="482">
<caret line="592" column="17" lean-forward="false" selection-start-line="592" selection-start-column="17" selection-end-line="592" selection-end-column="17" />
<folding />
<state relative-caret-position="448">
<caret line="57" column="15" lean-forward="false" selection-start-line="57" selection-start-column="15" selection-end-line="57" selection-end-column="47" />
<folding>
<element signature="e#0#20#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file:///usr/lib/python2.7/SocketServer.py">
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django_tables2/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="149" column="0" lean-forward="false" selection-start-line="149" selection-start-column="0" selection-end-line="149" selection-end-column="0" />
<state relative-caret-position="202">
<caret line="118" column="6" lean-forward="false" selection-start-line="118" selection-start-column="6" selection-end-line="118" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/models.py">
<entry file="file://$PROJECT_DIR$/circle/network/tables.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
<caret line="91" column="17" lean-forward="false" selection-start-line="91" selection-start-column="17" selection-end-line="91" selection-end-column="17" />
<state relative-caret-position="100">
<caret line="231" column="20" lean-forward="true" selection-start-line="231" selection-start-column="20" selection-end-line="231" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail.html">
<entry file="file://$PROJECT_DIR$/circle/network/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="214">
<caret line="75" column="96" lean-forward="false" selection-start-line="75" selection-start-column="96" selection-end-line="75" selection-end-column="96" />
<state relative-caret-position="35">
<caret line="972" column="25" lean-forward="false" selection-start-line="972" selection-start-column="25" selection-end-line="972" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/confirm/base-delete.html">
<entry file="file://$PROJECT_DIR$/circle/network/templates/network/vxlan-edit.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="408">
<caret line="24" column="51" lean-forward="false" selection-start-line="24" selection-start-column="51" selection-end-line="24" selection-end-column="51" />
<state relative-caret-position="176">
<caret line="39" column="6" lean-forward="true" selection-start-line="39" selection-start-column="6" selection-end-line="39" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/_disk-list-element.html">
<entry file="file://$PROJECT_DIR$/circle/dashboard/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="136">
<caret line="8" column="25" lean-forward="true" selection-start-line="8" selection-start-column="25" selection-end-line="8" selection-end-column="25" />
<state relative-caret-position="119">
<caret line="59" column="18" lean-forward="true" selection-start-line="59" selection-start-column="18" selection-end-line="59" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/base.html">
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/index.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="91">
<caret line="76" column="0" lean-forward="false" selection-start-line="76" selection-start-column="0" selection-end-line="76" selection-end-column="0" />
<state relative-caret-position="265">
<caret line="103" column="31" lean-forward="false" selection-start-line="103" selection-start-column="31" selection-end-line="103" selection-end-column="80" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/base.html">
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="18" lean-forward="false" selection-start-line="0" selection-start-column="18" selection-end-line="0" selection-end-column="18" />
<state relative-caret-position="44">
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/edit.py">
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-vm.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="404">
<caret line="286" column="6" lean-forward="false" selection-start-line="286" selection-start-column="6" selection-end-line="286" selection-end-column="6" />
<state relative-caret-position="285">
<caret line="79" column="31" lean-forward="true" selection-start-line="79" selection-start-column="31" selection-end-line="79" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/circle/os_policies/neutron_policy.json">
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/template.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="75" column="19" lean-forward="true" selection-start-line="75" selection-start-column="19" selection-end-line="75" selection-end-column="19" />
<state relative-caret-position="425">
<caret line="270" column="69" lean-forward="false" selection-start-line="270" selection-start-column="69" selection-end-line="270" selection-end-column="69" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/circle/os_policies/nova_policy.json">
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/template-list.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="214">
<caret line="51" column="5" lean-forward="true" selection-start-line="51" selection-start-column="5" selection-end-line="51" selection-end-column="29" />
<state relative-caret-position="125">
<caret line="16" column="18" lean-forward="true" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/vm/__init__.py">
<entry file="file://$PROJECT_DIR$/circle/monitor/tasks/local_periodic_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<state relative-caret-position="-1439">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/vm/operations.py">
<entry file="file://$PROJECT_DIR$/COPYING">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="18" column="0" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<state relative-caret-position="202">
<caret line="18" column="17" lean-forward="false" selection-start-line="18" selection-start-column="17" selection-end-line="18" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/bpython/translations/__init__.py">
<entry file="file://$PROJECT_DIR$/circle/vm/models/instance.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="52">
<caret line="18" column="0" lean-forward="false" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<state relative-caret-position="108">
<caret line="395" column="10" lean-forward="true" selection-start-line="395" selection-start-column="8" selection-end-line="395" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/urls.py">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/local_periodic_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="346">
<caret line="143" column="60" lean-forward="false" selection-start-line="143" selection-start-column="60" selection-end-line="143" selection-end-column="60" />
<state relative-caret-position="-408">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/request/models.py">
<entry file="file://$PROJECT_DIR$/requirements/circlestack.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
<state relative-caret-position="255">
<caret line="15" column="13" lean-forward="true" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/models.py">
<entry file="file://$PROJECT_DIR$/circle/manager/moncelery.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="237">
<caret line="29" column="32" lean-forward="true" selection-start-line="29" selection-start-column="32" selection-end-line="29" selection-end-column="32" />
<state relative-caret-position="380">
<caret line="73" column="0" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="79" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/__init__.py">
<entry file="file://$PROJECT_DIR$/circle/manager/slowcelery.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="414">
<caret line="44" column="43" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="57" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/forms.py">
<entry file="file://$PROJECT_DIR$/circle/manager/scheduler.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="194">
<caret line="926" column="6" lean-forward="false" selection-start-line="926" selection-start-column="6" selection-end-line="926" selection-end-column="6" />
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="126" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/openstack_api/nova.py">
<entry file="file://$PROJECT_DIR$/circle/manager/mancelery.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="423">
<caret line="160" column="0" lean-forward="true" selection-start-line="160" selection-start-column="0" selection-end-line="160" selection-end-column="0" />
<state relative-caret-position="295">
<caret line="50" column="12" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="67" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/forms.py">
<entry file="file://$PROJECT_DIR$/circle/common/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="387" column="0" lean-forward="false" selection-start-line="387" selection-start-column="0" selection-end-line="387" selection-end-column="0" />
<folding />
<state relative-caret-position="214">
<caret line="244" column="14" lean-forward="false" selection-start-line="244" selection-start-column="3" selection-end-line="244" selection-end-column="14" />
<folding>
<element signature="e#732#761#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py">
<entry file="file://$PROJECT_DIR$/circle/vm/models/activity.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="66">
<caret line="784" column="39" lean-forward="false" selection-start-line="784" selection-start-column="39" selection-end-line="784" selection-end-column="39" />
<folding />
<state relative-caret-position="214">
<caret line="145" column="23" lean-forward="false" selection-start-line="145" selection-start-column="23" selection-end-line="145" selection-end-column="23" />
<folding>
<element signature="e#732#788#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/openstack_api/neutron.py">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/agent_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="202">
<caret line="1384" column="4" lean-forward="false" selection-start-line="1384" selection-start-column="4" selection-end-line="1384" selection-end-column="4" />
<state relative-caret-position="1082">
<caret line="90" column="13" lean-forward="false" selection-start-line="90" selection-start-column="13" selection-end-line="90" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/common/operations.py">
<entry file="file://$PROJECT_DIR$/circle/storage/tasks/local_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="52">
<caret line="89" column="0" lean-forward="false" selection-start-line="89" selection-start-column="0" selection-end-line="89" selection-end-column="0" />
<state relative-caret-position="1055">
<caret line="76" column="13" lean-forward="false" selection-start-line="76" selection-start-column="13" selection-end-line="76" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html">
<entry file="file://$PROJECT_DIR$/circle/storage/tasks/storage_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1088">
<caret line="88" column="29" lean-forward="false" selection-start-line="88" selection-start-column="29" selection-end-line="88" selection-end-column="29" />
<state relative-caret-position="1208">
<caret line="85" column="13" lean-forward="false" selection-start-line="85" selection-start-column="13" selection-end-line="85" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/util.py">
<entry file="file://$PROJECT_DIR$/circle/vm/operations.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="107" column="41" lean-forward="false" selection-start-line="107" selection-start-column="27" selection-end-line="107" selection-end-column="41" />
<state relative-caret-position="69">
<caret line="48" column="0" lean-forward="false" selection-start-line="48" selection-start-column="0" selection-end-line="48" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/list.py">
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/vm.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="358">
<caret line="159" column="0" lean-forward="false" selection-start-line="159" selection-start-column="0" selection-end-line="159" selection-end-column="0" />
<state relative-caret-position="69">
<caret line="50" column="0" lean-forward="false" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/operations.py">
<entry file="file://$PROJECT_DIR$/circle/firewall/tasks/local_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="448">
<caret line="57" column="15" lean-forward="false" selection-start-line="57" selection-start-column="15" selection-end-line="57" selection-end-column="47" />
<state relative-caret-position="571">
<caret line="93" column="13" lean-forward="false" selection-start-line="93" selection-start-column="13" selection-end-line="93" selection-end-column="13" />
<folding>
<element signature="e#0#20#0" expanded="false" />
<element signature="e#732#761#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django_tables2/views.py">
<entry file="file://$PROJECT_DIR$/circle/firewall/tasks/remote_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="202">
<caret line="118" column="6" lean-forward="false" selection-start-line="118" selection-start-column="6" selection-end-line="118" selection-end-column="6" />
<state relative-caret-position="69">
<caret line="18" column="0" lean-forward="true" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/tables.py">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/net_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="231" column="20" lean-forward="true" selection-start-line="231" selection-start-column="20" selection-end-line="231" selection-end-column="20" />
<state relative-caret-position="425">
<caret line="25" column="13" lean-forward="false" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/views.py">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/local_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="35">
<caret line="972" column="25" lean-forward="false" selection-start-line="972" selection-start-column="25" selection-end-line="972" selection-end-column="25" />
<state relative-caret-position="409">
<caret line="39" column="13" lean-forward="false" selection-start-line="39" selection-start-column="13" selection-end-line="39" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/network/templates/network/vxlan-edit.html">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/vm_tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="176">
<caret line="39" column="6" lean-forward="true" selection-start-line="39" selection-start-column="6" selection-end-line="39" selection-end-column="6" />
<folding />
<state relative-caret-position="2840">
<caret line="184" column="13" lean-forward="false" selection-start-line="184" selection-start-column="13" selection-end-line="184" selection-end-column="13" />
<folding>
<element signature="e#732#767#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/urls.py">
<entry file="file://$PROJECT_DIR$/circle/manager/leasemanager.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="119">
<caret line="59" column="18" lean-forward="true" selection-start-line="59" selection-start-column="18" selection-end-line="59" selection-end-column="20" />
<state relative-caret-position="68">
<caret line="4" column="22" lean-forward="false" selection-start-line="4" selection-start-column="22" selection-end-line="4" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/vm.py">
<entry file="file://$PROJECT_DIR$/circle/circle/settings/local.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="1158" column="0" lean-forward="false" selection-start-line="1158" selection-start-column="0" selection-end-line="1158" selection-end-column="0" />
<state relative-caret-position="85">
<caret line="5" column="42" lean-forward="false" selection-start-line="5" selection-start-column="42" selection-end-line="5" selection-end-column="42" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/index.py">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="265">
<caret line="103" column="31" lean-forward="false" selection-start-line="103" selection-start-column="31" selection-end-line="103" selection-end-column="80" />
<state relative-caret-position="102">
<caret line="6" column="28" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="6" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="11" column="0" lean-forward="false" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<state relative-caret-position="0">
<caret line="0" column="17" lean-forward="false" selection-start-line="0" selection-start-column="17" selection-end-line="0" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-vm.html">
<entry file="file://$PROJECT_DIR$/circle/vm/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="79" column="31" lean-forward="true" selection-start-line="79" selection-start-column="31" selection-end-line="79" selection-end-column="31" />
<state relative-caret-position="17">
<caret line="1" column="0" lean-forward="true" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/template-list.html">
<entry file="file://$PROJECT_DIR$/circle/vm/tasks/test.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="125">
<caret line="16" column="18" lean-forward="true" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
<state relative-caret-position="68">
<caret line="4" column="33" lean-forward="true" selection-start-line="4" selection-start-column="33" selection-end-line="4" selection-end-column="33" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/circle/dashboard/views/template.py">
<entry file="file://$PROJECT_DIR$/circle/circle/settings/base.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="425">
<caret line="270" column="69" lean-forward="false" selection-start-line="270" selection-start-column="69" selection-end-line="270" selection-end-column="69" />
<state relative-caret-position="363">
<caret line="408" column="27" lean-forward="false" selection-start-line="408" selection-start-column="27" selection-end-line="408" selection-end-column="27" />
<folding />
</state>
</provider>
......
File added
No preview for this file type
......@@ -368,6 +368,8 @@ DJANGO_APPS = (
# Admin panel and documentation:
'django.contrib.admin',
# 'django.contrib.admindocs',
'kombu.transport.django',
'djcelery',
)
THIRD_PARTY_APPS = (
......@@ -399,6 +401,13 @@ LOCAL_APPS = (
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
########## END APP CONFIGURATION
BROKER_URL = "django://" # tell kombu to use the Django database as the message queue
import djcelery
djcelery.setup_loader()
CELERY_IMPORTS = ('vm.tasks',)
AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
AUTHENTICATION_URLS = ['openstack_auth.urls']
AUTH_USER_MODEL = 'openstack_auth.User'
......
......@@ -38,7 +38,7 @@ from django.utils.functional import Promise
from django.utils.translation import ugettext_lazy as _, ugettext_noop
from jsonfield import JSONField
from manager.mancelery import celery
# from manager.mancelery import celery
from model_utils.models import TimeStampedModel
from openstack_auth.user import User
......@@ -242,7 +242,7 @@ class ActivityModel(TimeStampedModel):
return 'failed'
@celery.task()
# @celery.task()
def compute_cached(method, instance, memcached_seconds,
key, start, *args, **kwargs):
"""Compute and store actual value of cached method."""
......
......@@ -47,7 +47,7 @@ from common.models import (
split_activity_code,
)
from firewall.models import Vlan, Host, Rule
from manager.scheduler import SchedulerError
# from manager.scheduler import SchedulerError
from network.models import DefaultPublicRouter, DefaultPublicRoutedNet
from openstack_api.nova import Server
from request.forms import TemplateRequestForm
......
......@@ -22,7 +22,7 @@ import django.conf
from django.core.cache import cache
from celery.exceptions import TimeoutError
from manager.mancelery import celery
# from manager.mancelery import celery
from common.models import WorkerNotFound
settings = django.conf.settings.FIREWALL_SETTINGS
......@@ -60,7 +60,7 @@ def get_firewall_queues():
return list(retval)
@celery.task
#@celery.task
def reloadtask_worker():
from firewall.fw import BuildFirewall, dhcp, dns, ipset, vlan
from remote_tasks import (reload_dns, reload_dhcp, reload_firewall,
......@@ -91,7 +91,7 @@ def reloadtask_worker():
lambda: (list(ipset()), ))
@celery.task
#@celery.task
def reloadtask(type='Host', timeout=15, sync=False):
reload = {
'Host': ['dns', 'dhcp', 'firewall'],
......
......@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from manager.mancelery import celery
# from manager.mancelery import celery
def check_queue(firewall, queue_id, priority):
......@@ -36,32 +36,32 @@ def check_queue(firewall, queue_id, priority):
return queue_name in queue_names
@celery.task(name='firewall.reload_dns')
#@celery.task(name='firewall.reload_dns')
def reload_dns(data):
pass
@celery.task(name='firewall.reload_firewall')
#@celery.task(name='firewall.reload_firewall')
def reload_firewall(data4, data6):
pass
@celery.task(name='firewall.reload_firewall_vlan')
#@celery.task(name='firewall.reload_firewall_vlan')
def reload_firewall_vlan(data):
pass
@celery.task(name='firewall.reload_dhcp')
#@celery.task(name='firewall.reload_dhcp')
def reload_dhcp(data):
pass
@celery.task(name='firewall.reload_blacklist')
#@celery.task(name='firewall.reload_blacklist')
def reload_blacklist(data):
pass
@celery.task(name='firewall.get_dhcp_clients')
#@celery.task(name='firewall.get_dhcp_clients')
def get_dhcp_clients():
# {'00:21:5a:73:72:cd': {'interface': 'OFF', 'ip': None, 'hostname': None}}
pass
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
# # Copyright 2014 Budapest University of Technology and Economics (BME IK)
# #
# # This file is part of CIRCLE Cloud.
# #
# # CIRCLE is free software: you can redistribute it and/or modify it under
# # the terms of the GNU General Public License as published by the Free
# # Software Foundation, either version 3 of the License, or (at your option)
# # any later version.
# #
# # CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# # details.
# #
# # You should have received a copy of the GNU General Public License along
# # with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
#
# This file is part of CIRCLE Cloud.
# from celery import Celery
# from celery.signals import worker_ready
# from datetime import timedelta
# from kombu import Queue, Exchange
# from os import getenv
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
# HOSTNAME = "localhost"
# QUEUE_NAME = HOSTNAME + '.man'
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from celery import Celery
from celery.signals import worker_ready
from datetime import timedelta
from kombu import Queue, Exchange
from os import getenv
HOSTNAME = "localhost"
QUEUE_NAME = HOSTNAME + '.man'
celery = Celery('manager',
broker=getenv("AMQP_URI"),
include=['vm.tasks.local_tasks',
'vm.tasks.local_periodic_tasks',
'vm.tasks.local_agent_tasks',
'storage.tasks.local_tasks',
'storage.tasks.periodic_tasks',
'firewall.tasks.local_tasks',
'dashboard.tasks.local_periodic_tasks',
])
celery.conf.update(
CELERY_RESULT_BACKEND='amqp',
CELERY_TASK_RESULT_EXPIRES=300,
CELERY_QUEUES=(
Queue(HOSTNAME + '.man', Exchange('manager', type='direct'),
routing_key="manager"),
),
CELERYBEAT_SCHEDULE={
'storage.periodic_tasks': {
'task': 'storage.tasks.periodic_tasks.garbage_collector',
'schedule': timedelta(hours=1),
'options': {'queue': 'localhost.man'}
},
'dashboard.send_email_notifications': {
'task': 'dashboard.tasks.local_periodic_tasks.'
'send_email_notifications',
'schedule': timedelta(hours=24),
'options': {'queue': 'localhost.man'}
},
}
)
@worker_ready.connect()
def cleanup_tasks(conf=None, **kwargs):
'''Discard all task and clean up activity.'''
from vm.models.activity import cleanup
cleanup(queue_name=QUEUE_NAME)
# celery = Celery('manager',
# broker=getenv("AMQP_URI"),
# include=['vm.tasks.local_tasks',
# 'vm.tasks.local_periodic_tasks',
# 'vm.tasks.local_agent_tasks',
# 'storage.tasks.local_tasks',
# 'storage.tasks.periodic_tasks',
# 'firewall.tasks.local_tasks',
# 'dashboard.tasks.local_periodic_tasks',
# ])
#
# celery.conf.update(
# CELERY_RESULT_BACKEND='amqp',
# CELERY_TASK_RESULT_EXPIRES=300,
# CELERY_QUEUES=(
# Queue(HOSTNAME + '.man', Exchange('manager', type='direct'),
# routing_key="manager"),
# ),
# CELERYBEAT_SCHEDULE={
# 'storage.periodic_tasks': {
# 'task': 'storage.tasks.periodic_tasks.garbage_collector',
# 'schedule': timedelta(hours=1),
# 'options': {'queue': 'localhost.man'}
# },
# 'dashboard.send_email_notifications': {
# 'task': 'dashboard.tasks.local_periodic_tasks.'
# 'send_email_notifications',
# 'schedule': timedelta(hours=24),
# 'options': {'queue': 'localhost.man'}
# },
# }
#
# )
#
#
# @worker_ready.connect()
# def cleanup_tasks(conf=None, **kwargs):
# '''Discard all task and clean up activity.'''
# from vm.models.activity import cleanup
# cleanup(queue_name=QUEUE_NAME)
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
# # Copyright 2014 Budapest University of Technology and Economics (BME IK)
# #
# # This file is part of CIRCLE Cloud.
# #
# # CIRCLE is free software: you can redistribute it and/or modify it under
# # the terms of the GNU General Public License as published by the Free
# # Software Foundation, either version 3 of the License, or (at your option)
# # any later version.
# #
# # CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# # details.
# #
# # You should have received a copy of the GNU General Public License along
# # with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
#
# This file is part of CIRCLE Cloud.
# from celery import Celery
# from celery.signals import worker_ready
# from datetime import timedelta
# from kombu import Queue, Exchange
# from os import getenv
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
# HOSTNAME = "localhost"
# QUEUE_NAME = HOSTNAME + '.monitor'
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
# celery = Celery('monitor',
# broker=getenv("AMQP_URI"),
# include=['vm.tasks.local_periodic_tasks',
# 'monitor.tasks.local_periodic_tasks',
# ])
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from celery import Celery
from celery.signals import worker_ready
from datetime import timedelta
from kombu import Queue, Exchange
from os import getenv
HOSTNAME = "localhost"
QUEUE_NAME = HOSTNAME + '.monitor'
celery = Celery('monitor',
broker=getenv("AMQP_URI"),
include=['vm.tasks.local_periodic_tasks',
'monitor.tasks.local_periodic_tasks',
])
celery.conf.update(
CELERY_RESULT_BACKEND='amqp',
CELERY_TASK_RESULT_EXPIRES=300,
CELERY_QUEUES=(
Queue(QUEUE_NAME, Exchange('monitor', type='direct'),
routing_key="monitor"),
),
CELERYBEAT_SCHEDULE={
'vm.update_domain_states': {
'task': 'vm.tasks.local_periodic_tasks.update_domain_states',
'schedule': timedelta(seconds=10),
'options': {'queue': 'localhost.monitor'}
},
'monitor.measure_response_time': {
'task': 'monitor.tasks.local_periodic_tasks.'
'measure_response_time',
'schedule': timedelta(seconds=30),
'options': {'queue': 'localhost.monitor'}
},
'monitor.check_celery_queues': {
'task': 'monitor.tasks.local_periodic_tasks.'
'check_celery_queues',
'schedule': timedelta(seconds=60),
'options': {'queue': 'localhost.monitor'}
},
'monitor.instance_per_template': {
'task': 'monitor.tasks.local_periodic_tasks.'
'instance_per_template',
'schedule': timedelta(seconds=30),
'options': {'queue': 'localhost.monitor'}
},
'monitor.allocated_memory': {
'task': 'monitor.tasks.local_periodic_tasks.'
'allocated_memory',
'schedule': timedelta(seconds=30),
'options': {'queue': 'localhost.monitor'}
},
}
)
@worker_ready.connect()
def cleanup_tasks(conf=None, **kwargs):
'''Discard all task and clean up activity.'''
from vm.models.activity import cleanup
cleanup(queue_name=QUEUE_NAME)
# celery.conf.update(
# CELERY_RESULT_BACKEND='amqp',
# CELERY_TASK_RESULT_EXPIRES=300,
# CELERY_QUEUES=(
# Queue(QUEUE_NAME, Exchange('monitor', type='direct'),
# routing_key="monitor"),
# ),
# CELERYBEAT_SCHEDULE={
# 'vm.update_domain_states': {
# 'task': 'vm.tasks.local_periodic_tasks.update_domain_states',
# 'schedule': timedelta(seconds=10),
# 'options': {'queue': 'localhost.monitor'}
# },
# 'monitor.measure_response_time': {
# 'task': 'monitor.tasks.local_periodic_tasks.'
# 'measure_response_time',
# 'schedule': timedelta(seconds=30),
# 'options': {'queue': 'localhost.monitor'}
# },
# 'monitor.check_celery_queues': {
# 'task': 'monitor.tasks.local_periodic_tasks.'
# 'check_celery_queues',
# 'schedule': timedelta(seconds=60),
# 'options': {'queue': 'localhost.monitor'}
# },
# 'monitor.instance_per_template': {
# 'task': 'monitor.tasks.local_periodic_tasks.'
# 'instance_per_template',
# 'schedule': timedelta(seconds=30),
# 'options': {'queue': 'localhost.monitor'}
# },
# 'monitor.allocated_memory': {
# 'task': 'monitor.tasks.local_periodic_tasks.'
# 'allocated_memory',
# 'schedule': timedelta(seconds=30),
# 'options': {'queue': 'localhost.monitor'}
# },
# }
#
# )
#
#
# @worker_ready.connect()
# def cleanup_tasks(conf=None, **kwargs):
# '''Discard all task and clean up activity.'''
# from vm.models.activity import cleanup
# cleanup(queue_name=QUEUE_NAME)
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
#
# This file is part of CIRCLE Cloud.
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from logging import getLogger
from django.utils.translation import ugettext_noop
from common.models import HumanReadableException
logger = getLogger(__name__)
class SchedulerError(HumanReadableException):
admin_message = None
def __init__(self, params=None, level=None, **kwargs):
kwargs.update(params or {})
super(SchedulerError, self).__init__(
level, self.message, self.admin_message or self.message,
kwargs)
class NotEnoughMemoryException(SchedulerError):
message = ugettext_noop(
"The resources required for launching the virtual machine are not "
"available currently. Please try again later.")
admin_message = ugettext_noop(
"The required free memory for launching the virtual machine is not "
"available on any usable node currently. Please try again later.")
class TraitsUnsatisfiableException(SchedulerError):
message = ugettext_noop(
"No node can satisfy the required traits of the "
"new virtual machine currently.")
def select_node(instance, nodes):
''' Select a node for hosting an instance based on its requirements.
'''
# check required traits
nodes = [n for n in nodes
if n.schedule_enabled and n.online and
has_traits(instance.req_traits.all(), n)]
if not nodes:
logger.warning('select_node: no usable node for %s', unicode(instance))
raise TraitsUnsatisfiableException()
# check required RAM
nodes = [n for n in nodes if has_enough_ram(instance.ram_size, n)]
if not nodes:
logger.warning('select_node: no enough RAM for %s', unicode(instance))
raise NotEnoughMemoryException()
# sort nodes first by processor usage, then priority
nodes.sort(key=lambda n: n.priority, reverse=True)
nodes.sort(key=free_cpu_time, reverse=True)
result = nodes[0]
logger.info('select_node: %s for %s', unicode(result), unicode(instance))
return result
def has_traits(traits, node):
"""True, if the node has all specified traits; otherwise, false.
"""
traits = set(traits)
return traits.issubset(node.traits.all())
def has_enough_ram(ram_size, node):
"""True, if the node has enough memory to accomodate a guest requiring
ram_size mebibytes of memory; otherwise, false.
"""
ram_size = ram_size * 1024 * 1024
try:
total = node.ram_size
used = node.byte_ram_usage
unused = total - used
overcommit = node.ram_size_with_overcommit
reserved = node.allocated_ram
free = overcommit - reserved
retval = ram_size < unused and ram_size < free
logger.debug('has_enough_ram(%d, %s)=%s (total=%s unused=%s'
' overcommit=%s free=%s free_ok=%s overcommit_ok=%s)',
ram_size, node, retval, total, unused, overcommit, free,
ram_size < unused, ram_size < free)
return retval
except TypeError as e:
logger.exception('Got incorrect monitoring data for node %s. %s',
unicode(node), unicode(e))
return False
def free_cpu_time(node):
"""Get an indicator number for idle processor time on the node.
Higher values indicate more idle time.
"""
try:
activity = node.cpu_usage / 100
inactivity = 1 - activity
cores = node.num_cores
return cores * inactivity
except TypeError as e:
logger.warning('Got incorrect monitoring data for node %s. %s',
unicode(node), unicode(e))
return False # monitoring data is incorrect
# # Copyright 2014 Budapest University of Technology and Economics (BME IK)
# #
# # This file is part of CIRCLE Cloud.
# #
# # CIRCLE is free software: you can redistribute it and/or modify it under
# # the terms of the GNU General Public License as published by the Free
# # Software Foundation, either version 3 of the License, or (at your option)
# # any later version.
# #
# # CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# # details.
# #
# # You should have received a copy of the GNU General Public License along
# # with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
#
# from logging import getLogger
#
# from django.utils.translation import ugettext_noop
#
# from common.models import HumanReadableException
#
# logger = getLogger(__name__)
#
#
# class SchedulerError(HumanReadableException):
# admin_message = None
#
# def __init__(self, params=None, level=None, **kwargs):
# kwargs.update(params or {})
# super(SchedulerError, self).__init__(
# level, self.message, self.admin_message or self.message,
# kwargs)
#
#
# class NotEnoughMemoryException(SchedulerError):
# message = ugettext_noop(
# "The resources required for launching the virtual machine are not "
# "available currently. Please try again later.")
#
# admin_message = ugettext_noop(
# "The required free memory for launching the virtual machine is not "
# "available on any usable node currently. Please try again later.")
#
#
# class TraitsUnsatisfiableException(SchedulerError):
# message = ugettext_noop(
# "No node can satisfy the required traits of the "
# "new virtual machine currently.")
#
#
# def select_node(instance, nodes):
# ''' Select a node for hosting an instance based on its requirements.
# '''
# # check required traits
# nodes = [n for n in nodes
# if n.schedule_enabled and n.online and
# has_traits(instance.req_traits.all(), n)]
# if not nodes:
# logger.warning('select_node: no usable node for %s', unicode(instance))
# raise TraitsUnsatisfiableException()
#
# # check required RAM
# nodes = [n for n in nodes if has_enough_ram(instance.ram_size, n)]
# if not nodes:
# logger.warning('select_node: no enough RAM for %s', unicode(instance))
# raise NotEnoughMemoryException()
#
# # sort nodes first by processor usage, then priority
# nodes.sort(key=lambda n: n.priority, reverse=True)
# nodes.sort(key=free_cpu_time, reverse=True)
# result = nodes[0]
#
# logger.info('select_node: %s for %s', unicode(result), unicode(instance))
# return result
#
#
# def has_traits(traits, node):
# """True, if the node has all specified traits; otherwise, false.
# """
# traits = set(traits)
# return traits.issubset(node.traits.all())
#
#
# def has_enough_ram(ram_size, node):
# """True, if the node has enough memory to accomodate a guest requiring
# ram_size mebibytes of memory; otherwise, false.
# """
# ram_size = ram_size * 1024 * 1024
# try:
# total = node.ram_size
# used = node.byte_ram_usage
# unused = total - used
#
# overcommit = node.ram_size_with_overcommit
# reserved = node.allocated_ram
# free = overcommit - reserved
#
# retval = ram_size < unused and ram_size < free
#
# logger.debug('has_enough_ram(%d, %s)=%s (total=%s unused=%s'
# ' overcommit=%s free=%s free_ok=%s overcommit_ok=%s)',
# ram_size, node, retval, total, unused, overcommit, free,
# ram_size < unused, ram_size < free)
# return retval
# except TypeError as e:
# logger.exception('Got incorrect monitoring data for node %s. %s',
# unicode(node), unicode(e))
# return False
#
#
# def free_cpu_time(node):
# """Get an indicator number for idle processor time on the node.
#
# Higher values indicate more idle time.
# """
# try:
# activity = node.cpu_usage / 100
# inactivity = 1 - activity
# cores = node.num_cores
# return cores * inactivity
# except TypeError as e:
# logger.warning('Got incorrect monitoring data for node %s. %s',
# unicode(node), unicode(e))
# return False # monitoring data is incorrect
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
# # Copyright 2014 Budapest University of Technology and Economics (BME IK)
# #
# # This file is part of CIRCLE Cloud.
# #
# # CIRCLE is free software: you can redistribute it and/or modify it under
# # the terms of the GNU General Public License as published by the Free
# # Software Foundation, either version 3 of the License, or (at your option)
# # any later version.
# #
# # CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# # details.
# #
# # You should have received a copy of the GNU General Public License along
# # with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
#
# This file is part of CIRCLE Cloud.
# from celery import Celery
# from celery.signals import worker_ready
# from datetime import timedelta
# from kombu import Queue, Exchange
# from os import getenv
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
# HOSTNAME = "localhost"
# QUEUE_NAME = HOSTNAME + '.man.slow'
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
# celery = Celery('manager.slow',
# broker=getenv("AMQP_URI"),
# include=['vm.tasks.local_tasks',
# 'vm.tasks.local_periodic_tasks',
# 'storage.tasks.local_tasks',
# 'storage.tasks.periodic_tasks',
# ])
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from celery import Celery
from celery.signals import worker_ready
from datetime import timedelta
from kombu import Queue, Exchange
from os import getenv
HOSTNAME = "localhost"
QUEUE_NAME = HOSTNAME + '.man.slow'
celery = Celery('manager.slow',
broker=getenv("AMQP_URI"),
include=['vm.tasks.local_tasks',
'vm.tasks.local_periodic_tasks',
'storage.tasks.local_tasks',
'storage.tasks.periodic_tasks',
])
celery.conf.update(
CELERY_RESULT_BACKEND='amqp',
CELERY_TASK_RESULT_EXPIRES=300,
CELERY_QUEUES=(
Queue(QUEUE_NAME, Exchange('manager.slow', type='direct'),
routing_key="manager.slow"),
),
CELERYBEAT_SCHEDULE={
'vm.garbage_collector': {
'task': 'vm.tasks.local_periodic_tasks.garbage_collector',
'schedule': timedelta(minutes=10),
'options': {'queue': 'localhost.man.slow'}
},
}
)
@worker_ready.connect()
def cleanup_tasks(conf=None, **kwargs):
'''Discard all task and clean up activity.'''
from vm.models.activity import cleanup
cleanup(queue_name=QUEUE_NAME)
# celery.conf.update(
# CELERY_RESULT_BACKEND='amqp',
# CELERY_TASK_RESULT_EXPIRES=300,
# CELERY_QUEUES=(
# Queue(QUEUE_NAME, Exchange('manager.slow', type='direct'),
# routing_key="manager.slow"),
# ),
# CELERYBEAT_SCHEDULE={
# 'vm.garbage_collector': {
# 'task': 'vm.tasks.local_periodic_tasks.garbage_collector',
# 'schedule': timedelta(minutes=10),
# 'options': {'queue': 'localhost.man.slow'}
# },
# }
#
# )
#
#
# @worker_ready.connect()
# def cleanup_tasks(conf=None, **kwargs):
# '''Discard all task and clean up activity.'''
# from vm.models.activity import cleanup
# cleanup(queue_name=QUEUE_NAME)
......@@ -15,11 +15,11 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from manager.mancelery import celery
# from manager.mancelery import celery
from celery.contrib.abortable import AbortableTask
@celery.task
#@celery.task
def check_queue(storage, queue_id, priority):
''' Celery inspect job to check for active workers at queue_id
return True/False
......@@ -38,34 +38,34 @@ def check_queue(storage, queue_id, priority):
return queue_name in queue_names
@celery.task
#@celery.task
def save_as(disk, timeout, user):
disk.save_disk_as(task_uuid=save_as.request.id, user=user,
disk=disk, timeout=timeout)
@celery.task
#@celery.task
def clone(disk, new_disk, timeout, user):
disk.clone(task_uuid=save_as.request.id, user=user,
disk=new_disk, timeout=timeout)
@celery.task
#@celery.task
def deploy(disk, user):
disk.deploy(task_uuid=deploy.request.id, user=user)
@celery.task
#@celery.task
def destroy(disk, user):
disk.destroy(task_uuid=destroy.request.id, user=user)
@celery.task
#@celery.task
def restore(disk, user):
disk.restore(task_uuid=restore.request.id, user=user)
@celery.task(base=AbortableTask, bind=True)
#@celery.task(base=AbortableTask, bind=True)
def create_from_url(self, **kwargs):
Disk = kwargs.pop('cls')
Disk.create_from_url(url=kwargs.pop('url'),
......@@ -74,7 +74,7 @@ def create_from_url(self, **kwargs):
**kwargs)
@celery.task
#@celery.task
def create_empty(Disk, instance, user, params):
Disk.create_empty(instance, user,
task_uuid=create_empty.request.id,
......
......@@ -15,74 +15,74 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from manager.mancelery import celery
# from manager.mancelery import celery
@celery.task(name='storagedriver.list')
#@celery.task(name='storagedriver.list')
def list(dir):
pass
@celery.task(name='storagedriver.list_files')
#@celery.task(name='storagedriver.list_files')
def list_files(dir):
pass
@celery.task(name='storagedriver.create')
#@celery.task(name='storagedriver.create')
def create(disk_desc):
pass
@celery.task(name='storagedriver.download')
#@celery.task(name='storagedriver.download')
def download(disk_desc, url):
pass
@celery.task(name='storagedriver.delete')
#@celery.task(name='storagedriver.delete')
def delete(path):
pass
@celery.task(name='storagedriver.delete_dump')
#@celery.task(name='storagedriver.delete_dump')
def delete_dump(path):
pass
@celery.task(name='storagedriver.snapshot')
#@celery.task(name='storagedriver.snapshot')
def snapshot(disk_desc):
pass
@celery.task(name='storagedriver.get')
#@celery.task(name='storagedriver.get')
def get(path):
pass
@celery.task(name='storagedriver.merge')
#@celery.task(name='storagedriver.merge')
def merge(src_disk_desc, dst_disk_desc):
pass
@celery.task(name='storagedriver.make_free_space')
#@celery.task(name='storagedriver.make_free_space')
def make_free_space(datastore, percent):
pass
@celery.task(name='storagedriver.move_to_trash')
#@celery.task(name='storagedriver.move_to_trash')
def move_to_trash(datastore, disk_path):
pass
@celery.task(name='storagedriver.recover_from_trash')
#@celery.task(name='storagedriver.recover_from_trash')
def recover_from_trash(datastore, disk_path):
pass
@celery.task(name='storagedriver.get_storage_stat')
#@celery.task(name='storagedriver.get_storage_stat')
def get_storage_stat(path):
pass
@celery.task(name='storagedriver.get_file_statistics')
#@celery.task(name='storagedriver.get_file_statistics')
def get_file_statistics(datastore):
pass
......@@ -32,7 +32,7 @@ from common.models import (
HumanReadableObject, HumanReadableException,
)
from manager.mancelery import celery
# from manager.mancelery import celery
logger = getLogger(__name__)
......
......@@ -45,7 +45,7 @@ from common.models import (
create_readable, humanize_exception, HumanReadableException
)
from common.operations import Operation, register_operation
from manager.scheduler import SchedulerError
# from manager.scheduler import SchedulerError
from .tasks.local_tasks import (
abortable_async_instance_operation, abortable_async_node_operation,
)
......
from test import *
\ No newline at end of file
......@@ -15,79 +15,79 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from manager.mancelery import celery
# from manager.mancelery import celery
@celery.task(name='agent.change_password')
#@celery.task(name='agent.change_password')
def change_password(vm, password):
pass
@celery.task(name='agent.restart_networking')
#@celery.task(name='agent.restart_networking')
def restart_networking(vm):
pass
@celery.task(name='agent.set_time')
#@celery.task(name='agent.set_time')
def set_time(vm, time):
pass
@celery.task(name='agent.set_hostname')
#@celery.task(name='agent.set_hostname')
def set_hostname(vm, time):
pass
@celery.task(name='agent.mount_store')
#@celery.task(name='agent.mount_store')
def mount_store(vm, host, username, password):
pass
@celery.task(name='agent.cleanup')
#@celery.task(name='agent.cleanup')
def cleanup(vm):
pass
@celery.task(name='agent.start_access_server')
#@celery.task(name='agent.start_access_server')
def start_access_server(vm):
pass
@celery.task(name='agent.update_legacy')
#@celery.task(name='agent.update_legacy')
def update_legacy(vm, data, executable=None):
pass
@celery.task(name='agent.append')
#@celery.task(name='agent.append')
def append(vm, data, filename, chunk_number):
pass
@celery.task(name='agent.update')
#@celery.task(name='agent.update')
def update(vm, filename, executable, checksum):
pass
@celery.task(name='agent.add_keys')
#@celery.task(name='agent.add_keys')
def add_keys(vm, keys):
pass
@celery.task(name='agent.del_keys')
#@celery.task(name='agent.del_keys')
def del_keys(vm, keys):
pass
@celery.task(name='agent.get_keys')
#@celery.task(name='agent.get_keys')
def get_keys(vm):
pass
@celery.task(name='agent.send_expiration')
#@celery.task(name='agent.send_expiration')
def send_expiration(vm, url):
pass
@celery.task(name='agent.change_ip')
#@celery.task(name='agent.change_ip')
def change_ip(vm, interfaces, dns):
pass
......@@ -16,10 +16,10 @@
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from celery.contrib.abortable import AbortableTask
from manager.mancelery import celery
# from manager.mancelery import celery
@celery.task(base=AbortableTask, bind=True)
#@celery.task(base=AbortableTask, bind=True)
def abortable_async_instance_operation(task, operation_id, instance_pk,
activity_pk, allargs, auxargs):
from vm.models import Instance, InstanceActivity
......@@ -37,7 +37,7 @@ def abortable_async_instance_operation(task, operation_id, instance_pk,
return operation._exec_op(allargs, auxargs)
@celery.task(base=AbortableTask, bind=True)
#@celery.task(base=AbortableTask, bind=True)
def abortable_async_node_operation(task, operation_id, node_pk, activity_pk,
allargs, auxargs):
from vm.models import Node, NodeActivity
......
......@@ -15,14 +15,14 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from manager.mancelery import celery
# from manager.mancelery import celery
@celery.task(name='netdriver.create')
#@celery.task(name='netdriver.create')
def create(params):
pass
@celery.task(name='netdriver.delete')
#@celery.task(name='netdriver.delete')
def destroy(params):
pass
......@@ -18,7 +18,7 @@
from django.core.cache import cache
from logging import getLogger
from manager.mancelery import celery
# from manager.mancelery import celery
logger = getLogger(__name__)
......@@ -62,126 +62,126 @@ def get_queues():
return result
@celery.task(name='vmdriver.attach_disk')
#@celery.task(name='vmdriver.attach_disk')
def attach_disk(vm, disk):
pass
@celery.task(name='vmdriver.detach_disk')
#@celery.task(name='vmdriver.detach_disk')
def detach_disk(vm, disk):
pass
@celery.task(name='vmdriver.attach_network')
#@celery.task(name='vmdriver.attach_network')
def attach_network(vm, net):
pass
@celery.task(name='vmdriver.detach_network')
#@celery.task(name='vmdriver.detach_network')
def detach_network(vm, net):
pass
@celery.task(name='vmdriver.create')
#@celery.task(name='vmdriver.create')
def deploy(params):
pass
@celery.task(name='vmdriver.delete')
#@celery.task(name='vmdriver.delete')
def destroy(params):
pass
@celery.task(name='vmdriver.save')
#@celery.task(name='vmdriver.save')
def sleep(params):
pass
@celery.task(name='vmdriver.restore')
#@celery.task(name='vmdriver.restore')
def wake_up(params):
pass
@celery.task(name='vmdriver.suspend')
#@celery.task(name='vmdriver.suspend')
def suspend(params):
pass
@celery.task(name='vmdriver.resume')
#@celery.task(name='vmdriver.resume')
def resume(params):
pass
@celery.task(name='vmdriver.shutdown')
#@celery.task(name='vmdriver.shutdown')
def shutdown(params):
pass
@celery.task(name='vmdriver.reset')
#@celery.task(name='vmdriver.reset')
def reset(params):
pass
@celery.task(name='vmdriver.reboot')
#@celery.task(name='vmdriver.reboot')
def reboot(params):
pass
@celery.task(name='vmdriver.migrate')
#@celery.task(name='vmdriver.migrate')
def migrate(params):
pass
@celery.task(name='vmdriver.resize_disk')
#@celery.task(name='vmdriver.resize_disk')
def resize_disk(params):
pass
@celery.task(name='vmdriver.domain_info')
#@celery.task(name='vmdriver.domain_info')
def domain_info(params):
pass
@celery.task(name='vmdriver.list_domains')
#@celery.task(name='vmdriver.list_domains')
def list_domains(params):
pass
@celery.task(name='vmdriver.list_domains_info')
#@celery.task(name='vmdriver.list_domains_info')
def list_domains_info(params):
pass
@celery.task(name='vmdriver.ping')
#@celery.task(name='vmdriver.ping')
def ping(params):
pass
@celery.task(name='vmdriver.get_core_num')
#@celery.task(name='vmdriver.get_core_num')
def get_core_num(params):
pass
@celery.task(name='vmdriver.get_architecture')
#@celery.task(name='vmdriver.get_architecture')
def get_architecture():
pass
@celery.task(name='vmdriver.get_ram_size')
#@celery.task(name='vmdriver.get_ram_size')
def get_ram_size(params):
pass
@celery.task(name='vmdriver.get_info')
#@celery.task(name='vmdriver.get_info')
def get_info(params):
pass
@celery.task(name='vmdriver.get_node_metrics')
#@celery.task(name='vmdriver.get_node_metrics')
def get_node_metrics(params):
pass
@celery.task(name='vmdriver.screenshot')
#@celery.task(name='vmdriver.screenshot')
def screenshot(params):
pass
......@@ -26,6 +26,7 @@ Django==1.11.6
django-appconf==1.0.2
django-autocomplete-light==3.2.9
django-braces==1.11.0
django-celery==3.2.2
django-crispy-forms==1.6.1
django-model-utils==3.0.0
django-pipeline==1.6.13
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment