Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Gutyán Gábor
/
circlestack
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
feeea6da
authored
Apr 23, 2018
by
Szabolcs Gelencser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Comment unused celery tasks, configure local celery transport
parent
1d8b8edb
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
662 additions
and
616 deletions
+662
-616
.idea/workspace.xml
+246
-212
circle/celery
+0
-0
circle/circle/db.sqlite3
+0
-0
circle/circle/settings/base.py
+9
-0
circle/common/models.py
+2
-2
circle/dashboard/views/vm.py
+1
-1
circle/firewall/tasks/local_tasks.py
+3
-3
circle/firewall/tasks/remote_tasks.py
+7
-7
circle/manager/mancelery.py
+63
-63
circle/manager/moncelery.py
+75
-75
circle/manager/scheduler.py
+126
-126
circle/manager/slowcelery.py
+53
-53
circle/storage/tasks/local_tasks.py
+9
-9
circle/storage/tasks/storage_tasks.py
+15
-15
circle/vm/models/activity.py
+1
-1
circle/vm/operations.py
+1
-1
circle/vm/tasks/__init__.py
+2
-0
circle/vm/tasks/agent_tasks.py
+16
-16
circle/vm/tasks/local_tasks.py
+3
-3
circle/vm/tasks/net_tasks.py
+3
-3
circle/vm/tasks/vm_tasks.py
+26
-26
requirements/circlestack.txt
+1
-0
No files found.
.idea/workspace.xml
View file @
feeea6da
...
@@ -3,8 +3,26 @@
...
@@ -3,8 +3,26 @@
<component
name=
"ChangeListManager"
>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"1fbec8af-5a7c-40f9-b994-83ac07d1ae1d"
name=
"Default"
comment=
""
>
<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$/.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/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>
</list>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
<option
name=
"TRACKING_ENABLED"
value=
"true"
/>
<option
name=
"TRACKING_ENABLED"
value=
"true"
/>
...
@@ -34,21 +52,11 @@
...
@@ -34,21 +52,11 @@
</component>
</component>
<component
name=
"FileEditorManager"
>
<component
name=
"FileEditorManager"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<file
leaf-file-name=
"
template-list.html"
pinned=
"false"
current-in-tab=
"fals
e"
>
<file
leaf-file-name=
"
base.py"
pinned=
"false"
current-in-tab=
"tru
e"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/templates/dashboard/template-list.html
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/base.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"125"
>
<state
relative-caret-position=
"363"
>
<caret
line=
"16"
column=
"18"
lean-forward=
"true"
selection-start-line=
"16"
selection-start-column=
"18"
selection-end-line=
"16"
selection-end-column=
"18"
/>
<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>
</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"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
...
@@ -66,12 +74,6 @@
...
@@ -66,12 +74,6 @@
</component>
</component>
<component
name=
"FindInProjectRecents"
>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<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>
favourite
</find>
<find>
favouritev
</find>
<find>
favouritev
</find>
<find>
v
</find>
<find>
v
</find>
...
@@ -96,6 +98,12 @@
...
@@ -96,6 +98,12 @@
<find>
vxlandele
</find>
<find>
vxlandele
</find>
<find>
vxlandeta
</find>
<find>
vxlandeta
</find>
<find>
exclude
</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>
</findStrings>
<replaceStrings>
<replaceStrings>
<replace>
'ACTIVE'
</replace>
<replace>
'ACTIVE'
</replace>
...
@@ -103,6 +111,7 @@
...
@@ -103,6 +111,7 @@
<replace>
<
pk:slug
>
</replace>
<replace>
<
pk:slug
>
</replace>
<replace>
network/horizon/client_side/
</replace>
<replace>
network/horizon/client_side/
</replace>
<replace>
RequestDecideRequiredMixin
</replace>
<replace>
RequestDecideRequiredMixin
</replace>
<replace>
#@celery.task
</replace>
</replaceStrings>
</replaceStrings>
<dirStrings>
<dirStrings>
<dir>
$PROJECT_DIR$/circle/dashboard/templates/dashboard
</dir>
<dir>
$PROJECT_DIR$/circle/dashboard/templates/dashboard
</dir>
...
@@ -117,25 +126,6 @@
...
@@ -117,25 +126,6 @@
<component
name=
"IdeDocumentHistory"
>
<component
name=
"IdeDocumentHistory"
>
<option
name=
"CHANGED_PATHS"
>
<option
name=
"CHANGED_PATHS"
>
<list>
<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/circle/settings/local.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/urls.py"
/>
...
@@ -143,13 +133,10 @@
...
@@ -143,13 +133,10 @@
<option
value=
"$PROJECT_DIR$/requirements/circlestack.txt"
/>
<option
value=
"$PROJECT_DIR$/requirements/circlestack.txt"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/tables.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/models/__init__.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/admin.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/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/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/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/models.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/models.py"
/>
...
@@ -166,8 +153,30 @@
...
@@ -166,8 +153,30 @@
<option
value=
"$PROJECT_DIR$/circle/network/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/tables.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/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$/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>
</list>
</option>
</option>
</component>
</component>
...
@@ -242,7 +251,19 @@
...
@@ -242,7 +251,19 @@
<item
name=
"cloud"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"cloud"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"cloud"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"cloud"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"circle"
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>
</path>
</expand>
</expand>
<select
/>
<select
/>
...
@@ -257,7 +278,7 @@
...
@@ -257,7 +278,7 @@
<property
name=
"settings.editor.selected.configurable"
value=
"watcher.settings"
/>
<property
name=
"settings.editor.selected.configurable"
value=
"watcher.settings"
/>
<property
name=
"NewWatcherDialog.advanced.open"
value=
"true"
/>
<property
name=
"NewWatcherDialog.advanced.open"
value=
"true"
/>
<property
name=
"DefaultHtmlFileTemplate"
value=
"HTML File"
/>
<property
name=
"DefaultHtmlFileTemplate"
value=
"HTML File"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"
templateli	null	null te	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/template-list.html vmcrea	null	null index-tem	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-templates.html index	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html urls	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py vxla	FILE	file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-edit.html operat	FILE	file:///home/h3yduck/cloud/circle/network/operations.py network	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail/network.html vmdetail	null	null vmdeta	null	null forms.	FILE	file:///home/h3yduck/cloud/circle/dashboard/forms.py urls.	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py nova	FILE	file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json neutron_p	FILE	file:///home/h3yduck/cloud/circle/circle/os_policies/neutron_policy.json operations	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py base-d	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/confirm/base-delete.html indexvi	null	null vm-de	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html index-v	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html detailvi	null	null nova.	FILE	file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json operation	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py base	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py indev	null	null indexview	null	null operatio	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py vxlanc	null	null plain	null	null base.	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py local	FILE	file:///home/h3yduck/cloud/circle/circle/settings/local.py views.	FILE	file:///home/h3yduck/cloud/circle/openstack_auth/views.py login.html	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/auth/login.html LoginVi	null	null indexv	null	null index-vm	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html index.	FILE	file:///home/h3yduck/cloud/circle/dashboard/views/index.py bas	FILE	file:///home/h3yduck/cloud/circle/openstack_api/base.py save	null	null plainc	null	null templatedet	null	null instancetemp	null	null instancetem	null	null url	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py vmcreate	null	null opera	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py templat	null	null vmadd	null	null addinterfa	null	null addin
	null	null"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"
local	null	null base	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py base.py	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py templateli	null	null te	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/template-list.html vmcrea	null	null index-tem	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-templates.html index	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html urls	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py vxla	FILE	file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-edit.html operat	FILE	file:///home/h3yduck/cloud/circle/network/operations.py network	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail/network.html vmdetail	null	null vmdeta	null	null forms.	FILE	file:///home/h3yduck/cloud/circle/dashboard/forms.py urls.	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py nova	FILE	file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json neutron_p	FILE	file:///home/h3yduck/cloud/circle/circle/os_policies/neutron_policy.json operations	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py base-d	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/confirm/base-delete.html indexvi	null	null vm-de	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html index-v	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html detailvi	null	null nova.	FILE	file:///home/h3yduck/cloud/circle/circle/os_policies/nova_policy.json operation	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py indev	null	null indexview	null	null operatio	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py vxlanc	null	null plain	null	null base.	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py views.	FILE	file:///home/h3yduck/cloud/circle/openstack_auth/views.py login.html	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/auth/login.html LoginVi	null	null indexv	null	null index-vm	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html index.	FILE	file:///home/h3yduck/cloud/circle/dashboard/views/index.py bas	FILE	file:///home/h3yduck/cloud/circle/openstack_api/base.py save	null	null plainc	null	null templatedet	null	null instancetemp	null	null instancetem	null	null url	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py vmcreate	null	null opera	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py templat	null	null vmadd	null	null addinterfa
	null	null"
