Esempio n. 1
0
 def __init__(self, screen, title, settings):
     self.settings = settings
     self.memory = FloatField("memory", float(settings["memory"]) / 1024)
     self.swap = FloatField("swap", float(settings["swap"]) / 1024)
     self.vcpu = IntegerField("vcpu", settings["vcpu"])
     self.bootorder = IntegerField("bootorder",
                                   settings.get("bootorder"),
                                   required=False)
     self.disk = FloatField("diskspace",
                            float(settings["diskspace"]["/"]) / 1024)
     self.ioprio = RadioBarField("ioprio", screen,
                                 [('Low    ', 0, settings["ioprio"] == 0),
                                  ('Default', 4, settings["ioprio"] == 4),
                                  ('High   ', 7, settings["ioprio"] == 7)])
     self.bind_mounts = BindMountsField("bind_mounts",
                                        settings["bind_mounts"],
                                        required=False)
     self.vcpulimit = IntegerField("vcpulimit",
                                   settings["vcpulimit"],
                                   min_value=0,
                                   max_value=100)
     self.onboot = CheckboxField("onboot",
                                 settings.get("onboot", 0),
                                 display_name="Start on boot")
     self.ctid = IntegerField('ctid',
                              settings['ctid'],
                              display_name='VEID',
                              required=False)
     self.hostname = StringField("hostname", settings.get("name", ""))
     Form.__init__(self, screen, title, [
         self.memory, self.vcpu, self.disk, self.ioprio, self.hostname,
         self.bind_mounts, self.swap, self.onboot, self.bootorder,
         self.vcpulimit, self.ctid
     ])
Esempio n. 2
0
 def __init__(self, screen, title, settings):
     self.memory = FloatField("memory", settings["memory"],
                              settings["memory_min"],
                              settings["memory_max"])
     self.swap = FloatField("swap", settings["swap"], settings["swap_min"],
                            settings["swap_max"])
     self.vcpu = FloatField("vcpu", settings["vcpu"], settings["vcpu_min"],
                            settings["vcpu_max"])
     self.vcpulimit = IntegerField("vcpulimit", settings["vcpulimit"],
                                   settings["vcpulimit_min"],
                                   settings["vcpulimit_max"])
     self.disk = FloatField("disk", settings["disk"], settings["disk_min"],
                            settings["disk_max"])
     self.ioprio = RadioBarField("ioprio", screen,
                                 [('Low    ', 0, settings["ioprio"] == 0),
                                  ('Default', 4, settings["ioprio"] == 4),
                                  ('High   ', 7, settings["ioprio"] == 7)])
     self.bind_mounts = BindMountsField("bind_mounts",
                                        settings["bind_mounts"],
                                        required=False)
     self.hostname = StringField("hostname", settings.get("hostname", ""))
     self.ip_address = IpField("ip_address",
                               settings["ip_address"],
                               display_name="IP address")
     self.nameserver = IpField("nameserver", settings["nameserver"])
     self.password = PasswordField("passwd",
                                   settings["passwd"],
                                   display_name="password")
     self.password2 = PasswordField("passw2",
                                    settings["passwd"],
                                    display_name="password")
     self.ostemplate = StringField("ostemplate",
                                   settings["ostemplate"],
                                   display_name="OS template")
     self.startvm = CheckboxField("startvm",
                                  settings.get("startvm", 0),
                                  display_name="Start VM")
     self.onboot = CheckboxField("onboot",
                                 settings.get("onboot", 0),
                                 display_name="Start on boot")
     Form.__init__(self, screen, title, [
         self.memory, self.swap, self.vcpu, self.vcpulimit, self.disk,
         self.ioprio, self.bind_mounts, self.hostname, self.ip_address,
         self.nameserver, self.password, self.password2, self.ostemplate,
         self.startvm, self.onboot
     ])
     self.settings = settings  # save passed parameters for convenience
Esempio n. 3
0
 def __init__(self, screen, title, settings):
     self.memory = FloatField("memory", settings["memory"],
                              settings["memory_min"],
                              settings["memory_max"])
     self.vcpu = IntegerField("vcpu", settings["vcpu"],
                              settings["vcpu_min"], settings["vcpu_max"])
     self.hostname = StringField("hostname", settings.get("hostname", ""))
     Form.__init__(self, screen, title,
                   [self.memory, self.vcpu, self.hostname])
