Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Gelencsér Szabolcs
/
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
3199d66f
authored
7 years ago
by
Szabolcs Gelencser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Show templates on UI
parent
9e76ed54
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
210 additions
and
198 deletions
+210
-198
.idea/workspace.xml
+104
-87
circle/dashboard/templates/dashboard/index-templates.html
+0
-3
circle/dashboard/templates/dashboard/index.html
+4
-5
circle/dashboard/urls.py
+7
-6
circle/dashboard/views/index.py
+1
-3
circle/dashboard/views/template.py
+93
-93
circle/vm/models/instance.py
+1
-1
No files found.
.idea/workspace.xml
View file @
3199d66f
...
...
@@ -3,9 +3,12 @@
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"1fbec8af-5a7c-40f9-b994-83ac07d1ae1d"
name=
"Default"
comment=
""
>
<change
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/circle/db.sqlite3"
afterPath=
"$PROJECT_DIR$/circle/circle/db.sqlite3"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
afterPath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index.html"
afterPath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index.html"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/urls.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/urls.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/views/template.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/views/template.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/vm/models/instance.py"
afterPath=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/vm/operations.py"
afterPath=
"$PROJECT_DIR$/circle/vm/operations.py"
/>
</list>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
<option
name=
"TRACKING_ENABLED"
value=
"true"
/>
...
...
@@ -31,33 +34,41 @@
</component>
<component
name=
"FileEditorManager"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<file
leaf-file-name=
"
vm.py
"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/
views/vm.py
"
>
<file
leaf-file-name=
"
index.html
"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/
templates/dashboard/index.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"298"
>
<caret
line=
"539"
column=
"112"
lean-forward=
"false"
selection-start-line=
"539"
selection-start-column=
"112"
selection-end-line=
"539"
selection-end-column=
"112"
/>
<folding>
<element
signature=
"e#41548#42719#0"
expanded=
"false"
/>
</folding>
<state
relative-caret-position=
"437"
>
<caret
line=
"35"
column=
"36"
lean-forward=
"true"
selection-start-line=
"35"
selection-start-column=
"36"
selection-end-line=
"35"
selection-end-column=
"36"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"index-templates.html"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"267"
>
<caret
line=
"24"
column=
"17"
lean-forward=
"true"
selection-start-line=
"24"
selection-start-column=
"17"
selection-end-line=
"24"
selection-end-column=
"17"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"
operations.py"
pinned=
"false"
current-in-tab=
"tru
e"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/operations
.py"
>
<file
leaf-file-name=
"
index.py"
pinned=
"false"
current-in-tab=
"fals
e"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/views/index
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1
76
"
>
<caret
line=
"
531"
column=
"22"
lean-forward=
"false"
selection-start-line=
"531"
selection-start-column=
"22"
selection-end-line=
"531"
selection-end-column=
"22
"
/>
<state
relative-caret-position=
"1
02
"
>
<caret
line=
"
62"
column=
"23"
lean-forward=
"true"
selection-start-line=
"62"
selection-start-column=
"23"
selection-end-line=
"62"
selection-end-column=
"23
"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"
instance.py"
pinned=
"false"
current-in-tab=
"fals
e"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/models/instance
.py"
>
<file
leaf-file-name=
"
urls.py"
pinned=
"false"
current-in-tab=
"tru
e"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/urls
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
340
"
>
<caret
line=
"
145"
column=
"13"
lean-forward=
"false"
selection-start-line=
"145"
selection-start-column=
"13"
selection-end-line=
"145"
selection-end-column=
"13
"
/>
<state
relative-caret-position=
"
267
"
>
<caret
line=
"
50"
column=
"45"
lean-forward=
"true"
selection-start-line=
"50"
selection-start-column=
"45"
selection-end-line=
"50"
selection-end-column=
"45
"
/>
<folding
/>
</state>
</provider>
...
...
@@ -75,7 +86,6 @@
</component>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<find>
request.views.request-resource
</find>
<find>
get_status_icon
</find>
<find>
icon
</find>
<find>
_(
</find>
...
...
@@ -105,6 +115,7 @@
<find>
template
</find>
<find>
saveas
</find>
<find>
save
</find>
<find>
template-list
</find>
</findStrings>
<replaceStrings>
<replace>
'ACTIVE'
</replace>
...
...
@@ -122,8 +133,6 @@
<component
name=
"IdeDocumentHistory"
>
<option
name=
"CHANGED_PATHS"
>
<list>
<option
value=
"$PROJECT_DIR$/circle/openstack_api/__init__.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_api/neutron.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_api/policy.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-plain-image-create.html"
/>
<option
value=
"$PROJECT_DIR$/circle/request/urls.py"
/>
...
...
@@ -154,7 +163,6 @@
<option
value=
"$PROJECT_DIR$/circle/network/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/templates/network/vxlan-create.html"
/>
<option
value=
"$PROJECT_DIR$/circle/network/models.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/resources.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-vm.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail.html"
/>
...
...
@@ -166,13 +174,16 @@
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/util.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_api/nova.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/template.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/vm.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/settings/base.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/circle_policy.json"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/operations.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/template.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/urls.py"
/>
</list>
</option>
</component>
...
...
@@ -246,14 +257,22 @@
<item
name=
"cloud"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"cloud"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"circle"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
circle
"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"
dashboard
"
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=
"dashboard"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"templates"
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=
"os_policies"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"dashboard"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"templates"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"dashboard"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
<path>
<item
name=
"cloud"
type=
"b2602c69:ProjectViewProjectNode"
/>
...
...
@@ -274,7 +293,7 @@
<property
name=
"settings.editor.selected.configurable"
value=
"watcher.settings"
/>
<property
name=
"NewWatcherDialog.advanced.open"
value=
"true"
/>
<property
name=
"DefaultHtmlFileTemplate"
value=
"HTML File"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"
instancetem	null	null base	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py opera	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py operations	FILE	file:///home/h3yduck/cloud/circle/common/operations.py templat	null	null vmadd	null	null vmdetail	null	null addinterfa	null	null addin	null	null server	null	null Instance	null	null instance	FILE	file:///home/h3yduck/cloud/circle/vm/models/instance.py operat	null	null ins	FILE	file:///home/h3yduck/cloud/circle/vm/models/instance.py vmdetai	null	null index	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html operationvi	null	null ser	null	null server.	FILE	file:///home/h3yduck/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/v2/servers.py resources.	FILE	file:///home/h3yduck/cloud/circle/request/templates/request/initials/resources.html vm-de	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html vxla	null	null urls	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py index-v	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vxlans.html index-vm	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html vmdeta	null	null create	FILE	file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-create.html vxl	null	null nov	FILE	file:///home/h3yduck/cloud/circle/openstack_api/nova.py nova.p	FILE	file:///home/h3yduck/cloud/circle/openstack_api/nova.py vmdetailv	null	null editor	null	null networktopo	FILE	file:///home/h3yduck/cloud/circle/network/static/js/horizon.networktopology.js bow	FILE	file:///home/h3yduck/cloud/circle/bower.json base.py	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py local	null	null vnc	null	null plain	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-plain-image-create.html forms	null	null vxlanform	null	null instanc	FILE	file:///home/h3yduck/cloud/circle/vm/models/instance.py index-vxla	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vxlans.html _vm-c	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/_vm-create-1.html vmcrea	null	null loginV	null	null index.html	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index.html sleep	null	null Deploy	null	null Vmdeta	null	null list_from
	null	null"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"
	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py url	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py instancetem	null	null vmcreate	null	null index	FILE	file:///home/h3yduck/cloud/circle/dashboard/views/index.py base	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py opera	FILE	file:///home/h3yduck/cloud/circle/vm/operations.py operations	FILE	file:///home/h3yduck/cloud/circle/common/operations.py templat	null	null vmadd	null	null vmdetail	null	null addinterfa	null	null addin	null	null server	null	null Instance	null	null instance	FILE	file:///home/h3yduck/cloud/circle/vm/models/instance.py operat	null	null ins	FILE	file:///home/h3yduck/cloud/circle/vm/models/instance.py vmdetai	null	null operationvi	null	null ser	null	null server.	FILE	file:///home/h3yduck/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/v2/servers.py resources.	FILE	file:///home/h3yduck/cloud/circle/request/templates/request/initials/resources.html vm-de	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html vxla	null	null urls	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py index-v	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vxlans.html index-vm	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html vmdeta	null	null create	FILE	file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-create.html vxl	null	null nov	FILE	file:///home/h3yduck/cloud/circle/openstack_api/nova.py nova.p	FILE	file:///home/h3yduck/cloud/circle/openstack_api/nova.py vmdetailv	null	null editor	null	null networktopo	FILE	file:///home/h3yduck/cloud/circle/network/static/js/horizon.networktopology.js bow	FILE	file:///home/h3yduck/cloud/circle/bower.json base.py	FILE	file:///home/h3yduck/cloud/circle/circle/settings/base.py local	null	null vnc	null	null plain	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-plain-image-create.html forms	null	null vxlanform	null	null instanc	FILE	file:///home/h3yduck/cloud/circle/vm/models/instance.py index-vxla	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vxlans.html _vm-c	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/_vm-create-1.html vmcrea	null	null loginV	null	null index.html	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index.html sleep
	null	null"
/>
</component>
<component
name=
"RecentsManager"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
...
...
@@ -397,15 +416,14 @@
</component>
<component
name=
"ToolWindowManager"
>
<frame
x=
"-2"
y=
"-1"
width=
"1924"
height=
"1063"
extended-state=
"0"
/>
<editor
active=
"true"
/>
<layout>
<window_info
id=
"TODO"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32980973"
sideWeight=
"0.4978701"
order=
"6"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"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=
"Event Log"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.327818"
sideWeight=
"0.5021299"
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.32769555"
sideWeight=
"0.5
234139
"
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.32769555"
sideWeight=
"0.5
14377
"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Python Console"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.43023255"
sideWeight=
"0.43610224"
order=
"7"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Run"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32769555"
sideWeight=
"0.49574015"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Terminal"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.
7114165"
sideWeight=
"0.48988286
"
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=
"false"
show_stripe_button=
"true"
weight=
"0.
32769555"
sideWeight=
"0.485623
"
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.18051118"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Docker"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"false"
weight=
"0.33"
sideWeight=
"0.5"
order=
"8"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Database"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
...
...
@@ -413,7 +431,7 @@
<window_info
id=
"SciView"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Structure"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Favorites"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Debug"
active=
"
false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"fals
e"
show_stripe_button=
"true"
weight=
"0.7114165"
sideWeight=
"0.5101172"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Debug"
active=
"
true"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"tru
e"
show_stripe_button=
"true"
weight=
"0.7114165"
sideWeight=
"0.5101172"
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=
"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=
"Commander"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.4"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"tabs"
/>
...
...
@@ -496,7 +514,7 @@
</properties>
</breakpoint>
</default-breakpoints>
<option
name=
"time"
value=
"2
29
"
/>
<option
name=
"time"
value=
"2
34
"
/>
</breakpoint-manager>
<watches-manager
/>
</component>
...
...
@@ -541,6 +559,11 @@
</expressions>
<expressions
id=
"evaluateExpression"
>
<expression>
<expression-string>
instances
</expression-string>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
<expression>
<expression-string>
self.instance
</expression-string>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
...
...
@@ -580,30 +603,9 @@
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
<expression>
<expression-string>
instance_networks
</expression-string>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expressions>
</component>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/wsgi.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"376"
>
<caret
line=
"59"
column=
"0"
lean-forward=
"false"
selection-start-line=
"59"
selection-start-column=
"0"
selection-end-line=
"59"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/base.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1309"
>
<caret
line=
"87"
column=
"0"
lean-forward=
"false"
selection-start-line=
"87"
selection-start-column=
"0"
selection-end-line=
"87"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/urls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"831"
>
...
...
@@ -686,14 +688,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/index.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"17"
>
<caret
line=
"43"
column=
"83"
lean-forward=
"false"
selection-start-line=
"43"
selection-start-column=
"83"
selection-end-line=
"43"
selection-end-column=
"83"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/network/views.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"280"
>
...
...
@@ -920,14 +914,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/urls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"590"
>
<caret
line=
"226"
column=
"22"
lean-forward=
"false"
selection-start-line=
"226"
selection-start-column=
"22"
selection-end-line=
"226"
selection-end-column=
"22"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/common/operations.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-204"
>
...
...
@@ -944,17 +930,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/template.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"267"
>
<caret
line=
"63"
column=
"33"
lean-forward=
"false"
selection-start-line=
"63"
selection-start-column=
"33"
selection-end-line=
"63"
selection-end-column=
"33"
/>
<folding>
<element
signature=
"e#731#787#0"
expanded=
"false"
/>
<marker
date=
"1520947233801"
expanded=
"true"
signature=
"9976:10189"
ph=
"SELECT count... vm_instance"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/settings/base.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"546"
>
...
...
@@ -979,28 +954,70 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/operations.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"550"
>
<caret
line=
"535"
column=
"65"
lean-forward=
"true"
selection-start-line=
"535"
selection-start-column=
"65"
selection-end-line=
"535"
selection-end-column=
"65"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/models/instance.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
340
"
>
<caret
line=
"1
45"
column=
"13"
lean-forward=
"false"
selection-start-line=
"145"
selection-start-column=
"13"
selection-end-line=
"145"
selection-end-column=
"13
"
/>
<state
relative-caret-position=
"
235
"
>
<caret
line=
"1
66"
column=
"28"
lean-forward=
"false"
selection-start-line=
"166"
selection-start-column=
"28"
selection-end-line=
"166"
selection-end-column=
"28
"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/vm.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
298
"
>
<caret
line=
"
539"
column=
"112"
lean-forward=
"false"
selection-start-line=
"539"
selection-start-column=
"112"
selection-end-line=
"539"
selection-end-column=
"112
"
/>
<state
relative-caret-position=
"
1094
"
>
<caret
line=
"
1124"
column=
"29"
lean-forward=
"false"
selection-start-line=
"1124"
selection-start-column=
"21"
selection-end-line=
"1124"
selection-end-column=
"29
"
/>
<folding>
<element
signature=
"e#41548#42719#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/operations.py
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/templates/dashboard/index.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"176"
>
<caret
line=
"531"
column=
"22"
lean-forward=
"false"
selection-start-line=
"531"
selection-start-column=
"22"
selection-end-line=
"531"
selection-end-column=
"22"
/>
<state
relative-caret-position=
"437"
>
<caret
line=
"35"
column=
"36"
lean-forward=
"true"
selection-start-line=
"35"
selection-start-column=
"36"
selection-end-line=
"35"
selection-end-column=
"36"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/template.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"233"
>
<caret
line=
"43"
column=
"1"
lean-forward=
"true"
selection-start-line=
"43"
selection-start-column=
"1"
selection-end-line=
"43"
selection-end-column=
"1"
/>
<folding>
<marker
date=
"1520950390987"
expanded=
"true"
signature=
"9980:10193"
ph=
"SELECT count... vm_instance"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"267"
>
<caret
line=
"24"
column=
"17"
lean-forward=
"true"
selection-start-line=
"24"
selection-start-column=
"17"
selection-end-line=
"24"
selection-end-column=
"17"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/index.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"102"
>
<caret
line=
"62"
column=
"23"
lean-forward=
"true"
selection-start-line=
"62"
selection-start-column=
"23"
selection-end-line=
"62"
selection-end-column=
"23"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/urls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"267"
>
<caret
line=
"50"
column=
"45"
lean-forward=
"true"
selection-start-line=
"50"
selection-start-column=
"45"
selection-end-line=
"50"
selection-end-column=
"45"
/>
<folding
/>
</state>
</provider>
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/templates/dashboard/index-templates.html
View file @
3199d66f
...
...
@@ -48,9 +48,6 @@
<a
href=
"{% url "
dashboard
.
views
.
template-list
"
%}"
class=
"btn btn-primary btn-xs"
>
<i
class=
"fa fa-chevron-circle-right"
></i>
{% trans "show all" %}
</a>
<a
href=
"{% url "
dashboard
.
views
.
template-choose
"
%}"
class=
"btn btn-success btn-xs template-choose"
>
<i
class=
"fa fa-plus-circle"
></i>
{% trans "new" %}
</a>
</div>
</div>
</div>
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/templates/dashboard/index.html
View file @
3199d66f
...
...
@@ -31,11 +31,10 @@
{#
</div>
#}
{# {% endif %}#}
{##}
{# {% if perms.vm.create_template %}#}
{#
<div
class=
"col-lg-4 col-sm-6"
>
#}
{# {% include "dashboard/index-templates.html" %}#}
{#
</div>
#}
{# {% endif %}#}
{# #TODO: check permissions for template (as well as for other resources) #}
<div
class=
"col-lg-4 col-sm-6"
>
{% include "dashboard/index-templates.html" %}
</div>
{##}
{# {% if perms.vm.view_statistics %}#}
{#
<div
class=
"col-lg-4 col-sm-6"
>
#}
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/urls.py
View file @
3199d66f
...
...
@@ -18,6 +18,7 @@
from
__future__
import
absolute_import
from
dashboard.views.autocomplete
import
AclUserGroupAutocomplete
,
AclUserAutocomplete
from
dashboard.views.template
import
TemplateList
,
TemplateChoose
,
TemplateDetail
from
dashboard.views.vm
import
VmDetailView
,
VmList
,
VmCreate
,
vm_activity
,
vm_ops
,
FavouriteView
,
VmPlainImageCreate
from
django.conf.urls
import
url
...
...
@@ -43,14 +44,14 @@ urlpatterns = [
#
# url(r'^template/create/$', TemplateCreate.as_view(),
# name="dashboard.views.template-create"),
#
url(r'^template/choose/$', TemplateChoose.as_view(),
#
name="dashboard.views.template-choose"),
url
(
r'^template/choose/$'
,
TemplateChoose
.
as_view
(),
name
=
"dashboard.views.template-choose"
),
# url(r'template/(?P<pk>\d+)/acl/$', TemplateAclUpdateView.as_view(),
# name='dashboard.views.template-acl'),
#
url(r'^template/(?P<pk>\d+)/$', TemplateDetail.as_view(),
#
name='dashboard.views.template-detail'),
#
url(r"^template/list/$", TemplateList.as_view(),
#
name="dashboard.views.template-list"),
url
(
r'^template/(?P<pk>\d+)/$'
,
TemplateDetail
.
as_view
(),
name
=
'dashboard.views.template-detail'
),
url
(
r"^template/list/$"
,
TemplateList
.
as_view
(),
name
=
"dashboard.views.template-list"
),
# url(r"^template/delete/(?P<pk>\d+)/$", TemplateDelete.as_view(),
# name="dashboard.views.template-delete"),
# url(r'^template/(?P<pk>\d+)/tx/$', TransferTemplateOwnershipView.as_view(),
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/views/index.py
View file @
3199d66f
...
...
@@ -102,9 +102,7 @@ class IndexView(LoginRequiredMixin, TemplateView):
})
# template
if
user
.
has_perm
(
'vm.create_template'
):
context
[
'templates'
]
=
InstanceTemplate
.
get_objects_with_level
(
'operator'
,
user
,
disregard_superuser
=
True
)
.
all
()[:
5
]
context
[
'templates'
]
=
InstanceTemplate
.
objects
.
filter
(
owner_id
=
user
.
id
)
# vxlan
all_vxlans
=
openstack_api
.
neutron
.
network_list_for_tenant
(
self
.
request
,
self
.
request
.
user
.
tenant_id
)
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/views/template.py
View file @
3199d66f
...
...
@@ -51,8 +51,8 @@ from ..tables import TemplateListTable, LeaseListTable
from
.util
import
(
AclUpdateView
,
FilterMixin
,
TransferOwnershipConfirmView
,
TransferOwnershipView
,
DeleteViewBase
,
#
TransferOwnershipConfirmView, TransferOwnershipView,
#
DeleteViewBase,
GraphMixin
)
...
...
@@ -285,18 +285,18 @@ class TemplateList(LoginRequiredMixin, FilterMixin, SingleTableView):
return
qs
.
select_related
(
"lease"
,
"owner"
,
"owner__profile"
)
class
TemplateDelete
(
DeleteViewBase
):
model
=
InstanceTemplate
success_message
=
_
(
"Template successfully deleted."
)
def
get_success_url
(
self
):
return
reverse
(
"dashboard.views.template-list"
)
def
delete_obj
(
self
,
request
,
*
args
,
**
kwargs
):
object
=
self
.
get_object
()
object
.
destroy_disks
()
object
.
delete
()
#
#
class TemplateDelete(DeleteViewBase):
#
model = InstanceTemplate
#
success_message = _("Template successfully deleted.")
#
#
def get_success_url(self):
#
return reverse("dashboard.views.template-list")
#
#
def delete_obj(self, request, *args, **kwargs):
#
object = self.get_object()
#
object.destroy_disks()
#
object.delete()
class
TemplateDetail
(
LoginRequiredMixin
,
GraphMixin
,
...
...
@@ -360,41 +360,41 @@ class TemplateDetail(LoginRequiredMixin, GraphMixin,
kwargs
[
'user'
]
=
self
.
request
.
user
return
kwargs
class
DiskRemoveView
(
DeleteViewBase
):
model
=
Disk
success_message
=
_
(
"Disk successfully removed."
)
def
get_queryset
(
self
):
qs
=
super
(
DiskRemoveView
,
self
)
.
get_queryset
()
return
qs
.
exclude
(
template_set
=
None
)
def
check_auth
(
self
):
disk
=
self
.
get_object
()
template
=
disk
.
template_set
.
get
()
if
not
template
.
has_level
(
self
.
request
.
user
,
'owner'
):
raise
PermissionDenied
()
def
get_context_data
(
self
,
**
kwargs
):
disk
=
self
.
get_object
()
template
=
disk
.
template_set
.
get
()
context
=
super
(
DiskRemoveView
,
self
)
.
get_context_data
(
**
kwargs
)
context
[
'title'
]
=
_
(
"Disk remove confirmation"
)
context
[
'text'
]
=
_
(
"Are you sure you want to remove "
"<strong>
%(disk)
s</strong> from "
"<strong>
%(app)
s</strong>?"
%
{
'disk'
:
disk
,
'app'
:
template
}
)
return
context
def
delete_obj
(
self
,
request
,
*
args
,
**
kwargs
):
disk
=
self
.
get_object
()
template
=
disk
.
template_set
.
get
()
template
.
remove_disk
(
disk
)
disk
.
destroy
()
def
get_success_url
(
self
):
return
self
.
request
.
POST
.
get
(
"next"
)
or
"/"
#
#
class DiskRemoveView(DeleteViewBase):
#
model = Disk
#
success_message = _("Disk successfully removed.")
#
#
def get_queryset(self):
#
qs = super(DiskRemoveView, self).get_queryset()
#
return qs.exclude(template_set=None)
#
#
def check_auth(self):
#
disk = self.get_object()
#
template = disk.template_set.get()
#
if not template.has_level(self.request.user, 'owner'):
#
raise PermissionDenied()
#
#
def get_context_data(self, **kwargs):
#
disk = self.get_object()
#
template = disk.template_set.get()
#
context = super(DiskRemoveView, self).get_context_data(**kwargs)
#
context['title'] = _("Disk remove confirmation")
#
context['text'] = _("Are you sure you want to remove "
#
"<strong>%(disk)s</strong> from "
#
"<strong>%(app)s</strong>?" % {'disk': disk,
#
'app': template}
#
)
#
return context
#
#
def delete_obj(self, request, *args, **kwargs):
#
disk = self.get_object()
#
template = disk.template_set.get()
#
template.remove_disk(disk)
#
disk.destroy()
#
#
def get_success_url(self):
#
return self.request.POST.get("next") or "/"
class
LeaseCreate
(
LoginRequiredMixin
,
PermissionRequiredMixin
,
...
...
@@ -447,47 +447,47 @@ class LeaseDetail(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
return
super
(
LeaseDetail
,
self
)
.
post
(
request
,
*
args
,
**
kwargs
)
class
LeaseDelete
(
DeleteViewBase
):
model
=
Lease
success_message
=
_
(
"Lease successfully deleted."
)
def
get_success_url
(
self
):
return
reverse
(
"dashboard.views.template-list"
)
def
get_context_data
(
self
,
*
args
,
**
kwargs
):
c
=
super
(
LeaseDelete
,
self
)
.
get_context_data
(
*
args
,
**
kwargs
)
lease
=
self
.
get_object
()
templates
=
lease
.
instancetemplate_set
if
templates
.
count
()
>
0
:
text
=
_
(
"You can't delete this lease because some templates "
"are still using it, modify these to proceed: "
)
c
[
'text'
]
=
text
+
", "
.
join
(
"<strong>
%
s (#
%
d)</strong>"
""
%
(
o
.
name
,
o
.
pk
)
for
o
in
templates
.
all
())
c
[
'disable_submit'
]
=
True
return
c
def
delete_obj
(
self
,
request
,
*
args
,
**
kwargs
):
object
=
self
.
get_object
()
if
object
.
instancetemplate_set
.
count
()
>
0
:
raise
SuspiciousOperation
()
object
.
delete
()
class
TransferTemplateOwnershipConfirmView
(
TransferOwnershipConfirmView
):
template
=
"dashboard/confirm/transfer-template-ownership.html"
model
=
InstanceTemplate
class
TransferTemplateOwnershipView
(
TransferOwnershipView
):
confirm_view
=
TransferTemplateOwnershipConfirmView
model
=
InstanceTemplate
notification_msg
=
ugettext_noop
(
'
%(owner)
s offered you to take the ownership of '
'his/her template called
%(instance)
s. '
'<a href="
%(token)
s" '
'class="btn btn-success btn-small">Accept</a>'
)
token_url
=
'dashboard.views.template-transfer-ownership-confirm'
template
=
"dashboard/template-tx-owner.html"
#
#
class LeaseDelete(DeleteViewBase):
#
model = Lease
#
success_message = _("Lease successfully deleted.")
#
#
def get_success_url(self):
#
return reverse("dashboard.views.template-list")
#
#
def get_context_data(self, *args, **kwargs):
#
c = super(LeaseDelete, self).get_context_data(*args, **kwargs)
#
lease = self.get_object()
#
templates = lease.instancetemplate_set
#
if templates.count() > 0:
#
text = _("You can't delete this lease because some templates "
#
"are still using it, modify these to proceed: ")
#
#
c['text'] = text + ", ".join("<strong>%s (#%d)</strong>"
#
"" % (o.name, o.pk)
#
for o in templates.all())
#
c['disable_submit'] = True
#
return c
#
#
def delete_obj(self, request, *args, **kwargs):
#
object = self.get_object()
#
if object.instancetemplate_set.count() > 0:
#
raise SuspiciousOperation()
#
object.delete()
#
#
#
class TransferTemplateOwnershipConfirmView(TransferOwnershipConfirmView):
#
template = "dashboard/confirm/transfer-template-ownership.html"
#
model = InstanceTemplate
#
#
#
class TransferTemplateOwnershipView(TransferOwnershipView):
#
confirm_view = TransferTemplateOwnershipConfirmView
#
model = InstanceTemplate
#
notification_msg = ugettext_noop(
#
'%(owner)s offered you to take the ownership of '
#
'his/her template called %(instance)s. '
#
'<a href="%(token)s" '
#
'class="btn btn-success btn-small">Accept</a>')
#
token_url = 'dashboard.views.template-transfer-ownership-confirm'
#
template = "dashboard/template-tx-owner.html"
This diff is collapsed.
Click to expand it.
circle/vm/models/instance.py
View file @
3199d66f
...
...
@@ -164,11 +164,11 @@ class InstanceTemplate(TimeStampedModel):
def
os_type
(
self
):
"""The type of the template's operating system.
"""
return
'linux'
#TODO
if
self
.
access_method
==
'rdp'
:
return
'windows'
else
:
return
'linux'
#TODO
@permalink
def
get_absolute_url
(
self
):
...
...
This diff is collapsed.
Click to expand it.
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