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
02238427
authored
7 years ago
by
Szabolcs Gelencser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add public IP display, associate operation
parent
7a0b9b2b
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
370 additions
and
275 deletions
+370
-275
.idea/workspace.xml
+198
-187
circle/dashboard/forms.py
+21
-0
circle/dashboard/templates/dashboard/vm-detail/network.html
+106
-85
circle/dashboard/views/vm.py
+37
-2
circle/vm/operations.py
+8
-1
No files found.
.idea/workspace.xml
View file @
02238427
...
@@ -3,8 +3,10 @@
...
@@ -3,8 +3,10 @@
<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/forms.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/forms.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
afterPath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
afterPath=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
/>
<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/vm/operations.py"
afterPath=
"$PROJECT_DIR$/circle/vm/operations.py"
/>
</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"
/>
...
@@ -37,8 +39,28 @@
...
@@ -37,8 +39,28 @@
<file
leaf-file-name=
"vm.py"
pinned=
"false"
current-in-tab=
"false"
>
<file
leaf-file-name=
"vm.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/vm.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=
"284"
>
<state
relative-caret-position=
"293"
>
<caret
line=
"167"
column=
"51"
lean-forward=
"false"
selection-start-line=
"167"
selection-start-column=
"47"
selection-end-line=
"167"
selection-end-column=
"51"
/>
<caret
line=
"182"
column=
"81"
lean-forward=
"false"
selection-start-line=
"182"
selection-start-column=
"81"
selection-end-line=
"182"
selection-end-column=
"81"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"forms.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/forms.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"304"
>
<caret
line=
"1018"
column=
"40"
lean-forward=
"false"
selection-start-line=
"1018"
selection-start-column=
"40"
selection-end-line=
"1018"
selection-end-column=
"40"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"operations.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/operations.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"465"
column=
"0"
lean-forward=
"true"
selection-start-line=
"465"
selection-start-column=
"0"
selection-end-line=
"465"
selection-end-column=
"0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
...
@@ -47,9 +69,11 @@
...
@@ -47,9 +69,11 @@
<file
leaf-file-name=
"network.html"
pinned=
"false"
current-in-tab=
"true"
>
<file
leaf-file-name=
"network.html"
pinned=
"false"
current-in-tab=
"true"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
>
<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=
"187"
>
<state
relative-caret-position=
"323"
>
<caret
line=
"39"
column=
"0"
lean-forward=
"false"
selection-start-line=
"39"
selection-start-column=
"2"
selection-end-line=
"39"
selection-end-column=
"75"
/>
<caret
line=
"64"
column=
"20"
lean-forward=
"true"
selection-start-line=
"64"
selection-start-column=
"20"
selection-end-line=
"64"
selection-end-column=
"20"
/>
<folding
/>
<folding>
<marker
date=
"1524051869354"
expanded=
"false"
signature=
"3016:3034"
ph=
"..."
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -66,25 +90,6 @@
...
@@ -66,25 +90,6 @@
</component>
</component>
<component
name=
"FindInProjectRecents"
>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<findStrings>
<find>
request
</find>
<find>
SuperuserRequiredMixin
</find>
<find>
#TODO
</find>
<find>
localhost
</find>
<find>
requests
</find>
<find>
cert
</find>
<find>
saml
</find>
<find>
saml_ava
</find>
<find>
loginview
</find>
<find>
sso
</find>
<find>
settings.
</find>
<find>
microsofttranslator
</find>
<find>
markupsafe
</find>
<find>
lx
</find>
<find>
ET
</find>
<find>
domain_validator
</find>
<find>
connect_command_template_validator
</find>
<find>
M2Crypto
</find>
<find>
salt
</find>
<find>
LocalClient
</find>
<find>
LocalClient
</find>
<find>
trait
</find>
<find>
trait
</find>
<find>
class NodeActivity
</find>
<find>
class NodeActivity
</find>
...
@@ -96,6 +101,25 @@
...
@@ -96,6 +101,25 @@
<find>
forwar
</find>
<find>
forwar
</find>
<find>
DEFAULT_SUBNETPOOL_NAME_FOR_USER
</find>
<find>
DEFAULT_SUBNETPOOL_NAME_FOR_USER
</find>
<find>
get_id
</find>
<find>
get_id
</find>
<find>
add_port
</find>
<find>
vm_ops
</find>
<find>
VmPortAddView
</find>
<find>
VmPortAddForm
</find>
<find>
vm_opts
</find>
<find>
removeport
</find>
<find>
vm_op
</find>
<find>
remove
</find>
<find>
port
</find>
<find>
VmPublicIpAddForm
</find>
<find>
f
</find>
<find>
forms.Choicefi
</find>
<find>
pools
</find>
<find>
Hidden
</find>
<find>
port_id
</find>
<find>
Public IP
</find>
<find>
publicip
</find>
<find>
portadd
</find>
<find>
vmdeta
</find>
</findStrings>
</findStrings>
<replaceStrings>
<replaceStrings>
<replace>
'ACTIVE'
</replace>
<replace>
'ACTIVE'
</replace>
...
@@ -116,7 +140,6 @@
...
@@ -116,7 +140,6 @@
<component
name=
"IdeDocumentHistory"
>
<component
name=
"IdeDocumentHistory"
>
<option
name=
"CHANGED_PATHS"
>
<option
name=
"CHANGED_PATHS"
>
<list>
<list>
<option
value=
"$PROJECT_DIR$/circle/dashboard/static/vue.css"
/>
<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/network/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/views.py"
/>
...
@@ -159,11 +182,12 @@
...
@@ -159,11 +182,12 @@
<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/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/operations.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/circle/settings/base.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/models.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/models.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/operations.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/_network-public-ip-add.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/vm.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/vm.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"
/>
...
@@ -241,40 +265,6 @@
...
@@ -241,40 +265,6 @@
<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=
"circle"
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=
"circle"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"settings"
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=
"common"
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=
"common"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"management"
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=
"common"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"management"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"commands"
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=
"dashboard"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
</path>
<path>
<path>
...
@@ -314,16 +304,17 @@
...
@@ -314,16 +304,17 @@
<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=
"v
xlanc	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 index	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index.html bas	FILE	file:///home/h3yduck/cloud/circle/openstack_api/base.py save	null	null plainc	null	null vmdeta	null	null templatedet	null	null instancetemp	null	null instancetem	null	null url	FILE	file:///home/h3yduck/cloud/circle/dashboard/urls.py vmcreate	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 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 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
"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"v
mdeta	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 index	FILE	file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index.html 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 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 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
"
/>
</component>
</component>
<component
name=
"RecentsManager"
>
<component
name=
"RecentsManager"
>
<key
name=
"CopyFile.RECENT_KEYS"
>
<recent
name=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail"
/>
<recent
name=
"$PROJECT_DIR$/circle/circle/os_policies"
/>
</key>
<key
name=
"MoveFile.RECENT_KEYS"
>
<key
name=
"MoveFile.RECENT_KEYS"
>
<recent
name=
"$PROJECT_DIR$/circle/circle"
/>
<recent
name=
"$PROJECT_DIR$/circle/circle"
/>
<recent
name=
"$PROJECT_DIR$/circle/dashboard/templates/auth"
/>
<recent
name=
"$PROJECT_DIR$/circle/dashboard/templates/auth"
/>
</key>
</key>
<key
name=
"CopyFile.RECENT_KEYS"
>
<recent
name=
"$PROJECT_DIR$/circle/circle/os_policies"
/>
</key>
</component>
</component>
<component
name=
"RunDashboard"
>
<component
name=
"RunDashboard"
>
<option
name=
"ruleStates"
>
<option
name=
"ruleStates"
>
...
@@ -466,14 +457,15 @@
...
@@ -466,14 +457,15 @@
<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.50745475"
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.50745475"
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.
47568712"
sideWeight=
"0.5037274
"
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.
5674653"
sideWeight=
"0.5058573
"
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.14110756
"
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=
"
false"
show_stripe_button=
"true"
weight=
"0.20074548
"
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.32875264"
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=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.47568712"
sideWeight=
"0.49
627262
"
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=
"true"
show_stripe_button=
"true"
weight=
"0.47568712"
sideWeight=
"0.49
41427
"
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"
/>
...
@@ -481,7 +473,6 @@
...
@@ -481,7 +473,6 @@
<window_info
id=
"Inspection"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.4"
sideWeight=
"0.5"
order=
"5"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Inspection"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.4"
sideWeight=
"0.5"
order=
"5"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Coverage"
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=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Coverage"
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=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Hierarchy"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Hierarchy"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Find"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32875264"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Ant Build"
active=
"false"
anchor=
"right"
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=
"Ant Build"
active=
"false"
anchor=
"right"
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"
/>
</layout>
</layout>
<layout-to-restore>
<layout-to-restore>
...
@@ -549,6 +540,11 @@
...
@@ -549,6 +540,11 @@
<line>
82
</line>
<line>
82
</line>
<option
name=
"timeStamp"
value=
"13"
/>
<option
name=
"timeStamp"
value=
"13"
/>
</line-breakpoint>
</line-breakpoint>
<line-breakpoint
enabled=
"true"
suspend=
"THREAD"
type=
"python-line"
>
<url>
file://$PROJECT_DIR$/circle/common/operations.py
</url>
<line>
69
</line>
<option
name=
"timeStamp"
value=
"317"
/>
</line-breakpoint>
</breakpoints>
</breakpoints>
<breakpoints-dialog>
<breakpoints-dialog>
<breakpoints-dialog
/>
<breakpoints-dialog
/>
...
@@ -560,13 +556,18 @@
...
@@ -560,13 +556,18 @@
</properties>
</properties>
</breakpoint>
</breakpoint>
</default-breakpoints>
</default-breakpoints>
<option
name=
"time"
value=
"3
10
"
/>
<option
name=
"time"
value=
"3
29
"
/>
</breakpoint-manager>
</breakpoint-manager>
<watches-manager
/>
<watches-manager
/>
</component>
</component>
<component
name=
"debuggerHistoryManager"
>
<component
name=
"debuggerHistoryManager"
>
<expressions
id=
"evaluateCodeFragment"
>
<expressions
id=
"evaluateCodeFragment"
>
<expression>
<expression>
<expression-string>
openstack_api.neutron.floating_ip_associate(request, '726906f3-0d05-4440-9027-da11bedef351', port_id)
</expression-string>
<language-id>
Python
</language-id>
<evaluation-mode>
CODE_FRAGMENT
</evaluation-mode>
</expression>
<expression>
<expression-string>
openstack_api.neutron.subnetpool_get(request, 'default')
</expression-string>
<expression-string>
openstack_api.neutron.subnetpool_get(request, 'default')
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
CODE_FRAGMENT
</evaluation-mode>
<evaluation-mode>
CODE_FRAGMENT
</evaluation-mode>
...
@@ -608,14 +609,6 @@ certifi.where()</expression-string>
...
@@ -608,14 +609,6 @@ certifi.where()</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
CODE_FRAGMENT
</evaluation-mode>
<evaluation-mode>
CODE_FRAGMENT
</evaluation-mode>
</expression>
</expression>
<expression>
<expression-string>
import requests
r = requests.certs.old_where()
print(r)
</expression-string>
<language-id>
Python
</language-id>
<evaluation-mode>
CODE_FRAGMENT
</evaluation-mode>
</expression>
</expressions>
</expressions>
<expressions
id=
"breakpointCondition"
>
<expressions
id=
"breakpointCondition"
>
<expression>
<expression>
...
@@ -631,97 +624,53 @@ print(r)</expression-string>
...
@@ -631,97 +624,53 @@ print(r)</expression-string>
</expressions>
</expressions>
<expressions
id=
"evaluateExpression"
>
<expressions
id=
"evaluateExpression"
>
<expression>
<expression>
<expression-string>
instance.VirtualInterfaces
</expression-string>
<expression-string>
openstack_api.neutron.tenant_floating_ip_list(self.request)
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
instance.virtualInterfaces
</expression-string>
<expression-string>
openstack_api.neutron.tenant_floating_ip_list(request)
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
instance.virtualinterfaces
</expression-string>
<expression-string>
openstack_api.neutron.tenant_floating_ip_list()
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
instance.addresses
</expression-string>
<expression-string>
openstack_api.neutron.tar
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
instance.private_ip
</expression-string>
<expression-string>
openstack_api.neutron.tenant_floating_ip_allocate(request, pool, request.user.project_id)
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
nics
</expression-string>
<expression-string>
self.request.POST
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
nincs
</expression-string>
<expression-string>
self.request.GET
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
nic_info
</expression-string>
<expression-string>
self.request
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
<expression>
<expression>
<expression-string>
openstack_api.neutron.
router_get(request,
"
default
"
)
</expression-string>
<expression-string>
openstack_api.neutron.
float
</expression-string>
<language-id>
Python
</language-id>
<language-id>
Python
</language-id>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
<evaluation-mode>
EXPRESSION
</evaluation-mode>
</expression>
</expression>
</expressions>
</expressions>
</component>
</component>
<component
name=
"editorHistoryManager"
>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/client.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"562"
>
<caret
line=
"45"
column=
"38"
lean-forward=
"true"
selection-start-line=
"45"
selection-start-column=
"38"
selection-end-line=
"45"
selection-end-column=
"38"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/requirements.txt"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/requirements/base.txt"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"595"
>
<caret
line=
"35"
column=
"8"
lean-forward=
"false"
selection-start-line=
"35"
selection-start-column=
"8"
selection-end-line=
"35"
selection-end-column=
"8"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/manage.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"408"
>
<caret
line=
"24"
column=
"0"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"0"
selection-end-line=
"24"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$APPLICATION_HOME_DIR$/helpers/pydev/pydevd.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"110"
>
<caret
line=
"1071"
column=
"0"
lean-forward=
"false"
selection-start-line=
"1071"
selection-start-column=
"0"
selection-end-line=
"1071"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/user.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"107"
column=
"24"
lean-forward=
"false"
selection-start-line=
"107"
selection-start-column=
"24"
selection-end-line=
"107"
selection-end-column=
"24"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/os_policies/circle_policy.json"
>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/os_policies/circle_policy.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"136"
>
<state
relative-caret-position=
"136"
>
...
@@ -743,18 +692,11 @@ print(r)</expression-string>
...
@@ -743,18 +692,11 @@ print(r)</expression-string>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/util.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"284"
>
<caret
line=
"776"
column=
"47"
lean-forward=
"true"
selection-start-line=
"776"
selection-start-column=
"47"
selection-end-line=
"776"
selection-end-column=
"47"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_auth/utils.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_auth/utils.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"236"
>
<state
relative-caret-position=
"236"
>
<caret
line=
"155"
column=
"54"
lean-forward=
"false"
selection-start-line=
"155"
selection-start-column=
"40"
selection-end-line=
"155"
selection-end-column=
"54"
/>
<caret
line=
"155"
column=
"54"
lean-forward=
"false"
selection-start-line=
"155"
selection-start-column=
"40"
selection-end-line=
"155"
selection-end-column=
"54"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -791,6 +733,7 @@ print(r)</expression-string>
...
@@ -791,6 +733,7 @@ print(r)</expression-string>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1887"
>
<state
relative-caret-position=
"1887"
>
<caret
line=
"122"
column=
"0"
lean-forward=
"false"
selection-start-line=
"122"
selection-start-column=
"0"
selection-end-line=
"122"
selection-end-column=
"0"
/>
<caret
line=
"122"
column=
"0"
lean-forward=
"false"
selection-start-line=
"122"
selection-start-column=
"0"
selection-end-line=
"122"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -842,6 +785,7 @@ print(r)</expression-string>
...
@@ -842,6 +785,7 @@ print(r)</expression-string>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"94"
>
<state
relative-caret-position=
"94"
>
<caret
line=
"24"
column=
"0"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"0"
selection-end-line=
"24"
selection-end-column=
"0"
/>
<caret
line=
"24"
column=
"0"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"0"
selection-end-line=
"24"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
...
@@ -853,14 +797,6 @@ print(r)</expression-string>
...
@@ -853,14 +797,6 @@ print(r)</expression-string>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/common/operations.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"94"
>
<caret
line=
"231"
column=
"0"
lean-forward=
"false"
selection-start-line=
"231"
selection-start-column=
"0"
selection-end-line=
"231"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/tables.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/tables.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"163"
>
<state
relative-caret-position=
"163"
>
...
@@ -868,14 +804,6 @@ print(r)</expression-string>
...
@@ -868,14 +804,6 @@ print(r)</expression-string>
</state>
</state>
</provider>
</provider>
</entry>
</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=
"27"
column=
"30"
lean-forward=
"false"
selection-start-line=
"27"
selection-start-column=
"30"
selection-end-line=
"27"
selection-end-column=
"30"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/models/__init__.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/models/__init__.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=
"34"
>
...
@@ -928,13 +856,6 @@ print(r)</expression-string>
...
@@ -928,13 +856,6 @@ print(r)</expression-string>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/operations.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"50"
>
<caret
line=
"52"
column=
"59"
lean-forward=
"false"
selection-start-line=
"52"
selection-start-column=
"59"
selection-end-line=
"52"
selection-end-column=
"59"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/admin.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/admin.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=
"482"
>
...
@@ -976,13 +897,6 @@ print(r)</expression-string>
...
@@ -976,13 +897,6 @@ print(r)</expression-string>
<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=
"306"
>
<caret
line=
"886"
column=
"8"
lean-forward=
"false"
selection-start-line=
"886"
selection-start-column=
"8"
selection-end-line=
"886"
selection-end-column=
"8"
/>
<caret
line=
"886"
column=
"8"
lean-forward=
"false"
selection-start-line=
"886"
selection-start-column=
"8"
selection-end-line=
"886"
selection-end-column=
"8"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/base.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"156"
>
<caret
line=
"156"
column=
"0"
lean-forward=
"false"
selection-start-line=
"156"
selection-start-column=
"0"
selection-end-line=
"156"
selection-end-column=
"0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
...
@@ -995,14 +909,6 @@ print(r)</expression-string>
...
@@ -995,14 +909,6 @@ print(r)</expression-string>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/neutron.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"359"
column=
"8"
lean-forward=
"false"
selection-start-line=
"359"
selection-start-column=
"8"
selection-end-line=
"359"
selection-end-column=
"8"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/nova.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=
"156"
>
...
@@ -1026,15 +932,15 @@ print(r)</expression-string>
...
@@ -1026,15 +932,15 @@ print(r)</expression-string>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
PROJECT_DIR$/circle/dashboard/forms
.py"
>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/detail
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
340
"
>
<state
relative-caret-position=
"
156
"
>
<caret
line=
"1
22"
column=
"69"
lean-forward=
"false"
selection-start-line=
"122"
selection-start-column=
"69"
selection-end-line=
"122"
selection-end-column=
"69
"
/>
<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
"
/>
<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://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/
console
.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=
"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=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
...
@@ -1042,29 +948,133 @@ print(r)</expression-string>
...
@@ -1042,29 +948,133 @@ print(r)</expression-string>
</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/dashboard/urls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"590"
>
<caret
line=
"228"
column=
"19"
lean-forward=
"true"
selection-start-line=
"228"
selection-start-column=
"19"
selection-end-line=
"228"
selection-end-column=
"19"
/>
<folding>
<element
signature=
"e#732#770#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/_network-port-add.html"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"238"
>
<caret
line=
"14"
column=
"55"
lean-forward=
"false"
selection-start-line=
"14"
selection-start-column=
"55"
selection-end-line=
"14"
selection-end-column=
"55"
/>
<folding>
<element
signature=
"n#style#0;n#select#0;n#div#0;n#form#0;n#div#0;n#!!top"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/keystone.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"289"
>
<caret
line=
"634"
column=
"31"
lean-forward=
"false"
selection-start-line=
"634"
selection-start-column=
"19"
selection-end-line=
"634"
selection-end-column=
"31"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/_network-public-ip-add.html"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"34"
>
<caret
line=
"2"
column=
"65"
lean-forward=
"true"
selection-start-line=
"2"
selection-start-column=
"46"
selection-end-line=
"2"
selection-end-column=
"65"
/>
<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=
"-357"
>
<caret
line=
"36"
column=
"6"
lean-forward=
"false"
selection-start-line=
"36"
selection-start-column=
"6"
selection-end-line=
"36"
selection-end-column=
"6"
/>
<folding>
<element
signature=
"e#731#787#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/base.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=
"156"
>
<caret
line=
"115"
column=
"0"
lean-forward=
"false"
selection-start-line=
"115"
selection-start-column=
"0"
selection-end-line=
"115"
selection-end-column=
"0"
/>
<caret
line=
"156"
column=
"0"
lean-forward=
"false"
selection-start-line=
"156"
selection-start-column=
"0"
selection-end-line=
"156"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/neutron.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"156"
>
<caret
line=
"619"
column=
"0"
lean-forward=
"false"
selection-start-line=
"619"
selection-start-column=
"0"
selection-end-line=
"619"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_api/utils/memoized.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"148"
>
<caret
line=
"104"
column=
"0"
lean-forward=
"false"
selection-start-line=
"104"
selection-start-column=
"0"
selection-end-line=
"104"
selection-end-column=
"0"
/>
<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=
"182"
>
<caret
line=
"93"
column=
"0"
lean-forward=
"true"
selection-start-line=
"93"
selection-start-column=
"0"
selection-end-line=
"93"
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=
"156"
>
<caret
line=
"87"
column=
"0"
lean-forward=
"false"
selection-start-line=
"87"
selection-start-column=
"0"
selection-end-line=
"87"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/util.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"530"
>
<caret
line=
"306"
column=
"39"
lean-forward=
"false"
selection-start-line=
"306"
selection-start-column=
"24"
selection-end-line=
"306"
selection-end-column=
"39"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/views/vm.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=
"2
84
"
>
<state
relative-caret-position=
"2
93
"
>
<caret
line=
"1
67"
column=
"51"
lean-forward=
"false"
selection-start-line=
"167"
selection-start-column=
"47"
selection-end-line=
"167"
selection-end-column=
"5
1"
/>
<caret
line=
"1
82"
column=
"81"
lean-forward=
"false"
selection-start-line=
"182"
selection-start-column=
"81"
selection-end-line=
"182"
selection-end-column=
"8
1"
/>
<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/dashboard/
forms.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
187
"
>
<state
relative-caret-position=
"
304
"
>
<caret
line=
"
39"
column=
"0"
lean-forward=
"false"
selection-start-line=
"39"
selection-start-column=
"2"
selection-end-line=
"39"
selection-end-column=
"75
"
/>
<caret
line=
"
1018"
column=
"40"
lean-forward=
"false"
selection-start-line=
"1018"
selection-start-column=
"40"
selection-end-line=
"1018"
selection-end-column=
"40
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/operations.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"465"
column=
"0"
lean-forward=
"true"
selection-start-line=
"465"
selection-start-column=
"0"
selection-end-line=
"465"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/dashboard/vm-detail/network.html"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"323"
>
<caret
line=
"64"
column=
"20"
lean-forward=
"true"
selection-start-line=
"64"
selection-start-column=
"20"
selection-end-line=
"64"
selection-end-column=
"20"
/>
<folding>
<marker
date=
"1524051869354"
expanded=
"false"
signature=
"3016:3034"
ph=
"..."
/>
</folding>
</state>
</provider>
</entry>
</component>
</component>
</project>
</project>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
circle/dashboard/forms.py
View file @
02238427
...
@@ -1005,6 +1005,27 @@ class VmPortAddForm(OperationForm):
...
@@ -1005,6 +1005,27 @@ class VmPortAddForm(OperationForm):
)
)
return
helper
return
helper
class
VmPublicIpAddForm
(
OperationForm
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
pools
=
kwargs
.
pop
(
'pools'
)
port_id
=
kwargs
.
pop
(
'port_id'
)
poolsDict
=
(
(
pool
.
id
,
pool
.
name
,)
for
pool
in
pools
)
super
(
VmPublicIpAddForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
self
.
fields
[
'pool'
]
=
forms
.
ChoiceField
(
poolsDict
,
required
=
True
,
label
=
_
(
'Pool'
))
self
.
fields
[
'port_id'
]
=
forms
.
CharField
(
widget
=
forms
.
HiddenInput
(),
initial
=
port_id
)
@property
def
helper
(
self
):
helper
=
super
(
VmPublicIpAddForm
,
self
)
.
helper
helper
.
layout
=
Layout
(
Field
(
"pool"
),
Field
(
"port_id"
),
)
return
helper
class
CircleAuthenticationForm
(
AuthenticationForm
):
class
CircleAuthenticationForm
(
AuthenticationForm
):
# fields: username, password
# fields: username, password
...
...
This diff is collapsed.
Click to expand it.
circle/dashboard/templates/dashboard/vm-detail/network.html
View file @
02238427
...
@@ -48,95 +48,116 @@
...
@@ -48,95 +48,116 @@
{#
</dd>
#}
{#
</dd>
#}
</dl>
</dl>
</div>
</div>
{% if i.host %}
{% if i.internet_access %}
<div
class=
"col-md-7"
>
<div
class=
"col-md-7"
>
<ul
class=
"nav nav-pills pull-right"
>
<span
class=
"pull-right"
>
<li
class=
"active"
><a
href=
"#ipv4_{{ i.host.vlan.pk }}"
data-toggle=
"pill"
class=
"text-center"
>
{% trans "IPv4" %}
</a></li>
{% if i.public_ip %}
<li><a
href=
"#ipv6_{{ i.host.vlan.pk }}"
data-toggle=
"pill"
class=
"text-center"
>
{% trans "IPv6" %}
</a></li>
<dl>
</ul>
<dt>
{% trans "Public IP address" %}:
</dt>
<h4>
{% trans "Port access" %}
</h4>
<dd>
{{ i.public_ip }}
</dd>
<div
class=
"tab-content"
style=
"padding-top: 10px;"
>
</dl>
<div
class=
"tab-pane active"
id=
"ipv4_{{ i.host.vlan.pk }}"
>
<table
class=
"table table-striped rule-table"
>
<thead>
<tr><th>
<i
class=
"fa fa-globe fa-2x"
></i>
<i
class=
"fa fa-long-arrow-right fa-2x"
></i>
</th><th>
<i
class=
"fa fa-shield fa-2x"
></i>
</th><th
colspan=
"2"
>
<i
class=
"fa fa-long-arrow-right fa-2x"
></i>
<i
class=
"fa fa-desktop fa-2x"
></i>
</th></tr>
</thead>
<tbody>
{% for l in i.host.list_ports %}
{% if l.ipv4 %}
<tr>
<td>
{% display_portforward4 l %}
</td>
<td><i
class=
"fa fa-long-arrow-right"
></i></td>
<td>
{{ l.private }}/{{ l.proto }}
</td>
<td>
<span
class=
"operation-wrapper"
>
<a
href=
"{{ op.remove_port.get_url }}?rule={{ l.ipv4.pk }}"
class=
"btn btn-link btn-xs operation"
title=
"{% trans "
Remove
"
%}"
{%
if
not
op
.
remove_port
%}
disabled
{%
endif
%}
>
<i
class=
"fa fa-times"
><span
class=
"sr-only"
>
{% trans "Remove" %}
</span></i>
</a>
</span>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
<!-- /ipv4 -->
<div
class=
"tab-pane"
id=
"ipv6_{{ i.host.vlan.pk }}"
>
{% if i.host.ipv6 %}
<table
class=
"table table-striped rule-table"
>
<thead>
<tr><th>
<i
class=
"fa fa-globe fa-2x"
></i>
</th><th>
<i
class=
"fa fa-long-arrow-right fa-2x"
></i>
</th><th
colspan=
"2"
>
<i
class=
"fa fa-desktop fa-2x"
></i>
</th></tr>
</thead>
<tbody>
{% for l in i.host.list_ports %}
{% if l.ipv6 %}
<tr>
<td>
{% display_portforward6 l %}
</td>
<td><i
class=
"fa fa-long-arrow-right"
></i></td>
<td>
{{ l.private }}/{{ l.proto }}
</td>
<td>
<a
href=
"{{ op.remove_port.get_url }}?rule={{ l.ipv4.pk }}"
class=
"btn btn-link btn-xs vm-details-remove-port"
data-rule=
"{{ l.ipv6.pk }}"
title=
"{% trans "
Remove
"
%}"
{%
if
not
op
.
remove_port
%}
disabled
{%
endif
%}
>
<i
class=
"fa fa-times"
><span
class=
"sr-only"
>
{% trans "Remove" %}
</span></i>
</a>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
{% else %}
{% else %}
<h4>
{% trans "This VM doesn't have an IPv6 address!" %}
</h4>
{% with op=op.add_public_ip %}{% if op %}
<span
class=
"operation-wrapper"
>
<a
href=
"{{op.get_url}}?port_id={{ i.port_id }}_{{ i.ipv4 }}"
class=
"btn btn-{{op.effect}} btn-xs operation"
{%
if
op
.
disabled
%}
disabled
{%
endif
%}
>
{% trans "Associate public IP" %}
</a>
</span>
{% endif %}{% endwith %}
{% endif %}
{% endif %}
</div>
<!-- /ipv6 -->
</span>
{% include "dashboard/vm-detail/_network-port-add.html" %}
</div>
</div>
</div>
{% endif %}
{% endif %}
{# {% if i.host %}#}
{#
<div
class=
"col-md-7"
>
#}
{#
<ul
class=
"nav nav-pills pull-right"
>
#}
{#
<li
class=
"active"
><a
href=
"#ipv4_{{ i.host.vlan.pk }}"
data-toggle=
"pill"
class=
"text-center"
>
{% trans "IPv4" %}
</a></li>
#}
{#
<li><a
href=
"#ipv6_{{ i.host.vlan.pk }}"
data-toggle=
"pill"
class=
"text-center"
>
{% trans "IPv6" %}
</a></li>
#}
{#
</ul>
#}
{#
<h4>
{% trans "Port access" %}
</h4>
#}
{#
<div
class=
"tab-content"
style=
"padding-top: 10px;"
>
#}
{#
<div
class=
"tab-pane active"
id=
"ipv4_{{ i.host.vlan.pk }}"
>
#}
{#
<table
class=
"table table-striped rule-table"
>
#}
{#
<thead>
#}
{#
<tr><th>
#}
{#
<i
class=
"fa fa-globe fa-2x"
></i>
#}
{#
<i
class=
"fa fa-long-arrow-right fa-2x"
></i>
#}
{#
</th><th>
#}
{#
<i
class=
"fa fa-shield fa-2x"
></i>
#}
{#
</th><th
colspan=
"2"
>
#}
{#
<i
class=
"fa fa-long-arrow-right fa-2x"
></i>
#}
{#
<i
class=
"fa fa-desktop fa-2x"
></i>
#}
{#
</th></tr>
#}
{#
</thead>
#}
{#
<tbody>
#}
{# {% for l in i.host.list_ports %}#}
{# {% if l.ipv4 %}#}
{#
<tr>
#}
{#
<td>
#}
{# {% display_portforward4 l %}#}
{#
</td>
#}
{#
<td><i
class=
"fa fa-long-arrow-right"
></i></td>
#}
{#
<td>
#}
{# {{ l.private }}/{{ l.proto }}#}
{#
</td>
#}
{#
<td>
#}
{#
<span
class=
"operation-wrapper"
>
#}
{#
<a
href=
"{{ op.remove_port.get_url }}?rule={{ l.ipv4.pk }}"
#}
{#
class=
"btn btn-link btn-xs operation"
#}
{#
title=
"{% trans "
Remove
"
%}"#}
{#
{%
if
not
op
.
remove_port
%}
disabled
{%
endif
%}
>
#}
{#
<i
class=
"fa fa-times"
><span
class=
"sr-only"
>
{% trans "Remove" %}
</span></i>
#}
{#
</a>
#}
{#
</span>
#}
{#
</td>
#}
{#
</tr>
#}
{# {% endif %}#}
{# {% endfor %}#}
{#
</tbody>
#}
{#
</table>
#}
{#
</div>
<!-- /ipv4 -->
#}
{#
<div
class=
"tab-pane"
id=
"ipv6_{{ i.host.vlan.pk }}"
>
#}
{# {% if i.host.ipv6 %}#}
{#
<table
class=
"table table-striped rule-table"
>
#}
{#
<thead>
#}
{#
<tr><th>
#}
{#
<i
class=
"fa fa-globe fa-2x"
></i>
#}
{#
</th><th>
#}
{#
<i
class=
"fa fa-long-arrow-right fa-2x"
></i>
#}
{#
</th><th
colspan=
"2"
>
#}
{#
<i
class=
"fa fa-desktop fa-2x"
></i>
#}
{#
</th></tr>
#}
{#
</thead>
#}
{#
<tbody>
#}
{# {% for l in i.host.list_ports %}#}
{# {% if l.ipv6 %}#}
{#
<tr>
#}
{#
<td>
#}
{# {% display_portforward6 l %}#}
{#
</td>
#}
{#
<td><i
class=
"fa fa-long-arrow-right"
></i></td>
#}
{#
<td>
#}
{# {{ l.private }}/{{ l.proto }}#}
{#
</td>
#}
{#
<td>
#}
{#
<a
href=
"{{ op.remove_port.get_url }}?rule={{ l.ipv4.pk }}"
class=
"btn btn-link btn-xs vm-details-remove-port"
data-rule=
"{{ l.ipv6.pk }}"
title=
"{% trans "
Remove
"
%}"
{%
if
not
op
.
remove_port
%}
disabled
{%
endif
%}
>
#}
{#
<i
class=
"fa fa-times"
><span
class=
"sr-only"
>
{% trans "Remove" %}
</span></i>
#}
{#
</a>
#}
{#
</td>
#}
{#
</tr>
#}
{# {% endif %}#}
{# {% endfor %}#}
{#
</tbody>
#}
{#
</table>
#}
{# {% else %}#}
{#
<h4>
{% trans "This VM doesn't have an IPv6 address!" %}
</h4>
#}
{# {% endif %}#}
{#
</div>
<!-- /ipv6 -->
#}
{# {% include "dashboard/vm-detail/_network-port-add.html" %}#}
{#
</div>
#}
{#
</div>
#}
{# {% endif %}#}
</div>
</div>
</div>
</div>
{% endfor %}
{% endfor %}
This diff is collapsed.
Click to expand it.
circle/dashboard/views/vm.py
View file @
02238427
...
@@ -63,7 +63,7 @@ from .util import (
...
@@ -63,7 +63,7 @@ from .util import (
)
)
from
..forms
import
(
from
..forms
import
(
AclUserOrGroupAddForm
,
VmResourcesForm
,
VmCustomizeForm
,
VmDeployForm
,
VmFromPlainImageForm
,
VmRemoveInterfaceForm
,
AclUserOrGroupAddForm
,
VmResourcesForm
,
VmCustomizeForm
,
VmDeployForm
,
VmFromPlainImageForm
,
VmRemoveInterfaceForm
,
VmAddInterfaceForm
,
VmSaveForm
)
VmAddInterfaceForm
,
VmSaveForm
,
VmPortAddForm
,
VmPublicIpAddForm
)
logger
=
logging
.
getLogger
(
__name__
)
logger
=
logging
.
getLogger
(
__name__
)
...
@@ -122,7 +122,14 @@ class VmDetailView(LoginRequiredMixin, GraphMixin, DetailView):
...
@@ -122,7 +122,14 @@ class VmDetailView(LoginRequiredMixin, GraphMixin, DetailView):
try
:
try
:
vnc_console
=
openstack_api
.
nova
.
server_vnc_console
(
self
.
request
,
instance
.
id
)
vnc_console
=
openstack_api
.
nova
.
server_vnc_console
(
self
.
request
,
instance
.
id
)
except
:
except
:
pass
#TODO
pass
if
vnc_console
is
None
:
try
:
vnc_console
=
openstack_api
.
nova
.
server_spice_console
(
self
.
request
,
instance
.
id
)
except
:
pass
context
.
update
({
context
.
update
({
'graphite_enabled'
:
settings
.
GRAPHITE_URL
is
not
None
,
'graphite_enabled'
:
settings
.
GRAPHITE_URL
is
not
None
,
'vnc_url'
:
vnc_console
.
url
if
vnc_console
else
None
,
'vnc_url'
:
vnc_console
.
url
if
vnc_console
else
None
,
...
@@ -149,6 +156,7 @@ class VmDetailView(LoginRequiredMixin, GraphMixin, DetailView):
...
@@ -149,6 +156,7 @@ class VmDetailView(LoginRequiredMixin, GraphMixin, DetailView):
ports
=
openstack_api
.
neutron
.
port_list
(
self
.
request
)
ports
=
openstack_api
.
neutron
.
port_list
(
self
.
request
)
instance_ports
=
[
p
for
p
in
ports
if
p
.
device_id
==
self
.
object
.
id
]
instance_ports
=
[
p
for
p
in
ports
if
p
.
device_id
==
self
.
object
.
id
]
instance_ports_by_id
=
{
p
.
id
:
p
for
p
in
ports
if
p
.
device_id
==
self
.
object
.
id
}
instance_net_ids
=
[
p
.
network_id
for
p
in
instance_ports
]
instance_net_ids
=
[
p
.
network_id
for
p
in
instance_ports
]
all_networks
=
openstack_api
.
neutron
.
network_list
(
self
.
request
)
all_networks
=
openstack_api
.
neutron
.
network_list
(
self
.
request
)
...
@@ -166,11 +174,18 @@ class VmDetailView(LoginRequiredMixin, GraphMixin, DetailView):
...
@@ -166,11 +174,18 @@ class VmDetailView(LoginRequiredMixin, GraphMixin, DetailView):
for
port
in
instance_ports
:
for
port
in
instance_ports
:
instance_networks
[
port
.
network_id
]
.
ipv4
=
port
.
fixed_ips
[
0
][
'ip_address'
]
instance_networks
[
port
.
network_id
]
.
ipv4
=
port
.
fixed_ips
[
0
][
'ip_address'
]
instance_networks
[
port
.
network_id
]
.
port_id
=
port
.
id
# set default subnets for networks
# set default subnets for networks
for
id
in
instance_networks
:
for
id
in
instance_networks
:
instance_networks
[
id
]
.
subnet
=
instance_networks
[
id
]
.
subnets
[
0
]
instance_networks
[
id
]
.
subnet
=
instance_networks
[
id
]
.
subnets
[
0
]
floating_ips
=
openstack_api
.
neutron
.
tenant_floating_ip_list
(
self
.
request
)
for
floating_ip
in
floating_ips
:
if
floating_ip
.
port_id
in
instance_ports_by_id
.
keys
():
port
=
instance_ports_by_id
[
floating_ip
.
port_id
]
instance_networks
[
port
.
network_id
]
.
public_ip
=
floating_ip
.
ip
context
[
'networks'
]
=
instance_networks
.
values
()
context
[
'networks'
]
=
instance_networks
.
values
()
# context['vlans'] = Vlan.get_objects_with_level(
# context['vlans'] = Vlan.get_objects_with_level(
...
@@ -537,6 +552,25 @@ class VmAddInterfaceView(FormOperationMixin, VmOperationView):
...
@@ -537,6 +552,25 @@ class VmAddInterfaceView(FormOperationMixin, VmOperationView):
# return val
# return val
#
#
#
#
class
VmPublicIpAddView
(
FormOperationMixin
,
VmOperationView
):
op
=
'add_public_ip'
show_in_toolbar
=
False
icon
=
'plus'
effect
=
"success"
form_class
=
VmPublicIpAddForm
def
get_form_kwargs
(
self
):
ip_pools
=
openstack_api
.
neutron
.
floating_ip_pools_list
(
self
.
request
)
port_id
=
self
.
request
.
GET
.
get
(
'port_id'
)
val
=
super
(
VmPublicIpAddView
,
self
)
.
get_form_kwargs
()
val
.
update
({
'pools'
:
ip_pools
})
val
.
update
({
'port_id'
:
port_id
})
return
val
class
VmSaveView
(
FormOperationMixin
,
VmOperationView
):
class
VmSaveView
(
FormOperationMixin
,
VmOperationView
):
op
=
'save_as_template'
op
=
'save_as_template'
...
@@ -802,6 +836,7 @@ vm_ops = OrderedDict([
...
@@ -802,6 +836,7 @@ vm_ops = OrderedDict([
(
'remove_interface'
,
VmRemoveInterfaceView
),
(
'remove_interface'
,
VmRemoveInterfaceView
),
# ('remove_port', VmPortRemoveView),
# ('remove_port', VmPortRemoveView),
# ('add_port', VmPortAddView),
# ('add_port', VmPortAddView),
(
'add_public_ip'
,
VmPublicIpAddView
),
# ('renew', VmRenewView),
# ('renew', VmRenewView),
# ('resources_change', VmResourcesChangeView),
# ('resources_change', VmResourcesChangeView),
# ('password_reset', VmOperationView.factory(
# ('password_reset', VmOperationView.factory(
...
...
This diff is collapsed.
Click to expand it.
circle/vm/operations.py
View file @
02238427
...
@@ -438,7 +438,6 @@ class RemovePortOperation(InstanceOperation):
...
@@ -438,7 +438,6 @@ class RemovePortOperation(InstanceOperation):
proto
=
rule
.
proto
,
port
=
rule
.
dport
,
host
=
rule
.
host
)
proto
=
rule
.
proto
,
port
=
rule
.
dport
,
host
=
rule
.
host
)
rule
.
delete
()
rule
.
delete
()
@register_operation
@register_operation
class
AddPortOperation
(
InstanceOperation
):
class
AddPortOperation
(
InstanceOperation
):
id
=
'add_port'
id
=
'add_port'
...
@@ -456,6 +455,14 @@ class AddPortOperation(InstanceOperation):
...
@@ -456,6 +455,14 @@ class AddPortOperation(InstanceOperation):
ugettext_noop
(
"open
%(proto)
s/
%(port)
d on
%(host)
s"
),
ugettext_noop
(
"open
%(proto)
s/
%(port)
d on
%(host)
s"
),
proto
=
proto
,
port
=
port
,
host
=
host
)
proto
=
proto
,
port
=
port
,
host
=
host
)
@register_operation
class
AddPublicIPOperation
(
InstanceOperation
):
id
=
'add_public_ip'
name
=
_
(
"add public ip"
)
def
_operation
(
self
,
request
,
pool
,
port_id
):
floating_ip
=
openstack_api
.
neutron
.
tenant_floating_ip_allocate
(
request
,
pool
,
request
.
user
.
project_id
)
openstack_api
.
neutron
.
floating_ip_associate
(
request
,
floating_ip
.
id
,
port_id
)
@register_operation
@register_operation
class
RemoveDiskOperation
(
InstanceOperation
):
class
RemoveDiskOperation
(
InstanceOperation
):
...
...
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