Esempio n. 1
0
    def validate(self, attrs):
        credential_type = attrs.get("credential_type")
        if credential_type == separate_upper_class(
                K8SCredentialType.CertKey.name):
            cert = attrs.get("cert")
            key = attrs.get("key")
            if not cert or not key:
                raise serializers.ValidationError("Need cert and key content")
            else:
                attrs["username"] = ""
                attrs["password"] = ""
        elif credential_type == separate_upper_class(
                K8SCredentialType.UsernamePassword.name):
            username = attrs.get("username")
            password = attrs.get("password")
            if not username or not password:
                raise serializers.ValidationError("Need username and password")
            else:
                attrs["cert"] = ""
                attrs["key"] = ""
        elif credential_type == separate_upper_class(
                K8SCredentialType.Config.name):
            # TODO: Add config type validation
            pass

        return attrs
Esempio n. 2
0
    def validate(self, attrs):
        credential_type = attrs.get("credential_type")
        if credential_type == separate_upper_class(
            K8SCredentialType.CertKey.name
        ):
            cert = attrs.get("cert")
            key = attrs.get("key")
            if not cert or not key:
                raise serializers.ValidationError("Need cert and key content")
            else:
                attrs["username"] = ""
                attrs["password"] = ""
        elif credential_type == separate_upper_class(
            K8SCredentialType.UsernamePassword.name
        ):
            username = attrs.get("username")
            password = attrs.get("password")
            if not username or not password:
                raise serializers.ValidationError("Need username and password")
            else:
                attrs["cert"] = ""
                attrs["key"] = ""
        elif credential_type == separate_upper_class(
            K8SCredentialType.Config.name
        ):
            # TODO: Add config type validation
            pass

        return attrs
Esempio n. 3
0
class KubernetesConfig(models.Model):
    credential_type = models.CharField(
        help_text="Credential type of k8s",
        choices=K8SCredentialType.to_choices(separate_class_name=True),
        max_length=32,
        default=separate_upper_class(K8SCredentialType.CertKey.name),
    )
    enable_ssl = models.BooleanField(
        help_text="Whether enable ssl for api", default=False
    )
    ssl_ca = models.TextField(
        help_text="Ca file content for ssl", default="", blank=True
    )
    nfs_server = models.CharField(
        help_text="NFS server address for k8s",
        default="",
        max_length=256,
        blank=True,
    )
    parameters = JSONField(
        help_text="Extra parameters for kubernetes",
        default=dict,
        null=True,
        blank=True,
    )
    cert = models.TextField(
        help_text="Cert content for k8s", default="", blank=True
    )
    key = models.TextField(
        help_text="Key content for k8s", default="", blank=True
    )
    username = models.CharField(
        help_text="Username for k8s credential",
        default="",
        max_length=128,
        blank=True,
    )
    password = models.CharField(
        help_text="Password for k8s credential",
        default="",
        max_length=128,
        blank=True,
    )
    agent = models.ForeignKey(
        Agent,
        help_text="Agent of kubernetes config",
        on_delete=models.CASCADE,
        null=True,
    )