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
c4d12b46
authored
Apr 10, 2018
by
Szabolcs Gelencser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove some dead code and packages for easier install
parent
6315b419
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
566 additions
and
746 deletions
+566
-746
.idea/inspectionProfiles/Project_Default.xml
+5
-1
.idea/workspace.xml
+296
-286
circle/circle/db.sqlite3
+0
-0
circle/circle/settings/base.py
+4
-2
circle/circle/urls.py
+2
-1
circle/dashboard/forms.py
+1
-94
circle/dashboard/tables.py
+53
-53
circle/dashboard/templates/auth/login.html
+8
-4
circle/dashboard/validators.py
+0
-20
circle/dashboard/views/index.py
+1
-1
circle/openstack_auth/views.py
+2
-0
circle/vm/admin.py
+1
-4
circle/vm/models/__init__.py
+1
-5
circle/vm/models/activity.py
+0
-65
circle/vm/models/instance.py
+0
-10
circle/vm/operations.py
+191
-192
requirements/circlestack.txt
+1
-8
No files found.
.idea/inspectionProfiles/Project_Default.xml
View file @
c4d12b46
...
@@ -14,12 +14,16 @@
...
@@ -14,12 +14,16 @@
<inspection_tool
class=
"PyPackageRequirementsInspection"
enabled=
"true"
level=
"WARNING"
enabled_by_default=
"true"
>
<inspection_tool
class=
"PyPackageRequirementsInspection"
enabled=
"true"
level=
"WARNING"
enabled_by_default=
"true"
>
<option
name=
"ignoredPackages"
>
<option
name=
"ignoredPackages"
>
<value>
<value>
<list
size=
"
5
"
>
<list
size=
"
9
"
>
<item
index=
"0"
class=
"java.lang.String"
itemvalue=
"salt"
/>
<item
index=
"0"
class=
"java.lang.String"
itemvalue=
"salt"
/>
<item
index=
"1"
class=
"java.lang.String"
itemvalue=
"six"
/>
<item
index=
"1"
class=
"java.lang.String"
itemvalue=
"six"
/>
<item
index=
"2"
class=
"java.lang.String"
itemvalue=
"netaddr"
/>
<item
index=
"2"
class=
"java.lang.String"
itemvalue=
"netaddr"
/>
<item
index=
"3"
class=
"java.lang.String"
itemvalue=
"requests"
/>
<item
index=
"3"
class=
"java.lang.String"
itemvalue=
"requests"
/>
<item
index=
"4"
class=
"java.lang.String"
itemvalue=
"cryptography"
/>
<item
index=
"4"
class=
"java.lang.String"
itemvalue=
"cryptography"
/>
<item
index=
"5"
class=
"java.lang.String"
itemvalue=
"psycopg2"
/>
<item
index=
"6"
class=
"java.lang.String"
itemvalue=
"lxml"
/>
<item
index=
"7"
class=
"java.lang.String"
itemvalue=
"MarkupSafe"
/>
<item
index=
"8"
class=
"java.lang.String"
itemvalue=
"pylibmc"
/>
</list>
</list>
</value>
</value>
</option>
</option>
...
...
.idea/workspace.xml
View file @
c4d12b46
...
@@ -4,8 +4,20 @@
...
@@ -4,8 +4,20 @@
<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/inspectionProfiles/Project_Default.xml"
afterPath=
"$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml"
/>
<change
beforePath=
"$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml"
afterPath=
"$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml"
/>
<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/circle/db.sqlite3"
afterPath=
"$PROJECT_DIR$/circle/circle/db.sqlite3"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/circle/settings/base.py"
afterPath=
"$PROJECT_DIR$/circle/circle/settings/base.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/circle/settings/base.py"
afterPath=
"$PROJECT_DIR$/circle/circle/settings/base.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/circle/settings/local.py"
afterPath=
"$PROJECT_DIR$/circle/circle/settings/local.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/circle/urls.py"
afterPath=
"$PROJECT_DIR$/circle/circle/urls.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/forms.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/forms.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/tables.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/tables.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/templates/auth/login.html"
afterPath=
"$PROJECT_DIR$/circle/dashboard/templates/auth/login.html"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/validators.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/validators.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
afterPath=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/openstack_auth/views.py"
afterPath=
"$PROJECT_DIR$/circle/openstack_auth/views.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/vm/admin.py"
afterPath=
"$PROJECT_DIR$/circle/vm/admin.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/vm/models/__init__.py"
afterPath=
"$PROJECT_DIR$/circle/vm/models/__init__.py"
/>
<change
beforePath=
"$PROJECT_DIR$/circle/vm/models/activity.py"
afterPath=
"$PROJECT_DIR$/circle/vm/models/activity.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"
/>
<change
beforePath=
"$PROJECT_DIR$/requirements/circlestack.txt"
afterPath=
"$PROJECT_DIR$/requirements/circlestack.txt"
/>
<change
beforePath=
"$PROJECT_DIR$/requirements/circlestack.txt"
afterPath=
"$PROJECT_DIR$/requirements/circlestack.txt"
/>
</list>
</list>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
<option
name=
"EXCLUDED_CONVERTED_TO_IGNORED"
value=
"true"
/>
...
@@ -36,53 +48,73 @@
...
@@ -36,53 +48,73 @@
</component>
</component>
<component
name=
"FileEditorManager"
>
<component
name=
"FileEditorManager"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<file
leaf-file-name=
"
base.py"
pinned=
"false"
current-in-tab=
"tru
e"
>
<file
leaf-file-name=
"
instance.py"
pinned=
"false"
current-in-tab=
"fals
e"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/bas
e.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/models/instanc
e.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
760
"
>
<state
relative-caret-position=
"
94
"
>
<caret
line=
"5
84"
column=
"38"
lean-forward=
"false"
selection-start-line=
"584"
selection-start-column=
"38"
selection-end-line=
"584"
selection-end-column=
"38
"
/>
<caret
line=
"5
3"
column=
"0"
lean-forward=
"false"
selection-start-line=
"53"
selection-start-column=
"0"
selection-end-line=
"53"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
</file>
</file>
<file
leaf-file-name=
"
manage
.py"
pinned=
"false"
current-in-tab=
"false"
>
<file
leaf-file-name=
"
__init__
.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
manage
.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=
"185"
>
<state
relative-caret-position=
"34"
>
<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=
"2"
column=
"0"
lean-forward=
"false"
selection-start-line=
"2"
selection-start-column=
"0"
selection-end-line=
"2"
selection-end-column=
"0"
/>
<folding>
<folding
/>
<element
signature=
"e#755#764#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
</file>
</file>
<file
leaf-file-name=
"
local
.py"
pinned=
"false"
current-in-tab=
"false"
>
<file
leaf-file-name=
"
models
.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/local
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/models
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
248
"
>
<state
relative-caret-position=
"
-416
"
>
<caret
line=
"
106"
column=
"16"
lean-forward=
"false"
selection-start-line=
"106"
selection-start-column=
"16"
selection-end-line=
"106"
selection-end-column=
"16
"
/>
<caret
line=
"
39"
column=
"0"
lean-forward=
"false"
selection-start-line=
"39"
selection-start-column=
"0"
selection-end-line=
"39"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
</file>
</file>
<file
leaf-file-name=
"
pydevd
.py"
pinned=
"false"
current-in-tab=
"false"
>
<file
leaf-file-name=
"
activity
.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$
APPLICATION_HOME_DIR$/helpers/pydev/pydevd
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/vm/models/activity
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
110
"
>
<state
relative-caret-position=
"
516
"
>
<caret
line=
"1
071"
column=
"0"
lean-forward=
"false"
selection-start-line=
"1071"
selection-start-column=
"0"
selection-end-line=
"1071"
selection-end-column=
"0
"
/>
<caret
line=
"1
96"
column=
"31"
lean-forward=
"false"
selection-start-line=
"196"
selection-start-column=
"31"
selection-end-line=
"196"
selection-end-column=
"31
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
</file>
</file>
<file
leaf-file-name=
"views.py"
pinned=
"false"
current-in-tab=
"false"
>
<file
leaf-file-name=
"operations.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_auth/views.py"
>
<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"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"admin.py"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/circle/vm/admin.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"482"
>
<caret
line=
"35"
column=
"0"
lean-forward=
"true"
selection-start-line=
"35"
selection-start-column=
"0"
selection-end-line=
"35"
selection-end-column=
"0"
/>
<folding>
<element
signature=
"e#732#764#0"
expanded=
"true"
/>
</folding>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"circlestack.txt"
pinned=
"false"
current-in-tab=
"true"
>
<entry
file=
"file://$PROJECT_DIR$/requirements/circlestack.txt"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
127
"
>
<state
relative-caret-position=
"
268
"
>
<caret
line=
"
60"
column=
"64"
lean-forward=
"true"
selection-start-line=
"60"
selection-start-column=
"64"
selection-end-line=
"60"
selection-end-column=
"6
4"
/>
<caret
line=
"
124"
column=
"4"
lean-forward=
"false"
selection-start-line=
"124"
selection-start-column=
"4"
selection-end-line=
"124"
selection-end-column=
"
4"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
...
@@ -100,23 +132,6 @@
...
@@ -100,23 +132,6 @@
</component>
</component>
<component
name=
"FindInProjectRecents"
>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<findStrings>
<find>
context_is_admin
</find>
<find>
service
</find>
<find>
get_
</find>
<find>
image
</find>
<find>
template-access
</find>
<find>
images
</find>
<find>
update
</find>
<find>
rule:owner
</find>
<find>
defa
</find>
<find>
Defa
</find>
<find>
'default'
</find>
<find>
domain
</find>
<find>
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN
</find>
<find>
TODO
</find>
<find>
login
</find>
<find>
signal
</find>
<find>
accepted
</find>
<find>
user_logged
</find>
<find>
user_logged
</find>
<find>
policy
</find>
<find>
policy
</find>
<find>
check
</find>
<find>
check
</find>
...
@@ -130,6 +145,23 @@
...
@@ -130,6 +145,23 @@
<find>
localhost
</find>
<find>
localhost
</find>
<find>
requests
</find>
<find>
requests
</find>
<find>
cert
</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>
trait
</find>
<find>
class NodeActivity
</find>
<find>
Node
</find>
</findStrings>
</findStrings>
<replaceStrings>
<replaceStrings>
<replace>
'ACTIVE'
</replace>
<replace>
'ACTIVE'
</replace>
...
@@ -150,15 +182,6 @@
...
@@ -150,15 +182,6 @@
<component
name=
"IdeDocumentHistory"
>
<component
name=
"IdeDocumentHistory"
>
<option
name=
"CHANGED_PATHS"
>
<option
name=
"CHANGED_PATHS"
>
<list>
<list>
<option
value=
"$PROJECT_DIR$/circle/network/templates/network/horizon/client_side/templates.html"
/>
<option
value=
"$PROJECT_DIR$/circle/network/templates/network/horizon/client_side/_loading_modal.html"
/>
<option
value=
"$PROJECT_DIR$/circle/network/templatetags/horizon.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/templatetags/__init__.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/static/js/horizon.networktopology.js"
/>
<option
value=
"$PROJECT_DIR$/circle/network/static/js/horizon.flatnetworktopology.js"
/>
<option
value=
"$PROJECT_DIR$/circle/network/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/network/templates/network/editor.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/user.py"
/>
<option
value=
"$PROJECT_DIR$/circle/bower.json"
/>
<option
value=
"$PROJECT_DIR$/circle/bower.json"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/static/vue.css"
/>
<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"
/>
...
@@ -177,16 +200,12 @@
...
@@ -177,16 +200,12 @@
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-templates.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templatetags/instance_tags.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templatetags/instance_tags.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/vm.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/vm.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/template-edit.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/template-edit.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/util.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/util.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/template.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/template.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/glance_policy.json"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/glance_policy.json"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/operations.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/keystone_policy.json"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/keystone_policy.json"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/plugin/password.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/plugin/password.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/policy.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/policy.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/circle_policy.json"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/os_policies/circle_policy.json"
/>
...
@@ -196,11 +215,24 @@
...
@@ -196,11 +215,24 @@
<option
value=
"$PROJECT_DIR$/circle/request/models.py"
/>
<option
value=
"$PROJECT_DIR$/circle/request/models.py"
/>
<option
value=
"$PROJECT_DIR$/circle/request/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/request/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/middleware.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/middleware.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-vm.html"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/dashboard/index-vm.html"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/settings/local.py"
/>
<option
value=
"$PROJECT_DIR$/circle/manage.py"
/>
<option
value=
"$PROJECT_DIR$/circle/manage.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/templates/auth/login.html"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/settings/local.py"
/>
<option
value=
"$PROJECT_DIR$/circle/openstack_auth/views.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/urls.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/settings/base.py"
/>
<option
value=
"$PROJECT_DIR$/circle/circle/settings/base.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/validators.py"
/>
<option
value=
"$PROJECT_DIR$/requirements/circlestack.txt"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/instance.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/forms.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/views/index.py"
/>
<option
value=
"$PROJECT_DIR$/circle/dashboard/tables.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/activity.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/models/__init__.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/operations.py"
/>
<option
value=
"$PROJECT_DIR$/circle/vm/admin.py"
/>
</list>
</list>
</option>
</option>
</component>
</component>
...
@@ -218,8 +250,8 @@
...
@@ -218,8 +250,8 @@
<component
name=
"ProjectFrameBounds"
>
<component
name=
"ProjectFrameBounds"
>
<option
name=
"x"
value=
"-2"
/>
<option
name=
"x"
value=
"-2"
/>
<option
name=
"y"
value=
"-1"
/>
<option
name=
"y"
value=
"-1"
/>
<option
name=
"width"
value=
"1
924
"
/>
<option
name=
"width"
value=
"1
370
"
/>
<option
name=
"height"
value=
"
1063
"
/>
<option
name=
"height"
value=
"
751
"
/>
</component>
</component>
<component
name=
"ProjectInspectionProfilesVisibleTreeState"
>
<component
name=
"ProjectInspectionProfilesVisibleTreeState"
>
<entry
key=
"Project Default"
>
<entry
key=
"Project Default"
>
...
@@ -289,17 +321,12 @@
...
@@ -289,17 +321,12 @@
<item
name=
"circle"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"circle"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"openstack_auth"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"openstack_auth"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
</path>
<path>
<item
name=
"cloud"
type=
"b2602c69:ProjectViewProjectNode"
/>
<item
name=
"cloud"
type=
"462c0819:PsiDirectoryNode"
/>
<item
name=
"requirements"
type=
"462c0819:PsiDirectoryNode"
/>
</path>
</expand>
</expand>
<select
/>
<select
/>
</subPane>
</subPane>
</pane>
</pane>
<pane
id=
"Scope"
/>
<pane
id=
"Scratches"
/>
<pane
id=
"Scratches"
/>
<pane
id=
"Scope"
/>
</panes>
</panes>
</component>
</component>
<component
name=
"PropertiesComponent"
>
<component
name=
"PropertiesComponent"
>
...
@@ -308,7 +335,7 @@
...
@@ -308,7 +335,7 @@
<property
name=
"settings.editor.selected.configurable"
value=
"watcher.settings"
/>
<property
name=
"settings.editor.selected.configurable"
value=
"watcher.settings"
/>
<property
name=
"NewWatcherDialog.advanced.open"
value=
"true"
/>
<property
name=
"NewWatcherDialog.advanced.open"
value=
"true"
/>
<property
name=
"DefaultHtmlFileTemplate"
value=
"HTML File"
/>
<property
name=
"DefaultHtmlFileTemplate"
value=
"HTML File"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"
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 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
"
/>
<property
name=
"SearchEverywhereHistoryKey"
value=
"
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 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
"
/>
</component>
</component>
<component
name=
"RecentsManager"
>
<component
name=
"RecentsManager"
>
<key
name=
"MoveFile.RECENT_KEYS"
>
<key
name=
"MoveFile.RECENT_KEYS"
>
...
@@ -393,8 +420,8 @@
...
@@ -393,8 +420,8 @@
<option
name=
"INTERPRETER_OPTIONS"
value=
""
/>
<option
name=
"INTERPRETER_OPTIONS"
value=
""
/>
<option
name=
"PARENT_ENVS"
value=
"true"
/>
<option
name=
"PARENT_ENVS"
value=
"true"
/>
<envs>
<envs>
<env
name=
"DJANGO_SETTINGS_MODULE"
value=
"circle.settings.local"
/>
<env
name=
"PYTHONUNBUFFERED"
value=
"1"
/>
<env
name=
"PYTHONUNBUFFERED"
value=
"1"
/>
<env
name=
"DJANGO_SETTINGS_MODULE"
value=
"circle.settings.local"
/>
</envs>
</envs>
<option
name=
"SDK_HOME"
value=
"$PROJECT_DIR$/../.virtualenvs/cloud/bin/python"
/>
<option
name=
"SDK_HOME"
value=
"$PROJECT_DIR$/../.virtualenvs/cloud/bin/python"
/>
<option
name=
"WORKING_DIRECTORY"
value=
""
/>
<option
name=
"WORKING_DIRECTORY"
value=
""
/>
...
@@ -452,24 +479,25 @@
...
@@ -452,24 +479,25 @@
</todo-panel>
</todo-panel>
</component>
</component>
<component
name=
"ToolWindowManager"
>
<component
name=
"ToolWindowManager"
>
<frame
x=
"-2"
y=
"-1"
width=
"1924"
height=
"1063"
extended-state=
"0"
/>
<frame
x=
"-2"
y=
"-1"
width=
"1370"
height=
"751"
extended-state=
"0"
/>
<editor
active=
"true"
/>
<layout>
<layout>
<window_info
id=
"TODO"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32980973"
sideWeight=
"0.4978701"
order=
"6"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"TODO"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.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.5972516"
sideWeight=
"0.49520767"
order=
"7"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Event Log"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.5972516"
sideWeight=
"0.49520767"
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.32
55814
"
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.32
492113
"
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.
5972516"
sideWeight=
"0.49520767
"
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.
47634068"
sideWeight=
"0.49848944
"
order=
"7"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Project"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.2
3855165
"
sideWeight=
"0.5"
order=
"0"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Project"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.2
8096676
"
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.329
8097
3"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Find"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.329
65
3"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"SciView"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"SciView"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Structure"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Structure"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.25"
sideWeight=
"0.5"
order=
"1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Favorites"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Favorites"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"2"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Debug"
active=
"
true"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.5972516"
sideWeight=
"0.50479233
"
order=
"3"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Debug"
active=
"
false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.47634068"
sideWeight=
"0.50151056
"
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=
"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"
/>
<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"
/>
<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"
/>
<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"
/>
...
@@ -553,69 +581,62 @@
...
@@ -553,69 +581,62 @@
</properties>
</properties>
</breakpoint>
</breakpoint>
</default-breakpoints>
</default-breakpoints>
<option
name=
"time"
value=
"2
71
"
/>
<option
name=
"time"
value=
"2
82
"
/>
</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>
import certifi
<expression-string>
session.post(token_url, json=body, headers=headers,
certifi.where(
)
</expression-string>
authenticated=False, log=False, **rkwargs
)
</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>
<expression-string>
improt
</expression-string>
<expression-string>
auth.authenticate(request=request, auth_url=(auth_url), token=token)
</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>
<expression-string>
import requests
<expression-string>
auth.authenticate(request=request, auth_url=(auth_url + '/v3'), token=token)
</expression-string>
r = requests.certs.old_where()
print(r)
</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>
<expression-string>
import requests
<expression-string>
auth.authenticate(request=request, auth_url=auth_url + '/v3', token=token)
</expression-string>
r = requests.certs.where()
print(r)
</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>
<expression-string>
import requests
<expression-string>
auth.authenticate(request=request, auth_url=auth_url, token=token)
</expression-string>
r = requests.certs.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>
<expression-string>
import requests
<expression-string>
import certifi
certifi.where()
</expression-string>
requests.certs.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>
<expression-string>
import requests
<expression-string>
improt
</expression-string>
r = requests.get('https://google.com')
</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>
<expression-string>
check(self.os_policy_actions, request,
<expression-string>
import requests
{'project_id': self.instance._os_server.tenant_id})
</expression-string>
r = requests.certs.old_where()
print(r)
</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>
<expression-string>
has_rights = policy(self.os_policy_actions, request,
<expression-string>
import requests
{'project_id': self.instance._os_server.tenant_id})
</expression-string>
r = requests.certs.where()
print(r)
</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>
...
@@ -681,416 +702,405 @@ r = requests.get('https://google.com')</expression-string>
...
@@ -681,416 +702,405 @@ r = requests.get('https://google.com')</expression-string>
</expressions>
</expressions>
</component>
</component>
<component
name=
"editorHistoryManager"
>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/decorators/cache
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/openstack_auth/user
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
565
"
>
<state
relative-caret-position=
"
697
"
>
<caret
line=
"
58"
column=
"0"
lean-forward=
"false"
selection-start-line=
"58"
selection-start-column=
"0"
selection-end-line=
"58"
selection-end-column=
"0
"
/>
<caret
line=
"
255"
column=
"28"
lean-forward=
"false"
selection-start-line=
"255"
selection-start-column=
"28"
selection-end-line=
"255"
selection-end-column=
"28
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/utils/decorators.py
"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/dashboard/templates/dashboard/base.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"539"
>
<state
relative-caret-position=
"161"
>
<caret
line=
"166"
column=
"0"
lean-forward=
"false"
selection-start-line=
"166"
selection-start-column=
"0"
selection-end-line=
"166"
selection-end-column=
"0"
/>
<caret
line=
"54"
column=
"37"
lean-forward=
"true"
selection-start-line=
"54"
selection-start-column=
"37"
selection-end-line=
"54"
selection-end-column=
"37"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://
/usr/lib/python2.7/threading
.py"
>
<entry
file=
"file://
$PROJECT_DIR$/circle/dashboard/urls
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
454
"
>
<state
relative-caret-position=
"
289
"
>
<caret
line=
"
766"
column=
"68"
lean-forward=
"true"
selection-start-line=
"766"
selection-start-column=
"68"
selection-end-line=
"766"
selection-end-column=
"68
"
/>
<caret
line=
"
45"
column=
"25"
lean-forward=
"false"
selection-start-line=
"45"
selection-start-column=
"25"
selection-end-line=
"45"
selection-end-column=
"25
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://
/usr/lib/python2.7/SocketServer
.py"
>
<entry
file=
"file://
$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/generic/base
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
242
"
>
<state
relative-caret-position=
"
306
"
>
<caret
line=
"
596"
column=
"0"
lean-forward=
"false"
selection-start-line=
"596"
selection-start-column=
"0"
selection-end-line=
"596"
selection-end-column=
"0
"
/>
<caret
line=
"
46"
column=
"8"
lean-forward=
"false"
selection-start-line=
"46"
selection-start-column=
"8"
selection-end-line=
"46"
selection-end-column=
"8
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django
/core/servers/basehttp
.py"
>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django
_tables2/views
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"259"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"154"
column=
"0"
lean-forward=
"false"
selection-start-line=
"154"
selection-start-column=
"0"
selection-end-line=
"154"
selection-end-column=
"0"
/>
<caret
line=
"118"
column=
"6"
lean-forward=
"false"
selection-start-line=
"118"
selection-start-column=
"6"
selection-end-line=
"118"
selection-end-column=
"6"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://
/usr/lib/python2.7/wsgiref/handler
s.py"
>
<entry
file=
"file://
$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/braces/views/_acces
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
250
"
>
<state
relative-caret-position=
"
187
"
>
<caret
line=
"
85"
column=
"0"
lean-forward=
"false"
selection-start-line=
"85"
selection-start-column=
"0"
selection-end-line=
"85"
selection-end-column=
"0
"
/>
<caret
line=
"
24"
column=
"6"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"6"
selection-end-line=
"24"
selection-end-column=
"6
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/contrib/staticfiles/handler
s.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/request/url
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"565"
>
<state
relative-caret-position=
"199"
>
<caret
line=
"62"
column=
"0"
lean-forward=
"false"
selection-start-line=
"62"
selection-start-column=
"0"
selection-end-line=
"62"
selection-end-column=
"0"
/>
<caret
line=
"29"
column=
"27"
lean-forward=
"false"
selection-start-line=
"29"
selection-start-column=
"27"
selection-end-line=
"29"
selection-end-column=
"27"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/
wsgi
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/circle/
middleware
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"514"
>
<state
relative-caret-position=
"221"
>
<caret
line=
"59"
column=
"0"
lean-forward=
"false"
selection-start-line=
"59"
selection-start-column=
"0"
selection-end-line=
"59"
selection-end-column=
"0"
/>
<caret
line=
"13"
column=
"72"
lean-forward=
"true"
selection-start-line=
"13"
selection-start-column=
"72"
selection-end-line=
"13"
selection-end-column=
"72"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py
"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/dashboard/templates/dashboard/index-vm.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"420"
>
<state
relative-caret-position=
"617"
>
<caret
line=
"167"
column=
"0"
lean-forward=
"false"
selection-start-line=
"167"
selection-start-column=
"0"
selection-end-line=
"167"
selection-end-column=
"0"
/>
<caret
line=
"91"
column=
"96"
lean-forward=
"false"
selection-start-line=
"91"
selection-start-column=
"96"
selection-end-line=
"91"
selection-end-column=
"96"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/core/handlers/base.py
"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/request/templates/request/_request-template-form.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"293"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"152"
column=
"13"
lean-forward=
"true"
selection-start-line=
"152"
selection-start-column=
"13"
selection-end-line=
"152"
selection-end-column=
"13"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/views/decorators/debug.py
"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/request/templates/request/request-template.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"548"
>
<state
relative-caret-position=
"255"
>
<caret
line=
"75"
column=
"0"
lean-forward=
"false"
selection-start-line=
"75"
selection-start-column=
"0"
selection-end-line=
"75"
selection-end-column=
"0"
/>
<caret
line=
"15"
column=
"49"
lean-forward=
"false"
selection-start-line=
"15"
selection-start-column=
"49"
selection-end-line=
"15"
selection-end-column=
"49"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/core/handlers/exception
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/openstack_api/network
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"408"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"43"
column=
"0"
lean-forward=
"false"
selection-start-line=
"43"
selection-start-column=
"0"
selection-end-line=
"43"
selection-end-column=
"0"
/>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth/tests/setting
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/view
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"539"
>
<state
relative-caret-position=
"352"
>
<caret
line=
"55"
column=
"0"
lean-forward=
"false"
selection-start-line=
"55"
selection-start-column=
"0"
selection-end-line=
"55"
selection-end-column=
"0"
/>
<caret
line=
"51"
column=
"7"
lean-forward=
"true"
selection-start-line=
"51"
selection-start-column=
"7"
selection-end-line=
"51"
selection-end-column=
"7"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_a
uth/plugin/password
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/openstack_a
pi/nova
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"4
22
"
>
<state
relative-caret-position=
"4
85
"
>
<caret
line=
"
42"
column=
"54"
lean-forward=
"true"
selection-start-line=
"42"
selection-start-column=
"54"
selection-end-line=
"42"
selection-end-column=
"54
"
/>
<caret
line=
"
284"
column=
"22"
lean-forward=
"false"
selection-start-line=
"284"
selection-start-column=
"22"
selection-end-line=
"284"
selection-end-column=
"22
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
PROJECT_DIR$/circle/openstack_api/base
.py"
>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/__init__
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"76"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"328"
column=
"0"
lean-forward=
"false"
selection-start-line=
"328"
selection-start-column=
"0"
selection-end-line=
"328"
selection-end-column=
"0"
/>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
PROJECT_DIR$/circle/network/models
.py"
>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/extension
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"244"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"86"
column=
"8"
lean-forward=
"false"
selection-start-line=
"86"
selection-start-column=
"8"
selection-end-line=
"86"
selection-end-column=
"8"
/>
<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>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
PROJECT_DIR$/circle/dashboard/models
.py"
>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/client
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"193"
>
<state
relative-caret-position=
"562"
>
<caret
line=
"435"
column=
"31"
lean-forward=
"true"
selection-start-line=
"435"
selection-start-column=
"31"
selection-end-line=
"435"
selection-end-column=
"31"
/>
<caret
line=
"45"
column=
"38"
lean-forward=
"true"
selection-start-line=
"45"
selection-start-column=
"38"
selection-end-line=
"45"
selection-end-column=
"38"
/>
<folding>
<element
signature=
"e#732#770#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
circle/dashboard/templates/dashboard/index.html
"
>
<entry
file=
"file://$PROJECT_DIR$/
requirements.txt
"
>
<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=
"
25"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"25"
selection-end-line=
"0"
selection-end-column=
"25
"
/>
<caret
line=
"0"
column=
"
0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
circle/openstack_auth/backend.py
"
>
<entry
file=
"file://$PROJECT_DIR$/
requirements/base.txt
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
186
"
>
<state
relative-caret-position=
"
595
"
>
<caret
line=
"
78"
column=
"34"
lean-forward=
"false"
selection-start-line=
"78"
selection-start-column=
"34"
selection-end-line=
"78"
selection-end-column=
"34
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth/utils
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
manage
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"185"
>
<state
relative-caret-position=
"408"
>
<caret
line=
"51"
column=
"8"
lean-forward=
"true"
selection-start-line=
"51"
selection-start-column=
"8"
selection-end-line=
"51"
selection-end-column=
"8"
/>
<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>
<entry
file=
"file://$
PROJECT_DIR$/circle/openstack_auth/policy
.py"
>
<entry
file=
"file://$
APPLICATION_HOME_DIR$/helpers/pydev/pydevd
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-289"
>
<state
relative-caret-position=
"110"
>
<caret
line=
"77"
column=
"45"
lean-forward=
"false"
selection-start-line=
"77"
selection-start-column=
"41"
selection-end-line=
"77"
selection-end-column=
"45"
/>
<caret
line=
"1071"
column=
"0"
lean-forward=
"false"
selection-start-line=
"1071"
selection-start-column=
"0"
selection-end-line=
"1071"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth
/user.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/views
/user.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"697"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"255"
column=
"28"
lean-forward=
"false"
selection-start-line=
"255"
selection-start-column=
"28"
selection-end-line=
"255"
selection-end-column=
"28"
/>
<caret
line=
"107"
column=
"24"
lean-forward=
"false"
selection-start-line=
"107"
selection-start-column=
"24"
selection-end-line=
"107"
selection-end-column=
"24"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/operations.py
"
>
<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=
"339"
>
<state
relative-caret-position=
"136"
>
<caret
line=
"65"
column=
"23"
lean-forward=
"false"
selection-start-line=
"65"
selection-start-column=
"23"
selection-end-line=
"65"
selection-end-column=
"23"
/>
<caret
line=
"8"
column=
"1"
lean-forward=
"true"
selection-start-line=
"8"
selection-start-column=
"1"
selection-end-line=
"8"
selection-end-column=
"1"
/>
<folding>
<element
signature=
"e#732#788#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/
dashboard/base
.html"
>
<entry
file=
"file://$PROJECT_DIR$/circle/dashboard/templates/
auth/login
.html"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"161"
>
<state
relative-caret-position=
"459"
>
<caret
line=
"54"
column=
"37"
lean-forward=
"true"
selection-start-line=
"54"
selection-start-column=
"37"
selection-end-line=
"54"
selection-end-column=
"37"
/>
<caret
line=
"33"
column=
"15"
lean-forward=
"true"
selection-start-line=
"33"
selection-start-column=
"15"
selection-end-line=
"33"
selection-end-column=
"15"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/models.py
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
templates/registration/login.html
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"510"
>
<state
relative-caret-position=
"391"
>
<caret
line=
"333"
column=
"53"
lean-forward=
"false"
selection-start-line=
"333"
selection-start-column=
"53"
selection-end-line=
"333"
selection-end-column=
"53"
/>
<caret
line=
"23"
column=
"10"
lean-forward=
"true"
selection-start-line=
"23"
selection-start-column=
"10"
selection-end-line=
"23"
selection-end-column=
"10"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/os_policies/circle_policy.json
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/views/util.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
119
"
>
<state
relative-caret-position=
"
284
"
>
<caret
line=
"7
"
column=
"52"
lean-forward=
"false"
selection-start-line=
"7"
selection-start-column=
"52"
selection-end-line=
"7"
selection-end-column=
"52
"
/>
<caret
line=
"7
76"
column=
"47"
lean-forward=
"true"
selection-start-line=
"776"
selection-start-column=
"47"
selection-end-line=
"776"
selection-end-column=
"47
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/ur
ls.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth/uti
ls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"2
89
"
>
<state
relative-caret-position=
"2
36
"
>
<caret
line=
"
45"
column=
"25"
lean-forward=
"false"
selection-start-line=
"45"
selection-start-column=
"25"
selection-end-line=
"45"
selection-end-column=
"25
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle
/urls.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth
/urls.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"204"
>
<state
relative-caret-position=
"493"
>
<caret
line=
"28"
column=
"20"
lean-forward=
"true"
selection-start-line=
"28"
selection-start-column=
"20"
selection-end-line=
"28"
selection-end-column=
"20"
/>
<caret
line=
"35"
column=
"4"
lean-forward=
"false"
selection-start-line=
"35"
selection-start-column=
"4"
selection-end-line=
"35"
selection-end-column=
"70"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/
views/generic/base
.py"
>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/django/
contrib/auth/__init__
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
306
"
>
<state
relative-caret-position=
"
451
"
>
<caret
line=
"
46"
column=
"8"
lean-forward=
"false"
selection-start-line=
"46"
selection-start-column=
"8"
selection-end-line=
"46"
selection-end-column=
"8
"
/>
<caret
line=
"
114"
column=
"0"
lean-forward=
"false"
selection-start-line=
"114"
selection-start-column=
"0"
selection-end-line=
"114"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/
django_tables2/views
.py"
>
<entry
file=
"file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/
keystoneauth1/identity/base
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"306"
>
<state
relative-caret-position=
"136"
>
<caret
line=
"118"
column=
"6"
lean-forward=
"false"
selection-start-line=
"118"
selection-start-column=
"6"
selection-end-line=
"118"
selection-end-column=
"6"
/>
<caret
line=
"133"
column=
"0"
lean-forward=
"false"
selection-start-line=
"133"
selection-start-column=
"0"
selection-end-line=
"133"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/braces/views/_access
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/openstack_auth/plugin/base
.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=
"102"
>
<caret
line=
"24"
column=
"6"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"6"
selection-end-line=
"24"
selection-end-column=
"6"
/>
<caret
line=
"125"
column=
"0"
lean-forward=
"false"
selection-start-line=
"125"
selection-start-column=
"0"
selection-end-line=
"125"
selection-end-column=
"0"
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/urls
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth/backend
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"1
99
"
>
<state
relative-caret-position=
"1
887
"
>
<caret
line=
"
29"
column=
"27"
lean-forward=
"false"
selection-start-line=
"29"
selection-start-column=
"27"
selection-end-line=
"29"
selection-end-column=
"27
"
/>
<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
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
PROJECT_DIR$/circle/circle/middlewar
e.py"
>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/keystoneauth1/identity/v3/bas
e.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"2
21
"
>
<state
relative-caret-position=
"2
839
"
>
<caret
line=
"1
3"
column=
"72"
lean-forward=
"true"
selection-start-line=
"13"
selection-start-column=
"72"
selection-end-line=
"13"
selection-end-column=
"72
"
/>
<caret
line=
"1
75"
column=
"15"
lean-forward=
"false"
selection-start-line=
"175"
selection-start-column=
"15"
selection-end-line=
"176"
selection-end-column=
"70
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/templates/dashboard/index-vm.html
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth/views.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"617"
>
<state
relative-caret-position=
"2040"
>
<caret
line=
"91"
column=
"96"
lean-forward=
"false"
selection-start-line=
"91"
selection-start-column=
"96"
selection-end-line=
"91"
selection-end-column=
"96"
/>
<caret
line=
"148"
column=
"36"
lean-forward=
"false"
selection-start-line=
"148"
selection-start-column=
"36"
selection-end-line=
"148"
selection-end-column=
"36"
/>
<folding
/>
<folding>
<element
signature=
"e#545#559#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/views/index
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/local
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
136
"
>
<state
relative-caret-position=
"
23
"
>
<caret
line=
"
49"
column=
"26"
lean-forward=
"false"
selection-start-line=
"49"
selection-start-column=
"13"
selection-end-line=
"49"
selection-end-column=
"26
"
/>
<caret
line=
"
93"
column=
"5"
lean-forward=
"true"
selection-start-line=
"93"
selection-start-column=
"5"
selection-end-line=
"93"
selection-end-column=
"5
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/templates/request/_request-template-form.html
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/validators.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<state
relative-caret-position=
"108"
>
<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=
"16"
column=
"0"
lean-forward=
"false"
selection-start-line=
"16"
selection-start-column=
"0"
selection-end-line=
"16"
selection-end-column=
"0"
/>
<folding
/>
<folding>
<element
signature=
"e#732#782#0"
expanded=
"false"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/templates/request/request-template.html
"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
dashboard/models.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"255"
>
<state
relative-caret-position=
"389"
>
<caret
line=
"15"
column=
"49"
lean-forward=
"false"
selection-start-line=
"15"
selection-start-column=
"49"
selection-end-line=
"15"
selection-end-column=
"49"
/>
<caret
line=
"161"
column=
"71"
lean-forward=
"false"
selection-start-line=
"161"
selection-start-column=
"37"
selection-end-line=
"161"
selection-end-column=
"71"
/>
<folding
/>
<folding>
<element
signature=
"e#732#770#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_api/network
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/base
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<state
relative-caret-position=
"227"
>
<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=
"573"
column=
"0"
lean-forward=
"false"
selection-start-line=
"573"
selection-start-column=
"0"
selection-end-line=
"573"
selection-end-column=
"0"
/>
<folding
/>
<folding>
<element
signature=
"e#782#791#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
request/view
s.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/url
s.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"352"
>
<state
relative-caret-position=
"306"
>
<caret
line=
"51"
column=
"7"
lean-forward=
"true"
selection-start-line=
"51"
selection-start-column=
"7"
selection-end-line=
"51"
selection-end-column=
"7"
/>
<caret
line=
"51"
column=
"25"
lean-forward=
"false"
selection-start-line=
"51"
selection-start-column=
"25"
selection-end-line=
"51"
selection-end-column=
"25"
/>
<folding
/>
<folding>
<element
signature=
"e#732#773#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_api/nova
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/models/node
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
485
"
>
<state
relative-caret-position=
"
94
"
>
<caret
line=
"2
84"
column=
"22"
lean-forward=
"false"
selection-start-line=
"284"
selection-start-column=
"22"
selection-end-line=
"284"
selection-end-column=
"22
"
/>
<caret
line=
"2
4"
column=
"0"
lean-forward=
"false"
selection-start-line=
"24"
selection-start-column=
"0"
selection-end-line=
"24"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/__init__
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/vm/models/instance
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<state
relative-caret-position=
"
94
"
>
<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=
"
53"
column=
"0"
lean-forward=
"false"
selection-start-line=
"53"
selection-start-column=
"0"
selection-end-line=
"53
"
selection-end-column=
"0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/extension
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/common/operations
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<state
relative-caret-position=
"
94
"
>
<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=
"
231"
column=
"0"
lean-forward=
"false"
selection-start-line=
"231"
selection-start-column=
"0"
selection-end-line=
"231
"
selection-end-column=
"0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/client
.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=
"562"
>
<state
relative-caret-position=
"163"
>
<caret
line=
"45"
column=
"38"
lean-forward=
"true"
selection-start-line=
"45"
selection-start-column=
"38"
selection-end-line=
"45"
selection-end-column=
"38"
/>
<caret
line=
"106"
column=
"22"
lean-forward=
"true"
selection-start-line=
"106"
selection-start-column=
"22"
selection-end-line=
"106"
selection-end-column=
"22"
/>
<folding
/>
<folding>
<element
signature=
"e#732#770#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
requirements.txt
"
>
<entry
file=
"file://$PROJECT_DIR$/
circle/dashboard/views/index.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
0
"
>
<state
relative-caret-position=
"
102
"
>
<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=
"
27"
column=
"30"
lean-forward=
"false"
selection-start-line=
"27"
selection-start-column=
"30"
selection-end-line=
"27"
selection-end-column=
"3
0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
requirements/base.txt
"
>
<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=
"595"
>
<state
relative-caret-position=
"51"
>
<caret
line=
"35"
column=
"8"
lean-forward=
"false"
selection-start-line=
"35"
selection-start-column=
"8"
selection-end-line=
"35"
selection-end-column=
"8"
/>
<caret
line=
"410"
column=
"54"
lean-forward=
"false"
selection-start-line=
"410"
selection-start-column=
"54"
selection-end-line=
"410"
selection-end-column=
"54"
/>
<folding
/>
<folding>
<element
signature=
"e#732#770#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$
APPLICATION_HOME_DIR$/helpers/pydev/pydevd
.py"
>
<entry
file=
"file://$
PROJECT_DIR$/circle/request/models
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
110
"
>
<state
relative-caret-position=
"
-416
"
>
<caret
line=
"
1071"
column=
"0"
lean-forward=
"false"
selection-start-line=
"1071"
selection-start-column=
"0"
selection-end-line=
"1071
"
selection-end-column=
"0"
/>
<caret
line=
"
39"
column=
"0"
lean-forward=
"false"
selection-start-line=
"39"
selection-start-column=
"0"
selection-end-line=
"39
"
selection-end-column=
"0"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
requirements/circlestack.txt
"
>
<entry
file=
"file://$PROJECT_DIR$/
circle/vm/models/activity.py
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
-1955
"
>
<state
relative-caret-position=
"
516
"
>
<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=
"
196"
column=
"31"
lean-forward=
"false"
selection-start-line=
"196"
selection-start-column=
"31"
selection-end-line=
"196"
selection-end-column=
"31
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
circle/settings/local
.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=
"
248
"
>
<state
relative-caret-position=
"
34
"
>
<caret
line=
"
106"
column=
"16"
lean-forward=
"false"
selection-start-line=
"106"
selection-start-column=
"16"
selection-end-line=
"106"
selection-end-column=
"16
"
/>
<caret
line=
"
2"
column=
"0"
lean-forward=
"false"
selection-start-line=
"2"
selection-start-column=
"0"
selection-end-line=
"2"
selection-end-column=
"0
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
manage
.py"
>
<entry
file=
"file://$PROJECT_DIR$/circle/
vm/operations
.py"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"185"
>
<state
relative-caret-position=
"50"
>
<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=
"52"
column=
"59"
lean-forward=
"false"
selection-start-line=
"52"
selection-start-column=
"59"
selection-end-line=
"52"
selection-end-column=
"59"
/>
<folding>
<folding
/>
<element
signature=
"e#755#764#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/circle/
openstack_auth/views
.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=
"127"
>
<state
relative-caret-position=
"482"
>
<caret
line=
"60"
column=
"64"
lean-forward=
"true"
selection-start-line=
"60"
selection-start-column=
"64"
selection-end-line=
"60"
selection-end-column=
"64"
/>
<caret
line=
"35"
column=
"0"
lean-forward=
"true"
selection-start-line=
"35"
selection-start-column=
"0"
selection-end-line=
"35"
selection-end-column=
"0"
/>
<folding
/>
<folding>
<element
signature=
"e#732#764#0"
expanded=
"true"
/>
</folding>
</state>
</state>
</provider>
</provider>
</entry>
</entry>
<entry
file=
"file://$PROJECT_DIR$/
circle/circle/settings/base.py
"
>
<entry
file=
"file://$PROJECT_DIR$/
requirements/circlestack.txt
"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
760
"
>
<state
relative-caret-position=
"
268
"
>
<caret
line=
"
584"
column=
"38"
lean-forward=
"false"
selection-start-line=
"584"
selection-start-column=
"38"
selection-end-line=
"584"
selection-end-column=
"38
"
/>
<caret
line=
"
124"
column=
"4"
lean-forward=
"false"
selection-start-line=
"124"
selection-start-column=
"4"
selection-end-line=
"124"
selection-end-column=
"4
"
/>
<folding
/>
<folding
/>
</state>
</state>
</provider>
</provider>
...
...
circle/circle/db.sqlite3
View file @
c4d12b46
No preview for this file type
circle/circle/settings/base.py
View file @
c4d12b46
...
@@ -583,5 +583,7 @@ DEFAULT_SUBNETPOOL_PREFIXES = (
...
@@ -583,5 +583,7 @@ DEFAULT_SUBNETPOOL_PREFIXES = (
DEFAULT_SUBNETPOOL_PREFIX_LEN
=
20
DEFAULT_SUBNETPOOL_PREFIX_LEN
=
20
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN
=
"bme"
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN
=
"bme"
OPENSTACK_KEYSTONE_URL
=
"https://oscircle.guest.ik.bme.hu:5000"
WEBSSO_ENABLED
=
True
#TODO: it is always enabled, refactor openstack_auth
OPENSTACK_KEYSTONE_URL
=
"https://10.4.1.19:5000"
OPENSTACK_SSL_NO_VERIFY
=
True
\ No newline at end of file
\ No newline at end of file
circle/circle/urls.py
View file @
c4d12b46
...
@@ -22,7 +22,7 @@ from django.core.urlresolvers import reverse
...
@@ -22,7 +22,7 @@ from django.core.urlresolvers import reverse
from
django.shortcuts
import
redirect
from
django.shortcuts
import
redirect
from
openstack_auth
import
utils
from
openstack_auth
import
utils
from
openstack_auth.views
import
login
from
openstack_auth.views
import
login
,
websso
admin
.
autodiscover
()
admin
.
autodiscover
()
...
@@ -49,6 +49,7 @@ urlpatterns = [
...
@@ -49,6 +49,7 @@ urlpatterns = [
url
(
r'^accounts/login/?$'
,
login
,
url
(
r'^accounts/login/?$'
,
login
,
name
=
"accounts.login"
),
name
=
"accounts.login"
),
url
(
r'^accounts/'
,
include
(
'django.contrib.auth.urls'
)),
url
(
r'^accounts/'
,
include
(
'django.contrib.auth.urls'
)),
url
(
r'^auth/websso/$'
,
websso
,
name
=
'websso'
),
# url(r'^two-factor-login/$', TwoFactorLoginView.as_view(),
# url(r'^two-factor-login/$', TwoFactorLoginView.as_view(),
# name="two-factor-login"),
# name="two-factor-login"),
#
#
...
...
circle/dashboard/forms.py
View file @
c4d12b46
...
@@ -53,7 +53,7 @@ from django.core.urlresolvers import reverse_lazy
...
@@ -53,7 +53,7 @@ from django.core.urlresolvers import reverse_lazy
from
firewall.models
import
Vlan
,
Host
from
firewall.models
import
Vlan
,
Host
from
vm.models
import
(
from
vm.models
import
(
InstanceTemplate
,
Lease
,
InterfaceTemplate
,
Node
,
Trait
,
Instance
InstanceTemplate
,
Lease
,
InterfaceTemplate
,
Trait
,
Instance
)
)
from
storage.models
import
DataStore
,
Disk
from
storage.models
import
DataStore
,
Disk
from
django.contrib.admin.widgets
import
FilteredSelectMultiple
from
django.contrib.admin.widgets
import
FilteredSelectMultiple
...
@@ -62,8 +62,6 @@ from .models import Profile, GroupProfile, Message
...
@@ -62,8 +62,6 @@ from .models import Profile, GroupProfile, Message
from
circle.settings.base
import
LANGUAGES
,
MAX_NODE_RAM
from
circle.settings.base
import
LANGUAGES
,
MAX_NODE_RAM
from
django.utils.translation
import
string_concat
from
django.utils.translation
import
string_concat
from
.validators
import
domain_validator
from
dashboard.models
import
ConnectCommand
from
dashboard.models
import
ConnectCommand
from
openstack_auth.user_key
import
UserKey
from
openstack_auth.user_key
import
UserKey
...
@@ -412,97 +410,6 @@ class HostForm(NoFormTagMixin, forms.ModelForm):
...
@@ -412,97 +410,6 @@ class HostForm(NoFormTagMixin, forms.ModelForm):
model
=
Host
model
=
Host
fields
=
[
'hostname'
,
'vlan'
,
'mac'
,
'ipv4'
,
]
fields
=
[
'hostname'
,
'vlan'
,
'mac'
,
'ipv4'
,
]
class
NodeForm
(
forms
.
ModelForm
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
NodeForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
self
.
helper
=
FormHelper
(
self
)
self
.
helper
.
form_show_labels
=
False
self
.
helper
.
layout
=
Layout
(
Div
(
Div
(
Div
(
Div
(
AnyTag
(
'h3'
,
HTML
(
_
(
"Node"
)),
),
css_class
=
"col-sm-3"
,
),
css_class
=
"row"
,
),
Div
(
Div
(
# nodename
HTML
(
'<label for="node-nodename-box">'
'Name'
'</label>'
),
css_class
=
"col-sm-3"
,
),
Div
(
'name'
,
css_class
=
"col-sm-9"
,
),
css_class
=
"row"
,
),
Div
(
Div
(
# priority
HTML
(
'<label for="node-nodename-box">'
'Priority'
'</label>'
),
css_class
=
"col-sm-3"
,
),
Div
(
'priority'
,
css_class
=
"col-sm-9"
,
),
css_class
=
"row"
,
),
Div
(
Div
(
# enabled
HTML
(
'<label for="node-nodename-box">'
'Enabled'
'</label>'
),
css_class
=
"col-sm-3"
,
),
Div
(
'enabled'
,
css_class
=
"col-sm-9"
,
),
css_class
=
"row"
,
),
Div
(
# nested host
HTML
(
"""{
%
load crispy_forms_tags
%
}
{
%
crispy hostform
%
}
"""
)
),
Div
(
Div
(
AnyTag
(
# tip: don't try to use Button class
"button"
,
AnyTag
(
"i"
,
css_class
=
"fa fa-play"
),
HTML
(
"Start"
),
css_id
=
"node-create-submit"
,
css_class
=
"btn btn-success"
,
),
css_class
=
"col-sm-12 text-right"
,
),
css_class
=
"row"
,
),
css_class
=
"col-sm-11"
,
),
css_class
=
"row"
,
),
)
class
Meta
:
model
=
Node
fields
=
[
'name'
,
'priority'
,
'enabled'
,
]
class
TemplateForm
(
forms
.
ModelForm
):
class
TemplateForm
(
forms
.
ModelForm
):
# networks = forms.ModelMultipleChoiceField(queryset=None, required=False, label=_("Networks"))
# networks = forms.ModelMultipleChoiceField(queryset=None, required=False, label=_("Networks"))
#
#
...
...
circle/dashboard/tables.py
View file @
c4d12b46
...
@@ -27,7 +27,7 @@ from django_tables2.columns import (
...
@@ -27,7 +27,7 @@ from django_tables2.columns import (
)
)
from
storage.models
import
Disk
from
storage.models
import
Disk
from
vm.models
import
Node
,
InstanceTemplate
,
Lease
from
vm.models
import
InstanceTemplate
,
Lease
from
dashboard.models
import
ConnectCommand
,
Message
from
dashboard.models
import
ConnectCommand
,
Message
from
openstack_auth.user_key
import
UserKey
from
openstack_auth.user_key
import
UserKey
...
@@ -57,58 +57,58 @@ class ApplianceColumn(TemplateColumn):
...
@@ -57,58 +57,58 @@ class ApplianceColumn(TemplateColumn):
return
mark_safe
(
"
%
s
%
s"
%
(
abbr
%
(
title
,
text
),
value
))
return
mark_safe
(
"
%
s
%
s"
%
(
abbr
%
(
title
,
text
),
value
))
class
NodeListTable
(
Table
):
#
class NodeListTable(Table):
#
pk
=
Column
(
#
pk = Column(
verbose_name
=
"ID"
,
#
verbose_name="ID",
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-thin'
}},
#
attrs={'th': {'class': 'node-list-table-thin'}},
)
#
)
#
overcommit
=
Column
(
#
overcommit = Column(
verbose_name
=
_
(
"Overcommit"
),
#
verbose_name=_("Overcommit"),
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-thin'
}},
#
attrs={'th': {'class': 'node-list-table-thin'}},
)
#
)
#
get_status_display
=
Column
(
#
get_status_display = Column(
verbose_name
=
_
(
"Status"
),
#
verbose_name=_("Status"),
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-thin'
}},
#
attrs={'th': {'class': 'node-list-table-thin'}},
order_by
=
(
"enabled"
,
"schedule_enabled"
),
#
order_by=("enabled", "schedule_enabled"),
)
#
)
#
name
=
TemplateColumn
(
#
name = TemplateColumn(
template_name
=
"dashboard/node-list/column-name.html"
,
#
template_name="dashboard/node-list/column-name.html",
order_by
=
"normalized_name"
#
order_by="normalized_name"
)
#
)
#
priority
=
Column
(
#
priority = Column(
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-thin'
}},
#
attrs={'th': {'class': 'node-list-table-thin'}},
)
#
)
#
number_of_VMs
=
TemplateColumn
(
#
number_of_VMs = TemplateColumn(
verbose_name
=
_
(
"Number of VMs"
),
#
verbose_name=_("Number of VMs"),
template_name
=
'dashboard/node-list/column-vm.html'
,
#
template_name='dashboard/node-list/column-vm.html',
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-thin'
}},
#
attrs={'th': {'class': 'node-list-table-thin'}},
)
#
)
#
monitor
=
TemplateColumn
(
#
monitor = TemplateColumn(
verbose_name
=
_
(
"Monitor"
),
#
verbose_name=_("Monitor"),
template_name
=
'dashboard/node-list/column-monitor.html'
,
#
template_name='dashboard/node-list/column-monitor.html',
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-monitor'
}},
#
attrs={'th': {'class': 'node-list-table-monitor'}},
orderable
=
False
,
#
orderable=False,
)
#
)
#
minion_online
=
BooleanColumn
(
#
minion_online = BooleanColumn(
verbose_name
=
_
(
"Minion online"
),
#
verbose_name=_("Minion online"),
attrs
=
{
'th'
:
{
'class'
:
'node-list-table-thin'
}},
#
attrs={'th': {'class': 'node-list-table-thin'}},
orderable
=
False
,
#
orderable=False,
)
#
)
#
class
Meta
:
#
class Meta:
model
=
Node
#
model = Node
attrs
=
{
'class'
:
(
'table table-bordered table-striped table-hover '
#
attrs = {'class': ('table table-bordered table-striped table-hover '
'node-list-table'
)}
#
'node-list-table')}
fields
=
(
'pk'
,
'name'
,
'host'
,
'get_status_display'
,
'priority'
,
#
fields = ('pk', 'name', 'host', 'get_status_display', 'priority',
'minion_online'
,
'overcommit'
,
'number_of_VMs'
,
)
#
'minion_online', 'overcommit', 'number_of_VMs', )
class
GroupListTable
(
Table
):
class
GroupListTable
(
Table
):
...
...
circle/dashboard/templates/auth/login.html
View file @
c4d12b46
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
{% include "display-form-errors.html" %}
{% include "display-form-errors.html" %}
</div>
</div>
{% endif %}
{% endif %}
<div
class=
"col-xs-
{% if saml2 %}6{% else %}12{% endif %}
"
>
<div
class=
"col-xs-
6
"
>
<div
class=
"login-form"
>
<div
class=
"login-form"
>
<form
method=
"POST"
>
<form
method=
"POST"
>
{% csrf_token %}
{% csrf_token %}
...
@@ -34,11 +34,15 @@
...
@@ -34,11 +34,15 @@
</form>
</form>
</div>
</div>
</div>
</div>
{% if saml2 %}
<div
class=
"col-xs-6"
>
<div
class=
"col-xs-6"
>
<h4
style=
"padding-top: 0; margin-top: 20px;"
>
{% trans "Login with SSO" %}
</h4>
<h4
style=
"padding-top: 0; margin-top: 20px;"
>
{% trans "Login with SSO" %}
</h4>
<a
href=
"{% url "
saml2_login
"
%}"
>
{% trans "Click here!" %}
</a>
<form
method=
"POST"
>
{% csrf_token %}
<button
type=
"submit"
class=
"btn btn-success"
>
{% trans "Click here!" %}
</button>
<input
type=
"hidden"
name=
"username"
>
<input
type=
"hidden"
name=
"password"
>
<input
type=
"hidden"
name=
"auth_type"
value=
"saml2"
>
</form>
</div>
</div>
{% endif %}
</div>
</div>
{% endblock %}
{% endblock %}
circle/dashboard/validators.py
View file @
c4d12b46
...
@@ -18,7 +18,6 @@
...
@@ -18,7 +18,6 @@
from
django.core.exceptions
import
ValidationError
from
django.core.exceptions
import
ValidationError
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
from
lxml
import
etree
as
ET
import
logging
import
logging
rng_file
=
"/usr/share/libvirt/schemas/domain.rng"
rng_file
=
"/usr/share/libvirt/schemas/domain.rng"
...
@@ -31,25 +30,6 @@ footer = "</domain>"
...
@@ -31,25 +30,6 @@ footer = "</domain>"
logger
=
logging
.
getLogger
()
logger
=
logging
.
getLogger
()
def
domain_validator
(
value
):
xml
=
header
+
value
+
footer
try
:
parsed_xml
=
ET
.
fromstring
(
xml
)
except
Exception
as
e
:
raise
ValidationError
(
e
.
message
)
try
:
relaxng
=
ET
.
RelaxNG
(
file
=
rng_file
)
except
:
logger
.
critical
(
"
%
s RelaxNG libvirt domain schema file "
"is missing for validation."
,
rng_file
)
else
:
try
:
relaxng
.
assertValid
(
parsed_xml
)
except
Exception
as
e
:
raise
ValidationError
(
e
.
message
)
def
connect_command_template_validator
(
value
):
def
connect_command_template_validator
(
value
):
"""Validate value as a connect command template.
"""Validate value as a connect command template.
...
...
circle/dashboard/views/index.py
View file @
c4d12b46
...
@@ -25,7 +25,7 @@ from django.conf import settings
...
@@ -25,7 +25,7 @@ from django.conf import settings
from
django.contrib.auth.models
import
Group
,
User
from
django.contrib.auth.models
import
Group
,
User
from
django.core.cache
import
cache
from
django.core.cache
import
cache
from
django.views.generic
import
TemplateView
from
django.views.generic
import
TemplateView
from
vm.models
import
Instance
,
Node
,
InstanceTemplate
from
vm.models
import
Instance
,
InstanceTemplate
from
dashboard.views.vm
import
vm_ops
from
dashboard.views.vm
import
vm_ops
from
network.models
import
Vxlan
from
network.models
import
Vxlan
...
...
circle/openstack_auth/views.py
View file @
c4d12b46
...
@@ -61,6 +61,8 @@ def login(request, template_name=None, extra_context=None, **kwargs):
...
@@ -61,6 +61,8 @@ def login(request, template_name=None, extra_context=None, **kwargs):
auth_type
=
request
.
POST
.
get
(
'auth_type'
,
'credentials'
)
auth_type
=
request
.
POST
.
get
(
'auth_type'
,
'credentials'
)
if
utils
.
is_websso_enabled
()
and
auth_type
!=
'credentials'
:
if
utils
.
is_websso_enabled
()
and
auth_type
!=
'credentials'
:
auth_url
=
request
.
POST
.
get
(
'region'
)
auth_url
=
request
.
POST
.
get
(
'region'
)
if
auth_url
is
None
:
auth_url
=
settings
.
OPENSTACK_KEYSTONE_URL
+
'/v3'
url
=
utils
.
get_websso_url
(
request
,
auth_url
,
auth_type
)
url
=
utils
.
get_websso_url
(
request
,
auth_url
,
auth_type
)
return
shortcuts
.
redirect
(
url
)
return
shortcuts
.
redirect
(
url
)
...
...
circle/vm/admin.py
View file @
c4d12b46
...
@@ -18,8 +18,7 @@
...
@@ -18,8 +18,7 @@
from
django.contrib
import
admin
from
django.contrib
import
admin
from
.models
import
(
Instance
,
InstanceActivity
,
InstanceTemplate
,
Interface
,
from
.models
import
(
Instance
,
InstanceActivity
,
InstanceTemplate
,
Interface
,
InterfaceTemplate
,
Lease
,
NamedBaseResourceConfig
,
Node
,
InterfaceTemplate
,
Lease
,
NamedBaseResourceConfig
,
Trait
)
NodeActivity
,
Trait
)
class
InstanceActivityAdmin
(
admin
.
ModelAdmin
):
class
InstanceActivityAdmin
(
admin
.
ModelAdmin
):
...
@@ -33,6 +32,4 @@ admin.site.register(Interface)
...
@@ -33,6 +32,4 @@ admin.site.register(Interface)
admin
.
site
.
register
(
InterfaceTemplate
)
admin
.
site
.
register
(
InterfaceTemplate
)
admin
.
site
.
register
(
Lease
)
admin
.
site
.
register
(
Lease
)
admin
.
site
.
register
(
NamedBaseResourceConfig
)
admin
.
site
.
register
(
NamedBaseResourceConfig
)
admin
.
site
.
register
(
Node
)
admin
.
site
.
register
(
NodeActivity
)
admin
.
site
.
register
(
Trait
)
admin
.
site
.
register
(
Trait
)
circle/vm/models/__init__.py
View file @
c4d12b46
# flake8: noqa
# flake8: noqa
from
.activity
import
InstanceActivity
from
.activity
import
InstanceActivity
from
.activity
import
NodeActivity
from
.activity
import
node_activity
from
.common
import
BaseResourceConfigModel
from
.common
import
BaseResourceConfigModel
from
.common
import
Lease
from
.common
import
Lease
from
.common
import
NamedBaseResourceConfig
from
.common
import
NamedBaseResourceConfig
...
@@ -13,12 +11,10 @@ from .instance import post_state_changed
...
@@ -13,12 +11,10 @@ from .instance import post_state_changed
from
.instance
import
pre_state_changed
from
.instance
import
pre_state_changed
from
.network
import
InterfaceTemplate
from
.network
import
InterfaceTemplate
from
.network
import
Interface
from
.network
import
Interface
from
.node
import
Node
__all__
=
[
__all__
=
[
'InstanceActivity'
,
'BaseResourceConfigModel'
,
'InstanceActivity'
,
'BaseResourceConfigModel'
,
'NamedBaseResourceConfig'
,
'VirtualMachineDescModel'
,
'InstanceTemplate'
,
'NamedBaseResourceConfig'
,
'VirtualMachineDescModel'
,
'InstanceTemplate'
,
'Instance'
,
'post_state_changed'
,
'pre_state_changed'
,
'InterfaceTemplate'
,
'Instance'
,
'post_state_changed'
,
'pre_state_changed'
,
'InterfaceTemplate'
,
'Interface'
,
'Trait'
,
'Node'
,
'NodeActivity'
,
'Lease'
,
'node_activity'
,
'Interface'
,
'Trait'
,
'NodeActivity'
,
'Lease'
,
'node_activity'
'pwgen'
]
]
circle/vm/models/activity.py
View file @
c4d12b46
...
@@ -196,71 +196,6 @@ class InstanceActivity(ActivityModel):
...
@@ -196,71 +196,6 @@ class InstanceActivity(ActivityModel):
return
self
.
instance
.
get_operation_from_activity_code
(
return
self
.
instance
.
get_operation_from_activity_code
(
self
.
activity_code
)
self
.
activity_code
)
class
NodeActivity
(
ActivityModel
):
ACTIVITY_CODE_BASE
=
join_activity_code
(
'vm'
,
'Node'
)
node
=
ForeignKey
(
'Node'
,
related_name
=
'activity_log'
,
help_text
=
_
(
'Node this activity works on.'
),
verbose_name
=
_
(
'node'
))
class
Meta
:
app_label
=
'vm'
db_table
=
'vm_nodeactivity'
def
get_operation
(
self
):
return
self
.
node
.
get_operation_from_activity_code
(
self
.
activity_code
)
def
get_absolute_url
(
self
):
return
reverse
(
'dashboard.views.node-activity'
,
args
=
[
self
.
pk
])
def
__unicode__
(
self
):
if
self
.
parent
:
return
'{}({})->{}'
.
format
(
self
.
parent
.
activity_code
,
self
.
node
,
self
.
activity_code
)
else
:
return
'{}({})'
.
format
(
self
.
activity_code
,
self
.
node
)
@classmethod
def
create
(
cls
,
code_suffix
,
node
,
task_uuid
=
None
,
user
=
None
,
readable_name
=
None
):
readable_name
=
_normalize_readable_name
(
readable_name
,
code_suffix
)
activity_code
=
join_activity_code
(
cls
.
ACTIVITY_CODE_BASE
,
code_suffix
)
act
=
cls
(
activity_code
=
activity_code
,
node
=
node
,
parent
=
None
,
readable_name_data
=
readable_name
.
to_dict
(),
started
=
timezone
.
now
(),
task_uuid
=
task_uuid
,
user
=
user
)
act
.
save
()
return
act
def
create_sub
(
self
,
code_suffix
,
task_uuid
=
None
,
readable_name
=
None
):
readable_name
=
_normalize_readable_name
(
readable_name
,
code_suffix
)
act
=
NodeActivity
(
activity_code
=
join_activity_code
(
self
.
activity_code
,
code_suffix
),
node
=
self
.
node
,
parent
=
self
,
started
=
timezone
.
now
(),
readable_name_data
=
readable_name
.
to_dict
(),
task_uuid
=
task_uuid
,
user
=
self
.
user
)
act
.
save
()
return
act
@contextmanager
def
sub_activity
(
self
,
code_suffix
,
task_uuid
=
None
,
readable_name
=
None
):
act
=
self
.
create_sub
(
code_suffix
,
task_uuid
,
readable_name
=
readable_name
)
return
activitycontextimpl
(
act
)
@contextmanager
def
node_activity
(
code_suffix
,
node
,
task_uuid
=
None
,
user
=
None
,
readable_name
=
None
):
act
=
NodeActivity
.
create
(
code_suffix
,
node
,
task_uuid
,
user
,
readable_name
=
readable_name
)
return
activitycontextimpl
(
act
)
def
cleanup
(
conf
=
None
,
**
kwargs
):
def
cleanup
(
conf
=
None
,
**
kwargs
):
# TODO check if other manager workers are running
# TODO check if other manager workers are running
msg_txt
=
ugettext_noop
(
"Manager is restarted, activity is cleaned up. "
msg_txt
=
ugettext_noop
(
"Manager is restarted, activity is cleaned up. "
...
...
circle/vm/models/instance.py
View file @
c4d12b46
...
@@ -51,7 +51,6 @@ from ..tasks import agent_tasks
...
@@ -51,7 +51,6 @@ from ..tasks import agent_tasks
from
.activity
import
(
ActivityInProgressError
,
InstanceActivity
)
from
.activity
import
(
ActivityInProgressError
,
InstanceActivity
)
from
.common
import
BaseResourceConfigModel
,
Lease
from
.common
import
BaseResourceConfigModel
,
Lease
from
.network
import
Interface
from
.network
import
Interface
from
.node
import
Node
,
Trait
from
network.models
import
EditorElement
from
network.models
import
EditorElement
...
@@ -109,11 +108,6 @@ class VirtualMachineDescModel(BaseResourceConfigModel):
...
@@ -109,11 +108,6 @@ class VirtualMachineDescModel(BaseResourceConfigModel):
verbose_name
=
_
(
"Lease"
))
verbose_name
=
_
(
"Lease"
))
raw_data
=
TextField
(
verbose_name
=
_
(
'raw_data'
),
blank
=
True
,
help_text
=
_
(
raw_data
=
TextField
(
verbose_name
=
_
(
'raw_data'
),
blank
=
True
,
help_text
=
_
(
'Additional libvirt domain parameters in XML format.'
))
'Additional libvirt domain parameters in XML format.'
))
req_traits
=
ManyToManyField
(
Trait
,
blank
=
True
,
help_text
=
_
(
"A set of traits required for a "
"node to declare to be suitable "
"for hosting the VM."
),
verbose_name
=
_
(
"required traits"
))
system
=
TextField
(
verbose_name
=
_
(
'operating system'
),
system
=
TextField
(
verbose_name
=
_
(
'operating system'
),
help_text
=
(
_
(
'Name of operating system in format like '
help_text
=
(
_
(
'Name of operating system in format like '
'"Ubuntu 12.04 LTS Desktop amd64".'
)))
'"Ubuntu 12.04 LTS Desktop amd64".'
)))
...
@@ -222,10 +216,6 @@ class Instance(OperatedMixin, TimeStampedModel):
...
@@ -222,10 +216,6 @@ class Instance(OperatedMixin, TimeStampedModel):
verbose_name
=
_
(
'time of delete'
),
verbose_name
=
_
(
'time of delete'
),
help_text
=
_
(
"Proposed time of automatic "
help_text
=
_
(
"Proposed time of automatic "
"deletion."
))
"deletion."
))
node
=
ForeignKey
(
Node
,
blank
=
True
,
null
=
True
,
related_name
=
'instance_set'
,
help_text
=
_
(
"Current hypervisor of this instance."
),
verbose_name
=
_
(
'host node'
))
disks
=
ManyToManyField
(
'storage.Disk'
,
related_name
=
'instance_set'
,
disks
=
ManyToManyField
(
'storage.Disk'
,
related_name
=
'instance_set'
,
help_text
=
_
(
"Set of mounted disks."
),
help_text
=
_
(
"Set of mounted disks."
),
verbose_name
=
_
(
'disks'
))
verbose_name
=
_
(
'disks'
))
...
...
circle/vm/operations.py
View file @
c4d12b46
...
@@ -50,8 +50,7 @@ from .tasks.local_tasks import (
...
@@ -50,8 +50,7 @@ from .tasks.local_tasks import (
abortable_async_instance_operation
,
abortable_async_node_operation
,
abortable_async_instance_operation
,
abortable_async_node_operation
,
)
)
from
.models
import
(
from
.models
import
(
Instance
,
InstanceActivity
,
InstanceTemplate
,
Interface
,
Node
,
Instance
,
InstanceActivity
,
InstanceTemplate
,
Interface
NodeActivity
)
)
from
.tasks
import
agent_tasks
,
vm_tasks
from
.tasks
import
agent_tasks
,
vm_tasks
...
@@ -755,7 +754,7 @@ class RedeployOperation(InstanceOperation):
...
@@ -755,7 +754,7 @@ class RedeployOperation(InstanceOperation):
class
NodeOperation
(
Operation
):
class
NodeOperation
(
Operation
):
async_operation
=
abortable_async_node_operation
async_operation
=
abortable_async_node_operation
host_cls
=
No
d
e
host_cls
=
No
n
e
online_required
=
True
online_required
=
True
superuser_required
=
True
superuser_required
=
True
...
@@ -790,195 +789,195 @@ class NodeOperation(Operation):
...
@@ -790,195 +789,195 @@ class NodeOperation(Operation):
code_suffix
=
self
.
get_activity_code_suffix
(),
node
=
self
.
node
,
code_suffix
=
self
.
get_activity_code_suffix
(),
node
=
self
.
node
,
user
=
user
,
readable_name
=
name
)
user
=
user
,
readable_name
=
name
)
#
@register_operation
#
@register_operation
class
ResetNodeOperation
(
NodeOperation
):
#
class ResetNodeOperation(NodeOperation):
id
=
'reset'
#
id = 'reset'
name
=
_
(
"reset"
)
#
name = _("reset")
description
=
_
(
"Disable missing node and redeploy all instances "
#
description = _("Disable missing node and redeploy all instances "
"on other ones."
)
#
"on other ones.")
required_perms
=
()
#
required_perms = ()
online_required
=
False
#
online_required = False
async_queue
=
"localhost.man.slow"
#
async_queue = "localhost.man.slow"
#
def
check_precond
(
self
):
#
def check_precond(self):
super
(
ResetNodeOperation
,
self
)
.
check_precond
()
#
super(ResetNodeOperation, self).check_precond()
if
not
self
.
node
.
enabled
or
self
.
node
.
online
:
#
if not self.node.enabled or self.node.online:
raise
humanize_exception
(
ugettext_noop
(
#
raise humanize_exception(ugettext_noop(
"You cannot reset a disabled or online node."
),
Exception
())
#
"You cannot reset a disabled or online node."), Exception())
#
def
_operation
(
self
,
activity
,
user
):
#
def _operation(self, activity, user):
for
i
in
self
.
node
.
instance_set
.
all
():
#
for i in self.node.instance_set.all():
name
=
create_readable
(
ugettext_noop
(
#
name = create_readable(ugettext_noop(
"redeploy
%(instance)
s (
%(pk)
s)"
),
instance
=
i
.
name
,
pk
=
i
.
pk
)
#
"redeploy %(instance)s (%(pk)s)"), instance=i.name, pk=i.pk)
with
activity
.
sub_activity
(
'migrate_instance_
%
d'
%
i
.
pk
,
#
with activity.sub_activity('migrate_instance_%d' % i.pk,
readable_name
=
name
):
#
readable_name=name):
i
.
redeploy
(
user
=
user
)
#
i.redeploy(user=user)
#
self
.
node
.
enabled
=
False
#
self.node.enabled = False
self
.
node
.
schedule_enabled
=
False
#
self.node.schedule_enabled = False
self
.
node
.
save
()
#
self.node.save()
@register_operation
#
@register_operation
class
FlushOperation
(
NodeOperation
):
#
class FlushOperation(NodeOperation):
id
=
'flush'
#
id = 'flush'
name
=
_
(
"flush"
)
#
name = _("flush")
description
=
_
(
"Passivate node and move all instances to other ones."
)
#
description = _("Passivate node and move all instances to other ones.")
required_perms
=
()
#
required_perms = ()
async_queue
=
"localhost.man.slow"
#
async_queue = "localhost.man.slow"
#
def
_operation
(
self
,
activity
,
user
):
#
def _operation(self, activity, user):
if
self
.
node
.
schedule_enabled
:
#
if self.node.schedule_enabled:
PassivateOperation
(
self
.
node
)
.
call
(
parent_activity
=
activity
,
#
PassivateOperation(self.node).call(parent_activity=activity,
user
=
user
)
#
user=user)
for
i
in
self
.
node
.
instance_set
.
all
():
#
for i in self.node.instance_set.all():
name
=
create_readable
(
ugettext_noop
(
#
name = create_readable(ugettext_noop(
"migrate
%(instance)
s (
%(pk)
s)"
),
instance
=
i
.
name
,
pk
=
i
.
pk
)
#
"migrate %(instance)s (%(pk)s)"), instance=i.name, pk=i.pk)
with
activity
.
sub_activity
(
'migrate_instance_
%
d'
%
i
.
pk
,
#
with activity.sub_activity('migrate_instance_%d' % i.pk,
readable_name
=
name
):
#
readable_name=name):
i
.
migrate
(
user
=
user
)
#
i.migrate(user=user)
#
#
@register_operation
#
@register_operation
class
ActivateOperation
(
NodeOperation
):
#
class ActivateOperation(NodeOperation):
id
=
'activate'
#
id = 'activate'
name
=
_
(
"activate"
)
#
name = _("activate")
description
=
_
(
"Make node active, i.e. scheduler is allowed to deploy "
#
description = _("Make node active, i.e. scheduler is allowed to deploy "
"virtual machines to it."
)
#
"virtual machines to it.")
required_perms
=
()
#
required_perms = ()
#
def
check_precond
(
self
):
#
def check_precond(self):
super
(
ActivateOperation
,
self
)
.
check_precond
()
#
super(ActivateOperation, self).check_precond()
if
self
.
node
.
enabled
and
self
.
node
.
schedule_enabled
:
#
if self.node.enabled and self.node.schedule_enabled:
raise
humanize_exception
(
ugettext_noop
(
#
raise humanize_exception(ugettext_noop(
"You cannot activate an active node."
),
Exception
())
#
"You cannot activate an active node."), Exception())
#
def
_operation
(
self
):
#
def _operation(self):
self
.
node
.
enabled
=
True
#
self.node.enabled = True
self
.
node
.
schedule_enabled
=
True
#
self.node.schedule_enabled = True
self
.
node
.
get_info
(
invalidate_cache
=
True
)
#
self.node.get_info(invalidate_cache=True)
self
.
node
.
save
()
#
self.node.save()
#
#
@register_operation
#
@register_operation
class
PassivateOperation
(
NodeOperation
):
#
class PassivateOperation(NodeOperation):
id
=
'passivate'
#
id = 'passivate'
name
=
_
(
"passivate"
)
#
name = _("passivate")
description
=
_
(
"Make node passive, i.e. scheduler is denied to deploy "
#
description = _("Make node passive, i.e. scheduler is denied to deploy "
"virtual machines to it, but remaining instances and "
#
"virtual machines to it, but remaining instances and "
"the ones manually migrated will continue running."
)
#
"the ones manually migrated will continue running.")
required_perms
=
()
#
required_perms = ()
#
def
check_precond
(
self
):
#
def check_precond(self):
if
self
.
node
.
enabled
and
not
self
.
node
.
schedule_enabled
:
#
if self.node.enabled and not self.node.schedule_enabled:
raise
humanize_exception
(
ugettext_noop
(
#
raise humanize_exception(ugettext_noop(
"You cannot passivate a passive node."
),
Exception
())
#
"You cannot passivate a passive node."), Exception())
super
(
PassivateOperation
,
self
)
.
check_precond
()
#
super(PassivateOperation, self).check_precond()
#
def
_operation
(
self
):
#
def _operation(self):
self
.
node
.
enabled
=
True
#
self.node.enabled = True
self
.
node
.
schedule_enabled
=
False
#
self.node.schedule_enabled = False
self
.
node
.
get_info
(
invalidate_cache
=
True
)
#
self.node.get_info(invalidate_cache=True)
self
.
node
.
save
()
#
self.node.save()
#
#
@register_operation
#
@register_operation
class
DisableOperation
(
NodeOperation
):
#
class DisableOperation(NodeOperation):
id
=
'disable'
#
id = 'disable'
name
=
_
(
"disable"
)
#
name = _("disable")
description
=
_
(
"Disable node."
)
#
description = _("Disable node.")
required_perms
=
()
#
required_perms = ()
online_required
=
False
#
online_required = False
#
def
check_precond
(
self
):
#
def check_precond(self):
if
not
self
.
node
.
enabled
:
#
if not self.node.enabled:
raise
humanize_exception
(
ugettext_noop
(
#
raise humanize_exception(ugettext_noop(
"You cannot disable a disabled node."
),
Exception
())
#
"You cannot disable a disabled node."), Exception())
if
self
.
node
.
instance_set
.
exists
():
#
if self.node.instance_set.exists():
raise
humanize_exception
(
ugettext_noop
(
#
raise humanize_exception(ugettext_noop(
"You cannot disable a node which is hosting instances."
),
#
"You cannot disable a node which is hosting instances."),
Exception
())
#
Exception())
super
(
DisableOperation
,
self
)
.
check_precond
()
#
super(DisableOperation, self).check_precond()
#
def
_operation
(
self
):
#
def _operation(self):
self
.
node
.
enabled
=
False
#
self.node.enabled = False
self
.
node
.
schedule_enabled
=
False
#
self.node.schedule_enabled = False
self
.
node
.
save
()
#
self.node.save()
#
#
@register_operation
#
@register_operation
class
UpdateNodeOperation
(
NodeOperation
):
#
class UpdateNodeOperation(NodeOperation):
id
=
'update_node'
#
id = 'update_node'
name
=
_
(
"update node"
)
#
name = _("update node")
description
=
_
(
"Upgrade or install node software (vmdriver, agentdriver, "
#
description = _("Upgrade or install node software (vmdriver, agentdriver, "
"monitor-client) with Salt."
)
#
"monitor-client) with Salt.")
required_perms
=
()
#
required_perms = ()
online_required
=
False
#
online_required = False
async_queue
=
"localhost.man.slow"
#
async_queue = "localhost.man.slow"
#
def
minion_cmd
(
self
,
module
,
params
,
timeout
=
3600
):
#
def minion_cmd(self, module, params, timeout=3600):
# see https://git.ik.bme.hu/circle/cloud/issues/377
#
# see https://git.ik.bme.hu/circle/cloud/issues/377
from
salt.client
import
LocalClient
#
from salt.client import LocalClient
name
=
self
.
node
.
host
.
hostname
#
name = self.node.host.hostname
client
=
LocalClient
()
#
client = LocalClient()
data
=
client
.
cmd
(
#
data = client.cmd(
name
,
module
,
params
,
timeout
=
timeout
)
#
name, module, params, timeout=timeout)
#
try
:
#
try:
data
=
data
[
name
]
#
data = data[name]
except
KeyError
:
#
except KeyError:
raise
HumanReadableException
.
create
(
ugettext_noop
(
#
raise HumanReadableException.create(ugettext_noop(
"No minions matched the target (
%(target)
s). "
#
"No minions matched the target (%(target)s). "
"Data: (
%(data)
s)"
),
target
=
name
,
data
=
data
)
#
"Data: (%(data)s)"), target=name, data=data)
#
if
not
isinstance
(
data
,
dict
):
#
if not isinstance(data, dict):
raise
HumanReadableException
.
create
(
ugettext_noop
(
#
raise HumanReadableException.create(ugettext_noop(
"Unhandled exception:
%(msg)
s"
),
msg
=
unicode
(
data
))
#
"Unhandled exception: %(msg)s"), msg=unicode(data))
#
return
data
#
return data
#
def
_operation
(
self
,
activity
):
#
def _operation(self, activity):
with
activity
.
sub_activity
(
#
with activity.sub_activity(
'upgrade_packages'
,
#
'upgrade_packages',
readable_name
=
ugettext_noop
(
'upgrade packages'
))
as
sa
:
#
readable_name=ugettext_noop('upgrade packages')) as sa:
data
=
self
.
minion_cmd
(
'pkg.upgrade'
,
[])
#
data = self.minion_cmd('pkg.upgrade', [])
if
not
data
.
get
(
'result'
):
#
if not data.get('result'):
raise
HumanReadableException
.
create
(
ugettext_noop
(
#
raise HumanReadableException.create(ugettext_noop(
"Unhandled exception:
%(msg)
s"
),
msg
=
unicode
(
data
))
#
"Unhandled exception: %(msg)s"), msg=unicode(data))
#
# data = {'vim': {'new': '1.2.7', 'old': '1.3.7'}}
#
# data = {'vim': {'new': '1.2.7', 'old': '1.3.7'}}
data
=
[
v
for
v
in
data
.
values
()
if
isinstance
(
v
,
dict
)]
#
data = [v for v in data.values() if isinstance(v, dict)]
upgraded
=
len
([
x
for
x
in
data
#
upgraded = len([x for x in data
if
x
.
get
(
'old'
)
and
x
.
get
(
'new'
)])
#
if x.get('old') and x.get('new')])
installed
=
len
([
x
for
x
in
data
#
installed = len([x for x in data
if
not
x
.
get
(
'old'
)
and
x
.
get
(
'new'
)])
#
if not x.get('old') and x.get('new')])
removed
=
len
([
x
for
x
in
data
#
removed = len([x for x in data
if
x
.
get
(
'old'
)
and
not
x
.
get
(
'new'
)])
#
if x.get('old') and not x.get('new')])
sa
.
result
=
create_readable
(
ugettext_noop
(
#
sa.result = create_readable(ugettext_noop(
"Upgraded:
%(upgraded)
s, Installed:
%(installed)
s, "
#
"Upgraded: %(upgraded)s, Installed: %(installed)s, "
"Removed:
%(removed)
s"
),
upgraded
=
upgraded
,
#
"Removed: %(removed)s"), upgraded=upgraded,
installed
=
installed
,
removed
=
removed
)
#
installed=installed, removed=removed)
#
data
=
self
.
minion_cmd
(
'state.sls'
,
[
'node'
])
#
data = self.minion_cmd('state.sls', ['node'])
failed
=
0
#
failed = 0
for
k
,
v
in
data
.
iteritems
():
#
for k, v in data.iteritems():
logger
.
debug
(
'salt state
%
s
%
s'
,
k
,
v
)
#
logger.debug('salt state %s %s', k, v)
act_name
=
': '
.
join
(
k
.
split
(
'_|-'
)[:
2
])
#
act_name = ': '.join(k.split('_|-')[:2])
if
not
v
[
"result"
]
or
v
[
"changes"
]:
#
if not v["result"] or v["changes"]:
act
=
activity
.
create_sub
(
#
act = activity.create_sub(
act_name
[:
70
],
readable_name
=
act_name
)
#
act_name[:70], readable_name=act_name)
act
.
result
=
create_readable
(
ugettext_noop
(
#
act.result = create_readable(ugettext_noop(
"Changes:
%(changes)
s Comment:
%(comment)
s"
),
#
"Changes: %(changes)s Comment: %(comment)s"),
changes
=
v
[
"changes"
],
comment
=
v
[
"comment"
])
#
changes=v["changes"], comment=v["comment"])
act
.
finish
(
v
[
"result"
])
#
act.finish(v["result"])
if
not
v
[
"result"
]:
#
if not v["result"]:
failed
+=
1
#
failed += 1
#
if
failed
:
#
if failed:
raise
HumanReadableException
.
create
(
ugettext_noop
(
#
raise HumanReadableException.create(ugettext_noop(
"Failed:
%(failed)
s"
),
failed
=
failed
)
#
"Failed: %(failed)s"), failed=failed)
#
@register_operation
@register_operation
class
ScreenshotOperation
(
RemoteInstanceOperation
):
class
ScreenshotOperation
(
RemoteInstanceOperation
):
...
...
requirements/circlestack.txt
View file @
c4d12b46
...
@@ -59,15 +59,11 @@ jsonschema==2.6.0
...
@@ -59,15 +59,11 @@ jsonschema==2.6.0
keystoneauth1==3.4.0
keystoneauth1==3.4.0
kombu==3.0.30
kombu==3.0.30
logutils==0.3.3
logutils==0.3.3
lxml==3.4.4
MarkupSafe==1.0
MarkupSafe==0.23
microsofttranslator==0.8
models==0.9.3
monotonic==1.4
monotonic==1.4
msgpack==0.5.4
msgpack==0.5.4
msgpack-python==0.5.4
msgpack-python==0.5.4
munch==2.2.0
munch==2.2.0
MySQL-python==1.2.5
netaddr==0.7.19
netaddr==0.7.19
netifaces==0.10.6
netifaces==0.10.6
nltk==3.2.5
nltk==3.2.5
...
@@ -95,14 +91,12 @@ ply==3.10
...
@@ -95,14 +91,12 @@ ply==3.10
polib==1.1.0
polib==1.1.0
prettytable==0.7.2
prettytable==0.7.2
prompt-toolkit==1.0.15
prompt-toolkit==1.0.15
psycopg2==2.6
ptyprocess==0.5.2
ptyprocess==0.5.2
pyasn1==0.4.2
pyasn1==0.4.2
pycparser==2.18
pycparser==2.18
pycryptodomex==3.4.12
pycryptodomex==3.4.12
Pygments==2.0.2
Pygments==2.0.2
pyinotify==0.9.5
pyinotify==0.9.5
pylibmc==1.4.3
PyNaCl==1.2.1
PyNaCl==1.2.1
pyOpenSSL==17.5.0
pyOpenSSL==17.5.0
pyotp==2.1.1
pyotp==2.1.1
...
@@ -122,7 +116,6 @@ requests==2.18.4
...
@@ -122,7 +116,6 @@ requests==2.18.4
requestsexceptions==1.4.0
requestsexceptions==1.4.0
rfc3986==1.1.0
rfc3986==1.1.0
rosetta==0.3
rosetta==0.3
salt==2014.7.0
scandir==1.7
scandir==1.7
scipy==1.0.0
scipy==1.0.0
semantic-version==2.6.0
semantic-version==2.6.0
...
...
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