Commit c4d12b46 by Szabolcs Gelencser

Remove some dead code and packages for easier install

parent 6315b419
...@@ -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>
......
...@@ -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="true"> <file leaf-file-name="instance.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/circle/circle/settings/base.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="760"> <state relative-caret-position="94">
<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="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>
</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="1071" column="0" lean-forward="false" selection-start-line="1071" selection-start-column="0" selection-end-line="1071" 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>
</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="64" /> <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="1924" /> <option name="width" value="1370" />
<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&#9;null&#9;null&#10;index-vm&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;index.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/views/index.py&#10;index&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index.html&#10;bas&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/base.py&#10;save&#9;null&#9;null&#10;plainc&#9;null&#9;null&#10;vmdeta&#9;null&#9;null&#10;templatedet&#9;null&#9;null&#10;instancetemp&#9;null&#9;null&#10;instancetem&#9;null&#9;null&#10;url&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;vmcreate&#9;null&#9;null&#10;base&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;opera&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;operations&#9;FILE&#9;file:///home/h3yduck/cloud/circle/common/operations.py&#10;templat&#9;null&#9;null&#10;vmadd&#9;null&#9;null&#10;vmdetail&#9;null&#9;null&#10;addinterfa&#9;null&#9;null&#10;addin&#9;null&#9;null&#10;server&#9;null&#9;null&#10;Instance&#9;null&#9;null&#10;instance&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/models/instance.py&#10;operat&#9;null&#9;null&#10;ins&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/models/instance.py&#10;vmdetai&#9;null&#9;null&#10;operationvi&#9;null&#9;null&#10;ser&#9;null&#9;null&#10;server.&#9;FILE&#9;file:///home/h3yduck/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/v2/servers.py&#10;resources.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/request/templates/request/initials/resources.html&#10;vm-de&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html&#10;vxla&#9;null&#9;null&#10;urls&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;index-v&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vxlans.html&#10;create&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-create.html&#10;vxl&#9;null&#9;null&#10;nov&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/nova.py&#10;nova.p&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/nova.py&#10;vmdetailv&#9;null&#9;null&#10;editor&#9;null&#9;null&#10;networktopo&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/static/js/horizon.networktopology.js&#10;bow&#9;FILE&#9;file:///home/h3yduck/cloud/circle/bower.json&#10;base.py&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;local&#9;null&#9;null&#10;vnc&#9;null&#9;null&#10;plain&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-plain-image-create.html&#10;forms&#9;null&#9;null&#10;vxlanform&#9;null&#9;null&#10;instanc&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/models/instance.py" /> <property name="SearchEverywhereHistoryKey" value="views.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_auth/views.py&#10;login.html&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/auth/login.html&#10;LoginVi&#9;null&#9;null&#10;indexv&#9;null&#9;null&#10;index-vm&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vm.html&#10;index.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/views/index.py&#10;index&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index.html&#10;bas&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/base.py&#10;save&#9;null&#9;null&#10;plainc&#9;null&#9;null&#10;vmdeta&#9;null&#9;null&#10;templatedet&#9;null&#9;null&#10;instancetemp&#9;null&#9;null&#10;instancetem&#9;null&#9;null&#10;url&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;vmcreate&#9;null&#9;null&#10;base&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;opera&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/operations.py&#10;operations&#9;FILE&#9;file:///home/h3yduck/cloud/circle/common/operations.py&#10;templat&#9;null&#9;null&#10;vmadd&#9;null&#9;null&#10;vmdetail&#9;null&#9;null&#10;addinterfa&#9;null&#9;null&#10;addin&#9;null&#9;null&#10;server&#9;null&#9;null&#10;Instance&#9;null&#9;null&#10;instance&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/models/instance.py&#10;operat&#9;null&#9;null&#10;ins&#9;FILE&#9;file:///home/h3yduck/cloud/circle/vm/models/instance.py&#10;vmdetai&#9;null&#9;null&#10;operationvi&#9;null&#9;null&#10;ser&#9;null&#9;null&#10;server.&#9;FILE&#9;file:///home/h3yduck/.virtualenvs/cloud/local/lib/python2.7/site-packages/novaclient/v2/servers.py&#10;resources.&#9;FILE&#9;file:///home/h3yduck/cloud/circle/request/templates/request/initials/resources.html&#10;vm-de&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/vm-detail.html&#10;vxla&#9;null&#9;null&#10;urls&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/urls.py&#10;index-v&#9;FILE&#9;file:///home/h3yduck/cloud/circle/dashboard/templates/dashboard/index-vxlans.html&#10;create&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/templates/network/vxlan-create.html&#10;vxl&#9;null&#9;null&#10;nov&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/nova.py&#10;nova.p&#9;FILE&#9;file:///home/h3yduck/cloud/circle/openstack_api/nova.py&#10;vmdetailv&#9;null&#9;null&#10;editor&#9;null&#9;null&#10;networktopo&#9;FILE&#9;file:///home/h3yduck/cloud/circle/network/static/js/horizon.networktopology.js&#10;bow&#9;FILE&#9;file:///home/h3yduck/cloud/circle/bower.json&#10;base.py&#9;FILE&#9;file:///home/h3yduck/cloud/circle/circle/settings/base.py&#10;local&#9;null&#9;null&#10;vnc&#9;null&#9;null&#10;plain&#9;FILE&#9;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.3255814" sideWeight="0.50745475" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32492113" sideWeight="0.50745475" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43023255" sideWeight="0.43610224" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43023255" sideWeight="0.43610224" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32769555" sideWeight="0.49574015" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32769555" sideWeight="0.49574015" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.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.23855165" 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.28096676" 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.32980973" 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.329653" 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="271" /> <option name="time" value="282" />
</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/handlers.py"> <entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/braces/views/_access.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/handlers.py"> <entry file="file://$PROJECT_DIR$/circle/request/urls.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/settings.py"> <entry file="file://$PROJECT_DIR$/circle/request/views.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_auth/plugin/password.py"> <entry file="file://$PROJECT_DIR$/circle/openstack_api/nova.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="422"> <state relative-caret-position="485">
<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="776" 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/urls.py"> <entry file="file://$PROJECT_DIR$/circle/openstack_auth/utils.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="289"> <state relative-caret-position="236">
<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="199"> <state relative-caret-position="1887">
<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/middleware.py"> <entry file="file://$USER_HOME$/.virtualenvs/cloud/local/lib/python2.7/site-packages/keystoneauth1/identity/v3/base.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="221"> <state relative-caret-position="2839">
<caret line="13" column="72" lean-forward="true" selection-start-line="13" selection-start-column="72" selection-end-line="13" selection-end-column="72" /> <caret line="175" 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/views.py"> <entry file="file://$PROJECT_DIR$/circle/circle/urls.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="284" column="22" lean-forward="false" selection-start-line="284" selection-start-column="22" selection-end-line="284" selection-end-column="22" /> <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 /> <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="30" />
<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>
......
No preview for this file type
...@@ -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
...@@ -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"),
# #
......
...@@ -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"))
# #
......
...@@ -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):
......
...@@ -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 %}
...@@ -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.
......
...@@ -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
......
...@@ -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)
......
...@@ -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)
# 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'
] ]
...@@ -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. "
......
...@@ -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'))
......
...@@ -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 = Node host_cls = None
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):
......
...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment