Skip to content

Commit

Permalink
refactor(k8s): change metadata namespace name
Browse files Browse the repository at this point in the history
This preempts having several namespaces per user/project

BREAKING CHANGE:
Existing metadata namespaces will have to be manually cleaned up.
We suggest resetting local k8s clusters after upgrading.
  • Loading branch information
edvald committed Jul 10, 2018
1 parent 1e42cfb commit 6f73299
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 15 deletions.
14 changes: 7 additions & 7 deletions src/plugins/kubernetes/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export async function getEnvironmentStatus({ ctx, provider }: GetEnvironmentStat
metadataNamespaceReady: false,
}

const metadataNamespace = getMetadataNamespace(ctx, provider)
const metadataNamespace = await getMetadataNamespace(ctx, provider)
const namespacesStatus = await coreApi(context).listNamespace()
const namespace = await getAppNamespace(ctx, provider)

Expand Down Expand Up @@ -128,7 +128,7 @@ export async function configureEnvironment(
}

if (!status.detail.metadataNamespaceReady) {
const ns = getMetadataNamespace(ctx, provider)
const ns = await getMetadataNamespace(ctx, provider)
logEntry && logEntry.setState({ section: "kubernetes", msg: `Creating namespace ${ns}` })
await createNamespace(context, ns)
}
Expand Down Expand Up @@ -299,7 +299,7 @@ export async function testModule(
testName,
}

const ns = getMetadataNamespace(ctx, provider)
const ns = await getMetadataNamespace(ctx, provider)
const resultKey = getTestResultKey(module, testName, result.version)
const body = {
apiVersion: "v1",
Expand Down Expand Up @@ -330,7 +330,7 @@ export async function getTestResult(
{ ctx, provider, module, testName, version }: GetTestResultParams<ContainerModule>,
) {
const context = provider.config.context
const ns = getMetadataNamespace(ctx, provider)
const ns = await getMetadataNamespace(ctx, provider)
const resultKey = getTestResultKey(module, testName, version)

try {
Expand Down Expand Up @@ -387,7 +387,7 @@ export async function getServiceLogs(

export async function getConfig({ ctx, provider, key }: GetConfigParams) {
const context = provider.config.context
const ns = getMetadataNamespace(ctx, provider)
const ns = await getMetadataNamespace(ctx, provider)

try {
const res = await coreApi(context).readNamespacedSecret(key.join("."), ns)
Expand All @@ -404,7 +404,7 @@ export async function getConfig({ ctx, provider, key }: GetConfigParams) {
export async function setConfig({ ctx, provider, key, value }: SetConfigParams) {
// we store configuration in a separate metadata namespace, so that configs aren't cleared when wiping the namespace
const context = provider.config.context
const ns = getMetadataNamespace(ctx, provider)
const ns = await getMetadataNamespace(ctx, provider)
const name = key.join(".")
const body = {
body: {
Expand Down Expand Up @@ -436,7 +436,7 @@ export async function setConfig({ ctx, provider, key, value }: SetConfigParams)

export async function deleteConfig({ ctx, provider, key }: DeleteConfigParams) {
const context = provider.config.context
const ns = getMetadataNamespace(ctx, provider)
const ns = await getMetadataNamespace(ctx, provider)
const name = key.join(".")

try {
Expand Down
15 changes: 7 additions & 8 deletions src/plugins/kubernetes/namespace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export async function createNamespace(context: string, namespace: string) {
})
}

export async function getAppNamespace(ctx: PluginContext, provider: KubernetesProvider) {
export async function getNamespace(ctx: PluginContext, provider: KubernetesProvider, suffix?: string) {
let namespace

if (isSystemGarden(provider)) {
Expand All @@ -57,16 +57,15 @@ export async function getAppNamespace(ctx: PluginContext, provider: KubernetesPr
namespace = `garden--${username}--${ctx.projectName}`
}

return namespace
return suffix ? `${namespace}--${suffix}` : namespace
}

export function getMetadataNamespace(ctx: PluginContext, provider: KubernetesProvider) {
if (isSystemGarden(provider)) {
return GARDEN_SYSTEM_NAMESPACE + "--metadata"
}
export async function getAppNamespace(ctx: PluginContext, provider: KubernetesProvider) {
return getNamespace(ctx, provider)
}

const env = ctx.getEnvironment()
return `garden-metadata--${ctx.projectName}--${env.namespace}`
export function getMetadataNamespace(ctx: PluginContext, provider: KubernetesProvider) {
return getNamespace(ctx, provider, "metadata")
}

export async function getAllGardenNamespaces(context: string): Promise<string[]> {
Expand Down

0 comments on commit 6f73299

Please sign in to comment.