Exemple #1
0
    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")
Exemple #2
0
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
Exemple #3
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")
Exemple #4
0
  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()
Exemple #5
0
    def testNoModifications(self):
        op = opcodes.OpGroupSetParams(group_name=self.group.name)

        self.ExecOpCodeExpectOpPrereqError(
            op, "Please pass at least one modification")