Esempio n. 4
0
 def _define_fields(self, settings):
     self.memory = FloatField("memory", settings["memory"])
     self.memory_min = FloatField("memory_min",
                                  settings.get("memory_min", ""),
                                  display_name="min memory",
                                  required=False)
     self.vcpu = FloatField("vcpu", settings["vcpu"])
     self.vcpu_min = FloatField("vcpu_min",
                                settings.get("vcpu_min", ""),
                                display_name="min vcpu",
                                required=False)
     self.template_name = StringField('template_name',
                                      settings.get('template_name'),
                                      display_name='template name',
                                      required=False)
     return [
         self.memory, self.memory_min, self.vcpu, self.vcpu_min,
         self.template_name
     ]
Esempio n. 5
0
class OpenvzTemplateForm(Form):

    def __init__(self, screen, title, settings):
        self.memory = FloatField("memory", settings["memory"])
        self.memory_min = FloatField("memory_min", settings.get("memory_min", ""),
                                     display_name="min memory", required=False)
        self.memory_max = FloatField("memory_max", settings.get("memory_max", ""),
                                     display_name="max memory", required=False)
        self.vcpu = FloatField("vcpu", settings["vcpu"])
        self.vcpu_min = FloatField("vcpu_min", settings.get("vcpu_min", ""),
                                   display_name="min vcpu", required=False)
        self.vcpu_max = FloatField("vcpu_max", settings.get("vcpu_max", ""),
                                   display_name="max vcpu", required=False)
        self.disk = FloatField("disk", settings["disk"])
        self.ostemplate = StringField("ostemplate", settings.get("ostemplate", ""))
        Form.__init__(self, screen, title, [self.memory, self.memory_min, self.memory_max, self.vcpu,
                                            self.vcpu_min, self.vcpu_max, self.disk, self.ostemplate])

    def display(self):
        button_save, button_exit = Button("Create"), Button("Back")
        separator = (Textbox(20, 1, "", 0, 0), Textbox(20, 1, "", 0, 0))
        rows = [
            (Textbox(20, 1, "Memory size (GB):", 0, 0), self.memory),
            (Textbox(20, 1, "Min memory size (GB):", 0, 0), self.memory_min),
            (Textbox(20, 1, "Max memory size (GB):", 0, 0), self.memory_max),
            separator,
            (Textbox(20, 1, "Number of CPUs:", 0, 0), self.vcpu),
            (Textbox(20, 1, "Min number of CPUs:", 0, 0), self.vcpu_min),
            (Textbox(20, 1, "Max number of CPUs:", 0, 0), self.vcpu_max),
            separator,
            (Textbox(20, 1, "Disk size (GB):", 0, 0), self.disk),
            separator,
            (Textbox(20, 1, "OS template:", 0, 0), self.ostemplate),
            separator,
            (button_exit, button_save)
        ]
        form = GridForm(self.screen, self.title, 2, len(rows))
        for i, row in enumerate(rows):
            for j, cell in enumerate(row):
                form.add(cell, j, i)
        return form.runOnce() != button_exit

    def validate(self):
        if Form.validate(self):
            self.errors.extend(validate_range("memory", self.memory.value(),
                                              self.memory_min.value(),
                                              self.memory_max.value(), float))
            self.errors.extend(validate_range("vcpu", self.vcpu.value(),
                                              self.vcpu_min.value(),
                                              self.vcpu_max.value(), int))
        return not self.errors
Esempio n. 6
0
 def __init__(self, screen, title, settings):
     self.settings = settings
     self.memory = FloatField("memory", float(settings["memory"]) / 1024)
     self.swap = FloatField("swap", float(settings["swap"]) / 1024)
     self.vcpu = IntegerField("vcpu", settings["vcpu"])
     self.bootorder = IntegerField("bootorder", settings.get("bootorder"), required=False)
     self.disk = FloatField("diskspace", float(settings["diskspace"]["/"]) / 1024)
     self.ioprio = RadioBarField("ioprio", screen, [('Low    ', 0, settings["ioprio"] == 0),
                                                    ('Default', 4, settings["ioprio"] == 4),
                                                    ('High   ', 7, settings["ioprio"] == 7)])
     self.bind_mounts = BindMountsField("bind_mounts", settings["bind_mounts"], required=False)
     self.vcpulimit = IntegerField("vcpulimit", settings["vcpulimit"],
                                   min_value=0, max_value=100)
     self.onboot = CheckboxField("onboot", settings.get("onboot", 0), display_name="Start on boot")
     self.ctid = IntegerField('ctid', settings['ctid'],
                              display_name='VEID', required=False)
     self.hostname = StringField("hostname", settings.get("name", ""))
     Form.__init__(self, screen, title, [self.memory, self.vcpu, self.disk, self.ioprio, self.hostname,
                                         self.bind_mounts, self.swap, self.onboot, self.bootorder,
                                         self.vcpulimit, self.ctid])
