Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
CIRCLE
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
94
Merge Requests
10
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
9c20e518
authored
Oct 21, 2015
by
Dudás Ádám
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'flake8fixes' into 'master'
Fix flake8 warnings Closes
#429
See merge request
!355
parents
0282e224
46323c27
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
70 additions
and
69 deletions
+70
-69
circle/acl/models.py
+2
-2
circle/circle/wsgi.py
+1
-1
circle/common/models.py
+4
-4
circle/dashboard/autocomplete_light_registry.py
+4
-4
circle/dashboard/forms.py
+4
-4
circle/dashboard/management/commands/init.py
+2
-2
circle/dashboard/tests/selenium/util.py
+2
-2
circle/dashboard/views/user.py
+2
-2
circle/dashboard/views/vm.py
+7
-6
circle/firewall/fields.py
+4
-4
circle/firewall/models.py
+2
-2
circle/manager/scheduler.py
+2
-2
circle/monitor/tasks/local_periodic_tasks.py
+3
-3
circle/network/views.py
+2
-2
circle/vm/models/activity.py
+2
-2
circle/vm/models/common.py
+2
-2
circle/vm/models/instance.py
+2
-2
circle/vm/operations.py
+23
-23
No files found.
circle/acl/models.py
View file @
9c20e518
...
...
@@ -246,8 +246,8 @@ class AclBase(Model):
def
save
(
self
,
*
args
,
**
kwargs
):
super
(
AclBase
,
self
)
.
save
(
*
args
,
**
kwargs
)
if
'owner'
in
dict
(
self
.
ACL_LEVELS
)
and
(
hasattr
(
self
,
'owner'
)
and
self
.
owner
):
if
'owner'
in
dict
(
self
.
ACL_LEVELS
)
and
(
hasattr
(
self
,
'owner'
)
and
self
.
owner
):
self
.
set_user_level
(
self
.
owner
,
'owner'
)
class
Meta
:
...
...
circle/circle/wsgi.py
View file @
9c20e518
...
...
@@ -46,7 +46,7 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "circle.settings.production")
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from
django.core.wsgi
import
get_wsgi_application
from
django.core.wsgi
import
get_wsgi_application
# noqa
_application
=
get_wsgi_application
()
...
...
circle/common/models.py
View file @
9c20e518
...
...
@@ -97,7 +97,7 @@ def has_prefix(activity_code, *prefixes):
>>> assert has_prefix('foo.bar.buz', 'foo', 'bar', 'buz')
>>> assert not has_prefix('foo.bar.buz', 'foo', 'buz')
"""
equal
=
lambda
a
,
b
:
a
==
b
def
equal
(
a
,
b
):
return
a
==
b
act_code_parts
=
split_activity_code
(
activity_code
)
prefixes
=
chain
(
*
imap
(
split_activity_code
,
prefixes
))
return
all
(
imap
(
equal
,
act_code_parts
,
prefixes
))
...
...
@@ -112,7 +112,7 @@ def has_suffix(activity_code, *suffixes):
>>> assert has_suffix('foo.bar.buz', 'foo', 'bar', 'buz')
>>> assert not has_suffix('foo.bar.buz', 'foo', 'buz')
"""
equal
=
lambda
a
,
b
:
a
==
b
def
equal
(
a
,
b
):
return
a
==
b
act_code_parts
=
split_activity_code
(
activity_code
)
suffixes
=
list
(
chain
(
*
imap
(
split_activity_code
,
suffixes
)))
return
all
(
imap
(
equal
,
reversed
(
act_code_parts
),
reversed
(
suffixes
)))
...
...
@@ -441,8 +441,8 @@ class HumanReadableObject(object):
@classmethod
def
create
(
cls
,
user_text_template
,
admin_text_template
=
None
,
**
params
):
return
cls
(
user_text_template
=
user_text_template
,
admin_text_template
=
(
admin_text_template
or
user_text_template
),
params
=
params
)
admin_text_template
=
(
admin_text_template
or
user_text_template
),
params
=
params
)
def
set
(
self
,
user_text_template
,
admin_text_template
=
None
,
**
params
):
self
.
_set_values
(
user_text_template
,
...
...
circle/dashboard/autocomplete_light_registry.py
View file @
9c20e518
...
...
@@ -38,10 +38,10 @@ def highlight(field, q, none_wo_match=True):
match
=
None
if
q
and
match
is
not
None
:
match_end
=
match
+
len
(
q
)
return
(
escape
(
field
[:
match
])
+
'<span class="autocomplete-hl">'
+
escape
(
field
[
match
:
match_end
])
+
'</span>'
+
escape
(
field
[
match_end
:]))
return
(
escape
(
field
[:
match
])
+
'<span class="autocomplete-hl">'
+
escape
(
field
[
match
:
match_end
])
+
'</span>'
+
escape
(
field
[
match_end
:]))
elif
none_wo_match
:
return
None
else
:
...
...
circle/dashboard/forms.py
View file @
9c20e518
...
...
@@ -506,8 +506,8 @@ class TemplateForm(forms.ModelForm):
self
.
allowed_fields
=
(
'name'
,
'access_method'
,
'description'
,
'system'
,
'tags'
,
'arch'
,
'lease'
,
'has_agent'
)
if
(
self
.
user
.
has_perm
(
'vm.change_template_resources'
)
or
not
self
.
instance
.
pk
):
if
(
self
.
user
.
has_perm
(
'vm.change_template_resources'
)
or
not
self
.
instance
.
pk
):
self
.
allowed_fields
+=
tuple
(
set
(
self
.
fields
.
keys
())
-
set
([
'raw_data'
]))
if
self
.
user
.
is_superuser
:
...
...
@@ -523,8 +523,8 @@ class TemplateForm(forms.ModelForm):
self
.
initial
[
'max_ram_size'
]
=
512
lease_queryset
=
(
Lease
.
get_objects_with_level
(
"operator"
,
self
.
user
)
.
distinct
()
|
Lease
.
objects
.
filter
(
pk
=
self
.
instance
.
lease_id
)
.
distinct
())
Lease
.
get_objects_with_level
(
"operator"
,
self
.
user
)
.
distinct
()
|
Lease
.
objects
.
filter
(
pk
=
self
.
instance
.
lease_id
)
.
distinct
())
self
.
fields
[
"lease"
]
.
queryset
=
lease_queryset
...
...
circle/dashboard/management/commands/init.py
View file @
9c20e518
...
...
@@ -64,8 +64,8 @@ class Command(BaseCommand):
def
handle
(
self
,
*
args
,
**
options
):
self
.
changed
=
False
if
(
DataStore
.
objects
.
exists
()
and
Vlan
.
objects
.
exists
()
and
not
options
[
'force'
]):
if
(
DataStore
.
objects
.
exists
()
and
Vlan
.
objects
.
exists
()
and
not
options
[
'force'
]):
return
self
.
print_state
()
admin
=
self
.
create
(
User
,
'username'
,
username
=
options
[
'admin_user'
],
...
...
circle/dashboard/tests/selenium/util.py
View file @
9c20e518
...
...
@@ -601,8 +601,8 @@ class CircleSeleniumMixin(SeleniumMixin):
choices
=
self
.
driver
.
find_elements_by_css_selector
(
"input[type='radio']"
)
choice_list
=
[
item
for
item
in
choices
if
(
'test'
not
in
item
.
get_attribute
(
'value'
)
and
item
.
get_attribute
(
'value'
)
!=
'base_vm'
)]
'test'
not
in
item
.
get_attribute
(
'value'
)
and
item
.
get_attribute
(
'value'
)
!=
'base_vm'
)]
chosen
=
random
.
randint
(
0
,
len
(
choice_list
)
-
1
)
choice_list
[
chosen
]
.
click
()
self
.
driver
.
find_element_by_id
(
...
...
circle/dashboard/views/user.py
View file @
9c20e518
...
...
@@ -545,8 +545,8 @@ class UserList(LoginRequiredMixin, PermissionRequiredMixin, SingleTableView):
q
=
self
.
search_form
.
cleaned_data
.
get
(
's'
)
if
q
:
filters
=
(
Q
(
username__icontains
=
q
)
|
Q
(
email__icontains
=
q
)
|
Q
(
profile__org_id__icontains
=
q
))
filters
=
(
Q
(
username__icontains
=
q
)
|
Q
(
email__icontains
=
q
)
|
Q
(
profile__org_id__icontains
=
q
))
for
w
in
q
.
split
()[:
3
]:
filters
|=
(
Q
(
first_name__icontains
=
w
)
|
Q
(
last_name__icontains
=
w
))
...
...
circle/dashboard/views/vm.py
View file @
9c20e518
...
...
@@ -150,8 +150,8 @@ class VmDetailView(GraphMixin, CheckedDetailView):
# resources forms
can_edit
=
(
instance
.
has_level
(
user
,
"owner"
)
and
self
.
request
.
user
.
has_perm
(
"vm.change_resources"
))
instance
.
has_level
(
user
,
"owner"
)
and
self
.
request
.
user
.
has_perm
(
"vm.change_resources"
))
context
[
'resources_form'
]
=
VmResourcesForm
(
can_edit
=
can_edit
,
instance
=
instance
)
...
...
@@ -569,8 +569,8 @@ class VmResourcesChangeView(VmOperationView):
content_type
=
"application=json"
)
else
:
return
HttpResponseRedirect
(
instance
.
get_absolute_url
()
+
"#resources"
)
return
HttpResponseRedirect
(
instance
.
get_absolute_url
()
+
"#resources"
)
else
:
extra
=
form
.
cleaned_data
extra
[
'max_ram_size'
]
=
extra
[
'ram_size'
]
...
...
@@ -1261,8 +1261,9 @@ def vm_activity(request, pk):
response
[
'status'
]
=
instance
.
status
response
[
'icon'
]
=
instance
.
get_status_icon
()
latest
=
instance
.
get_latest_activity_in_progress
()
response
[
'is_new_state'
]
=
(
latest
and
latest
.
resultant_state
is
not
None
and
instance
.
status
!=
latest
.
resultant_state
)
response
[
'is_new_state'
]
=
(
latest
and
latest
.
resultant_state
is
not
None
and
instance
.
status
!=
latest
.
resultant_state
)
context
=
{
'instance'
:
instance
,
...
...
circle/firewall/fields.py
View file @
9c20e518
...
...
@@ -188,11 +188,11 @@ class IPNetworkField(models.Field):
if
isinstance
(
value
,
IPNetwork
):
if
self
.
version
==
4
:
return
(
'.'
.
join
(
"
%03
d"
%
x
for
x
in
value
.
ip
.
words
)
+
'/
%02
d'
%
value
.
prefixlen
)
return
(
'.'
.
join
(
"
%03
d"
%
x
for
x
in
value
.
ip
.
words
)
+
'/
%02
d'
%
value
.
prefixlen
)
else
:
return
(
':'
.
join
(
"
%04
X"
%
x
for
x
in
value
.
ip
.
words
)
+
'/
%03
d'
%
value
.
prefixlen
)
return
(
':'
.
join
(
"
%04
X"
%
x
for
x
in
value
.
ip
.
words
)
+
'/
%03
d'
%
value
.
prefixlen
)
return
value
def
formfield
(
self
,
**
kwargs
):
...
...
circle/firewall/models.py
View file @
9c20e518
...
...
@@ -700,8 +700,8 @@ class Host(models.Model):
return
self
.
vlan
.
network_type
!=
'public'
def
clean
(
self
):
if
(
self
.
external_ipv4
and
not
self
.
shared_ip
and
self
.
behind_nat
and
Host
.
objects
.
exclude
(
id
=
self
.
id
)
.
filter
(
if
(
self
.
external_ipv4
and
not
self
.
shared_ip
and
self
.
behind_nat
and
Host
.
objects
.
exclude
(
id
=
self
.
id
)
.
filter
(
external_ipv4
=
self
.
external_ipv4
)):
raise
ValidationError
(
_
(
"If shared_ip has been checked, "
"external_ipv4 has to be unique."
))
...
...
circle/manager/scheduler.py
View file @
9c20e518
...
...
@@ -55,8 +55,8 @@ def select_node(instance, nodes):
'''
# check required traits
nodes
=
[
n
for
n
in
nodes
if
n
.
schedule_enabled
and
n
.
online
and
has_traits
(
instance
.
req_traits
.
all
(),
n
)]
if
n
.
schedule_enabled
and
n
.
online
and
has_traits
(
instance
.
req_traits
.
all
(),
n
)]
if
not
nodes
:
logger
.
warning
(
'select_node: no usable node for
%
s'
,
unicode
(
instance
))
raise
TraitsUnsatisfiableException
()
...
...
circle/monitor/tasks/local_periodic_tasks.py
View file @
9c20e518
...
...
@@ -54,7 +54,7 @@ def measure_response_time():
@celery.task
(
ignore_result
=
True
)
def
check_celery_queues
():
graphite_string
=
lambda
component
,
hostname
,
celery
,
is_alive
,
time
:
(
def
graphite_string
(
component
,
hostname
,
celery
,
is_alive
,
time
):
return
(
"
%
s.
%
s.celery-queues.
%
s
%
d
%
s"
%
(
component
,
hostname
,
celery
,
1
if
is_alive
else
0
,
time
)
)
...
...
@@ -92,7 +92,7 @@ def check_celery_queues():
@celery.task
(
ignore_result
=
True
)
def
instance_per_template
():
graphite_string
=
lambda
pk
,
state
,
val
,
time
:
(
def
graphite_string
(
pk
,
state
,
val
,
time
):
return
(
"template.
%
d.instances.
%
s
%
d
%
s"
%
(
pk
,
state
,
val
,
time
)
)
...
...
@@ -111,7 +111,7 @@ def instance_per_template():
@celery.task
(
ignore_result
=
True
)
def
allocated_memory
():
graphite_string
=
lambda
hostname
,
val
,
time
:
(
def
graphite_string
(
hostname
,
val
,
time
):
return
(
"circle.
%
s.memory.allocated
%
d
%
s"
%
(
hostname
,
val
,
time
)
)
...
...
circle/network/views.py
View file @
9c20e518
...
...
@@ -979,8 +979,8 @@ def remove_switch_port_device(request, **kwargs):
def
add_switch_port_device
(
request
,
**
kwargs
):
device_name
=
request
.
POST
.
get
(
'device_name'
)
if
(
request
.
method
==
"POST"
and
device_name
and
len
(
device_name
)
>
0
and
EthernetDevice
.
objects
.
filter
(
name
=
device_name
)
.
count
()
==
0
):
if
(
request
.
method
==
"POST"
and
device_name
and
len
(
device_name
)
>
0
and
EthernetDevice
.
objects
.
filter
(
name
=
device_name
)
.
count
()
==
0
):
switch_port
=
SwitchPort
.
objects
.
get
(
pk
=
kwargs
[
'pk'
])
new_device
=
EthernetDevice
(
name
=
device_name
,
switch_port
=
switch_port
)
...
...
circle/vm/models/activity.py
View file @
9c20e518
...
...
@@ -145,8 +145,8 @@ class InstanceActivity(ActivityModel):
def
has_percentage
(
self
):
op
=
self
.
instance
.
get_operation_from_activity_code
(
self
.
activity_code
)
return
(
self
.
task_uuid
and
op
and
op
.
has_percentage
and
not
self
.
finished
)
return
(
self
.
task_uuid
and
op
and
op
.
has_percentage
and
not
self
.
finished
)
def
get_percentage
(
self
):
"""Returns the percentage of the running operation if available.
...
...
circle/vm/models/common.py
View file @
9c20e518
...
...
@@ -174,6 +174,6 @@ class Trait(Model):
@property
def
in_use
(
self
):
return
(
self
.
instance_set
.
exists
()
or
self
.
node_set
.
exists
()
or
self
.
instancetemplate_set
.
exists
()
self
.
instance_set
.
exists
()
or
self
.
node_set
.
exists
()
or
self
.
instancetemplate_set
.
exists
()
)
circle/vm/models/instance.py
View file @
9c20e518
...
...
@@ -852,8 +852,8 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin,
def
is_in_status_change
(
self
):
latest
=
self
.
get_latest_activity_in_progress
()
return
(
latest
and
latest
.
resultant_state
is
not
None
and
self
.
status
!=
latest
.
resultant_state
)
return
(
latest
and
latest
.
resultant_state
is
not
None
and
self
.
status
!=
latest
.
resultant_state
)
@property
def
metric_prefix
(
self
):
...
...
circle/vm/operations.py
View file @
9c20e518
...
...
@@ -133,8 +133,8 @@ class InstanceOperation(Operation):
super
(
InstanceOperation
,
self
)
.
check_auth
(
user
=
user
)
if
(
self
.
instance
.
node
and
not
self
.
instance
.
node
.
online
and
not
user
.
is_superuser
):
if
(
self
.
instance
.
node
and
not
self
.
instance
.
node
.
online
and
not
user
.
is_superuser
):
raise
self
.
instance
.
WrongStateError
(
self
.
instance
)
def
create_activity
(
self
,
parent
,
user
,
kwargs
):
...
...
@@ -534,8 +534,8 @@ class MigrateOperation(RemoteInstanceOperation):
remote_timeout
=
1000
def
_get_remote_args
(
self
,
to_node
,
live_migration
,
**
kwargs
):
return
(
super
(
MigrateOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
to_node
.
host
.
hostname
,
live_migration
])
return
(
super
(
MigrateOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
to_node
.
host
.
hostname
,
live_migration
])
def
rollback
(
self
,
activity
):
with
activity
.
sub_activity
(
...
...
@@ -908,8 +908,8 @@ class SleepOperation(InstanceOperation):
def
_get_remote_args
(
self
,
**
kwargs
):
return
(
super
(
SleepOperation
.
SuspendVmOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
self
.
instance
.
mem_dump
[
'path'
]])
.
_get_remote_args
(
**
kwargs
)
+
[
self
.
instance
.
mem_dump
[
'path'
]])
@register_operation
...
...
@@ -962,8 +962,8 @@ class WakeUpOperation(InstanceOperation):
def
_get_remote_args
(
self
,
**
kwargs
):
return
(
super
(
WakeUpOperation
.
WakeUpVmOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
self
.
instance
.
mem_dump
[
'path'
]])
.
_get_remote_args
(
**
kwargs
)
+
[
self
.
instance
.
mem_dump
[
'path'
]])
@register_operation
...
...
@@ -1408,9 +1408,9 @@ class PasswordResetOperation(RemoteAgentOperation):
task
=
agent_tasks
.
change_password
required_perms
=
()
def
_get_remote_args
(
self
,
password
,
**
kw
a
rgs
):
return
(
super
(
PasswordResetOperation
,
self
)
.
_get_remote_args
(
**
kw
args
)
+
[
password
])
def
_get_remote_args
(
self
,
password
,
**
kwrgs
):
return
(
super
(
PasswordResetOperation
,
self
)
.
_get_remote_args
(
**
kw
rgs
)
+
[
password
])
def
_operation
(
self
,
password
=
None
):
if
not
password
:
...
...
@@ -1433,8 +1433,8 @@ class InstallKeysOperation(RemoteAgentOperation):
def
_get_remote_args
(
self
,
user
,
keys
=
None
,
**
kwargs
):
if
keys
is
None
:
keys
=
list
(
user
.
userkey_set
.
values_list
(
'key'
,
flat
=
True
))
return
(
super
(
InstallKeysOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
keys
])
return
(
super
(
InstallKeysOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
keys
])
@register_operation
...
...
@@ -1446,8 +1446,8 @@ class RemoveKeysOperation(RemoteAgentOperation):
required_perms
=
()
def
_get_remote_args
(
self
,
user
,
keys
,
**
kwargs
):
return
(
super
(
RemoveKeysOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
keys
])
return
(
super
(
RemoveKeysOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
keys
])
@register_operation
...
...
@@ -1541,8 +1541,8 @@ class AgentStartedOperation(InstanceOperation):
def
_get_remote_args
(
self
,
**
kwargs
):
cls
=
AgentStartedOperation
.
SetTimeOperation
return
(
super
(
cls
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
time
.
time
()])
return
(
super
(
cls
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
time
.
time
()])
@register_operation
class
SetHostnameOperation
(
SubOperationMixin
,
RemoteAgentOperation
):
...
...
@@ -1552,8 +1552,8 @@ class AgentStartedOperation(InstanceOperation):
def
_get_remote_args
(
self
,
**
kwargs
):
cls
=
AgentStartedOperation
.
SetHostnameOperation
return
(
super
(
cls
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
self
.
instance
.
short_hostname
])
return
(
super
(
cls
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
self
.
instance
.
short_hostname
])
@register_operation
class
RestartNetworkingOperation
(
SubOperationMixin
,
RemoteAgentOperation
):
...
...
@@ -1572,8 +1572,8 @@ class AgentStartedOperation(InstanceOperation):
interfaces
=
{
str
(
host
.
mac
):
host
.
get_network_config
()
for
host
in
hosts
}
cls
=
AgentStartedOperation
.
ChangeIpOperation
return
(
super
(
cls
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
interfaces
,
settings
.
FIREWALL_SETTINGS
[
'rdns_ip'
]])
return
(
super
(
cls
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
interfaces
,
settings
.
FIREWALL_SETTINGS
[
'rdns_ip'
]])
@register_operation
...
...
@@ -1697,8 +1697,8 @@ class AbstractDiskOperation(SubOperationMixin, RemoteInstanceOperation):
required_perms
=
()
def
_get_remote_args
(
self
,
disk
,
**
kwargs
):
return
(
super
(
AbstractDiskOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
disk
.
get_vmdisk_desc
()])
return
(
super
(
AbstractDiskOperation
,
self
)
.
_get_remote_args
(
**
kwargs
)
+
[
disk
.
get_vmdisk_desc
()])
@register_operation
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment