Completed
Pull Request — master (#543)
by
unknown
03:20 queued 51s
created

SetVMMetadata   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 18
rs 10
c 0
b 0
f 0
wmc 2
1
from lib.action import BaseVMsAction
2
3
__all__ = [
4
    'SetVMMetadata'
5
]
6
7
8
class SetVMMetadata(BaseVMsAction):
9
    def run(self, vm_id, metadata, region=None):
10
        metadata = metadata or {}
11
12
        if region:
13
            cs = self.pyrax.connect_to_cloudservers(region=region)
14
        else:
15
            cs = self.pyrax.cloudservers
16
17
        server = cs.servers.get(vm_id)
18
19
        removed_metadata_keys = set(server.metadata.keys()).difference(metadata.keys())
20
        removed_metadata_keys = list(removed_metadata_keys)
21
22
        cs.servers.delete_meta(server, removed_metadata_keys)
23
        cs.servers.set_meta(server, metadata)
24
25
        return True
26