Completed
Push — master ( ca2760...4c7c7c )
by Manas
15s
created

SetVM   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %
Metric Value
wmc 4
dl 0
loc 27
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B run() 0 26 4
1
# Licensed to the StackStorm, Inc ('StackStorm') under one or more
2
# contributor license agreements.  See the NOTICE file distributed with
3
# this work for additional information regarding copyright ownership.
4
# The ASF licenses this file to You under the Apache License, Version 2.0
5
# (the "License"); you may not use this file except in compliance with
6
# the License.  You may obtain a copy of the License at
7
#
8
#     http://www.apache.org/licenses/LICENSE-2.0
9
#
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS,
12
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
# See the License for the specific language governing permissions and
14
# limitations under the License.
15
16
from pyVmomi import vim
17
18
from vmwarelib.actions import BaseAction
19
20
21
class SetVM(BaseAction):
22
    def run(self, vm, alternate_guest_name=None, description=None, guest_id=None, memory_mb=None,
23
            name=None, num_cpu=None, vm_swapfile_policy=None):
24
        vm_swapfile_policy = vm_swapfile_policy.lower() if vm_swapfile_policy else None
25
26
        si = self.si
27
28
        vm_obj = vim.VirtualMachine(vm, stub=si._stub)
29
30
        # convert ids to stubs
31
        spec = vim.vm.ConfigSpec()
32
        spec.alternateGuestName = alternate_guest_name
33
        spec.annotation = description
34
        spec.guestId = guest_id
35
        spec.memoryMB = memory_mb
36
        spec.name = name
37
        spec.numCPUs = num_cpu
38
        if vm_swapfile_policy == 'inhostdatastore':
39
            spec.swapPlacement = 'hostLocal'
40
        elif vm_swapfile_policy == 'withvm':
41
            spec.swapPlacement = 'vmDirectory'
42
43
        task = vm_obj.ReconfigVM_Task(spec)
44
45
        success = self._wait_for_task(task)
46
47
        return {'success': success}
48