Refactor entire project (#39)
- Use more modern TypeScript conventions - Use JavaScript Kubernetes Client - Add unit tests - Add integration tests - Add TypeScript compile verify workflow - Switch codeowners
This commit is contained in:
68
src/kubeconfigs/arc.ts
Normal file
68
src/kubeconfigs/arc.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import * as core from "@actions/core";
|
||||
import * as io from "@actions/io";
|
||||
import { Method, parseMethod } from "../types/method";
|
||||
import * as path from "path";
|
||||
import { runAzCliCommand, runAzKubeconfigCommandBlocking } from "./azCommands";
|
||||
|
||||
const RUNNER_TEMP: string = process.env["RUNNER_TEMP"] || "";
|
||||
export const KUBECONFIG_LOCATION: string = path.join(
|
||||
RUNNER_TEMP,
|
||||
`arc_kubeconfig_${Date.now()}`
|
||||
);
|
||||
|
||||
/**
|
||||
* Gets the kubeconfig based on provided method for an Arc Kubernetes cluster
|
||||
* @returns The kubeconfig wrapped in a Promise
|
||||
*/
|
||||
export async function getArcKubeconfig(): Promise<string> {
|
||||
const resourceGroupName = core.getInput("resource-group", { required: true });
|
||||
const clusterName = core.getInput("cluster-name", { required: true });
|
||||
const azPath = await io.which("az", true);
|
||||
|
||||
const method: Method | undefined = parseMethod(
|
||||
core.getInput("method", { required: true })
|
||||
);
|
||||
|
||||
await runAzCliCommand(azPath, ["extension", "add", "-n", "connectedk8s"]);
|
||||
|
||||
switch (method) {
|
||||
case Method.SERVICE_ACCOUNT:
|
||||
const saToken = core.getInput("token", { required: true });
|
||||
return await runAzKubeconfigCommandBlocking(
|
||||
azPath,
|
||||
[
|
||||
"connectedk8s",
|
||||
"proxy",
|
||||
"-n",
|
||||
clusterName,
|
||||
"-g",
|
||||
resourceGroupName,
|
||||
"--token",
|
||||
saToken,
|
||||
"-f",
|
||||
KUBECONFIG_LOCATION,
|
||||
],
|
||||
KUBECONFIG_LOCATION
|
||||
);
|
||||
case Method.SERVICE_PRINCIPAL:
|
||||
return await runAzKubeconfigCommandBlocking(
|
||||
azPath,
|
||||
[
|
||||
"connectedk8s",
|
||||
"proxy",
|
||||
"-n",
|
||||
clusterName,
|
||||
"-g",
|
||||
resourceGroupName,
|
||||
"-f",
|
||||
KUBECONFIG_LOCATION,
|
||||
],
|
||||
KUBECONFIG_LOCATION
|
||||
);
|
||||
case undefined:
|
||||
core.warning("Defaulting to kubeconfig method");
|
||||
case Method.KUBECONFIG:
|
||||
default:
|
||||
throw Error("Kubeconfig method not supported for Arc cluster");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user