-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathbackups.py
More file actions
78 lines (66 loc) · 2.59 KB
/
backups.py
File metadata and controls
78 lines (66 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# -*- coding: utf-8 -*-
from . import fields
from .base import Model
from .instances import Instance
class Backup(Model):
"""
OO wrapper around backups `link <http://docs.syncano.com/docs/full-backups>`_.
:ivar label: :class:`~syncano.models.fields.StringField`
:ivar description: :class:`~syncano.models.fields.StringField`
:ivar instance: :class:`~syncano.models.fields.StringField`
:ivar size: :class:`~syncano.models.fields.IntegerField`
:ivar status: :class:`~syncano.models.fields.StringField`
:ivar status_info: :class:`~syncano.models.fields.StringField`
:ivar author: :class:`~syncano.models.fields.ModelField`
:ivar details: :class:`~syncano.models.fields.JSONField`
:ivar updated_at: :class:`~syncano.models.fields.DateTimeField`
:ivar created_at: :class:`~syncano.models.fields.DateTimeField`
:ivar links: :class:`~syncano.models.fields.HyperlinkedField`
"""
label = fields.StringField(read_only=True)
description = fields.StringField(read_only=True)
instance = fields.StringField(read_only=True)
size = fields.IntegerField(read_only=True)
status = fields.StringField(read_only=True)
status_info = fields.StringField(read_only=True)
author = fields.ModelField('Admin')
details = fields.JSONField(read_only=True)
updated_at = fields.DateTimeField(read_only=True, required=False)
created_at = fields.DateTimeField(read_only=True, required=False)
links = fields.LinksField()
class Meta:
parent = Instance
endpoints = {
'detail': {
'methods': ['get', 'delete'],
'path': '/backups/full/{id}/',
},
'list': {
'methods': ['post', 'get'],
'path': '/backups/full/',
},
}
def schedule_restore(self):
restore = Restore(backup=self.id).save()
return restore
class Restore(Model):
author = fields.ModelField('Admin')
status = fields.StringField(read_only=True)
status_info = fields.StringField(read_only=True)
updated_at = fields.DateTimeField(read_only=True, required=False)
created_at = fields.DateTimeField(read_only=True, required=False)
links = fields.LinksField()
backup = fields.StringField()
archive = fields.StringField(read_only=True)
class Meta:
parent = Instance
endpoints = {
'list': {
'methods': ['get', 'post'],
'path': '/restores/',
},
'detail': {
'methods': ['get'],
'path': '/restores/{id}/',
}
}