option app_label = "kubernetes";
option name = "kubernetes";

message KubernetesService (Service){
    option verbose_name = "Kubernetes Service";

}

message KubernetesResourceInstance (ServiceInstance){
     option verbose_name = "Kubernetes Resource Instance";
     option description = "An opaque-to-xos blob of yaml that is passed directly to kubectl";

     optional string resource_definition = 3 [
         help_text = "yaml containing kubernetes resources",
         max_length = 65535];
     optional string kubectl_state = 4 [
         help_text = "Most recent kubectl action completed by synchronizer",
         choices = "(('created', 'CREATED'), ('updated', 'UPDATED'), ('deleted', 'DELETED'))",
         db_index = False,
         feedback_state = True,
         max_length = 32];
}

message KubernetesServiceInstance (ComputeServiceInstance){
     option verbose_name = "Kubernetes Service Instance";
     option description = "A ComputeServiceInstance in kubernetes, usually in the form of a pod";

     optional string pod_ip = 1 [
         help_text = "IP address of pod",
         blank = True,
         db_index = False,
         max_length=32,
         null = True];
     required bool need_event = 2 [
         help_text = "True if a kafka event needs to be sent by the pull step",
         default = False];
     optional string last_event_sent = 3 [
         help_text = "Type of last event sent",
         blank = True,
         choices = "(('created', 'CREATED'), ('updated', 'UPDATED'), ('deleted', 'DELETED'))",
         db_index = False,
         max_length=32,
         null = True];
}

message KubernetesData (XOSBase) {
    option description = "Base class for Kubernetes ConfigMaps, Secrets, and similar models";

    required string name = 1 [
        help_text = "Name of this data store",
        db_index = False,
        max_length=256];
    optional string data = 2 [
        help_text = "Set of key,value pairs encoded as a json dictionary",
        db_index = False];
    required manytoone trust_domain->TrustDomain:kubernetes_configmaps = 3:1003 [
        help_text = "Trust domain this data resides in",
        db_index = True];
}

message KubernetesConfigMap (KubernetesData) {
    option description = "A Kubernetes ConfigMap, holding (name, value) data in insecure manner";
}

message KubernetesSecret (KubernetesData) {
    option description = "A kubernetes Secret, hodling (name, value) data in a secure manner";
}

message KubernetesSecretVolumeMount (XOSBase) {
    option description = "Mounts a KubernetesSecret to a KubernetesServiceInstance";

    required manytoone secret->KubernetesSecret:kubernetes_secret_volume_mounts = 1:1001 [
        help_text = "Secret to mount",
        blank = False,
        db_index = True,
        null = False];
    required manytoone service_instance->KubernetesServiceInstance:kubernetes_secret_volume_mounts = 2 [
        help_text = "Service instance in which to mount secret",
        blank = False,
        db_index = True,
        null = False];
    required string mount_path = 3 [
        help_text = "Path to mount secret",
        db_index = False,
        max_length=1024];
    optional string sub_path = 4 [
        help_text = "Subpath within secret to mount",
        db_index = False,
        max_length=1024];
}

message KubernetesConfigVolumeMount (XOSBase) {
    option description = "Mounts a KubernetesConfigMap to a KubernetesServiceInstance";

    required manytoone config->KubernetesConfigMap:kubernetes_config_voume_mounts = 1:1001 [
        help_text = "Config to mount",
        blank = False,
        db_index = True,
        null = False];
    required manytoone service_instance->KubernetesServiceInstance:kubernetes_config_volume_mounts = 2:1001 [
        help_text = "Service instance in which to mount config",
        blank = False,
        db_index = True,
        null = False];
    required string mount_path = 3 [
        help_text = "Path to mount secret",
        db_index = False,
        max_length=1024];
    optional string sub_path = 4 [
        help_text = "Subpath within secret to mount",
        db_index = False,
        max_length=1024];
}

