Skip to content

Commit fb3e5c1

Browse files
committed
storage: Add tags to vdi_info struct
This is the first step towards allowing SMAPIv1/v3 code to preserve tags on VDI migrations. Also modifies the tests by adding the new 'tags' field. Signed-off-by: Andrii Sultanov <andriy.sultanov@vates.tech>
1 parent 37f6806 commit fb3e5c1

12 files changed

Lines changed: 17 additions & 4 deletions

File tree

ocaml/xapi-idl/storage/storage_interface.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ type vdi_info = {
231231
persistent: bool [@default true]
232232
; sharable: bool [@default false]
233233
; sm_config: (string * string) list [@default []]
234+
; tags: string list [@default []]
234235
}
235236
[@@deriving rpcty]
236237

ocaml/xapi-storage-script/main.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,7 @@ let vdi_of_volume x =
777777
x.Xapi_storage.Control.keys
778778
; sharable= x.Xapi_storage.Control.sharable
779779
; persistent= true
780+
; tags= x.Xapi_storage.Control.tags
780781
}
781782

782783
let choose_datapath ?(persistent = true) response =
@@ -2152,6 +2153,7 @@ let self_test_plugin ~root_dir plugin =
21522153
; persistent= false
21532154
; sm_config= []
21542155
; sharable= false
2156+
; tags= []
21552157
}
21562158
in
21572159
Test.VDI.create rpc dbg sr vdi_info >>= fun vdi_info ->

ocaml/xapi-storage-script/python-self-test.t

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ pids and uuids
2121
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/SR.stat[PID] succeeded: {"sr": "file:///tmp/dummy", "name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "total_space": 0, "free_space": 0, "datasources": [], "clustered": false, "health": ["Healthy", ""]}
2222

2323
[INFO] {"method":"Volume.create","params":[{"sharable":false,"size":0,"description":"vdi description","name":"vdi name","sr":"file:///tmp/dummy","dbg":"debug"}],"id":12}
24-
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.create[PID] succeeded: {"name": "vdi name", "description": "vdi description", "key": "UUID", "uuid": "UUID", "read_write": true, "sharable": false, "virtual_size": 0, "physical_utilisation": 0, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}}
24+
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.create[PID] succeeded: {"name": "vdi name", "description": "vdi description", "key": "UUID", "uuid": "UUID", "read_write": true, "sharable": false, "virtual_size": 0, "physical_utilisation": 0, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}, "tags": ["tag1"]}
2525

2626
[INFO] {"method":"Volume.set","params":[{"v":"redolog","k":"vdi-type","key":"UUID","sr":"file:///tmp/dummy","dbg":"debug"}],"id":13}
2727
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.set[PID] succeeded: null
2828