/>
</component>
</component>
<component
name=
"RecentsManager"
>
<component
name=
"RecentsManager"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
...
@@ -404,20 +425,20 @@
...
@@ -404,20 +425,20 @@
<component
name=
"ToolWindowManager"
>
<component
name=
"ToolWindowManager"
>
<frame
x=
"-2"
y=
"-1"
width=
"1370"
height=
"751"
extended-state=
"0"
/>
<frame
x=
"-2"
y=
"-1"
width=
"1370"
height=
"751"
extended-state=
"0"
/>
<layout>
<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.329
8097
3"
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.329
65
3"
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=
"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=
"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=
"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=
"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.2
0015106
"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Project"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.2
5830814
"
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=
"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=
"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=
"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=
"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=
"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=
"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=
"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=
"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"
/>
<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 @@
...
@@ -497,6 +518,11 @@
<line>
69
</line>
<line>
69
</line>
<option
name=
"timeStamp"
value=
"317"
/>
<option
name=
"timeStamp"
value=
"317"
/>
</line-breakpoint>
</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>
<breakpoints-dialog>
<breakpoints-dialog>
<breakpoints-dialog
/>
<breakpoints-dialog
/>
...
@@ -508,7 +534,7 @@
...
@@ -508,7 +534,7 @@
</properties>
</properties>
</breakpoint>
</breakpoint>
</default-breakpoints>
</default-breakpoints>
<option
name=
"time"
value=
"35
1
"
/>
<option
name=
"time"
value=
"35
8
"
/>
</breakpoint-manager>
</breakpoint-manager>
<watches-manager
/>
<watches-manager
/>
</component>
</component>
...
@@ -623,412 +649,420 @@ certifi.where()</expression-string>
...
@@ -623,412 +649,420 @@ certifi.where()</expression-string>
</expressions>
</expressions>
</component>
</component>
<component
name=
"editorHistoryManager"
>
<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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<state
relative-caret-position=
"44"
>
<caret
line=
"11"
column=
"14"
lean-forward=
"false"
selection-start-line=
"11"
selection-start-column=
"14"
selection-end-line=
"11"
selection-end-column=
"14"
/>
<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>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
-600
"
>
<state
relative-caret-position=
"
237
"
>
<caret
line=
"
38"
column=
"0"
lean-forward=
"true"
selection-start-line=
"38"
selection-start-column=
"0"
selection-end-line=
"38"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
221
"
>
<state
relative-caret-position=
"
0
"
>
<caret
line=
"
13"
column=
"0"
lean-forward=
"false"
selection-start-line=
"13"
selection-start-column=
"0"
selection-end-line=
"13
"
selection-end-column=
"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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/v2/server
s.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/dashboard/form
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"250"
>
<state
relative-caret-position=
"194"
>
<caret
line=
"734"
column=
"37"
lean-forward=
"false"
selection-start-line=
"734"
selection-start-column=
"37"
selection-end-line=
"734"
selection-end-column=
"37"
/>
<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>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
156
"
>
<state
relative-caret-position=
"
423
"
>
<caret
line=
"1
15"
column=
"0"
lean-forward=
"false"
selection-start-line=
"115"
selection-start-column=
"0"
selection-end-line=
"115
"
selection-end-column=
"0"
/>
<caret
line=
"1
60"
column=
"0"
lean-forward=
"true"
selection-start-line=
"160"
selection-start-column=
"0"
selection-end-line=
"160
"
selection-end-column=
"0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<state
relative-caret-position=
"
38
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"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"238"
>
<state
relative-caret-position=
"66"
>
<caret
line=
"14"
column=
"55"
lean-forward=
"false"
selection-start-line=
"14"
selection-start-column=
"55"
selection-end-line=
"14"
selection-end-column=
"55"
/>
<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>
<folding
/>
<element
signature=
"n#style#0;n#select#0;n#div#0;n#form#0;n#div#0;n#!!top"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"2
89
"
>
<state
relative-caret-position=
"2
02
"
>
<caret
line=
"
634"
column=
"31"
lean-forward=
"false"
selection-start-line=
"634"
selection-start-column=
"19"
selection-end-line=
"634"
selection-end-column=
"31
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
34
"
>
<state
relative-caret-position=
"
52
"
>
<caret
line=
"
2"
column=
"65"
lean-forward=
"true"
selection-start-line=
"2"
selection-start-column=
"46"
selection-end-line=
"2"
selection-end-column=
"65
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1
56
"
>
<state
relative-caret-position=
"1
088
"
>
<caret
line=
"
156"
column=
"0"
lean-forward=
"false"
selection-start-line=
"156"
selection-start-column=
"0"
selection-end-line=
"156"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
148
"
>
<state
relative-caret-position=
"
44
"
>
<caret
line=
"10
4"
column=
"0"
lean-forward=
"false"
selection-start-line=
"104"
selection-start-column=
"0"
selection-end-line=
"104"
selection-end-column=
"0
"
/>
<caret
line=
"10
7"
column=
"41"
lean-forward=
"false"
selection-start-line=
"107"
selection-start-column=
"27"
selection-end-line=
"107"
selection-end-column=
"41
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
156
"
>
<state
relative-caret-position=
"
358
"
>
<caret
line=
"
87"
column=
"0"
lean-forward=
"false"
selection-start-line=
"87"
selection-start-column=
"0"
selection-end-line=
"87
"
selection-end-column=
"0"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"482"
>
<state
relative-caret-position=
"448"
>
<caret
line=
"592"
column=
"17"
lean-forward=
"false"
selection-start-line=
"592"
selection-start-column=
"17"
selection-end-line=
"592"
selection-end-column=
"17"
/>
<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
/>
<folding>
<element
signature=
"e#0#20#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
306
"
>
<state
relative-caret-position=
"
202
"
>
<caret
line=
"1
49"
column=
"0"
lean-forward=
"false"
selection-start-line=
"149"
selection-start-column=
"0"
selection-end-line=
"149"
selection-end-column=
"0
"
/>
<caret
line=
"1
18"
column=
"6"
lean-forward=
"false"
selection-start-line=
"118"
selection-start-column=
"6"
selection-end-line=
"118"
selection-end-column=
"6
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/model
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
network/table
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
299
"
>
<state
relative-caret-position=
"
100
"
>
<caret
line=
"
91"
column=
"17"
lean-forward=
"false"
selection-start-line=
"91"
selection-start-column=
"17"
selection-end-line=
"91"
selection-end-column=
"17
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
214
"
>
<state
relative-caret-position=
"
35
"
>
<caret
line=
"
75"
column=
"96"
lean-forward=
"false"
selection-start-line=
"75"
selection-start-column=
"96"
selection-end-line=
"75"
selection-end-column=
"96
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
408
"
>
<state
relative-caret-position=
"
176
"
>
<caret
line=
"
24"
column=
"51"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"51"
selection-end-line=
"24"
selection-end-column=
"51
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1
36
"
>
<state
relative-caret-position=
"1
19
"
>
<caret
line=
"
8"
column=
"25"
lean-forward=
"true"
selection-start-line=
"8"
selection-start-column=
"25"
selection-end-line=
"8"
selection-end-column=
"25
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
91
"
>
<state
relative-caret-position=
"
265
"
>
<caret
line=
"
76"
column=
"0"
lean-forward=
"false"
selection-start-line=
"76"
selection-start-column=
"0"
selection-end-line=
"76"
selection-end-column=
"
0"
/>
<caret
line=
"
103"
column=
"31"
lean-forward=
"false"
selection-start-line=
"103"
selection-start-column=
"31"
selection-end-line=
"103"
selection-end-column=
"8
0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<state
relative-caret-position=
"
44
"
>
<caret
line=
"
0"
column=
"18"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"18"
selection-end-line=
"0"
selection-end-column=
"18
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
404
"
>
<state
relative-caret-position=
"
285
"
>
<caret
line=
"
286"
column=
"6"
lean-forward=
"false"
selection-start-line=
"286"
selection-start-column=
"6"
selection-end-line=
"286"
selection-end-column=
"6
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
176
"
>
<state
relative-caret-position=
"
425
"
>
<caret
line=
"
75"
column=
"19"
lean-forward=
"true"
selection-start-line=
"75"
selection-start-column=
"19"
selection-end-line=
"75"
selection-end-column=
"1
9"
/>
<caret
line=
"
270"
column=
"69"
lean-forward=
"false"
selection-start-line=
"270"
selection-start-column=
"69"
selection-end-line=
"270"
selection-end-column=
"6
9"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
214
"
>
<state
relative-caret-position=
"
125
"
>
<caret
line=
"
51"
column=
"5"
lean-forward=
"true"
selection-start-line=
"51"
selection-start-column=
"5"
selection-end-line=
"51"
selection-end-column=
"29
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<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"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
circle/vm/operations.py
"
>
<entry
file=
"file://$PROJECT_DIR$/
COPYING
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
306
"
>
<state
relative-caret-position=
"
202
"
>
<caret
line=
"18"
column=
"
0"
lean-forward=
"false"
selection-start-line=
"18"
selection-start-column=
"0"
selection-end-line=
"18"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
52
"
>
<state
relative-caret-position=
"
108
"
>
<caret
line=
"
18"
column=
"0"
lean-forward=
"false"
selection-start-line=
"18"
selection-start-column=
"0"
selection-end-line=
"18"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
network/url
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/tasks/local_periodic_task
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
346
"
>
<state
relative-caret-position=
"
-408
"
>
<caret
line=
"
143"
column=
"60"
lean-forward=
"false"
selection-start-line=
"143"
selection-start-column=
"60"
selection-end-line=
"143"
selection-end-column=
"6
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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
44
"
>
<state
relative-caret-position=
"
255
"
>
<caret
line=
"
39"
column=
"0"
lean-forward=
"false"
selection-start-line=
"39"
selection-start-column=
"0"
selection-end-line=
"39"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
237
"
>
<state
relative-caret-position=
"
380
"
>
<caret
line=
"
29"
column=
"32"
lean-forward=
"true"
selection-start-line=
"29"
selection-start-column=
"32"
selection-end-line=
"29"
selection-end-column=
"32
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<state
relative-caret-position=
"
414
"
>
<caret
line=
"
0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0
"
selection-end-column=
"0"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
194
"
>
<state
relative-caret-position=
"
0
"
>
<caret
line=
"
926"
column=
"6"
lean-forward=
"false"
selection-start-line=
"926"
selection-start-column=
"6"
selection-end-line=
"926"
selection-end-column=
"6
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
423
"
>
<state
relative-caret-position=
"
295
"
>
<caret
line=
"
160"
column=
"0"
lean-forward=
"true"
selection-start-line=
"160"
selection-start-column=
"0"
selection-end-line=
"160
"
selection-end-column=
"0"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
network/form
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
common/model
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"380"
>
<state
relative-caret-position=
"214"
>
<caret
line=
"387"
column=
"0"
lean-forward=
"false"
selection-start-line=
"387"
selection-start-column=
"0"
selection-end-line=
"387"
selection-end-column=
"0"
/>
<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
/>
<folding>
<element
signature=
"e#732#761#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"66"
>
<state
relative-caret-position=
"214"
>
<caret
line=
"784"
column=
"39"
lean-forward=
"false"
selection-start-line=
"784"
selection-start-column=
"39"
selection-end-line=
"784"
selection-end-column=
"39"
/>
<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
/>
<folding>
<element
signature=
"e#732#788#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
20
2"
>
<state
relative-caret-position=
"
108
2"
>
<caret
line=
"
1384"
column=
"4"
lean-forward=
"false"
selection-start-line=
"1384"
selection-start-column=
"4"
selection-end-line=
"1384"
selection-end-column=
"4
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
common/operation
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
storage/tasks/local_task
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
52
"
>
<state
relative-caret-position=
"
1055
"
>
<caret
line=
"
89"
column=
"0"
lean-forward=
"false"
selection-start-line=
"89"
selection-start-column=
"0"
selection-end-line=
"89"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1
08
8"
>
<state
relative-caret-position=
"1
20
8"
>
<caret
line=
"8
8"
column=
"29"
lean-forward=
"false"
selection-start-line=
"88"
selection-start-column=
"29"
selection-end-line=
"88"
selection-end-column=
"29
"
/>
<caret
line=
"8
5"
column=
"13"
lean-forward=
"false"
selection-start-line=
"85"
selection-start-column=
"13"
selection-end-line=
"85"
selection-end-column=
"13
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
44
"
>
<state
relative-caret-position=
"
69
"
>
<caret
line=
"
107"
column=
"41"
lean-forward=
"false"
selection-start-line=
"107"
selection-start-column=
"27"
selection-end-line=
"107"
selection-end-column=
"41
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
358
"
>
<state
relative-caret-position=
"
69
"
>
<caret
line=
"
159"
column=
"0"
lean-forward=
"false"
selection-start-line=
"159"
selection-start-column=
"0"
selection-end-line=
"159
"
selection-end-column=
"0"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
network/operation
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
firewall/tasks/local_task
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
448
"
>
<state
relative-caret-position=
"
571
"
>
<caret
line=
"
57"
column=
"15"
lean-forward=
"false"
selection-start-line=
"57"
selection-start-column=
"15"
selection-end-line=
"57"
selection-end-column=
"47
"
/>
<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>
<folding>
<element
signature=
"e#
0#20
#0"
expanded=
"false"
/>
<element
signature=
"e#
732#761
#0"
expanded=
"false"
/>
</folding>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django_tables2/view
s.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/firewall/tasks/remote_task
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
202
"
>
<state
relative-caret-position=
"
69
"
>
<caret
line=
"1
18"
column=
"6"
lean-forward=
"false"
selection-start-line=
"118"
selection-start-column=
"6"
selection-end-line=
"118"
selection-end-column=
"6
"
/>
<caret
line=
"1
8"
column=
"0"
lean-forward=
"true"
selection-start-line=
"18"
selection-start-column=
"0"
selection-end-line=
"18"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
network/table
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/tasks/net_task
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
100
"
>
<state
relative-caret-position=
"
425
"
>
<caret
line=
"2
31"
column=
"20"
lean-forward=
"true"
selection-start-line=
"231"
selection-start-column=
"20"
selection-end-line=
"231"
selection-end-column=
"20
"
/>
<caret
line=
"2
5"
column=
"13"
lean-forward=
"false"
selection-start-line=
"25"
selection-start-column=
"13"
selection-end-line=
"25"
selection-end-column=
"13
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
network/view
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/tasks/local_task
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
35
"
>
<state
relative-caret-position=
"
409
"
>
<caret
line=
"
972"
column=
"25"
lean-forward=
"false"
selection-start-line=
"972"
selection-start-column=
"25"
selection-end-line=
"972"
selection-end-column=
"25
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"176"
>
<state
relative-caret-position=
"2840"
>
<caret
line=
"39"
column=
"6"
lean-forward=
"true"
selection-start-line=
"39"
selection-start-column=
"6"
selection-end-line=
"39"
selection-end-column=
"6"
/>
<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
/>
<folding>
<element
signature=
"e#732#767#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
119
"
>
<state
relative-caret-position=
"
68
"
>
<caret
line=
"
59"
column=
"18"
lean-forward=
"true"
selection-start-line=
"59"
selection-start-column=
"18"
selection-end-line=
"59"
selection-end-column=
"20
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
44
"
>
<state
relative-caret-position=
"
85
"
>
<caret
line=
"
1158"
column=
"0"
lean-forward=
"false"
selection-start-line=
"1158"
selection-start-column=
"0"
selection-end-line=
"1158"
selection-end-column=
"0
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
265
"
>
<state
relative-caret-position=
"
102
"
>
<caret
line=
"
103"
column=
"31"
lean-forward=
"false"
selection-start-line=
"103"
selection-start-column=
"31"
selection-end-line=
"103"
selection-end-column=
"80
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
44
"
>
<state
relative-caret-position=
"
0
"
>
<caret
line=
"
11"
column=
"0"
lean-forward=
"false"
selection-start-line=
"11"
selection-start-column=
"0"
selection-end-line=
"11"
selection-end-column=
"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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
285
"
>
<state
relative-caret-position=
"
17
"
>
<caret
line=
"
79"
column=
"31"
lean-forward=
"true"
selection-start-line=
"79"
selection-start-column=
"31"
selection-end-line=
"79"
selection-end-column=
"31
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</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"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
125
"
>
<state
relative-caret-position=
"
68
"
>
<caret
line=
"
16"
column=
"18"
lean-forward=
"true"
selection-start-line=
"16"
selection-start-column=
"18"
selection-end-line=
"16"
selection-end-column=
"18
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/views/templat
e.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/bas
e.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
425
"
>
<state
relative-caret-position=
"
363
"
>
<caret
line=
"
270"
column=
"69"
lean-forward=
"false"
selection-start-line=
"270"
selection-start-column=
"69"
selection-end-line=
"270"
selection-end-column=
"69
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
...
...
circle/celery
0 → 100644
View file @
feeea6da
File added
circle/circle/db.sqlite3
View file @
feeea6da
No preview for this file type
circle/circle/settings/base.py
View file @
feeea6da
...
@@ -368,6 +368,8 @@ DJANGO_APPS = (
...
@@ -368,6 +368,8 @@ DJANGO_APPS = (
# Admin panel and documentation:
# Admin panel and documentation:
'django.contrib.admin'
,
'django.contrib.admin'
,
# 'django.contrib.admindocs',
# 'django.contrib.admindocs',
'kombu.transport.django'
,
'djcelery'
,
)
)
THIRD_PARTY_APPS
=
(
THIRD_PARTY_APPS
=
(
...
@@ -399,6 +401,13 @@ LOCAL_APPS = (
...
@@ -399,6 +401,13 @@ LOCAL_APPS = (
INSTALLED_APPS
=
DJANGO_APPS
+
THIRD_PARTY_APPS
+
LOCAL_APPS
INSTALLED_APPS
=
DJANGO_APPS
+
THIRD_PARTY_APPS
+
LOCAL_APPS
########## END APP CONFIGURATION
########## 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_BACKENDS
=
(
'openstack_auth.backend.KeystoneBackend'
,)
AUTHENTICATION_URLS
=
[
'openstack_auth.urls'
]
AUTHENTICATION_URLS
=
[
'openstack_auth.urls'
]
AUTH_USER_MODEL
=
'openstack_auth.User'
AUTH_USER_MODEL
=
'openstack_auth.User'
...
...
circle/common/models.py
View file @
feeea6da
...
@@ -38,7 +38,7 @@ from django.utils.functional import Promise
...
@@ -38,7 +38,7 @@ from django.utils.functional import Promise
from
django.utils.translation
import
ugettext_lazy
as
_
,
ugettext_noop
from
django.utils.translation
import
ugettext_lazy
as
_
,
ugettext_noop
from
jsonfield
import
JSONField
from
jsonfield
import
JSONField
from
manager.mancelery
import
celery
#
from manager.mancelery import celery
from
model_utils.models
import
TimeStampedModel
from
model_utils.models
import
TimeStampedModel
from
openstack_auth.user
import
User
from
openstack_auth.user
import
User
...
@@ -242,7 +242,7 @@ class ActivityModel(TimeStampedModel):
...
@@ -242,7 +242,7 @@ class ActivityModel(TimeStampedModel):
return
'failed'
return
'failed'
@celery.task
()
#
@celery.task()
def
compute_cached
(
method
,
instance
,
memcached_seconds
,
def
compute_cached
(
method
,
instance
,
memcached_seconds
,
key
,
start
,
*
args
,
**
kwargs
):
key
,
start
,
*
args
,
**
kwargs
):
"""Compute and store actual value of cached method."""
"""Compute and store actual value of cached method."""
...
...
circle/dashboard/views/vm.py
View file @
feeea6da
...
@@ -47,7 +47,7 @@ from common.models import (
...
@@ -47,7 +47,7 @@ from common.models import (
split_activity_code
,
split_activity_code
,
)
)
from
firewall.models
import
Vlan
,
Host
,
Rule
from
firewall.models
import
Vlan
,
Host
,
Rule
from
manager.scheduler
import
SchedulerError
#
from manager.scheduler import SchedulerError
from
network.models
import
DefaultPublicRouter
,
DefaultPublicRoutedNet
from
network.models
import
DefaultPublicRouter
,
DefaultPublicRoutedNet
from
openstack_api.nova
import
Server
from
openstack_api.nova
import
Server
from
request.forms
import
TemplateRequestForm
from
request.forms
import
TemplateRequestForm
...
...
circle/firewall/tasks/local_tasks.py
View file @
feeea6da
...
@@ -22,7 +22,7 @@ import django.conf
...
@@ -22,7 +22,7 @@ import django.conf
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
celery.exceptions
import
TimeoutError
from
celery.exceptions
import
TimeoutError
from
manager.mancelery
import
celery
#
from manager.mancelery import celery
from
common.models
import
WorkerNotFound
from
common.models
import
WorkerNotFound
settings
=
django
.
conf
.
settings
.
FIREWALL_SETTINGS
settings
=
django
.
conf
.
settings
.
FIREWALL_SETTINGS
...
@@ -60,7 +60,7 @@ def get_firewall_queues():
...
@@ -60,7 +60,7 @@ def get_firewall_queues():
return
list
(
retval
)
return
list
(
retval
)
@celery.task
#
@celery.task
def
reloadtask_worker
():
def
reloadtask_worker
():
from
firewall.fw
import
BuildFirewall
,
dhcp
,
dns
,
ipset
,
vlan
from
firewall.fw
import
BuildFirewall
,
dhcp
,
dns
,
ipset
,
vlan
from
remote_tasks
import
(
reload_dns
,
reload_dhcp
,
reload_firewall
,
from
remote_tasks
import
(
reload_dns
,
reload_dhcp
,
reload_firewall
,
...
@@ -91,7 +91,7 @@ def reloadtask_worker():
...
@@ -91,7 +91,7 @@ def reloadtask_worker():
lambda
:
(
list
(
ipset
()),
))
lambda
:
(
list
(
ipset
()),
))
@celery.task
#
@celery.task
def
reloadtask
(
type
=
'Host'
,
timeout
=
15
,
sync
=
False
):
def
reloadtask
(
type
=
'Host'
,
timeout
=
15
,
sync
=
False
):
reload
=
{
reload
=
{
'Host'
:
[
'dns'
,
'dhcp'
,
'firewall'
],
'Host'
:
[
'dns'
,
'dhcp'
,
'firewall'
],
...
...
circle/firewall/tasks/remote_tasks.py
View file @
feeea6da
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License along
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# 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
):
def
check_queue
(
firewall
,
queue_id
,
priority
):
...
@@ -36,32 +36,32 @@ def check_queue(firewall, queue_id, priority):
...
@@ -36,32 +36,32 @@ def check_queue(firewall, queue_id, priority):
return
queue_name
in
queue_names
return
queue_name
in
queue_names
@celery.task
(
name
=
'firewall.reload_dns'
)
#
@celery.task(name='firewall.reload_dns')
def
reload_dns
(
data
):
def
reload_dns
(
data
):
pass
pass
@celery.task
(
name
=
'firewall.reload_firewall'
)
#
@celery.task(name='firewall.reload_firewall')
def
reload_firewall
(
data4
,
data6
):
def
reload_firewall
(
data4
,
data6
):
pass
pass
@celery.task
(
name
=
'firewall.reload_firewall_vlan'
)
#
@celery.task(name='firewall.reload_firewall_vlan')
def
reload_firewall_vlan
(
data
):
def
reload_firewall_vlan
(
data
):
pass
pass
@celery.task
(
name
=
'firewall.reload_dhcp'
)
#
@celery.task(name='firewall.reload_dhcp')
def
reload_dhcp
(
data
):
def
reload_dhcp
(
data
):
pass
pass
@celery.task
(
name
=
'firewall.reload_blacklist'
)
#
@celery.task(name='firewall.reload_blacklist')
def
reload_blacklist
(
data
):
def
reload_blacklist
(
data
):
pass
pass
@celery.task
(
name
=
'firewall.get_dhcp_clients'
)
#
@celery.task(name='firewall.get_dhcp_clients')
def
get_dhcp_clients
():
def
get_dhcp_clients
():
# {'00:21:5a:73:72:cd': {'interface': 'OFF', 'ip': None, 'hostname': None}}
# {'00:21:5a:73:72:cd': {'interface': 'OFF', 'ip': None, 'hostname': None}}
pass
pass
circle/manager/mancelery.py
View file @
feeea6da
# 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
# HOSTNAME = "localhost"
# the terms of the GNU General Public License as published by the Free
# QUEUE_NAME = HOSTNAME + '.man'
# 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
# celery = Celery('manager',
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# broker=getenv("AMQP_URI"),
# include=['vm.tasks.local_tasks',
from
celery
import
Celery
# 'vm.tasks.local_periodic_tasks',
from
celery.signals
import
worker_ready
# 'vm.tasks.local_agent_tasks',
from
datetime
import
timedelta
# 'storage.tasks.local_tasks',
from
kombu
import
Queue
,
Exchange
# 'storage.tasks.periodic_tasks',
from
os
import
getenv
# 'firewall.tasks.local_tasks',
# 'dashboard.tasks.local_periodic_tasks',
HOSTNAME
=
"localhost"
# ])
QUEUE_NAME
=
HOSTNAME
+
'.man'
#
# celery.conf.update(
# CELERY_RESULT_BACKEND='amqp',
celery
=
Celery
(
'manager'
,
# CELERY_TASK_RESULT_EXPIRES=300,
broker
=
getenv
(
"AMQP_URI"
),
# CELERY_QUEUES=(
include
=
[
'vm.tasks.local_tasks'
,
# Queue(HOSTNAME + '.man', Exchange('manager', type='direct'),
'vm.tasks.local_periodic_tasks'
,
# routing_key="manager"),
'vm.tasks.local_agent_tasks'
,
# ),
'storage.tasks.local_tasks'
,
# CELERYBEAT_SCHEDULE={
'storage.tasks.periodic_tasks'
,
# 'storage.periodic_tasks': {
'firewall.tasks.local_tasks'
,
# 'task': 'storage.tasks.periodic_tasks.garbage_collector',
'dashboard.tasks.local_periodic_tasks'
,
# 'schedule': timedelta(hours=1),
])
# 'options': {'queue': 'localhost.man'}
# },
celery
.
conf
.
update
(
# 'dashboard.send_email_notifications': {
CELERY_RESULT_BACKEND
=
'amqp'
,
# 'task': 'dashboard.tasks.local_periodic_tasks.'
CELERY_TASK_RESULT_EXPIRES
=
300
,
# 'send_email_notifications',
CELERY_QUEUES
=
(
# 'schedule': timedelta(hours=24),
Queue
(
HOSTNAME
+
'.man'
,
Exchange
(
'manager'
,
type
=
'direct'
),
# 'options': {'queue': 'localhost.man'}
routing_key
=
"manager"
),
# },
),
# }
CELERYBEAT_SCHEDULE
=
{
#
'storage.periodic_tasks'
:
{
# )
'task'
:
'storage.tasks.periodic_tasks.garbage_collector'
,
#
'schedule'
:
timedelta
(
hours
=
1
),
#
'options'
:
{
'queue'
:
'localhost.man'
}
# @worker_ready.connect()
},
# def cleanup_tasks(conf=None, **kwargs):
'dashboard.send_email_notifications'
:
{
# '''Discard all task and clean up activity.'''
'task'
:
'dashboard.tasks.local_periodic_tasks.'
# from vm.models.activity import cleanup
'send_email_notifications'
,
# cleanup(queue_name=QUEUE_NAME)
'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
)
circle/manager/moncelery.py
View file @
feeea6da
# 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
# HOSTNAME = "localhost"
# the terms of the GNU General Public License as published by the Free
# QUEUE_NAME = HOSTNAME + '.monitor'
# 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
# celery = Celery('monitor',
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# broker=getenv("AMQP_URI"),
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# include=['vm.tasks.local_periodic_tasks',
# details.
# 'monitor.tasks.local_periodic_tasks',
# ])
#
#
# You should have received a copy of the GNU General Public License along
# celery.conf.update(
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# CELERY_RESULT_BACKEND='amqp',
# CELERY_TASK_RESULT_EXPIRES=300,
from
celery
import
Celery
# CELERY_QUEUES=(
from
celery.signals
import
worker_ready
# Queue(QUEUE_NAME, Exchange('monitor', type='direct'),
from
datetime
import
timedelta
# routing_key="monitor"),
from
kombu
import
Queue
,
Exchange
# ),
from
os
import
getenv
# CELERYBEAT_SCHEDULE={
# 'vm.update_domain_states': {
HOSTNAME
=
"localhost"
# 'task': 'vm.tasks.local_periodic_tasks.update_domain_states',
QUEUE_NAME
=
HOSTNAME
+
'.monitor'
# 'schedule': timedelta(seconds=10),
# 'options': {'queue': 'localhost.monitor'}
celery
=
Celery
(
'monitor'
,
# },
broker
=
getenv
(
"AMQP_URI"
),
# 'monitor.measure_response_time': {
include
=
[
'vm.tasks.local_periodic_tasks'
,
# 'task': 'monitor.tasks.local_periodic_tasks.'
'monitor.tasks.local_periodic_tasks'
,
# 'measure_response_time',
])
# 'schedule': timedelta(seconds=30),
# 'options': {'queue': 'localhost.monitor'}
celery
.
conf
.
update
(
# },
CELERY_RESULT_BACKEND
=
'amqp'
,
# 'monitor.check_celery_queues': {
CELERY_TASK_RESULT_EXPIRES
=
300
,
# 'task': 'monitor.tasks.local_periodic_tasks.'
CELERY_QUEUES
=
(
# 'check_celery_queues',
Queue
(
QUEUE_NAME
,
Exchange
(
'monitor'
,
type
=
'direct'
),
# 'schedule': timedelta(seconds=60),
routing_key
=
"monitor"
),
# 'options': {'queue': 'localhost.monitor'}
),
# },
CELERYBEAT_SCHEDULE
=
{
# 'monitor.instance_per_template': {
'vm.update_domain_states'
:
{
# 'task': 'monitor.tasks.local_periodic_tasks.'
'task'
:
'vm.tasks.local_periodic_tasks.update_domain_states'
,
# 'instance_per_template',
'schedule'
:
timedelta
(
seconds
=
10
),
# 'schedule': timedelta(seconds=30),
'options'
:
{
'queue'
:
'localhost.monitor'
}
# 'options': {'queue': 'localhost.monitor'}
},
# },
'monitor.measure_response_time'
:
{
# 'monitor.allocated_memory': {
'task'
:
'monitor.tasks.local_periodic_tasks.'
# 'task': 'monitor.tasks.local_periodic_tasks.'
'measure_response_time'
,
# 'allocated_memory',
'schedule'
:
timedelta
(
seconds
=
30
),
# 'schedule': timedelta(seconds=30),
'options'
:
{
'queue'
:
'localhost.monitor'
}
# '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'
}
#
},
# @worker_ready.connect()
'monitor.instance_per_template'
:
{
# def cleanup_tasks(conf=None, **kwargs):
'task'
:
'monitor.tasks.local_periodic_tasks.'
# '''Discard all task and clean up activity.'''
'instance_per_template'
,
# from vm.models.activity import cleanup
'schedule'
:
timedelta
(
seconds
=
30
),
# cleanup(queue_name=QUEUE_NAME)
'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
)
circle/manager/scheduler.py
View file @
feeea6da
# 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.
#
#
This file is part of CIRCLE Cloud.
#
#
#
# CIRCLE is free software: you can redistribute it and/or modify it under
#
#
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
#
#
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)
#
#
Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
#
any later version.
#
#
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
#
#
CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
#
#
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
#
#
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
#
details.
#
#
#
# You should have received a copy of the GNU General Public License along
#
#
You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
#
#
with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
#
from
logging
import
getLogger
#
from logging import getLogger
#
from
django.utils.translation
import
ugettext_noop
#
from django.utils.translation import ugettext_noop
#
from
common.models
import
HumanReadableException
#
from common.models import HumanReadableException
#
logger
=
getLogger
(
__name__
)
#
logger = getLogger(__name__)
#
#
class
SchedulerError
(
HumanReadableException
):
#
class SchedulerError(HumanReadableException):
admin_message
=
None
#
admin_message = None
#
def
__init__
(
self
,
params
=
None
,
level
=
None
,
**
kwargs
):
#
def __init__(self, params=None, level=None, **kwargs):
kwargs
.
update
(
params
or
{})
#
kwargs.update(params or {})
super
(
SchedulerError
,
self
)
.
__init__
(
#
super(SchedulerError, self).__init__(
level
,
self
.
message
,
self
.
admin_message
or
self
.
message
,
#
level, self.message, self.admin_message or self.message,
kwargs
)
#
kwargs)
#
#
class
NotEnoughMemoryException
(
SchedulerError
):
#
class NotEnoughMemoryException(SchedulerError):
message
=
ugettext_noop
(
#
message = ugettext_noop(
"The resources required for launching the virtual machine are not "
#
"The resources required for launching the virtual machine are not "
"available currently. Please try again later."
)
#
"available currently. Please try again later.")
#
admin_message
=
ugettext_noop
(
#
admin_message = ugettext_noop(
"The required free memory for launching the virtual machine is not "
#
"The required free memory for launching the virtual machine is not "
"available on any usable node currently. Please try again later."
)
#
"available on any usable node currently. Please try again later.")
#
#
class
TraitsUnsatisfiableException
(
SchedulerError
):
#
class TraitsUnsatisfiableException(SchedulerError):
message
=
ugettext_noop
(
#
message = ugettext_noop(
"No node can satisfy the required traits of the "
#
"No node can satisfy the required traits of the "
"new virtual machine currently."
)
#
"new virtual machine currently.")
#
#
def
select_node
(
instance
,
nodes
):
#
def select_node(instance, nodes):
''' Select a node for hosting an instance based on its requirements.
#
''' Select a node for hosting an instance based on its requirements.
'''
#
'''
# check required traits
#
# check required traits
nodes
=
[
n
for
n
in
nodes
#
nodes = [n for n in nodes
if
n
.
schedule_enabled
and
n
.
online
and
#
if n.schedule_enabled and n.online and
has_traits
(
instance
.
req_traits
.
all
(),
n
)]
#
has_traits(instance.req_traits.all(), n)]
if
not
nodes
:
#
if not nodes:
logger
.
warning
(
'select_node: no usable node for
%
s'
,
unicode
(
instance
))
#
logger.warning('select_node: no usable node for %s', unicode(instance))
raise
TraitsUnsatisfiableException
()
#
raise TraitsUnsatisfiableException()
#
# check required RAM
#
# check required RAM
nodes
=
[
n
for
n
in
nodes
if
has_enough_ram
(
instance
.
ram_size
,
n
)]
#
nodes = [n for n in nodes if has_enough_ram(instance.ram_size, n)]
if
not
nodes
:
#
if not nodes:
logger
.
warning
(
'select_node: no enough RAM for
%
s'
,
unicode
(
instance
))
#
logger.warning('select_node: no enough RAM for %s', unicode(instance))
raise
NotEnoughMemoryException
()
#
raise NotEnoughMemoryException()
#
# sort nodes first by processor usage, then priority
#
# sort nodes first by processor usage, then priority
nodes
.
sort
(
key
=
lambda
n
:
n
.
priority
,
reverse
=
True
)
#
nodes.sort(key=lambda n: n.priority, reverse=True)
nodes
.
sort
(
key
=
free_cpu_time
,
reverse
=
True
)
#
nodes.sort(key=free_cpu_time, reverse=True)
result
=
nodes
[
0
]
#
result = nodes[0]
#
logger
.
info
(
'select_node:
%
s for
%
s'
,
unicode
(
result
),
unicode
(
instance
))
#
logger.info('select_node: %s for %s', unicode(result), unicode(instance))
return
result
#
return result
#
#
def
has_traits
(
traits
,
node
):
#
def has_traits(traits, node):
"""True, if the node has all specified traits; otherwise, false.
#
"""True, if the node has all specified traits; otherwise, false.
"""
#
"""
traits
=
set
(
traits
)
#
traits = set(traits)
return
traits
.
issubset
(
node
.
traits
.
all
())
#
return traits.issubset(node.traits.all())
#
#
def
has_enough_ram
(
ram_size
,
node
):
#
def has_enough_ram(ram_size, node):
"""True, if the node has enough memory to accomodate a guest requiring
#
"""True, if the node has enough memory to accomodate a guest requiring
ram_size mebibytes of memory; otherwise, false.
#
ram_size mebibytes of memory; otherwise, false.
"""
#
"""
ram_size
=
ram_size
*
1024
*
1024
#
ram_size = ram_size * 1024 * 1024
try
:
#
try:
total
=
node
.
ram_size
#
total = node.ram_size
used
=
node
.
byte_ram_usage
#
used = node.byte_ram_usage
unused
=
total
-
used
#
unused = total - used
#
overcommit
=
node
.
ram_size_with_overcommit
#
overcommit = node.ram_size_with_overcommit
reserved
=
node
.
allocated_ram
#
reserved = node.allocated_ram
free
=
overcommit
-
reserved
#
free = overcommit - reserved
#
retval
=
ram_size
<
unused
and
ram_size
<
free
#
retval = ram_size < unused and ram_size < free
#
logger
.
debug
(
'has_enough_ram(
%
d,
%
s)=
%
s (total=
%
s unused=
%
s'
#
logger.debug('has_enough_ram(%d, %s)=%s (total=%s unused=%s'
' overcommit=
%
s free=
%
s free_ok=
%
s overcommit_ok=
%
s)'
,
#
' overcommit=%s free=%s free_ok=%s overcommit_ok=%s)',
ram_size
,
node
,
retval
,
total
,
unused
,
overcommit
,
free
,
#
ram_size, node, retval, total, unused, overcommit, free,
ram_size
<
unused
,
ram_size
<
free
)
#
ram_size < unused, ram_size < free)
return
retval
#
return retval
except
TypeError
as
e
:
#
except TypeError as e:
logger
.
exception
(
'Got incorrect monitoring data for node
%
s.
%
s'
,
#
logger.exception('Got incorrect monitoring data for node %s. %s',
unicode
(
node
),
unicode
(
e
))
#
unicode(node), unicode(e))
return
False
#
return False
#
#
def
free_cpu_time
(
node
):
#
def free_cpu_time(node):
"""Get an indicator number for idle processor time on the node.
#
"""Get an indicator number for idle processor time on the node.
#
Higher values indicate more idle time.
#
Higher values indicate more idle time.
"""
#
"""
try
:
#
try:
activity
=
node
.
cpu_usage
/
100
#
activity = node.cpu_usage / 100
inactivity
=
1
-
activity
#
inactivity = 1 - activity
cores
=
node
.
num_cores
#
cores = node.num_cores
return
cores
*
inactivity
#
return cores * inactivity
except
TypeError
as
e
:
#
except TypeError as e:
logger
.
warning
(
'Got incorrect monitoring data for node
%
s.
%
s'
,
#
logger.warning('Got incorrect monitoring data for node %s. %s',
unicode
(
node
),
unicode
(
e
))
#
unicode(node), unicode(e))
return
False
# monitoring data is incorrect
#
return False # monitoring data is incorrect
circle/manager/slowcelery.py
View file @
feeea6da
# 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
# HOSTNAME = "localhost"
# the terms of the GNU General Public License as published by the Free
# QUEUE_NAME = HOSTNAME + '.man.slow'
# 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
# celery = Celery('manager.slow',
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# broker=getenv("AMQP_URI"),
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# include=['vm.tasks.local_tasks',
# details.
# '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
# celery.conf.update(
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# CELERY_RESULT_BACKEND='amqp',
# CELERY_TASK_RESULT_EXPIRES=300,
from
celery
import
Celery
# CELERY_QUEUES=(
from
celery.signals
import
worker_ready
# Queue(QUEUE_NAME, Exchange('manager.slow', type='direct'),
from
datetime
import
timedelta
# routing_key="manager.slow"),
from
kombu
import
Queue
,
Exchange
# ),
from
os
import
getenv
# CELERYBEAT_SCHEDULE={
# 'vm.garbage_collector': {
HOSTNAME
=
"localhost"
# 'task': 'vm.tasks.local_periodic_tasks.garbage_collector',
QUEUE_NAME
=
HOSTNAME
+
'.man.slow'
# 'schedule': timedelta(minutes=10),
# 'options': {'queue': 'localhost.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'
,
#
])
# @worker_ready.connect()
# def cleanup_tasks(conf=None, **kwargs):
celery
.
conf
.
update
(
# '''Discard all task and clean up activity.'''
CELERY_RESULT_BACKEND
=
'amqp'
,
# from vm.models.activity import cleanup
CELERY_TASK_RESULT_EXPIRES
=
300
,
# cleanup(queue_name=QUEUE_NAME)
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
)
circle/storage/tasks/local_tasks.py
View file @
feeea6da
...
@@ -15,11 +15,11 @@
...
@@ -15,11 +15,11 @@
# You should have received a copy of the GNU General Public License along
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# 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
from
celery.contrib.abortable
import
AbortableTask
@celery.task
#
@celery.task
def
check_queue
(
storage
,
queue_id
,
priority
):
def
check_queue
(
storage
,
queue_id
,
priority
):
''' Celery inspect job to check for active workers at queue_id
''' Celery inspect job to check for active workers at queue_id
return True/False
return True/False
...
@@ -38,34 +38,34 @@ def check_queue(storage, queue_id, priority):
...
@@ -38,34 +38,34 @@ def check_queue(storage, queue_id, priority):
return
queue_name
in
queue_names
return
queue_name
in
queue_names
@celery.task
#
@celery.task
def
save_as
(
disk
,
timeout
,
user
):
def
save_as
(
disk
,
timeout
,
user
):
disk
.
save_disk_as
(
task_uuid
=
save_as
.
request
.
id
,
user
=
user
,
disk
.
save_disk_as
(
task_uuid
=
save_as
.
request
.
id
,
user
=
user
,
disk
=
disk
,
timeout
=
timeout
)
disk
=
disk
,
timeout
=
timeout
)
@celery.task
#
@celery.task
def
clone
(
disk
,
new_disk
,
timeout
,
user
):
def
clone
(
disk
,
new_disk
,
timeout
,
user
):
disk
.
clone
(
task_uuid
=
save_as
.
request
.
id
,
user
=
user
,
disk
.
clone
(
task_uuid
=
save_as
.
request
.
id
,
user
=
user
,
disk
=
new_disk
,
timeout
=
timeout
)
disk
=
new_disk
,
timeout
=
timeout
)
@celery.task
#
@celery.task
def
deploy
(
disk
,
user
):
def
deploy
(
disk
,
user
):
disk
.
deploy
(
task_uuid
=
deploy
.
request
.
id
,
user
=
user
)
disk
.
deploy
(
task_uuid
=
deploy
.
request
.
id
,
user
=
user
)
@celery.task
#
@celery.task
def
destroy
(
disk
,
user
):
def
destroy
(
disk
,
user
):
disk
.
destroy
(
task_uuid
=
destroy
.
request
.
id
,
user
=
user
)
disk
.
destroy
(
task_uuid
=
destroy
.
request
.
id
,
user
=
user
)
@celery.task
#
@celery.task
def
restore
(
disk
,
user
):
def
restore
(
disk
,
user
):
disk
.
restore
(
task_uuid
=
restore
.
request
.
id
,
user
=
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
):
def
create_from_url
(
self
,
**
kwargs
):
Disk
=
kwargs
.
pop
(
'cls'
)
Disk
=
kwargs
.
pop
(
'cls'
)
Disk
.
create_from_url
(
url
=
kwargs
.
pop
(
'url'
),
Disk
.
create_from_url
(
url
=
kwargs
.
pop
(
'url'
),
...
@@ -74,7 +74,7 @@ def create_from_url(self, **kwargs):
...
@@ -74,7 +74,7 @@ def create_from_url(self, **kwargs):
**
kwargs
)
**
kwargs
)
@celery.task
#
@celery.task
def
create_empty
(
Disk
,
instance
,
user
,
params
):
def
create_empty
(
Disk
,
instance
,
user
,
params
):
Disk
.
create_empty
(
instance
,
user
,
Disk
.
create_empty
(
instance
,
user
,
task_uuid
=
create_empty
.
request
.
id
,
task_uuid
=
create_empty
.
request
.
id
,
...
...
circle/storage/tasks/storage_tasks.py
View file @
feeea6da
...
@@ -15,74 +15,74 @@
...
@@ -15,74 +15,74 @@
# You should have received a copy of the GNU General Public License along
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# 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
):
def
list
(
dir
):
pass
pass
@celery.task
(
name
=
'storagedriver.list_files'
)
#
@celery.task(name='storagedriver.list_files')
def
list_files
(
dir
):
def
list_files
(
dir
):
pass
pass
@celery.task
(
name
=
'storagedriver.create'
)
#
@celery.task(name='storagedriver.create')
def
create
(
disk_desc
):
def
create
(
disk_desc
):
pass
pass
@celery.task
(
name
=
'storagedriver.download'
)
#
@celery.task(name='storagedriver.download')
def
download
(
disk_desc
,
url
):
def
download
(
disk_desc
,
url
):
pass
pass
@celery.task
(
name
=
'storagedriver.delete'
)
#
@celery.task(name='storagedriver.delete')
def
delete
(
path
):
def
delete
(
path
):
pass
pass
@celery.task
(
name
=
'storagedriver.delete_dump'
)
#
@celery.task(name='storagedriver.delete_dump')
def
delete_dump
(
path
):
def
delete_dump
(
path
):
pass
pass
@celery.task
(
name
=
'storagedriver.snapshot'
)
#
@celery.task(name='storagedriver.snapshot')
def
snapshot
(
disk_desc
):
def
snapshot
(
disk_desc
):
pass
pass
@celery.task
(
name
=
'storagedriver.get'
)
#
@celery.task(name='storagedriver.get')
def
get
(
path
):
def
get
(
path
):
pass
pass
@celery.task
(
name
=
'storagedriver.merge'
)
#
@celery.task(name='storagedriver.merge')
def
merge
(
src_disk_desc
,
dst_disk_desc
):
def
merge
(
src_disk_desc
,
dst_disk_desc
):
pass
pass
@celery.task
(
name
=
'storagedriver.make_free_space'
)
#
@celery.task(name='storagedriver.make_free_space')
def
make_free_space
(
datastore
,
percent
):
def
make_free_space
(
datastore
,
percent
):
pass
pass
@celery.task
(
name
=
'storagedriver.move_to_trash'
)
#
@celery.task(name='storagedriver.move_to_trash')
def
move_to_trash
(
datastore
,
disk_path
):
def
move_to_trash
(
datastore
,
disk_path
):
pass
pass
@celery.task
(
name
=
'storagedriver.recover_from_trash'
)
#
@celery.task(name='storagedriver.recover_from_trash')
def
recover_from_trash
(
datastore
,
disk_path
):
def
recover_from_trash
(
datastore
,
disk_path
):
pass
pass
@celery.task
(
name
=
'storagedriver.get_storage_stat'
)
#
@celery.task(name='storagedriver.get_storage_stat')
def
get_storage_stat
(
path
):
def
get_storage_stat
(
path
):
pass
pass
@celery.task
(
name
=
'storagedriver.get_file_statistics'
)
#
@celery.task(name='storagedriver.get_file_statistics')
def
get_file_statistics
(
datastore
):
def
get_file_statistics
(
datastore
):
pass
pass
circle/vm/models/activity.py
View file @
feeea6da
...
@@ -32,7 +32,7 @@ from common.models import (
...
@@ -32,7 +32,7 @@ from common.models import (
HumanReadableObject
,
HumanReadableException
,
HumanReadableObject
,
HumanReadableException
,
)
)
from
manager.mancelery
import
celery
#
from manager.mancelery import celery
logger
=
getLogger
(
__name__
)
logger
=
getLogger
(
__name__
)
...
...
circle/vm/operations.py
View file @
feeea6da
...
@@ -45,7 +45,7 @@ from common.models import (
...
@@ -45,7 +45,7 @@ from common.models import (
create_readable
,
humanize_exception
,
HumanReadableException
create_readable
,
humanize_exception
,
HumanReadableException
)
)
from
common.operations
import
Operation
,
register_operation
from
common.operations
import
Operation
,
register_operation
from
manager.scheduler
import
SchedulerError
#
from manager.scheduler import SchedulerError
from
.tasks.local_tasks
import
(
from
.tasks.local_tasks
import
(
abortable_async_instance_operation
,
abortable_async_node_operation
,
abortable_async_instance_operation
,
abortable_async_node_operation
,
)
)
...
...
circle/vm/tasks/__init__.py
View file @
feeea6da
from
test
import
*
\ No newline at end of file
circle/vm/tasks/agent_tasks.py
View file @
feeea6da
...
@@ -15,79 +15,79 @@
...
@@ -15,79 +15,79 @@
# You should have received a copy of the GNU General Public License along
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# 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
):
def
change_password
(
vm
,
password
):
pass
pass
@celery.task
(
name
=
'agent.restart_networking'
)
#
@celery.task(name='agent.restart_networking')
def
restart_networking
(
vm
):
def
restart_networking
(
vm
):
pass
pass
@celery.task
(
name
=
'agent.set_time'
)
#
@celery.task(name='agent.set_time')
def
set_time
(
vm
,
time
):
def
set_time
(
vm
,
time
):
pass
pass
@celery.task
(
name
=
'agent.set_hostname'
)
#
@celery.task(name='agent.set_hostname')
def
set_hostname
(
vm
,
time
):
def
set_hostname
(
vm
,
time
):
pass
pass
@celery.task
(
name
=
'agent.mount_store'
)
#
@celery.task(name='agent.mount_store')
def
mount_store
(
vm
,
host
,
username
,
password
):
def
mount_store
(
vm
,
host
,
username
,
password
):
pass
pass
@celery.task
(
name
=
'agent.cleanup'
)
#
@celery.task(name='agent.cleanup')
def
cleanup
(
vm
):
def
cleanup
(
vm
):
pass
pass
@celery.task
(
name
=
'agent.start_access_server'
)
#
@celery.task(name='agent.start_access_server')
def
start_access_server
(
vm
):
def
start_access_server
(
vm
):
pass
pass
@celery.task
(
name
=
'agent.update_legacy'
)
#
@celery.task(name='agent.update_legacy')
def
update_legacy
(
vm
,
data
,
executable
=
None
):
def
update_legacy
(
vm
,
data
,
executable
=
None
):
pass
pass
@celery.task
(
name
=
'agent.append'
)
#
@celery.task(name='agent.append')
def
append
(
vm
,
data
,
filename
,
chunk_number
):
def
append
(
vm
,
data
,
filename
,
chunk_number
):
pass
pass
@celery.task
(
name
=
'agent.update'
)
#
@celery.task(name='agent.update')
def
update
(
vm
,
filename
,
executable
,
checksum
):
def
update
(
vm
,
filename
,
executable
,
checksum
):
pass
pass
@celery.task
(
name
=
'agent.add_keys'
)
#
@celery.task(name='agent.add_keys')
def
add_keys
(
vm
,
keys
):
def
add_keys
(
vm
,
keys
):
pass
pass
@celery.task
(
name
=
'agent.del_keys'
)
#
@celery.task(name='agent.del_keys')
def
del_keys
(
vm
,
keys
):
def
del_keys
(
vm
,
keys
):
pass
pass
@celery.task
(
name
=
'agent.get_keys'
)
#
@celery.task(name='agent.get_keys')
def
get_keys
(
vm
):
def
get_keys
(
vm
):
pass
pass
@celery.task
(
name
=
'agent.send_expiration'
)
#
@celery.task(name='agent.send_expiration')
def
send_expiration
(
vm
,
url
):
def
send_expiration
(
vm
,
url
):
pass
pass
@celery.task
(
name
=
'agent.change_ip'
)
#
@celery.task(name='agent.change_ip')
def
change_ip
(
vm
,
interfaces
,
dns
):
def
change_ip
(
vm
,
interfaces
,
dns
):
pass
pass
circle/vm/tasks/local_tasks.py
View file @
feeea6da
...
@@ -16,10 +16,10 @@
...
@@ -16,10 +16,10 @@
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from
celery.contrib.abortable
import
AbortableTask
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
,
def
abortable_async_instance_operation
(
task
,
operation_id
,
instance_pk
,
activity_pk
,
allargs
,
auxargs
):
activity_pk
,
allargs
,
auxargs
):
from
vm.models
import
Instance
,
InstanceActivity
from
vm.models
import
Instance
,
InstanceActivity
...
@@ -37,7 +37,7 @@ def abortable_async_instance_operation(task, operation_id, instance_pk,
...
@@ -37,7 +37,7 @@ def abortable_async_instance_operation(task, operation_id, instance_pk,
return
operation
.
_exec_op
(
allargs
,
auxargs
)
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
,
def
abortable_async_node_operation
(
task
,
operation_id
,
node_pk
,
activity_pk
,
allargs
,
auxargs
):
allargs
,
auxargs
):
from
vm.models
import
Node
,
NodeActivity
from
vm.models
import
Node
,
NodeActivity
...
...
circle/vm/tasks/net_tasks.py
View file @
feeea6da
...
@@ -15,14 +15,14 @@
...
@@ -15,14 +15,14 @@
# You should have received a copy of the GNU General Public License along
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
# 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
):
def
create
(
params
):
pass
pass
@celery.task
(
name
=
'netdriver.delete'
)
#
@celery.task(name='netdriver.delete')
def
destroy
(
params
):
def
destroy
(
params
):
pass
pass
circle/vm/tasks/vm_tasks.py
View file @
feeea6da
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
logging
import
getLogger
from
logging
import
getLogger
from
manager.mancelery
import
celery
#
from manager.mancelery import celery
logger
=
getLogger
(
__name__
)
logger
=
getLogger
(
__name__
)
...
@@ -62,126 +62,126 @@ def get_queues():
...
@@ -62,126 +62,126 @@ def get_queues():
return
result
return
result
@celery.task
(
name
=
'vmdriver.attach_disk'
)
#
@celery.task(name='vmdriver.attach_disk')
def
attach_disk
(
vm
,
disk
):
def
attach_disk
(
vm
,
disk
):
pass
pass
@celery.task
(
name
=
'vmdriver.detach_disk'
)
#
@celery.task(name='vmdriver.detach_disk')
def
detach_disk
(
vm
,
disk
):
def
detach_disk
(
vm
,
disk
):
pass
pass
@celery.task
(
name
=
'vmdriver.attach_network'
)
#
@celery.task(name='vmdriver.attach_network')
def
attach_network
(
vm
,
net
):
def
attach_network
(
vm
,
net
):
pass
pass
@celery.task
(
name
=
'vmdriver.detach_network'
)
#
@celery.task(name='vmdriver.detach_network')
def
detach_network
(
vm
,
net
):
def
detach_network
(
vm
,
net
):
pass
pass
@celery.task
(
name
=
'vmdriver.create'
)
#
@celery.task(name='vmdriver.create')
def
deploy
(
params
):
def
deploy
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.delete'
)
#
@celery.task(name='vmdriver.delete')
def
destroy
(
params
):
def
destroy
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.save'
)
#
@celery.task(name='vmdriver.save')
def
sleep
(
params
):
def
sleep
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.restore'
)
#
@celery.task(name='vmdriver.restore')
def
wake_up
(
params
):
def
wake_up
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.suspend'
)
#
@celery.task(name='vmdriver.suspend')
def
suspend
(
params
):
def
suspend
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.resume'
)
#
@celery.task(name='vmdriver.resume')
def
resume
(
params
):
def
resume
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.shutdown'
)
#
@celery.task(name='vmdriver.shutdown')
def
shutdown
(
params
):
def
shutdown
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.reset'
)
#
@celery.task(name='vmdriver.reset')
def
reset
(
params
):
def
reset
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.reboot'
)
#
@celery.task(name='vmdriver.reboot')
def
reboot
(
params
):
def
reboot
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.migrate'
)
#
@celery.task(name='vmdriver.migrate')
def
migrate
(
params
):
def
migrate
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.resize_disk'
)
#
@celery.task(name='vmdriver.resize_disk')
def
resize_disk
(
params
):
def
resize_disk
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.domain_info'
)
#
@celery.task(name='vmdriver.domain_info')
def
domain_info
(
params
):
def
domain_info
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.list_domains'
)
#
@celery.task(name='vmdriver.list_domains')
def
list_domains
(
params
):
def
list_domains
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.list_domains_info'
)
#
@celery.task(name='vmdriver.list_domains_info')
def
list_domains_info
(
params
):
def
list_domains_info
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.ping'
)
#
@celery.task(name='vmdriver.ping')
def
ping
(
params
):
def
ping
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.get_core_num'
)
#
@celery.task(name='vmdriver.get_core_num')
def
get_core_num
(
params
):
def
get_core_num
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.get_architecture'
)
#
@celery.task(name='vmdriver.get_architecture')
def
get_architecture
():
def
get_architecture
():
pass
pass
@celery.task
(
name
=
'vmdriver.get_ram_size'
)
#
@celery.task(name='vmdriver.get_ram_size')
def
get_ram_size
(
params
):
def
get_ram_size
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.get_info'
)
#
@celery.task(name='vmdriver.get_info')
def
get_info
(
params
):
def
get_info
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.get_node_metrics'
)
#
@celery.task(name='vmdriver.get_node_metrics')
def
get_node_metrics
(
params
):
def
get_node_metrics
(
params
):
pass
pass
@celery.task
(
name
=
'vmdriver.screenshot'
)
#
@celery.task(name='vmdriver.screenshot')
def
screenshot
(
params
):
def
screenshot
(
params
):
pass
pass
requirements/circlestack.txt
View file @
feeea6da
...
@@ -26,6 +26,7 @@ Django==1.11.6
...
@@ -26,6 +26,7 @@ Django==1.11.6
django-appconf==1.0.2
django-appconf==1.0.2
django-autocomplete-light==3.2.9
django-autocomplete-light==3.2.9
django-braces==1.11.0
django-braces==1.11.0
django-celery==3.2.2
django-crispy-forms==1.6.1
django-crispy-forms==1.6.1
django-model-utils==3.0.0
django-model-utils==3.0.0
django-pipeline==1.6.13
django-pipeline==1.6.13
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment