Files
c/kubernetes/config/kube_config_model.c
Hui Yu 43aaf95cd1 [Configuration]
1. Authentication provider plugin framework

2. An instance of authentication provider plugin for OIDC (OpenID Connect)
2020-08-19 21:38:06 +08:00

314 lines
8.9 KiB
C

#include "kube_config_model.h"
#include <stdlib.h>
void kubeconfig_free_string_list(char **string_list, int count)
{
if (string_list && count > 0) {
for (int i = 0; i < count; i++) {
if (string_list[i]) {
free(string_list[i]);
string_list[i] = NULL;
}
}
free(string_list);
}
}
void kubeconfig_free_string_map_list(keyValuePair_t ** map_list, int count)
{
if (map_list && count > 0) {
keyValuePair_t *pair = NULL;
for (int i = 0; i < count; i++) {
pair = map_list[i];
if (pair) {
if (pair->key) {
free(pair->key);
pair->key = NULL;
}
if (pair->value) {
free(pair->value);
pair->value = NULL;
}
free(pair);
pair = NULL;
}
}
free(map_list);
}
}
kubeconfig_property_t *kubeconfig_property_create(kubeconfig_property_type_t type)
{
kubeconfig_property_t *property = calloc(1, sizeof(kubeconfig_property_t));
property->type = type;
return property;
}
void kubeconfig_property_free(kubeconfig_property_t * property)
{
if (!property) {
return;
}
if (property->name) {
free(property->name);
property->name = NULL;
}
if (KUBECONFIG_PROPERTY_TYPE_CLUSTER == property->type) {
if (property->server) {
free(property->server);
property->server = NULL;
}
if (property->certificate_authority_data) {
free(property->certificate_authority_data);
property->certificate_authority_data = NULL;
}
}
if (KUBECONFIG_PROPERTY_TYPE_USER == property->type) {
if (property->client_certificate_data) {
free(property->client_certificate_data);
property->client_certificate_data = NULL;
}
if (property->client_key_data) {
free(property->client_key_data);
property->client_key_data = NULL;
}
if (property->username) {
free(property->username);
property->username = NULL;
}
if (property->password) {
free(property->password);
property->password = NULL;
}
if (property->token) {
free(property->token);
property->token = NULL;
}
if (property->auth_provider) {
kubeconfig_property_free(property->auth_provider);
property->auth_provider = NULL;
}
if (property->exec) {
kubeconfig_property_free(property->exec);
property->exec = NULL;
}
}
if (KUBECONFIG_PROPERTY_TYPE_CONTEXT == property->type) {
if (property->cluster) {
free(property->cluster);
property->cluster = NULL;
}
if (property->namespace) {
free(property->namespace);
property->namespace = NULL;
}
if (property->user) {
free(property->user);
property->user = NULL;
}
}
if (KUBECONFIG_PROPERTY_TYPE_USER_EXEC == property->type) {
if (property->command) {
free(property->command);
property->command = NULL;
}
if (property->apiVersion) {
free(property->apiVersion);
property->apiVersion = NULL;
}
if (property->envs && property->envs_count > 0) {
kubeconfig_free_string_map_list(property->envs, property->envs_count);
property->envs = NULL;
property->envs_count = 0;
}
if (property->args && property->args_count > 0) {
kubeconfig_free_string_list(property->args, property->args_count);
property->args = NULL;
property->args_count = 0;
}
}
if (KUBECONFIG_PROPERTY_TYPE_USER_AUTH_PROVIDER == property->type) {
if (property->id_token) {
free(property->id_token);
property->id_token = NULL;
}
if (property->cmd_path) {
free(property->cmd_path);
property->cmd_path = NULL;
}
if (property->access_token) {
free(property->access_token);
property->access_token = NULL;
}
if (property->expires_on) {
free(property->expires_on);
property->expires_on = NULL;
}
if (property->expiry) {
free(property->expiry);
property->expiry = NULL;
}
if (property->idp_certificate_authority) {
free(property->idp_certificate_authority);
property->idp_certificate_authority = NULL;
}
if (property->idp_certificate_authority_data) {
free(property->idp_certificate_authority_data);
property->idp_certificate_authority_data = NULL;
}
if (property->client_id) {
free(property->client_id);
property->client_id = NULL;
}
if (property->client_secret) {
free(property->client_secret);
property->client_secret = NULL;
}
if (property->idp_issuer_url) {
free(property->idp_issuer_url);
property->idp_issuer_url = NULL;
}
if (property->refresh_token) {
free(property->refresh_token);
property->refresh_token = NULL;
}
}
free(property);
}
kubeconfig_property_t **kubeconfig_properties_create(int contexts_count, kubeconfig_property_type_t type)
{
kubeconfig_property_t **properties = (kubeconfig_property_t **) calloc(contexts_count, sizeof(kubeconfig_property_t *));
int i = 0;
for (i = 0; i < contexts_count; i++) {
properties[i] = kubeconfig_property_create(type);
}
return properties;
}
void kubeconfig_properties_free(kubeconfig_property_t ** properties, int properties_count)
{
if (!properties) {
return;
}
for (int i = 0; i < properties_count; i++) {
if (properties[i]) {
kubeconfig_property_free(properties[i]);
properties[i] = NULL;
}
}
free(properties);
}
kubeconfig_t *kubeconfig_create()
{
kubeconfig_t *config = calloc(1, sizeof(kubeconfig_t));
return config;
}
void kubeconfig_free(kubeconfig_t * kubeconfig)
{
if (!kubeconfig) {
return;
}
if (kubeconfig->fileName) {
free(kubeconfig->fileName);
kubeconfig->fileName = NULL;
}
if (kubeconfig->apiVersion) {
free(kubeconfig->apiVersion);
kubeconfig->apiVersion = NULL;
}
if (kubeconfig->kind) {
free(kubeconfig->kind);
kubeconfig->kind = NULL;
}
if (kubeconfig->preferences) {
free(kubeconfig->preferences);
kubeconfig->preferences = NULL;
}
if (kubeconfig->current_context) {
free(kubeconfig->current_context);
kubeconfig->current_context = NULL;
}
if (kubeconfig->clusters) {
kubeconfig_properties_free(kubeconfig->clusters, kubeconfig->clusters_count);
kubeconfig->clusters = NULL;
}
if (kubeconfig->users) {
kubeconfig_properties_free(kubeconfig->users, kubeconfig->users_count);
kubeconfig->users = NULL;
}
if (kubeconfig->contexts) {
kubeconfig_properties_free(kubeconfig->contexts, kubeconfig->contexts_count);
kubeconfig->contexts = NULL;
}
free(kubeconfig);
}
ExecCredential_status_t *exec_credential_status_create()
{
ExecCredential_status_t *exec_credential_status = calloc(1, sizeof(ExecCredential_status_t));
return exec_credential_status;
}
void exec_credential_status_free(ExecCredential_status_t * exec_credential_status)
{
if (!exec_credential_status) {
return;
}
if (exec_credential_status->token) {
free(exec_credential_status->token);
exec_credential_status->token = NULL;
}
if (exec_credential_status->clientCertificateData) {
free(exec_credential_status->clientCertificateData);
exec_credential_status->clientCertificateData = NULL;
}
if (exec_credential_status->clientKeyData) {
free(exec_credential_status->clientKeyData);
exec_credential_status->clientKeyData = NULL;
}
free(exec_credential_status);
}
ExecCredential_t *exec_credential_create()
{
ExecCredential_t *exec_credential = calloc(1, sizeof(ExecCredential_t));
return exec_credential;
}
void exec_credential_free(ExecCredential_t * exec_credential)
{
if (!exec_credential) {
return;
}
if (exec_credential->apiVersion) {
free(exec_credential->apiVersion);
exec_credential->apiVersion = NULL;
}
if (exec_credential->kind) {
free(exec_credential->kind);
exec_credential->kind = NULL;
}
if (exec_credential->status) {
exec_credential_status_free(exec_credential->status);
exec_credential->status = NULL;
}
free(exec_credential);
}