2929
[INFO] {"method":"Volume.stat","params":[{"key":"UUID","sr":"file:///tmp/dummy","dbg":"debug"}],"id":15}
30-
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.stat[PID] succeeded: {"name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "key": "UUID", "uuid": "UUID", "read_write": true, "virtual_size": 0, "physical_utilisation": 0, "sharable": false, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}}
30+
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.stat[PID] succeeded: {"name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "key": "UUID", "uuid": "UUID", "read_write": true, "virtual_size": 0, "physical_utilisation": 0, "sharable": false, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}, "tags": ["tag1"]}
3131

3232
[INFO] {"method":"Volume.stat","params":[{"key":"UUID","sr":"file:///tmp/dummy","dbg":"debug"}],"id":17}
33-
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.stat[PID] succeeded: {"name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "key": "UUID", "uuid": "UUID", "read_write": true, "virtual_size": 0, "physical_utilisation": 0, "sharable": false, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}}
33+
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.stat[PID] succeeded: {"name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "key": "UUID", "uuid": "UUID", "read_write": true, "virtual_size": 0, "physical_utilisation": 0, "sharable": false, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}, "tags": ["tag1"]}
3434

3535
[INFO] {"method":"Volume.destroy","params":[{"key":"UUID","sr":"file:///tmp/dummy","dbg":"debug"}],"id":18}
3636
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/Volume.destroy[PID] succeeded: null
@@ -39,7 +39,7 @@ pids and uuids
3939
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/SR.stat[PID] succeeded: {"sr": "file:///tmp/dummy", "name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "total_space": 0, "free_space": 0, "datasources": [], "clustered": false, "health": ["Healthy", ""]}
4040

4141
[INFO] {"method":"SR.ls","params":[{"sr":"file:///tmp/dummy","dbg":"debug"}],"id":22}
42-
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/SR.ls[PID] succeeded: [{"name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "key": "file1", "uuid": "file1", "read_write": true, "virtual_size": 0, "physical_utilisation": 0, "sharable": false, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}}]
42+
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/SR.ls[PID] succeeded: [{"name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "key": "file1", "uuid": "file1", "read_write": true, "virtual_size": 0, "physical_utilisation": 0, "sharable": false, "uri": ["raw+file:///tmp/disk.raw"], "keys": {}, "tags": ["tag1"]}]
4343

4444
[INFO] {"method":"SR.probe","params":[{"configuration":{"uri":"file:///tmp/dummy"},"dbg":"debug"}],"id":24}
4545
[INFO] $TESTCASE_ROOT/test/volume/org.xen.xapi.storage.dummyv5/SR.probe[PID] succeeded: [{"configuration": {"uri": "file:///tmp/dummy"}, "complete": true, "extra_info": {}}, {"configuration": {"uri": "file:///tmp/dummy", "sr_uuid": "myuuid"}, "sr": {"sr": "file:///tmp/dummy", "name": "dummy SR plugin", "description": "Dummy v5 SR for unit tests.", "total_space": 0, "free_space": 0, "datasources": [], "clustered": false, "health": ["Healthy", ""]}, "complete": true, "extra_info": {}}]

ocaml/xapi-storage-script/test/volume/org.xen.xapi.storage.dummyv5/sr.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def ls(self, dbg, sr):
3939
"sharable": False,
4040
"uri": ["raw+file:///tmp/disk.raw"],
4141
"keys": {},
42+
"tags": ["tag1"],
4243
}]
4344

4445
def stat(self, dbg, sr):

ocaml/xapi-storage-script/test/volume/org.xen.xapi.storage.dummyv5/volume.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def create(self, dbg, sr, name, description, size, sharable):
3030
"physical_utilisation": 0,
3131
"uri": ["raw+file:///tmp/disk.raw"],
3232
"keys": {},
33+
"tags": ["tag1"],
3334
}
3435

3536
def destroy(self, dbg, sr, key):
@@ -50,6 +51,7 @@ def stat(self, dbg, sr, key):
5051
"sharable": False,
5152
"uri": ["raw+file:///tmp/disk.raw"],
5253
"keys": {},
54+
"tags": ["tag1"],
5355
}
5456

5557
def set(self, dbg, sr, key, k, v):

ocaml/xapi-storage/generator/lib/control.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ type volume = {
131131
; cbt_enabled: bool option [@default Some false]
132132
(** True means that the storage datapath will track changed dirty blocks
133133
while writing and will be able to provide CBT Metadata when requested *)
134+
; tags: string list [@default []]
134135
}
135136
[@@deriving rpcty]
136137

ocaml/xapi-storage/generator/test/storage_test.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ let test_volume =
5959
; keys= []
6060
; cbt_enabled= Some false
6161
; volume_type= Some Data
62+
; tags= ["tag1"]
6263
}
6364

6465
(** Check that we successfully parse the responses and

ocaml/xapi-storage/rpc-light/SR.ls/response

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<member><name>keys</name><value><struct></struct></value></member>
1515
<member><name>volume_type</name><value>Data</value></member>
1616
<member><name>cbt_enabled</name><value>false</value></member>
17+
<member><name>tags</name><value><array><data><value>tag1</value></data></array></value></member>
1718
</struct></value></data>
1819
</array></value></member>
1920
</struct></value></param></params>

ocaml/xapi-storage/rpc-light/Volume.clone/response

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<member><name>keys</name><value><struct></struct></value></member>
1414
<member><name>volume_type</name><value>Data</value></member>
1515
<member><name>cbt_enabled</name><value>false</value></member>
16+
<member><name>tags</name><value><array><data><value>tag1</value></data></array></value></member>
1617
</struct>
1718
</value></member>
1819
</struct></value></param>

ocaml/xapi-storage/rpc-light/Volume.create/response

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<member><name>keys</name><value><struct></struct></value></member>
1414
<member><name>volume_type</name><value>Data</value></member>
1515
<member><name>cbt_enabled</name><value>false</value></member>
16+
<member><name>tags</name><value><array><data><value>tag1</value></data></array></value></member>
1617
</struct>
1718
</value></member>
1819
</struct></value></param>

0 commit comments

Comments
 (0)