protected async createSecretKey()

in lib/addons/argocd/index.ts [201:253]


    protected async createSecretKey(clusterInfo: spi.ClusterInfo, dependency: KubernetesManifest): Promise<string> {

        const secretName = this.options.bootstrapRepo?.credentialsSecretName;
        if (!secretName) {
            return "";
        }

        const appRepo = this.options.bootstrapRepo!;
        let credentials = { url: btoa(appRepo.repoUrl) };

        const secretValue = await getSecretValue(secretName, clusterInfo.cluster.stack.region);

        let result = "";

        switch (appRepo?.credentialsType) {
            case "SSH":
                credentials = { ...credentials, ...{ sshPrivateKey: btoa(secretValue) } };
                result = sshRepoRef(appRepo.repoUrl, secretName);
                break;
            case "USERNAME":
            case "TOKEN":
                // eslint-disable-next-line no-case-declarations
                const secretJson: any = JSON.parse(secretValue);
                credentials = {
                    ...credentials, ...{
                        username: btoa(secretJson["username"]),
                        password: btoa(secretJson["password"])
                    }
                };
                result = userNameRepoRef(appRepo.repoUrl, secretName);
                break;
        }

        const manifest = new KubernetesManifest(clusterInfo.cluster.stack, "argo-bootstrap-secret", {
            cluster: clusterInfo.cluster,
            manifest: [{
                apiVersion: "v1",
                kind: "Secret",
                metadata: {
                    name: secretName,
                    namespace: this.options.namespace,
                    labels: {
                        "argocd.argoproj.io/secret-type": "repo-creds"
                    }
                },
                data: credentials,
            }],
            overwrite: true,
        });

        manifest.node.addDependency(dependency);
        return result;
    }