Esempio n. 7
0
 def __init__(self, screen, title, settings):
     self.memory = FloatField("memory", settings["memory"])
     self.memory_min = FloatField("memory_min", settings.get("memory_min", ""),
                                  display_name="min memory", required=False)
     self.memory_max = FloatField("memory_max", settings.get("memory_max", ""),
                                  display_name="max memory", required=False)
     self.vcpu = FloatField("vcpu", settings["vcpu"])
     self.vcpu_min = FloatField("vcpu_min", settings.get("vcpu_min", ""),
                                display_name="min vcpu", required=False)
     self.vcpu_max = FloatField("vcpu_max", settings.get("vcpu_max", ""),
                                display_name="max vcpu", required=False)
     self.disk = FloatField("disk", settings["disk"])
     self.ostemplate = StringField("ostemplate", settings.get("ostemplate", ""))
     Form.__init__(self, screen, title, [self.memory, self.memory_min, self.memory_max, self.vcpu,
                                         self.vcpu_min, self.vcpu_max, self.disk, self.ostemplate])
Esempio n. 8
0
 def __init__(self, screen, title, settings):
     self.memory = FloatField("memory", settings["memory"])
     self.memory_min = FloatField("memory_min", settings.get("memory_min", ""),
                                  display_name="min memory", required=False)
     self.memory_max = FloatField("memory_max", settings.get("memory_max", ""),
                                  display_name="max memory", required=False)
     self.vcpu = FloatField("vcpu", settings["vcpu"])
     self.vcpu_min = FloatField("vcpu_min", settings.get("vcpu_min", ""),
                                display_name="min vcpu", required=False)
     self.vcpu_max = FloatField("vcpu_max", settings.get("vcpu_max", ""),
                                display_name="max vcpu", required=False)
     self.username = StringField("username", settings.get("username", ''), display_name="username")
     self.password = PasswordField("passwd", settings.get("passwd", ''), display_name="password")
     self.password2 = PasswordField("passw2", settings.get("passwd", ''), display_name="password")
     Form.__init__(self, screen, title, [self.memory, self.memory_min, self.memory_max,
                                         self.vcpu, self.vcpu_min, self.vcpu_max,
                                         self.username, self.password])
