def testInvalidDiskparams(self): diskparams = {constants.DT_RBD: {constants.LV_STRIPES: 1}} op = opcodes.OpGroupSetParams(group_name=self.group.name, diskparams=diskparams) self.ExecOpCodeExpectOpPrereqError( op, "Provided option keys not supported")
def SetGroupParams(opts, args): """Modifies a node group's parameters. @param opts: the command line options selected by the user @type args: list @param args: should contain only one element, the node group name @rtype: int @return: the desired exit code """ allmods = [ opts.ndparams, opts.alloc_policy, opts.diskparams, opts.hv_state, opts.disk_state, opts.ipolicy_bounds_specs, opts.ipolicy_vcpu_ratio, opts.ipolicy_spindle_ratio, opts.diskparams, opts.ipolicy_disk_templates ] if allmods.count(None) == len(allmods): ToStderr("Please give at least one of the parameters.") return 1 if opts.disk_state: disk_state = utils.FlatToDict(opts.disk_state) else: disk_state = {} hv_state = dict(opts.hv_state) diskparams = dict(opts.diskparams) # create ipolicy object ipolicy = CreateIPolicyFromOpts( minmax_ispecs=opts.ipolicy_bounds_specs, ipolicy_disk_templates=opts.ipolicy_disk_templates, ipolicy_vcpu_ratio=opts.ipolicy_vcpu_ratio, ipolicy_spindle_ratio=opts.ipolicy_spindle_ratio, group_ipolicy=True, allowed_values=[constants.VALUE_DEFAULT]) op = opcodes.OpGroupSetParams(group_name=args[0], ndparams=opts.ndparams, alloc_policy=opts.alloc_policy, hv_state=hv_state, disk_state=disk_state, diskparams=diskparams, ipolicy=ipolicy) result = SubmitOrSend(op, opts) if result: ToStdout("Modified node group %s", args[0]) for param, data in result: ToStdout(" - %-5s -> %s", param, data) return 0
def testIPolicyNewViolations(self): self.cfg.AddNewInstance(beparams={constants.BE_VCPUS: 8}) min_max = dict(constants.ISPECS_MINMAX_DEFAULTS) min_max[constants.ISPECS_MAX].update({constants.ISPEC_CPU_COUNT: 2}) ipolicy = {constants.ISPECS_MINMAX: [min_max]} op = opcodes.OpGroupSetParams(group_name=self.group.name, ipolicy=ipolicy) self.ExecOpCode(op) self.assertLogContainsRegex( "After the ipolicy change the following instances violate them")
def testModifyingAll(self): ndparams = {constants.ND_EXCLUSIVE_STORAGE: True} hv_state = {constants.HT_FAKE: {constants.HVST_CPU_TOTAL: 8}} disk_state = { constants.DT_PLAIN: { "mock_vg": {constants.DS_DISK_TOTAL: 10} } } diskparams = {constants.DT_RBD: {constants.RBD_POOL: "mock_pool"}} ipolicy = {constants.IPOLICY_DTS: [constants.DT_DRBD8]} op = opcodes.OpGroupSetParams(group_name=self.group.name, ndparams=ndparams, hv_state=hv_state, disk_state=disk_state, diskparams=diskparams, ipolicy=ipolicy) self.ExecOpCode(op) self.mcpu.assertLogIsEmpty()
def testNoModifications(self): op = opcodes.OpGroupSetParams(group_name=self.group.name) self.ExecOpCodeExpectOpPrereqError( op, "Please pass at least one modification")