@Override protected Account emptyAccount() { return new DCOSAccount(); } }
@Override public void validate(final ConfigProblemSetBuilder p, final DCOSProvider provider) { Set<String> clusters = new HashSet<>(); for (DCOSCluster cluster : provider.getClusters()) { if (clusters.contains(cluster.getName())) { p.addProblem(Problem.Severity.FATAL, "Account \"" + cluster.getName() + "\" appears more than once") .setRemediation("Change the name of the cluster in " + provider.getNodeName()); } else { clusters.add(cluster.getName()); } } } }
int originalHash = cluster.hashCode(); cluster.setDcosUrl(dcosUrl); cluster.setCaCertFile(caCertFile); cluster.setCaCertFile(null); cluster.setInsecureSkipTlsVerify(insecureSkipTlsVerify); DCOSCluster.LoadBalancer loadBalancer = cluster.getLoadBalancer(); if (loadBalancer == null) { loadBalancer = new DCOSCluster.LoadBalancer(); cluster.setLoadBalancer(loadBalancer); loadBalancer.setImage(loadBalancerImage); DCOSCluster.LoadBalancer loadBalancer = cluster.getLoadBalancer(); if (loadBalancer == null) { loadBalancer = new DCOSCluster.LoadBalancer(); cluster.setLoadBalancer(loadBalancer); loadBalancer.setServiceAccountSecret(loadBalancerServiceAccountSecret); cluster.setLoadBalancer(null); if (originalHash == cluster.hashCode()) { AnsiUi.failure("No changes supplied."); return;
@Override protected void executeThis() { DCOSCluster cluster = new DCOSCluster(); cluster.setName(getClusterName()) .setDcosUrl(dcosUrl) .setCaCertFile(caCertFile) .setInsecureSkipTlsVerify(insecureSkipTlsVerify); if (nonNull(loadBalancerImage)) { final DCOSCluster.LoadBalancer loadBalancer = new DCOSCluster.LoadBalancer() .setImage(loadBalancerImage) .setServiceAccountSecret(loadBalancerServiceAccountSecret); cluster.setLoadBalancer(loadBalancer); } new OperationHandler<Void>() .setFailureMesssage("Failed to add cluster " + getClusterName() + " for provider " + getProviderName() + ".") .setSuccessMessage( "Successfully added cluster " + getClusterName() + " for provider " + getProviderName() + ".") .setOperation(Daemon.addCluster(getCurrentDeployment(), getProviderName(), !noValidate, cluster)) .get(); } }
account.removeCredential(removeCredential.get(0), removeCredential.get(1)); final String uid = updateUserCredential.get(1); final String password = updateUserCredential.get(2); account.removeCredential(clusterName, uid); final DCOSAccount.ClusterCredential credential = new DCOSAccount.ClusterCredential(clusterName, uid, password, null); account.getClusters().add(credential); final String serviceKeyFile = updateServiceCredential.get(2); account.removeCredential(clusterName, uid); final DCOSAccount.ClusterCredential credential = new DCOSAccount.ClusterCredential(clusterName, uid, null, serviceKeyFile); account.getClusters().add(credential); List<String> oldRegistries = account.getDockerRegistries() .stream() .map(DockerRegistryReference::getAccountName) .collect(Collectors.toList()); account.setDockerRegistries(newRegistries); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Set either --docker-registries or --[add/remove]-docker-registry");
@Override protected Account buildAccount(String accountName) { DCOSAccount account = (DCOSAccount) new DCOSAccount().setName(accountName); dockerRegistries.forEach(registryName -> account.getDockerRegistries().add(new DockerRegistryReference().setAccountName(registryName))); if (!isNull(serviceKeyFile) && !isNull(password)) { throw new IllegalArgumentException("Only one of --service-key-file or --password may be set"); } account.setClusters(Lists.newArrayList(new ClusterCredential(cluster, uid, password, serviceKeyFile))); return account; }
@Override public void validate(final ConfigProblemSetBuilder problems, final DCOSCluster cluster) { if (cluster.getInsecureSkipTlsVerify() != null && cluster.getInsecureSkipTlsVerify()) { problems.addProblem(WARNING, "You've chosen to not validate SSL connections. This setup is not recommended in production deployments."); } if (!Strings.isNullOrEmpty(cluster.getCaCertFile())) { String resolvedServiceKey = ValidatingFileReader.contents(problems, cluster.getCaCertFile()); if (Strings.isNullOrEmpty(resolvedServiceKey)) { problems.addProblem(ERROR, "The supplied CA certificate file does not exist or is empty.") .setRemediation("Supply a valid CA certificate file."); } } if (Strings.isNullOrEmpty(cluster.getDcosUrl())) { problems.addProblem(ERROR, "Cluster must have a URL"); } final DCOSCluster.LoadBalancer loadBalancer = cluster.getLoadBalancer(); if (loadBalancer == null || Strings.isNullOrEmpty(loadBalancer.getImage())) { problems.addProblem(WARNING, "Load balancer pipeline stages will not be able to be used unless a marathon-lb image is specified"); } } }
@Override protected void executeThis() { Provider provider = getProvider(); DCOSProvider dcosProvider = (DCOSProvider) provider; List<DCOSCluster> clusters = dcosProvider.getClusters(); if (clusters.isEmpty()) { AnsiUi.success("No configured clusters for " + getProviderName() + "."); } else { AnsiUi.success("Clusters for " + getProviderName() + ":"); clusters.forEach(cluster -> AnsiUi.listItem(cluster.getName())); } }
protected List<String> dockerRegistriesOptions(ConfigProblemSetBuilder psBuilder) { DeploymentConfiguration context = parentOfType(DeploymentConfiguration.class); DockerRegistryProvider dockerRegistryProvider = context.getProviders().getDockerRegistry(); if (dockerRegistryProvider != null) { return dockerRegistryProvider .getAccounts() .stream() .map(Account::getName) .collect(Collectors.toList()); } else { return null; } }
int originalHash = cluster.hashCode(); cluster.setDcosUrl(dcosUrl); cluster.setCaCertFile(caCertFile); cluster.setCaCertFile(null); cluster.setInsecureSkipTlsVerify(insecureSkipTlsVerify); DCOSCluster.LoadBalancer loadBalancer = cluster.getLoadBalancer(); if (loadBalancer == null) { loadBalancer = new DCOSCluster.LoadBalancer(); cluster.setLoadBalancer(loadBalancer); loadBalancer.setImage(loadBalancerImage); DCOSCluster.LoadBalancer loadBalancer = cluster.getLoadBalancer(); if (loadBalancer == null) { loadBalancer = new DCOSCluster.LoadBalancer(); cluster.setLoadBalancer(loadBalancer); loadBalancer.setServiceAccountSecret(loadBalancerServiceAccountSecret); cluster.setLoadBalancer(null); if (originalHash == cluster.hashCode()) { AnsiUi.failure("No changes supplied."); return;
@Override protected void executeThis() { DCOSCluster cluster = new DCOSCluster(); cluster.setName(getClusterName()) .setDcosUrl(dcosUrl) .setCaCertFile(caCertFile) .setInsecureSkipTlsVerify(insecureSkipTlsVerify); if (nonNull(loadBalancerImage)) { final DCOSCluster.LoadBalancer loadBalancer = new DCOSCluster.LoadBalancer() .setImage(loadBalancerImage) .setServiceAccountSecret(loadBalancerServiceAccountSecret); cluster.setLoadBalancer(loadBalancer); } new OperationHandler<Void>() .setFailureMesssage("Failed to add cluster " + getClusterName() + " for provider " + getProviderName() + ".") .setSuccessMessage( "Successfully added cluster " + getClusterName() + " for provider " + getProviderName() + ".") .setOperation(Daemon.addCluster(getCurrentDeployment(), getProviderName(), !noValidate, cluster)) .get(); } }
account.removeCredential(removeCredential.get(0), removeCredential.get(1)); final String uid = updateUserCredential.get(1); final String password = updateUserCredential.get(2); account.removeCredential(clusterName, uid); final DCOSAccount.ClusterCredential credential = new DCOSAccount.ClusterCredential(clusterName, uid, password, null); account.getClusters().add(credential); final String serviceKeyFile = updateServiceCredential.get(2); account.removeCredential(clusterName, uid); final DCOSAccount.ClusterCredential credential = new DCOSAccount.ClusterCredential(clusterName, uid, null, serviceKeyFile); account.getClusters().add(credential); List<String> oldRegistries = account.getDockerRegistries() .stream() .map(DockerRegistryReference::getAccountName) .collect(Collectors.toList()); account.setDockerRegistries(newRegistries); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Set either --docker-registries or --[add/remove]-docker-registry");
@Override protected Account buildAccount(String accountName) { DCOSAccount account = (DCOSAccount) new DCOSAccount().setName(accountName); dockerRegistries.forEach(registryName -> account.getDockerRegistries().add(new DockerRegistryReference().setAccountName(registryName))); if (!isNull(serviceKeyFile) && !isNull(password)) { throw new IllegalArgumentException("Only one of --service-key-file or --password may be set"); } account.setClusters(Lists.newArrayList(new ClusterCredential(cluster, uid, password, serviceKeyFile))); return account; }
@Override public void validate(final ConfigProblemSetBuilder problems, final DCOSCluster cluster) { if (cluster.getInsecureSkipTlsVerify() != null && cluster.getInsecureSkipTlsVerify()) { problems.addProblem(WARNING, "You've chosen to not validate SSL connections. This setup is not recommended in production deployments."); } if (!Strings.isNullOrEmpty(cluster.getCaCertFile())) { String resolvedServiceKey = ValidatingFileReader.contents(problems, cluster.getCaCertFile()); if (Strings.isNullOrEmpty(resolvedServiceKey)) { problems.addProblem(ERROR, "The supplied CA certificate file does not exist or is empty.") .setRemediation("Supply a valid CA certificate file."); } } if (Strings.isNullOrEmpty(cluster.getDcosUrl())) { problems.addProblem(ERROR, "Cluster must have a URL"); } final DCOSCluster.LoadBalancer loadBalancer = cluster.getLoadBalancer(); if (loadBalancer == null || Strings.isNullOrEmpty(loadBalancer.getImage())) { problems.addProblem(WARNING, "Load balancer pipeline stages will not be able to be used unless a marathon-lb image is specified"); } } }
@Override public void validate(final ConfigProblemSetBuilder p, final DCOSProvider provider) { Set<String> clusters = new HashSet<>(); for (DCOSCluster cluster : provider.getClusters()) { if (clusters.contains(cluster.getName())) { p.addProblem(Problem.Severity.FATAL, "Account \"" + cluster.getName() + "\" appears more than once") .setRemediation("Change the name of the cluster in " + provider.getNodeName()); } else { clusters.add(cluster.getName()); } } } }
@Override protected void executeThis() { Provider provider = getProvider(); DCOSProvider dcosProvider = (DCOSProvider) provider; List<DCOSCluster> clusters = dcosProvider.getClusters(); if (clusters.isEmpty()) { AnsiUi.success("No configured clusters for " + getProviderName() + "."); } else { AnsiUi.success("Clusters for " + getProviderName() + ":"); clusters.forEach(cluster -> AnsiUi.listItem(cluster.getName())); } }
@Override protected Account emptyAccount() { return new DCOSAccount(); } }
protected List<String> dockerRegistriesOptions(ConfigProblemSetBuilder psBuilder) { DeploymentConfiguration context = parentOfType(DeploymentConfiguration.class); DockerRegistryProvider dockerRegistryProvider = context.getProviders().getDockerRegistry(); if (dockerRegistryProvider != null) { return dockerRegistryProvider .getAccounts() .stream() .map(Account::getName) .collect(Collectors.toList()); } else { return null; } }