OpenShiftEnvironmentProvisioner implements KubernetesEnvironmentProvisioner<OpenShiftEnvironment> { @Override @Traced public void provision(OpenShiftEnvironment osEnv, RuntimeIdentity identity) throws InfrastructureException { TracingTags.WORKSPACE_ID.set(identity::getWorkspaceId); LOG.debug( "Start provisioning OpenShift environment for workspace '{}'", identity.getWorkspaceId()); if (pvcEnabled) { asyncStoragePodInterceptor.intercept(osEnv, identity); logsVolumeMachineProvisioner.provision(osEnv, identity); } serversConverter.provision(osEnv, identity); previewUrlExposer.expose(osEnv); envVarsConverter.provision(osEnv, identity); if (pvcEnabled) { volumesStrategy.provision(osEnv, identity); } restartPolicyRewriter.provision(osEnv, identity); uniqueNamesProvisioner.provision(osEnv, identity); routeTlsProvisioner.provision(osEnv, identity); resourceLimitRequestProvisioner.provision(osEnv, identity); nodeSelectorProvisioner.provision(osEnv, identity); podTerminationGracePeriodProvisioner.provision(osEnv, identity); imagePullSecretProvisioner.provision(osEnv, identity); proxySettingsProvisioner.provision(osEnv, identity); serviceAccountProvisioner.provision(osEnv, identity); asyncStorageProvisioner.provision(osEnv, identity); certificateProvisioner.provision(osEnv, identity); sshKeysProvisioner.provision(osEnv, identity); vcsSslCertificateProvisioner.provision(osEnv, identity); gitConfigProvisioner.provision(osEnv, identity); gatewayRouterProvisioner.provision(osEnv, identity); LOG.debug( "Provisioning OpenShift environment done for workspace '{}'", identity.getWorkspaceId()); } @Inject  OpenShiftEnvironmentProvisioner(
      @Named("che.infra.kubernetes.pvc.enabled") boolean pvcEnabled,
      OpenShiftUniqueNamesProvisioner uniqueNamesProvisioner,
      TlsProvisionerProvider<OpenShiftEnvironment> routeTlsProvisionerProvider,
      ServersConverter<OpenShiftEnvironment> serversConverter,
      EnvVarsConverter envVarsConverter,
      RestartPolicyRewriter restartPolicyRewriter,
      WorkspaceVolumesStrategy volumesStrategy,
      ContainerResourceProvisioner resourceLimitRequestProvisioner,
      LogsVolumeMachineProvisioner logsVolumeMachineProvisioner,
      PodTerminationGracePeriodProvisioner podTerminationGracePeriodProvisioner,
      ImagePullSecretProvisioner imagePullSecretProvisioner,
      ProxySettingsProvisioner proxySettingsProvisioner,
      NodeSelectorProvisioner nodeSelectorProvisioner,
      AsyncStorageProvisioner asyncStorageProvisioner,
      AsyncStoragePodInterceptor asyncStoragePodInterceptor,
      ServiceAccountProvisioner serviceAccountProvisioner,
      CertificateProvisioner certificateProvisioner,
      SshKeysProvisioner sshKeysProvisioner,
      GitConfigProvisioner gitConfigProvisioner,
      OpenShiftPreviewUrlExposer previewUrlEndpointsProvisioner,
      VcsSslCertificateProvisioner vcsSslCertificateProvisioner,
      GatewayRouterProvisioner gatewayRouterProvisioner); @Override @Traced void provision(OpenShiftEnvironment osEnv, RuntimeIdentity identity);  }
@Test public void performsOrderedProvisioning() throws Exception { osInfraProvisioner.provision(osEnv, runtimeIdentity); provisionOrder.verify(logsVolumeMachineProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(serversProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(envVarsProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(volumesStrategy).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(restartPolicyRewriter).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(uniqueNamesProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(tlsRouteProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(ramLimitProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(nodeSelectorProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder .verify(podTerminationGracePeriodProvisioner) .provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(imagePullSecretProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(proxySettingsProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(serviceAccountProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(certificateProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(sshKeysProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(vcsSslCertificateProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(gitConfigProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verify(gatewayRouterProvisioner).provision(eq(osEnv), eq(runtimeIdentity)); provisionOrder.verifyNoMoreInteractions(); }