Esempio n. 9
0
class OpenvzModificationForm(Form):
    def __init__(self, screen, title, settings):
        self.settings = settings
        self.memory = FloatField("memory", float(settings["memory"]) / 1024)
        self.swap = FloatField("swap", float(settings["swap"]) / 1024)
        self.vcpu = IntegerField("vcpu", settings["vcpu"])
        self.bootorder = IntegerField("bootorder",
                                      settings.get("bootorder"),
                                      required=False)
        self.disk = FloatField("diskspace",
                               float(settings["diskspace"]["/"]) / 1024)
        self.ioprio = RadioBarField("ioprio", screen,
                                    [('Low    ', 0, settings["ioprio"] == 0),
                                     ('Default', 4, settings["ioprio"] == 4),
                                     ('High   ', 7, settings["ioprio"] == 7)])
        self.bind_mounts = BindMountsField("bind_mounts",
                                           settings["bind_mounts"],
                                           required=False)
        self.vcpulimit = IntegerField("vcpulimit",
                                      settings["vcpulimit"],
                                      min_value=0,
                                      max_value=100)
        self.onboot = CheckboxField("onboot",
                                    settings.get("onboot", 0),
                                    display_name="Start on boot")
        self.ctid = IntegerField('ctid',
                                 settings['ctid'],
                                 display_name='VEID',
                                 required=False)
        self.hostname = StringField("hostname", settings.get("name", ""))
        Form.__init__(self, screen, title, [
            self.memory, self.vcpu, self.disk, self.ioprio, self.hostname,
            self.bind_mounts, self.swap, self.onboot, self.bootorder,
            self.vcpulimit, self.ctid
        ])

    def display(self):
        button_save, button_exit = Button("Update"), Button("Back")
        separator = (Textbox(20, 1, "", 0, 0), Textbox(20, 1, "", 0, 0))
        rows = [(Textbox(20, 1, "Memory size (GB):", 0,
                         0), self.memory), separator,
                (Textbox(20, 1, "Swap size (GB):", 0,
                         0), self.swap), separator,
                (Textbox(20, 1, "Nr. of CPUs:", 0, 0), self.vcpu), separator,
                (Textbox(20, 1, "CPU usage limit (%):", 0, 0), self.vcpulimit),
                separator, (Textbox(20, 1, "Disk size (GB):", 0,
                                    0), self.disk), separator,
                (Textbox(20, 1, "IO Priority:", 0, 0), self.ioprio), separator,
                (Textbox(20, 1, "Bind mounts:", 0, 0), self.bind_mounts),
                (Textbox(20, 1, "", 0,
                         0), Textbox(20, 1, "/src1,/dst1;/srcN,..", 0,
                                     0)), separator,
                (Textbox(20, 1, "Hostname:", 0, 0), self.hostname), separator,
                (Textbox(20, 1, "", 0, 0), self.onboot), separator,
                (Textbox(20, 1, "Boot order:", 0,
                         0), self.bootorder), separator,
                (Textbox(20, 1, "VEID:", 0, 0), self.ctid), separator,
                (button_exit, button_save)]
        form = GridForm(self.screen, self.title, 2, len(rows))
        for i, row in enumerate(rows):
            for j, cell in enumerate(row):
                form.add(cell, j, i)
        return form.runOnce() != button_exit

    def validate(self):
        # TODO disallow decrease of disk size, which would break OS
        Form.validate(self)
        bm_valid = self.bind_mounts.validate()
        if bm_valid:
            error_str = "\n".join([s[1] for s in bm_valid])
            self.errors.append(("bind_mounts", "%s" % error_str))
        if self.memory.value() < self.settings["memory_min"]:
            err_msg = (
                "Memory size can not be lower than minimum defined in template: %s GB"
                % self.settings["memory_min"])
            self.errors.append(("memory", err_msg))
        return not self.errors
Esempio n. 10
0
 def __init__(self, screen, title, settings):
     self.memory = FloatField("memory", settings["memory"])
     self.memory_min = FloatField("memory_min",
                                  settings.get("memory_min", ""),
                                  display_name="min memory",
                                  required=False)
     self.memory_max = FloatField("memory_max",
                                  settings.get("memory_max", ""),
                                  display_name="max memory",
                                  required=False)
     self.vcpu = FloatField("vcpu", settings["vcpu"])
     self.vcpu_min = FloatField("vcpu_min",
                                settings.get("vcpu_min", ""),
                                display_name="min vcpu",
                                required=False)
     self.vcpu_max = FloatField("vcpu_max",
                                settings.get("vcpu_max", ""),
                                display_name="max vcpu",
                                required=False)
     self.username = StringField("username",
                                 settings.get("username", ''),
                                 display_name="username")
     self.password = PasswordField("passwd",
                                   settings.get("passwd", ''),
                                   display_name="password")
     self.password2 = PasswordField("passw2",
                                    settings.get("passwd", ''),
                                    display_name="password")
     Form.__init__(self, screen, title, [
         self.memory, self.memory_min, self.memory_max, self.vcpu,
         self.vcpu_min, self.vcpu_max, self.username, self.password
     ])
