UNPKG

generator-begcode

Version:

Spring Boot + Angular/React/Vue in one handy generator

106 lines (105 loc) 5.27 kB
import crypto from 'crypto'; import { defaults } from 'lodash-es'; import { HELM_COUCHBASE_OPERATOR, HELM_ELASTICSEARCH, HELM_GRAFANA, HELM_KAFKA, HELM_MARIADB, HELM_MONGODB_REPLICASET, HELM_MYSQL, HELM_POSTGRESQL, HELM_PROMETHEUS, KUBERNETES_BATCH_API_VERSION, KUBERNETES_CORE_API_VERSION, KUBERNETES_DEPLOYMENT_API_VERSION, KUBERNETES_INGRESS_API_VERSION, KUBERNETES_ISTIO_NETWORKING_API_VERSION, KUBERNETES_RBAC_API_VERSION, KUBERNETES_STATEFULSET_API_VERSION, } from '../generator-constants.js'; import { applicationTypes, kubernetesPlatformTypes } from '../../lib/jhipster/index.js'; import { defaultKubernetesConfig } from './kubernetes-constants.js'; const { MICROSERVICE } = applicationTypes; const { GeneratorTypes, IngressTypes, ServiceTypes } = kubernetesPlatformTypes; const { INGRESS } = ServiceTypes; const { GKE, NGINX } = IngressTypes; const { K8S, HELM } = GeneratorTypes; export const checkKubernetes = async function () { if (this.skipChecks) return; try { await this.spawnCommand('kubectl version'); } catch { this.log.warn('kubectl 1.2 or later is not installed on your computer.\n' + 'Make sure you have Kubernetes installed. Read https://kubernetes.io/docs/setup/\n'); } }; export const checkHelm = async function () { if (this.skipChecks) return; try { await this.spawnCommand('helm version --client | grep -E "(v2\\.1[2-9]{1,2}\\.[0-9]{1,3})|(v3\\.[0-9]{1,2}\\.[0-9]{1,3})"'); } catch { this.log.warn('helm 2.12.x or later is not installed on your computer.\n' + 'Make sure you have helm installed. Read https://github.com/helm/helm/\n'); } }; export function loadConfig() { if (!this.jhipsterConfig.dbRandomPassword) { this.jhipsterConfig.dbRandomPassword = this.options.reproducibleTests ? 'SECRET-PASSWORD' : crypto.randomBytes(30).toString('hex'); } const kubernetesWithDefaults = defaults({}, this.jhipsterConfig, defaultKubernetesConfig); this.kubernetesNamespace = kubernetesWithDefaults.kubernetesNamespace; this.kubernetesServiceType = kubernetesWithDefaults.kubernetesServiceType; this.ingressType = kubernetesWithDefaults.ingressType; this.ingressDomain = kubernetesWithDefaults.ingressDomain; this.istio = kubernetesWithDefaults.istio; this.dbRandomPassword = kubernetesWithDefaults.dbRandomPassword; this.kubernetesUseDynamicStorage = kubernetesWithDefaults.kubernetesUseDynamicStorage; this.kubernetesStorageClassName = kubernetesWithDefaults.kubernetesStorageClassName; this.generatorType = kubernetesWithDefaults.generatorType; } export function saveConfig() { this.config.set(defaults({ appsFolders: this.appsFolders, directoryPath: this.directoryPath, clusteredDbApps: this.clusteredDbApps, serviceDiscoveryType: this.serviceDiscoveryType, jwtSecretKey: this.jwtSecretKey, dockerRepositoryName: this.dockerRepositoryName, dockerPushCommand: this.dockerPushCommand, kubernetesNamespace: this.kubernetesNamespace, kubernetesServiceType: this.kubernetesServiceType, kubernetesUseDynamicStorage: this.kubernetesUseDynamicStorage, kubernetesStorageClassName: this.kubernetesStorageClassName, generatorType: this.generatorType, ingressType: this.ingressType, ingressDomain: this.ingressDomain, monitoring: this.monitoring, istio: this.istio, }, defaultKubernetesConfig)); } export function setupKubernetesConstants() { this.KUBERNETES_CORE_API_VERSION = KUBERNETES_CORE_API_VERSION; this.KUBERNETES_BATCH_API_VERSION = KUBERNETES_BATCH_API_VERSION; this.KUBERNETES_DEPLOYMENT_API_VERSION = KUBERNETES_DEPLOYMENT_API_VERSION; this.KUBERNETES_STATEFULSET_API_VERSION = KUBERNETES_STATEFULSET_API_VERSION; this.KUBERNETES_INGRESS_API_VERSION = KUBERNETES_INGRESS_API_VERSION; this.KUBERNETES_ISTIO_NETWORKING_API_VERSION = KUBERNETES_ISTIO_NETWORKING_API_VERSION; this.KUBERNETES_RBAC_API_VERSION = KUBERNETES_RBAC_API_VERSION; } export function derivedKubernetesPlatformProperties(dest = this) { dest.deploymentApplicationTypeMicroservice = dest.deploymentApplicationType === MICROSERVICE; dest.ingressTypeNginx = dest.ingressType === NGINX; dest.ingressTypeGke = dest.ingressType === GKE; dest.kubernetesServiceTypeIngress = dest.kubernetesServiceType === INGRESS; dest.kubernetesNamespaceDefault = dest.kubernetesNamespace === 'default'; dest.generatorTypeK8s = dest.generatorType === K8S; dest.generatorTypeHelm = dest.generatorType === HELM; } export function setupHelmConstants() { this.HELM_KAFKA = HELM_KAFKA; this.HELM_ELASTICSEARCH = HELM_ELASTICSEARCH; this.HELM_PROMETHEUS = HELM_PROMETHEUS; this.HELM_GRAFANA = HELM_GRAFANA; this.HELM_MARIADB = HELM_MARIADB; this.HELM_MYSQL = HELM_MYSQL; this.HELM_POSTGRESQL = HELM_POSTGRESQL; this.HELM_MONGODB_REPLICASET = HELM_MONGODB_REPLICASET; this.HELM_COUCHBASE_OPERATOR = HELM_COUCHBASE_OPERATOR; } export default { checkKubernetes, checkHelm, loadConfig, saveConfig, setupKubernetesConstants, setupHelmConstants, derivedKubernetesPlatformProperties, };