Пример #1
0
    def check_type(self, key, value, value_type):
        if value_type == "parameters":
            for i in value.split(","):
                tmp = i.split('=')
                while '' in tmp:
                    tmp.remove('')
                if len(tmp) != 2:
                    return [False, "value type is invalid !"]
            return [True, ""]
        if value_type == "node_list":
            if not isinstance(value.split(','), list):
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]
            # check if node exists and can be ssh
            error_node = []
            for node in value.split(','):
                if not common.try_ssh(node):
                    error_node.append(node)
            if len(error_node):
                return [
                    False,
                    "Nodes:%s are not set in /etc/hosts or can't be auto ssh" %
                    error_node
                ]
            else:
                return [True, ""]

        if value_type == "int_list":
            if not isinstance(value.split(','), list):
                return [
                    False,
                    "Value is a %s, format %s" % (value_type, "10,10,10,10")
                ]
            else:
                try:
                    for subdata in value.split(','):
                        int(subdata)
                    return [True, ""]
                except:
                    return [
                        False,
                        "Value is a %s, format %s" %
                        (value_type, "10,10,10,10")
                    ]

        if value_type == "bool":
            if value in ["true", "false"]:
                return [True, ""]
            else:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if "static" in value_type:
            static_value = value_type.split(":")[1]
            if value == static_value:
                return [True, ""]
            else:
                return [
                    False,
                    "Value is a static, only can set to be %s" % static_value
                ]

        if value_type == "int":
            try:
                int(value)
                return [True, ""]
            except:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if value_type == "osd_journal_list":
            try:
                error_disk = []
                disk_list = value.split(',')
                print disk_list
                for substr in disk_list:
                    res = common.get_list(substr)[0]
                    if len(res) > 4:
                        raise
                    device_index = 1
                    for device in res:
                        if not common.try_disk(key, device):
                            error_disk.append(device)
                        if device_index == len(res):
                            print "device_%s: %s " % (device_index, device)
                        else:
                            print "device_%s: %s " % (device_index, device),
                        device_index += 1
                if not len(error_disk):
                    return [True, ""]
                else:
                    return [
                        False,
                        "Disks:%s are not exists or it is boot device." %
                        error_disk
                    ]
            except:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if value_type == "diskformat":
            try:
                if ',' not in value:
                    return [True, ""]
                else:
                    return [False, "Please use [:] split."]
            except:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if value_type == "network":
            try:
                ip, netmask = value.split('/')
                if int(netmask) < 32 and len(ip.split('.')) == 4:
                    return [True, ""]
                else:
                    return [
                        False,
                        "Value is a %s, format %s" %
                        (value_type, "192.168.5.0/24")
                    ]

            except:
                return [
                    False,
                    "Value is a %s, format %s" % (value_type, "192.168.5.0/24")
                ]

        if value_type == "ip":
            try:
                count = 0
                for subip in value.split('.'):
                    count += 1
                    if int(subip) >= 255:
                        return [
                            False,
                            "Value is a %s, format %s" %
                            (value_type, "192.168.5.1")
                        ]
                if count == 4:
                    return [True, ""]
                else:
                    return [
                        False,
                        "Value is a %s, format %s" %
                        (value_type, "192.168.5.1")
                    ]
            except:
                return [
                    False,
                    "Value is a %s, format %s" % (value_type, "192.168.5.1")
                ]

        return [True, ""]
