| Total Complexity | 2 |
| Total Lines | 18 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | from lib.action import BaseVMsAction |
||
| 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 |