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
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
b560c0d5
authored
Nov 12, 2019
by
Bálint Máhonfai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Formatting fixes
parent
5179872f
Pipeline
#950
passed with stage
in 0 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
52 deletions
+48
-52
circle/vm/operations.py
+48
-52
No files found.
circle/vm/operations.py
View file @
b560c0d5
...
...
@@ -62,7 +62,6 @@ logger = getLogger(__name__)
class
RemoteOperationMixin
(
object
):
remote_timeout
=
30
def
_operation
(
self
,
**
kwargs
):
...
...
@@ -167,7 +166,6 @@ class InstanceOperation(Operation):
class
RemoteInstanceOperation
(
RemoteOperationMixin
,
InstanceOperation
):
remote_queue
=
(
'vm'
,
'fast'
)
def
_get_remote_queue
(
self
):
...
...
@@ -178,7 +176,7 @@ class RemoteInstanceOperation(RemoteOperationMixin, InstanceOperation):
class
EnsureAgentMixin
(
object
):
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
def
check_precond
(
self
):
super
(
EnsureAgentMixin
,
self
)
.
check_precond
()
...
...
@@ -198,7 +196,7 @@ class EnsureAgentMixin(object):
class
RemoteAgentOperation
(
EnsureAgentMixin
,
RemoteInstanceOperation
):
remote_queue
=
(
'agent'
,
)
remote_queue
=
(
'agent'
,)
concurrency_check
=
False
...
...
@@ -213,7 +211,7 @@ class AddInterfaceOperation(InstanceOperation):
def
rollback
(
self
,
net
,
activity
):
with
activity
.
sub_activity
(
'destroying_net'
,
'destroying_net'
,
readable_name
=
ugettext_noop
(
"destroy network (rollback)"
)):
net
.
destroy
()
net
.
delete
()
...
...
@@ -248,11 +246,10 @@ class AddInterfaceOperation(InstanceOperation):
@register_operation
class
CreateDiskOperation
(
InstanceOperation
):
id
=
'create_disk'
name
=
_
(
"create disk"
)
description
=
_
(
"Create and attach empty disk to the virtual machine."
)
required_perms
=
(
'storage.create_empty_disk'
,
)
required_perms
=
(
'storage.create_empty_disk'
,)
accept_states
=
(
'STOPPED'
,
'PENDING'
,
'RUNNING'
)
def
_operation
(
self
,
user
,
size
,
activity
,
name
=
None
):
...
...
@@ -271,8 +268,8 @@ class CreateDiskOperation(InstanceOperation):
if
self
.
instance
.
is_running
:
with
activity
.
sub_activity
(
'deploying_disk'
,
readable_name
=
ugettext_noop
(
"deploying disk"
)
'deploying_disk'
,
readable_name
=
ugettext_noop
(
"deploying disk"
)
):
disk
.
deploy
()
self
.
instance
.
_attach_disk
(
parent_activity
=
activity
,
disk
=
disk
)
...
...
@@ -285,13 +282,12 @@ class CreateDiskOperation(InstanceOperation):
@register_operation
class
ResizeDiskOperation
(
RemoteInstanceOperation
):
id
=
'resize_disk'
name
=
_
(
"resize disk"
)
description
=
_
(
"Resize the virtual disk image. "
"Size must be greater value than the actual size."
)
required_perms
=
(
'storage.resize_disk'
,
)
accept_states
=
(
'RUNNING'
,
)
required_perms
=
(
'storage.resize_disk'
,)
accept_states
=
(
'RUNNING'
,)
async_queue
=
"localhost.man.slow"
remote_queue
=
(
'vm'
,
'slow'
)
task
=
vm_tasks
.
resize_disk
...
...
@@ -324,7 +320,7 @@ class DownloadDiskOperation(InstanceOperation):
"machine."
)
abortable
=
True
has_percentage
=
True
required_perms
=
(
'storage.download_disk'
,
)
required_perms
=
(
'storage.download_disk'
,)
accept_states
=
(
'STOPPED'
,
'PENDING'
,
'RUNNING'
)
async_queue
=
"localhost.man.slow"
...
...
@@ -376,7 +372,6 @@ class ExportDiskOperation(InstanceOperation):
@register_operation
class
ImportDiskOperation
(
InstanceOperation
):
id
=
'import_disk'
name
=
_
(
'import disk'
)
description
=
_
(
'Import and attach a disk image to the virtual machine.'
)
...
...
@@ -438,8 +433,8 @@ class DeployOperation(InstanceOperation):
# Establish network connection (vmdriver)
with
activity
.
sub_activity
(
'deploying_net'
,
readable_name
=
ugettext_noop
(
"deploy network"
)):
'deploying_net'
,
readable_name
=
ugettext_noop
(
"deploy network"
)):
self
.
instance
.
deploy_net
()
try
:
...
...
@@ -460,7 +455,8 @@ class DeployOperation(InstanceOperation):
description
=
_
(
"Deploy virtual machine."
)
remote_queue
=
(
"vm"
,
"slow"
)
task
=
vm_tasks
.
deploy
remote_timeout
=
120
remote_timeout
=
120
def
_get_remote_args
(
self
,
**
kwargs
):
return
[
self
.
instance
.
get_vm_desc
()]
# intentionally not calling super
...
...
@@ -569,7 +565,7 @@ class MigrateOperation(RemoteInstanceOperation):
"keeping its full state."
)
required_perms
=
()
superuser_required
=
True
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
async_queue
=
"localhost.man.slow"
task
=
vm_tasks
.
migrate
remote_queue
=
(
"vm"
,
"slow"
)
...
...
@@ -581,8 +577,8 @@ class MigrateOperation(RemoteInstanceOperation):
def
rollback
(
self
,
activity
):
with
activity
.
sub_activity
(
'rollback_net'
,
readable_name
=
ugettext_noop
(
"redeploy network (rollback)"
)):
'rollback_net'
,
readable_name
=
ugettext_noop
(
"redeploy network (rollback)"
)):
self
.
instance
.
deploy_net
()
def
_operation
(
self
,
activity
,
to_node
=
None
,
live_migration
=
True
):
...
...
@@ -595,8 +591,8 @@ class MigrateOperation(RemoteInstanceOperation):
try
:
with
activity
.
sub_activity
(
'migrate_vm'
,
readable_name
=
create_readable
(
ugettext_noop
(
"migrate to
%(node)
s"
),
node
=
to_node
)):
'migrate_vm'
,
readable_name
=
create_readable
(
ugettext_noop
(
"migrate to
%(node)
s"
),
node
=
to_node
)):
super
(
MigrateOperation
,
self
)
.
_operation
(
to_node
=
to_node
,
live_migration
=
live_migration
)
except
Exception
as
e
:
...
...
@@ -606,8 +602,8 @@ class MigrateOperation(RemoteInstanceOperation):
# Shutdown networks
with
activity
.
sub_activity
(
'shutdown_net'
,
readable_name
=
ugettext_noop
(
"shutdown network"
)):
'shutdown_net'
,
readable_name
=
ugettext_noop
(
"shutdown network"
)):
self
.
instance
.
shutdown_net
()
# Refresh node information
...
...
@@ -616,8 +612,8 @@ class MigrateOperation(RemoteInstanceOperation):
# Estabilish network connection (vmdriver)
with
activity
.
sub_activity
(
'deploying_net'
,
readable_name
=
ugettext_noop
(
"deploy network"
)):
'deploying_net'
,
readable_name
=
ugettext_noop
(
"deploy network"
)):
self
.
instance
.
deploy_net
()
...
...
@@ -628,7 +624,7 @@ class RebootOperation(RemoteInstanceOperation):
description
=
_
(
"Warm reboot virtual machine by sending Ctrl+Alt+Del "
"signal to its console."
)
required_perms
=
()
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
task
=
vm_tasks
.
reboot
def
_operation
(
self
,
activity
):
...
...
@@ -669,7 +665,7 @@ class RemovePortOperation(InstanceOperation):
description
=
_
(
"Close the specified port."
)
concurrency_check
=
False
acl_level
=
"operator"
required_perms
=
(
'vm.config_ports'
,
)
required_perms
=
(
'vm.config_ports'
,)
def
_operation
(
self
,
activity
,
rule
):
interface
=
rule
.
host
.
interface_set
.
get
()
...
...
@@ -688,7 +684,7 @@ class AddPortOperation(InstanceOperation):
description
=
_
(
"Open the specified port."
)
concurrency_check
=
False
acl_level
=
"operator"
required_perms
=
(
'vm.config_ports'
,
)
required_perms
=
(
'vm.config_ports'
,)
def
_operation
(
self
,
activity
,
host
,
proto
,
port
):
if
host
.
interface_set
.
get
()
.
instance
!=
self
.
instance
:
...
...
@@ -712,8 +708,8 @@ class RemoveDiskOperation(InstanceOperation):
if
self
.
instance
.
is_running
and
disk
.
type
not
in
[
"iso"
]:
self
.
instance
.
_detach_disk
(
disk
=
disk
,
parent_activity
=
activity
)
with
activity
.
sub_activity
(
'destroy_disk'
,
readable_name
=
ugettext_noop
(
'destroy disk'
)
'destroy_disk'
,
readable_name
=
ugettext_noop
(
'destroy disk'
)
):
disk
.
destroy
()
return
self
.
instance
.
disks
.
remove
(
disk
)
...
...
@@ -729,7 +725,7 @@ class ResetOperation(RemoteInstanceOperation):
name
=
_
(
"reset"
)
description
=
_
(
"Cold reboot virtual machine (power cycle)."
)
required_perms
=
()
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
task
=
vm_tasks
.
reset
def
_operation
(
self
,
activity
):
...
...
@@ -749,7 +745,7 @@ class SaveAsTemplateOperation(InstanceOperation):
"start an instance of it."
)
has_percentage
=
True
abortable
=
True
required_perms
=
(
'vm.create_template'
,
)
required_perms
=
(
'vm.create_template'
,)
accept_states
=
(
'RUNNING'
,
'STOPPED'
)
async_queue
=
"localhost.man.slow"
...
...
@@ -817,10 +813,10 @@ class SaveAsTemplateOperation(InstanceOperation):
self
.
disks
=
[]
for
disk
in
self
.
instance
.
disks
.
all
():
with
activity
.
sub_activity
(
'saving_disk'
,
readable_name
=
create_readable
(
ugettext_noop
(
"saving disk
%(name)
s"
),
name
=
disk
.
name
)
'saving_disk'
,
readable_name
=
create_readable
(
ugettext_noop
(
"saving disk
%(name)
s"
),
name
=
disk
.
name
)
):
self
.
disks
.
append
(
__try_save_disk
(
disk
))
...
...
@@ -861,7 +857,7 @@ class ShutdownOperation(AbortableRemoteOperationMixin,
"turn itself off in a period."
)
abortable
=
True
required_perms
=
()
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
resultant_state
=
'STOPPED'
task
=
vm_tasks
.
shutdown
remote_queue
=
(
"vm"
,
"slow"
)
...
...
@@ -922,7 +918,7 @@ class SleepOperation(InstanceOperation):
"resumed. In the meantime, the machine will only use "
"storage resources, and keep network resources allocated."
)
required_perms
=
()
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
resultant_state
=
'SUSPENDED'
async_queue
=
"localhost.man.slow"
...
...
@@ -966,7 +962,7 @@ class WakeUpOperation(InstanceOperation):
"load the saved memory of the system and start the "
"virtual machine from this state."
)
required_perms
=
()
accept_states
=
(
'SUSPENDED'
,
)
accept_states
=
(
'SUSPENDED'
,)
resultant_state
=
'RUNNING'
async_queue
=
"localhost.man.slow"
...
...
@@ -989,8 +985,8 @@ class WakeUpOperation(InstanceOperation):
# Estabilish network connection (vmdriver)
with
activity
.
sub_activity
(
'deploying_net'
,
readable_name
=
ugettext_noop
(
"deploy network"
)):
'deploying_net'
,
readable_name
=
ugettext_noop
(
"deploy network"
)):
self
.
instance
.
deploy_net
()
try
:
...
...
@@ -1026,7 +1022,7 @@ class RenewOperation(InstanceOperation):
def
set_time_of_suspend
(
self
,
activity
,
suspend
,
force
):
with
activity
.
sub_activity
(
'renew_suspend'
,
concurrency_check
=
False
,
'renew_suspend'
,
concurrency_check
=
False
,
readable_name
=
ugettext_noop
(
'set time of suspend'
)):
if
(
not
force
and
suspend
and
self
.
instance
.
time_of_suspend
and
suspend
<
self
.
instance
.
time_of_suspend
):
...
...
@@ -1037,7 +1033,7 @@ class RenewOperation(InstanceOperation):
def
set_time_of_delete
(
self
,
activity
,
delete
,
force
):
with
activity
.
sub_activity
(
'renew_delete'
,
concurrency_check
=
False
,
'renew_delete'
,
concurrency_check
=
False
,
readable_name
=
ugettext_noop
(
'set time of delete'
)):
if
(
not
force
and
delete
and
self
.
instance
.
time_of_delete
and
delete
<
self
.
instance
.
time_of_delete
):
...
...
@@ -1078,7 +1074,7 @@ class ChangeStateOperation(InstanceOperation):
"redeployed without losing its storage and network "
"resources."
)
acl_level
=
"owner"
required_perms
=
(
'vm.emergency_change_state'
,
)
required_perms
=
(
'vm.emergency_change_state'
,)
concurrency_check
=
False
def
_operation
(
self
,
user
,
activity
,
new_state
=
"NOSTATE"
,
interrupt
=
False
,
...
...
@@ -1105,7 +1101,7 @@ class RedeployOperation(InstanceOperation):
"and redeploy the VM. This operation allows starting "
"machines formerly running on a failed node."
)
acl_level
=
"owner"
required_perms
=
(
'vm.redeploy'
,
)
required_perms
=
(
'vm.redeploy'
,)
concurrency_check
=
False
def
_operation
(
self
,
user
,
activity
,
with_emergency_change_state
=
True
):
...
...
@@ -1359,7 +1355,7 @@ class ScreenshotOperation(RemoteInstanceOperation):
"screensaver."
)
acl_level
=
"owner"
required_perms
=
()
accept_states
=
(
'RUNNING'
,
)
accept_states
=
(
'RUNNING'
,)
task
=
vm_tasks
.
screenshot
...
...
@@ -1371,8 +1367,8 @@ class RecoverOperation(InstanceOperation):
"state. Network resources (allocations) are already lost, "
"so you will have to manually add interfaces afterwards."
)
acl_level
=
"owner"
required_perms
=
(
'vm.recover'
,
)
accept_states
=
(
'DESTROYED'
,
)
required_perms
=
(
'vm.recover'
,)
accept_states
=
(
'DESTROYED'
,)
resultant_state
=
'PENDING'
def
check_precond
(
self
):
...
...
@@ -1383,7 +1379,7 @@ class RecoverOperation(InstanceOperation):
def
_operation
(
self
,
user
,
activity
):
with
activity
.
sub_activity
(
'recover_instance'
,
'recover_instance'
,
readable_name
=
ugettext_noop
(
"recover instance"
)):
self
.
instance
.
destroyed_at
=
None
for
disk
in
self
.
instance
.
disks
.
all
():
...
...
@@ -1410,7 +1406,7 @@ class ResourcesOperation(InstanceOperation):
name
=
_
(
"resources change"
)
description
=
_
(
"Change resources of a stopped virtual machine."
)
acl_level
=
"owner"
required_perms
=
(
'vm.change_resources'
,
)
required_perms
=
(
'vm.change_resources'
,)
accept_states
=
(
'STOPPED'
,
'PENDING'
,
'RUNNING'
)
def
_operation
(
self
,
user
,
activity
,
...
...
@@ -1716,7 +1712,7 @@ class UpdateAgentOperation(RemoteAgentOperation):
index
=
0
filename
=
settings
.
AGENT_VERSION
+
".tar"
while
True
:
chunk
=
data
[
index
:
index
+
chunk_size
]
chunk
=
data
[
index
:
index
+
chunk_size
]
if
chunk
:
agent_tasks
.
append
.
apply_async
(
queue
=
queue
,
...
...
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