Esempio n. 11
0
class KvmTemplateForm(Form):
    def __init__(self, screen, title, settings):
        self.memory = FloatField("memory", settings["memory"])
        self.memory_min = FloatField("memory_min",
                                     settings.get("memory_min", ""),
                                     display_name="min memory",
                                     required=False)
        self.memory_max = FloatField("memory_max",
                                     settings.get("memory_max", ""),
                                     display_name="max memory",
                                     required=False)
        self.vcpu = FloatField("vcpu", settings["vcpu"])
        self.vcpu_min = FloatField("vcpu_min",
                                   settings.get("vcpu_min", ""),
                                   display_name="min vcpu",
                                   required=False)
        self.vcpu_max = FloatField("vcpu_max",
                                   settings.get("vcpu_max", ""),
                                   display_name="max vcpu",
                                   required=False)
        self.username = StringField("username",
                                    settings.get("username", ''),
                                    display_name="username")
        self.password = PasswordField("passwd",
                                      settings.get("passwd", ''),
                                      display_name="password")
        self.password2 = PasswordField("passw2",
                                       settings.get("passwd", ''),
                                       display_name="password")
        Form.__init__(self, screen, title, [
            self.memory, self.memory_min, self.memory_max, self.vcpu,
            self.vcpu_min, self.vcpu_max, self.username, self.password
        ])

    def display(self):
        button_save, button_exit = Button("Create"), Button("Back")
        separator = (Textbox(20, 1, "", 0, 0), Textbox(20, 1, "", 0, 0))
        rows = [(Textbox(20, 1, "Memory size (GB):", 0, 0), self.memory),
                (Textbox(20, 1, "Min memory size (GB):", 0,
                         0), self.memory_min),
                (Textbox(20, 1, "Max memory size (GB):", 0,
                         0), self.memory_max), separator,
                (Textbox(20, 1, "Number of CPUs:", 0, 0), self.vcpu),
                (Textbox(20, 1, "Min number of CPUs:", 0, 0), self.vcpu_min),
                (Textbox(20, 1, "Max number of CPUs:", 0,
                         0), self.vcpu_max), separator,
                (Textbox(20, 1, "Default admin:", 0,
                         0), self.username), separator,
                (Textbox(20, 1, "Root password:"******"Root password x2:", 0, 0), self.password2),
                separator, (button_exit, button_save)]
        form = GridForm(self.screen, self.title, 2, len(rows))
        for i, row in enumerate(rows):
            for j, cell in enumerate(row):
                form.add(cell, j, i)
        return form.runOnce() != button_exit

    def validate(self):
        if Form.validate(self):
            if (self.memory_min.value() and self.memory_max.value() and float(
                    self.memory_min.value()) > float(self.memory_max.value())):
                self.errors.extend([("memory",
                                     "Min memory exceeds max memory value.")])
            else:
                self.errors.extend(
                    validate_range("memory", self.memory.value(),
                                   self.memory_min.value(),
                                   self.memory_max.value(), float))
                self.errors.extend(
                    validate_range("vcpu", self.vcpu.value(),
                                   self.vcpu_min.value(),
                                   self.vcpu_max.value(), int))
            if (self.password.validate() and self.password2.validate()
                    and self.password.value() != self.password2.value()):
                self.errors.extend(("passwd", "Passwords don't match."))

        return not self.errors
Esempio n. 12
0
 def __init__(self, screen, title, settings):
     self.memory = FloatField("memory", settings["memory"])
     self.memory_min = FloatField("memory_min",
                                  settings.get("memory_min", ""),
                                  display_name="min memory",
                                  required=False)
     self.memory_max = FloatField("memory_max",
                                  settings.get("memory_max", ""),
                                  display_name="max memory",
                                  required=False)
     self.vcpu = FloatField("vcpu", settings["vcpu"])
     self.vcpu_min = FloatField("vcpu_min",
                                settings.get("vcpu_min", ""),
                                display_name="min vcpu",
                                required=False)
     self.vcpu_max = FloatField("vcpu_max",
                                settings.get("vcpu_max", ""),
                                display_name="max vcpu",
                                required=False)
     self.disk = FloatField("disk", settings["disk"])
     self.ostemplate = StringField("ostemplate",
                                   settings.get("ostemplate", ""))
     Form.__init__(self, screen, title, [
         self.memory, self.memory_min, self.memory_max, self.vcpu,
         self.vcpu_min, self.vcpu_max, self.disk, self.ostemplate
     ])
