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
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
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, )