Пример #2
0
    def check_type( self, key, value, value_type):
        if value_type == "node_list":
            if not isinstance( value.split(','), list ):
                return [ False, "Value is a %s, format %s" % (value_type, self.type_example(value_type)) ]
            # check if node exists and can be ssh
            error_node = []
            for node in value.split(','):
                if not common.try_ssh(node):
                    error_node.append( node )
            if len(error_node):
                return [ False, "Nodes:%s are not set in /etc/hosts or can't be auto ssh" % error_node ]
            else:
                return [ True, "" ]

        if value_type == "int_list":
            if not isinstance( value.split(','), list ):
                return [ False, "Value is a %s, format %s" % (value_type, "10,10,10,10") ]
            else:
                try:
                    for subdata in value.split(','):
                        int( subdata )
                    return [ True, "" ]
                except:
                    return [ False, "Value is a %s, format %s" % (value_type, "10,10,10,10") ]

        if value_type == "bool":
            if value in ["true", "false"]:
                return [ True, "" ]
            else:
                return [ False, "Value is a %s, format %s" % (value_type, self.type_example(value_type)) ]

        if "static" in value_type:
            static_value = value_type.split(":")[1]
            if value == static_value:
                return [ True, "" ]
            else:
                return [ False, "Value is a static, only can set to be %s" % static_value ]

        if value_type == "int":
            try:
                int(value)
                return [ True, "" ]
            except:
                return [ False, "Value is a %s, format %s" % (value_type, self.type_example(value_type)) ]

        if value_type == "osd_journal_list":
            try:
                error_disk = []
                disk_list = value.split(',')
                print disk_list
                for substr in disk_list:
                    res = common.get_list(substr)[0]
                    if len(res) > 4:
                        raise
                    device_index = 1
                    for device in res:
                        if not common.try_disk(key, device):
                            error_disk.append(device)
                        if device_index == len(res):
                            print "device_%s: %s " % (device_index, device)
                        else:
                            print "device_%s: %s " % (device_index, device),
                        device_index += 1
                if not len(error_disk):
                    return [ True, "" ]
                else:
                    return [ False, "Disks:%s are not exists or it is boot device." % error_disk ]
            except:
                return [ False, "Value is a %s, format %s" % (value_type, self.type_example(value_type)) ]
     
	if value_type == "diskformat":
            try:
                if ',' not in value:
		    return [ True, "" ]
		else:
                    return [ False, "Please use [:] split."]
            except:
                return [ False, "Value is a %s, format %s" % (value_type, self.type_example(value_type)) ]

        if value_type == "network":
            try:
                ip, netmask = value.split('/')
                if int(netmask) < 32 and len(ip.split('.')) == 4:
                    return [ True , "" ]
                else:
                    return [ False, "Value is a %s, format %s" % (value_type, "192.168.5.0/24") ]

            except:
                return [ False, "Value is a %s, format %s" % (value_type, "192.168.5.0/24") ]

        if value_type == "ip":
            try:
                count = 0
                for subip in value.split('.'):
                    count += 1
                    if int(subip) >= 255:
                        return [ False, "Value is a %s, format %s" % (value_type, "192.168.5.1") ]
                if count == 4:
                    return [ True , "" ]
                else:
                    return [ False, "Value is a %s, format %s" % (value_type, "192.168.5.1") ]
            except:
                return [ False, "Value is a %s, format %s" % (value_type, "192.168.5.1") ]

        return [ True, "" ]
Пример #3
0
    def check_type(self, key, value, value_type):
        if value_type == "node_list":
            if not isinstance(value.split(','), list):
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]
            # check if node exists and can be ssh
            error_node = []
            for node in value.split(','):
                if not common.try_ssh(node):
                    error_node.append(node)
            if len(error_node):
                return [
                    False,
                    "Nodes:%s are not set in /etc/hosts or can't be auto ssh" %
                    error_node
                ]
            else:
                return [True, ""]

        if value_type == "int_list":
            if not isinstance(value.split(','), list):
                return [
                    False,
                    "Value is a %s, format %s" % (value_type, "10,10,10,10")
                ]
            else:
                try:
                    for subdata in value.split(','):
                        int(subdata)
                    return [True, ""]
                except:
                    return [
                        False,
                        "Value is a %s, format %s" %
                        (value_type, "10,10,10,10")
                    ]

        if value_type == "bool":
            if value in ["true", "false"]:
                return [True, ""]
            else:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if "static" in value_type:
            static_value = value_type.split(":")[1]
            if value == static_value:
                return [True, ""]
            else:
                return [
                    False,
                    "Value is a static, only can set to be %s" % static_value
                ]

        if value_type == "int":
            try:
                int(value)
                return [True, ""]
            except:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if value_type == "osd_journal_list":
            try:
                error_disk = []
                disk_list = value.split(',')
                print disk_list
                for substr in disk_list:
                    osd, journal = substr.split(':')
                    print "osd: %s, journal: %s" % (osd, journal)
                    if not common.try_disk(key, osd):
                        error_disk.append(osd)
                    if not common.try_disk(key, journal):
                        error_disk.append(journal)
                if not len(error_disk):
                    return [True, ""]
                else:
                    return [
                        False,
                        "Disks:%s are not exists or it is boot device." %
                        error_disk
                    ]
            except:
                return [
                    False,
                    "Value is a %s, format %s" %
                    (value_type, self.type_example(value_type))
                ]

        if value_type == "network":
            try:
                ip, netmask = value.split('/')
                if int(netmask) < 32 and len(ip.split('.')) == 4:
                    return [True, ""]
                else:
                    return [
                        False,
                        "Value is a %s, format %s" %
                        (value_type, "192.168.5.0/24")
                    ]

            except:
                return [
                    False,
                    "Value is a %s, format %s" % (value_type, "192.168.5.0/24")
                ]

        if value_type == "ip":
            try:
                count = 0
                for subip in value.split('.'):
                    count += 1
                    if int(subip) >= 255:
                        return [
                            False,
                            "Value is a %s, format %s" %
                            (value_type, "192.168.5.1")
                        ]
                if count == 4:
                    return [True, ""]
                else:
                    return [
                        False,
                        "Value is a %s, format %s" %
                        (value_type, "192.168.5.1")
                    ]
            except:
                return [
                    False,
                    "Value is a %s, format %s" % (value_type, "192.168.5.1")
                ]

        return [True, ""]