Esempio n. 13
0
class OpenvzTemplateForm(Form):
    def __init__(self, screen, title, settings):
        self.memory = FloatField("memory", settings["memory"])
        self.memory_min = FloatField("memory_min",
                                     settings.get("memory_min", ""),
                                     display_name="min memory",
                                     required=False)
        self.memory_max = FloatField("memory_max",
                                     settings.get("memory_max", ""),
                                     display_name="max memory",
                                     required=False)
        self.vcpu = FloatField("vcpu", settings["vcpu"])
        self.vcpu_min = FloatField("vcpu_min",
                                   settings.get("vcpu_min", ""),
                                   display_name="min vcpu",
                                   required=False)
        self.vcpu_max = FloatField("vcpu_max",
                                   settings.get("vcpu_max", ""),
                                   display_name="max vcpu",
                                   required=False)
        self.disk = FloatField("disk", settings["disk"])
        self.ostemplate = StringField("ostemplate",
                                      settings.get("ostemplate", ""))
        Form.__init__(self, screen, title, [
            self.memory, self.memory_min, self.memory_max, self.vcpu,
            self.vcpu_min, self.vcpu_max, self.disk, self.ostemplate
        ])

    def display(self):
        button_save, button_exit = Button("Create"), Button("Back")
        separator = (Textbox(20, 1, "", 0, 0), Textbox(20, 1, "", 0, 0))
        rows = [(Textbox(20, 1, "Memory size (GB):", 0, 0), self.memory),
                (Textbox(20, 1, "Min memory size (GB):", 0,
                         0), self.memory_min),
                (Textbox(20, 1, "Max memory size (GB):", 0,
                         0), self.memory_max), separator,
                (Textbox(20, 1, "Number of CPUs:", 0, 0), self.vcpu),
                (Textbox(20, 1, "Min number of CPUs:", 0, 0), self.vcpu_min),
                (Textbox(20, 1, "Max number of CPUs:", 0,
                         0), self.vcpu_max), separator,
                (Textbox(20, 1, "Disk size (GB):", 0,
                         0), self.disk), separator,
                (Textbox(20, 1, "OS template:", 0, 0), self.ostemplate),
                separator, (button_exit, button_save)]
        form = GridForm(self.screen, self.title, 2, len(rows))
        for i, row in enumerate(rows):
            for j, cell in enumerate(row):
                form.add(cell, j, i)
        return form.runOnce() != button_exit

    def validate(self):
        if Form.validate(self):
            self.errors.extend(
                validate_range("memory", self.memory.value(),
                               self.memory_min.value(),
                               self.memory_max.value(), float))
            self.errors.extend(
                validate_range("vcpu",
                               self.vcpu.value(), self.vcpu_min.value(),
                               self.vcpu_max.value(), int))
        return not self.errors
Esempio n. 14
0
class OpenvzModificationForm(Form):

    def __init__(self, screen, title, settings):
        self.settings = settings
        self.memory = FloatField("memory", float(settings["memory"]) / 1024)
        self.swap = FloatField("swap", float(settings["swap"]) / 1024)
        self.vcpu = IntegerField("vcpu", settings["vcpu"])
        self.bootorder = IntegerField("bootorder", settings.get("bootorder"), required=False)
        self.disk = FloatField("diskspace", float(settings["diskspace"]["/"]) / 1024)
        self.ioprio = RadioBarField("ioprio", screen, [('Low    ', 0, settings["ioprio"] == 0),
                                                       ('Default', 4, settings["ioprio"] == 4),
                                                       ('High   ', 7, settings["ioprio"] == 7)])
        self.bind_mounts = BindMountsField("bind_mounts", settings["bind_mounts"], required=False)
        self.vcpulimit = IntegerField("vcpulimit", settings["vcpulimit"],
                                      min_value=0, max_value=100)
        self.onboot = CheckboxField("onboot", settings.get("onboot", 0), display_name="Start on boot")
        self.ctid = IntegerField('ctid', settings['ctid'],
                                 display_name='VEID', required=False)
        self.hostname = StringField("hostname", settings.get("name", ""))
        Form.__init__(self, screen, title, [self.memory, self.vcpu, self.disk, self.ioprio, self.hostname,
                                            self.bind_mounts, self.swap, self.onboot, self.bootorder,
                                            self.vcpulimit, self.ctid])

    def display(self):
        button_save, button_exit = Button("Update"), Button("Back")
        separator = (Textbox(20, 1, "", 0, 0), Textbox(20, 1, "", 0, 0))
        rows = [
            (Textbox(20, 1, "Memory size (GB):", 0, 0), self.memory),
            separator,
            (Textbox(20, 1, "Swap size (GB):", 0, 0), self.swap),
            separator,
            (Textbox(20, 1, "Nr. of CPUs:", 0, 0), self.vcpu),
            separator,
            (Textbox(20, 1, "CPU usage limit (%):", 0, 0), self.vcpulimit),
            separator,
            (Textbox(20, 1, "Disk size (GB):", 0, 0), self.disk),
            separator,
            (Textbox(20, 1, "IO Priority:", 0, 0), self.ioprio),
            separator,
            (Textbox(20, 1, "Bind mounts:", 0, 0), self.bind_mounts),
            (Textbox(20, 1, "", 0, 0),
             Textbox(20, 1, "/src1,/dst1;/srcN,..", 0, 0)),
            separator,
            (Textbox(20, 1, "Hostname:", 0, 0), self.hostname),
            separator,
            (Textbox(20, 1, "", 0, 0), self.onboot),
            separator,
            (Textbox(20, 1, "Boot order:", 0, 0), self.bootorder),
            separator,
            (Textbox(20, 1, "VEID:", 0, 0), self.ctid),
            separator,
            (button_exit, button_save)
        ]
        form = GridForm(self.screen, self.title, 2, len(rows))
        for i, row in enumerate(rows):
            for j, cell in enumerate(row):
                form.add(cell, j, i)
        return form.runOnce() != button_exit

    def validate(self):
        # TODO disallow decrease of disk size, which would break OS
        Form.validate(self)
        bm_valid = self.bind_mounts.validate()
        if bm_valid:
            error_str = "\n".join([s[1] for s in bm_valid])
            self.errors.append(("bind_mounts", "%s" % error_str))
        if self.memory.value() < self.settings["memory_min"]:
            err_msg = ("Memory size can not be lower than minimum defined in template: %s GB" %
                       self.settings["memory_min"])
            self.errors.append(("memory", err_msg))
        return not self.errors
