def vspherepage(): form = vshpereForm() dict_yaml = {} if request.method == 'POST': if form.validate() == False: flash('All fields are required.') return render_template('vsphere.html', form=form) else: dict_yaml['host'] = str(form.host._value()) dict_yaml['port'] = str(form.port._value()) dict_yaml['user'] = str(form.user._value()) dict_yaml['password'] = str(form.password._value()) dict_yaml['operation'] = dict(oper_choices).get( form.operation.data) dict_yaml['vappname'] = str(form.vappname._value()) dict_yaml['snapname'] = str(form.snapname._value()) with open('params.yml', 'w') as outfile: outfile.write(yaml.dump(dict_yaml, default_flow_style=False)) vsphereInstance = vsphere() vsphereInstance.start_operation() return '%s is kicked off for the VMs inside vApp %s' % ( dict_yaml['operation'], dict_yaml['vappname']) elif request.method == 'GET': return render_template('vsphere.html', form=form)
def start_operation(operation, vappname, snapname, arguments_confirmed=False): if not arguments_confirmed: raw_input('Press ENTER to confirm vappname: {v}'.format(v=vappname)) if bool(snapname): raw_input('Press ENTER to confirm operation: {o} {s}'.format(o=operation, s=snapname)) else: raw_input('Press ENTER to confirm operation: {o}'.format(o=operation)) raw_input('Press ENTER to start ...') with open("params.yml", 'r') as stream: params = yaml.load(stream) si = SmartConnect( host = params['host'], user = os.getenv('VSPHERE_USER'), pwd = os.getenv('VSPHERE_PASSWORD'), port = int(params['port'])) atexit.register(Disconnect, si) content = si.RetrieveContent() vmFolderList = [] for datacenter in content.rootFolder.childEntity: for citem in datacenter.vmFolder.childEntity: if type(citem) == pyVmomi.types.vim.Folder: vmFolderList = vmFolderList + citem.childEntity else: vmFolderList.append(citem) vs = vsphere.vsphere() if operation == 'list': vs.getmyList(vmFolderList) elif operation == 'ip': get_child_vm_ips(vmFolderList, vappname) elif operation == 'poweron': power_on(vmFolderList, vappname) elif operation == 'poweroff': power_off(vmFolderList, vappname) elif operation == 'revertsnapshot': vs.revertSnap_vapp(vmFolderList, vappname, snapname) elif operation == 'createsnapshot': vs.createSnap_vapp(vmFolderList, vappname, snapname) elif operation == 'deletesnapshot': vs.removeSnap_vapp(vmFolderList, vappname, snapname) else: print "operation {o} is not supported".format(o=operation)
def vspherepage(): form = vshpereForm() dict_yaml = {} if request.method == 'POST': if form.validate() == False: flash('All fields are required.') return render_template('vsphere.html', form=form) else: dict_yaml['host'] = str(form.host._value()) dict_yaml['port'] = str(form.port._value()) dict_yaml['user'] = str(form.user._value()) dict_yaml['password'] = str(form.password._value()) dict_yaml['operation'] = dict(oper_choices).get(form.operation.data) dict_yaml['vappname'] = str(form.vappname._value()) dict_yaml['snapname'] = str(form.snapname._value()) with open('params.yml', 'w') as outfile: outfile.write( yaml.dump(dict_yaml, default_flow_style=False) ) vsphereInstance = vsphere() vsphereInstance.start_operation() return '%s is kicked off for the VMs inside vApp %s'%(dict_yaml['operation'], dict_yaml['vappname']) elif request.method == 'GET': return render_template('vsphere.html', form=form)