Esempio n. 15
0
class KvmTemplateForm(Form):

    def __init__(self, screen, title, settings):
        self.memory = FloatField("memory", settings["memory"])
        self.memory_min = FloatField("memory_min", settings.get("memory_min", ""),
                                     display_name="min memory", required=False)
        self.memory_max = FloatField("memory_max", settings.get("memory_max", ""),
                                     display_name="max memory", required=False)
        self.vcpu = FloatField("vcpu", settings["vcpu"])
        self.vcpu_min = FloatField("vcpu_min", settings.get("vcpu_min", ""),
                                   display_name="min vcpu", required=False)
        self.vcpu_max = FloatField("vcpu_max", settings.get("vcpu_max", ""),
                                   display_name="max vcpu", required=False)
        self.username = StringField("username", settings.get("username", ''), display_name="username")
        self.password = PasswordField("passwd", settings.get("passwd", ''), display_name="password")
        self.password2 = PasswordField("passw2", settings.get("passwd", ''), display_name="password")
        Form.__init__(self, screen, title, [self.memory, self.memory_min, self.memory_max,
                                            self.vcpu, self.vcpu_min, self.vcpu_max,
                                            self.username, self.password])

    def display(self):
        button_save, button_exit = Button("Create"), Button("Back")
        separator = (Textbox(20, 1, "", 0, 0), Textbox(20, 1, "", 0, 0))
        rows = [
            (Textbox(20, 1, "Memory size (GB):", 0, 0), self.memory),
            (Textbox(20, 1, "Min memory size (GB):", 0, 0), self.memory_min),
            (Textbox(20, 1, "Max memory size (GB):", 0, 0), self.memory_max),
            separator,
            (Textbox(20, 1, "Number of CPUs:", 0, 0), self.vcpu),
            (Textbox(20, 1, "Min number of CPUs:", 0, 0), self.vcpu_min),
            (Textbox(20, 1, "Max number of CPUs:", 0, 0), self.vcpu_max),
            separator,
            (Textbox(20, 1, "Default admin:", 0, 0), self.username),
            separator,
            (Textbox(20, 1, "Root password:"******"Root password x2:", 0, 0), self.password2),
            separator,
            (button_exit, button_save)
        ]
        form = GridForm(self.screen, self.title, 2, len(rows))
        for i, row in enumerate(rows):
            for j, cell in enumerate(row):
                form.add(cell, j, i)
        return form.runOnce() != button_exit

    def validate(self):
        if Form.validate(self):
            if (self.memory_min.value() and self.memory_max.value() and
                    float(self.memory_min.value()) > float(self.memory_max.value())):
                self.errors.extend([("memory", "Min memory exceeds max memory value.")])
            else:
                self.errors.extend(validate_range("memory", self.memory.value(),
                                                  self.memory_min.value(),
                                                  self.memory_max.value(), float))
                self.errors.extend(validate_range("vcpu", self.vcpu.value(),
                                                  self.vcpu_min.value(),
                                                  self.vcpu_max.value(), int))
            if (self.password.validate() and self.password2.validate() and
                    self.password.value() != self.password2.value()):
                self.errors.extend(("passwd", "Passwords don't match."))

        return not self.errors