List of usage examples for com.google.common.base Optional presentInstances
@Beta public static <T> Iterable<T> presentInstances(final Iterable<? extends Optional<? extends T>> optionals)
From source file:com.eucalyptus.cluster.VmStateHandler.java
public static void updateVmInfo(final VmStateUpdate stateUpdate) { UpdateInstanceResourcesType update = new UpdateInstanceResourcesType(); update.setPartition(stateUpdate.getCluster().getPartition()); update.setResources(TypeMappers.transform(stateUpdate, InstanceResourceReportType.class)); final boolean requestBroadcast = Networking.getInstance().update(update); if (Databases.isVolatile()) { return;/*from www . ja v a 2 s .c o m*/ } final Cluster cluster = stateUpdate.getCluster(); final Set<String> initialInstances = stateUpdate.getRequestedVms(); final List<VmInfo> vms = stateUpdate.getVmInfos(); final Map<String, VmStateView> localState = ImmutableMap.copyOf(CollectionUtils.putAll( instanceViewSupplier.get(), Maps.<String, VmStateView>newHashMapWithExpectedSize(vms.size()), HasName.GET_NAME, Functions.<VmStateView>identity())); final Set<String> reportedInstances = Sets.newHashSetWithExpectedSize(vms.size()); for (VmInfo vmInfo : vms) { reportedInstances.add(vmInfo.getInstanceId()); vmInfo.setPlacement(cluster.getConfiguration().getName()); VmTypeInfo typeInfo = vmInfo.getInstanceType(); if (typeInfo.getName() == null || "".equals(typeInfo.getName())) { for (VmType t : VmTypes.list()) { if (t.getCpu().equals(typeInfo.getCores()) && t.getDisk().equals(typeInfo.getDisk()) && t.getMemory().equals(typeInfo.getMemory())) { typeInfo.setName(t.getName()); } } } } final Set<String> unreportedInstances = Sets .newHashSet(Sets.difference(initialInstances, reportedInstances)); if (Databases.isVolatile()) { return; } final Set<String> unknownInstances = Sets.newHashSet(Sets.difference(reportedInstances, initialInstances)); final List<Optional<Runnable>> taskList = Lists.newArrayList(); for (final VmInfo runVm : vms) { if (initialInstances.contains(runVm.getInstanceId())) { taskList.add(UpdateTaskFunction.REPORTED.apply(context(localState, runVm))); } else if (unknownInstances.contains(runVm.getInstanceId())) { taskList.add(UpdateTaskFunction.UNKNOWN.apply(context(localState, runVm))); } } for (final String vmId : unreportedInstances) { taskList.add(UpdateTaskFunction.UNREPORTED.apply(context(localState, vmId))); } final Optional<Runnable> broadcastRequestRunnable = requestBroadcast ? Optional.<Runnable>of(new Runnable() { @Override public void run() { NetworkInfoBroadcaster.requestNetworkInfoBroadcast(); } }) : Optional.<Runnable>absent(); for (final Runnable task : Iterables.concat(Optional.presentInstances(taskList), broadcastRequestRunnable.asSet())) { Threads.enqueue(ClusterController.class, VmStateHandler.class, (Runtime.getRuntime().availableProcessors() * 2) + 1, Executors.callable(task)); } }
From source file:com.google.errorprone.refaster.Choice.java
/** * Returns all the choices obtained by choosing from this {@code Choice} and yielding a present * {@code Optional}./*from w ww .j a v a 2s. co m*/ * * <p>The function may be applied lazily or immediately, at the discretion of the implementation. */ public <R> Choice<R> thenOption(final Function<? super T, Optional<R>> function) { checkNotNull(function); final Choice<T> thisChoice = this; return new Choice<R>() { @Override protected Iterator<R> iterator() { return Optional.presentInstances(Iterables.transform(thisChoice.asIterable(), function)).iterator(); } }; }
From source file:com.twitter.common.args.ArgumentInfo.java
private Iterable<ValueVerifier<T>> getVerifiers(final Verifiers verifierOracle) { Function<Annotation, Optional<ValueVerifier<T>>> toVerifier = new Function<Annotation, Optional<ValueVerifier<T>>>() { @Override/* ww w .j a v a2 s . c om*/ public Optional<ValueVerifier<T>> apply(Annotation annotation) { @Nullable Verifier<? super T> verifier = verifierOracle.get(type, annotation); if (verifier != null) { return Optional.of(new ValueVerifier<T>(verifier, annotation)); } else { return Optional.absent(); } } }; return Optional.presentInstances(Iterables.transform(verifierAnnotations, toVerifier)); }
From source file:net.shibboleth.idp.session.AbstractIdPSession.java
/** {@inheritDoc} */ @Override/*from w w w . j ava 2 s . co m*/ @Nonnull @NonnullElements @NotLive @Unmodifiable public Set<AuthenticationResult> getAuthenticationResults() { return ImmutableSet.copyOf(Optional.presentInstances(authenticationResults.values())); }
From source file:com.facebook.buck.apple.WorkspaceAndProjectGenerator.java
public Path generateWorkspaceAndDependentProjects(Map<Path, ProjectGenerator> projectGenerators) throws IOException { LOG.debug("Generating workspace for target %s", workspaceBuildTarget); String workspaceName = XcodeWorkspaceConfigDescription.getWorkspaceNameFromArg(workspaceArguments); Path outputDirectory;//from w w w . j av a 2 s .c o m if (combinedProject) { workspaceName += "-Combined"; outputDirectory = BuildTargets.getGenPath(workspaceBuildTarget, "%s").getParent() .resolve(workspaceName + ".xcodeproj"); } else { outputDirectory = workspaceBuildTarget.getBasePath(); } WorkspaceGenerator workspaceGenerator = new WorkspaceGenerator(projectFilesystem, combinedProject ? "project" : workspaceName, outputDirectory); ImmutableMap.Builder<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigsBuilder = ImmutableMap .builder(); ImmutableSetMultimap.Builder<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNodeBuilder = ImmutableSetMultimap .builder(); ImmutableSetMultimap.Builder<String, TargetNode<?>> buildForTestNodesBuilder = ImmutableSetMultimap .builder(); ImmutableMultimap.Builder<AppleTestBundleParamsKey, TargetNode<AppleTestDescription.Arg>> groupedTestsBuilder = ImmutableMultimap .builder(); ImmutableSetMultimap.Builder<String, TargetNode<AppleTestDescription.Arg>> ungroupedTestsBuilder = ImmutableSetMultimap .builder(); buildWorkspaceSchemes(getTargetToBuildWithBuck(), projectGraph, projectGeneratorOptions.contains(ProjectGenerator.Option.INCLUDE_TESTS), projectGeneratorOptions.contains(ProjectGenerator.Option.INCLUDE_DEPENDENCIES_TESTS), groupableTests, workspaceName, workspaceArguments, schemeConfigsBuilder, schemeNameToSrcTargetNodeBuilder, buildForTestNodesBuilder, groupedTestsBuilder, ungroupedTestsBuilder); ImmutableMap<String, XcodeWorkspaceConfigDescription.Arg> schemeConfigs = schemeConfigsBuilder.build(); ImmutableSetMultimap<String, Optional<TargetNode<?>>> schemeNameToSrcTargetNode = schemeNameToSrcTargetNodeBuilder .build(); ImmutableSetMultimap<String, TargetNode<?>> buildForTestNodes = buildForTestNodesBuilder.build(); ImmutableMultimap<AppleTestBundleParamsKey, TargetNode<AppleTestDescription.Arg>> groupedTests = groupedTestsBuilder .build(); ImmutableSetMultimap<String, TargetNode<AppleTestDescription.Arg>> ungroupedTests = ungroupedTestsBuilder .build(); Iterable<PBXTarget> synthesizedCombinedTestTargets = ImmutableList.of(); ImmutableSet<BuildTarget> targetsInRequiredProjects = FluentIterable .from(Optional.presentInstances(schemeNameToSrcTargetNode.values())) .append(buildForTestNodes.values()).transform(HasBuildTarget.TO_TARGET).toSet(); ImmutableMultimap.Builder<BuildTarget, PBXTarget> buildTargetToPbxTargetMapBuilder = ImmutableMultimap .builder(); ImmutableMap.Builder<PBXTarget, Path> targetToProjectPathMapBuilder = ImmutableMap.builder(); Optional<BuildTarget> targetToBuildWithBuck = getTargetToBuildWithBuck(); if (combinedProject) { LOG.debug("Generating a combined project"); ProjectGenerator generator = new ProjectGenerator(projectGraph, targetsInRequiredProjects, projectFilesystem, outputDirectory.getParent(), workspaceName, buildFileName, projectGeneratorOptions, targetToBuildWithBuck, buildWithBuckFlags, executableFinder, environment, cxxPlatforms, defaultCxxPlatform, sourcePathResolverForNode, buckEventBus, attemptToDetermineBestCxxPlatform, halideBuckConfig, cxxBuckConfig) .setAdditionalCombinedTestTargets(groupedTests) .setTestsToGenerateAsStaticLibraries(groupableTests); combinedProjectGenerator = Optional.of(generator); generator.createXcodeProjects(); workspaceGenerator.addFilePath(generator.getProjectPath(), Optional.<Path>absent()); requiredBuildTargetsBuilder.addAll(generator.getRequiredBuildTargets()); buildTargetToPbxTargetMapBuilder.putAll(generator.getBuildTargetToGeneratedTargetMap()); for (PBXTarget target : generator.getBuildTargetToGeneratedTargetMap().values()) { targetToProjectPathMapBuilder.put(target, generator.getProjectPath()); } synthesizedCombinedTestTargets = generator.getBuildableCombinedTestTargets(); for (PBXTarget target : synthesizedCombinedTestTargets) { targetToProjectPathMapBuilder.put(target, generator.getProjectPath()); } } else { ImmutableMultimap.Builder<Path, BuildTarget> projectDirectoryToBuildTargetsBuilder = ImmutableMultimap .builder(); for (TargetNode<?> targetNode : projectGraph.getNodes()) { BuildTarget buildTarget = targetNode.getBuildTarget(); projectDirectoryToBuildTargetsBuilder.put(buildTarget.getBasePath(), buildTarget); } ImmutableMultimap<Path, BuildTarget> projectDirectoryToBuildTargets = projectDirectoryToBuildTargetsBuilder .build(); for (Path projectDirectory : projectDirectoryToBuildTargets.keySet()) { final ImmutableSet<BuildTarget> rules = filterRulesForProjectDirectory(projectGraph, ImmutableSet.copyOf(projectDirectoryToBuildTargets.get(projectDirectory))); if (Sets.intersection(targetsInRequiredProjects, rules).isEmpty()) { continue; } ProjectGenerator generator = projectGenerators.get(projectDirectory); if (generator == null) { LOG.debug("Generating project for directory %s with targets %s", projectDirectory, rules); String projectName; if (projectDirectory.getNameCount() == 0) { // If we're generating a project in the root directory, use a generic name. projectName = "Project"; } else { // Otherwise, name the project the same thing as the directory we're in. projectName = projectDirectory.getFileName().toString(); } generator = new ProjectGenerator(projectGraph, rules, projectFilesystem, projectDirectory, projectName, buildFileName, projectGeneratorOptions, Optionals.bind( targetToBuildWithBuck, new Function<BuildTarget, Optional<BuildTarget>>() { @Override public Optional<BuildTarget> apply(BuildTarget input) { return rules.contains(input) ? Optional.of(input) : Optional.<BuildTarget>absent(); } }), buildWithBuckFlags, executableFinder, environment, cxxPlatforms, defaultCxxPlatform, sourcePathResolverForNode, buckEventBus, attemptToDetermineBestCxxPlatform, halideBuckConfig, cxxBuckConfig).setTestsToGenerateAsStaticLibraries(groupableTests); generator.createXcodeProjects(); requiredBuildTargetsBuilder.addAll(generator.getRequiredBuildTargets()); projectGenerators.put(projectDirectory, generator); } else { LOG.debug("Already generated project for target %s, skipping", projectDirectory); } workspaceGenerator.addFilePath(generator.getProjectPath()); buildTargetToPbxTargetMapBuilder.putAll(generator.getBuildTargetToGeneratedTargetMap()); for (PBXTarget target : generator.getBuildTargetToGeneratedTargetMap().values()) { targetToProjectPathMapBuilder.put(target, generator.getProjectPath()); } } if (!groupedTests.isEmpty()) { ProjectGenerator combinedTestsProjectGenerator = new ProjectGenerator(projectGraph, ImmutableSortedSet.<BuildTarget>of(), projectFilesystem, BuildTargets.getGenPath(workspaceBuildTarget, "%s-CombinedTestBundles"), "_CombinedTestBundles", buildFileName, projectGeneratorOptions, Optional.<BuildTarget>absent(), buildWithBuckFlags, executableFinder, environment, cxxPlatforms, defaultCxxPlatform, sourcePathResolverForNode, buckEventBus, attemptToDetermineBestCxxPlatform, halideBuckConfig, cxxBuckConfig); combinedTestsProjectGenerator.setAdditionalCombinedTestTargets(groupedTests).createXcodeProjects(); workspaceGenerator.addFilePath(combinedTestsProjectGenerator.getProjectPath()); requiredBuildTargetsBuilder.addAll(combinedTestsProjectGenerator.getRequiredBuildTargets()); for (PBXTarget target : combinedTestsProjectGenerator.getBuildTargetToGeneratedTargetMap() .values()) { targetToProjectPathMapBuilder.put(target, combinedTestsProjectGenerator.getProjectPath()); } synthesizedCombinedTestTargets = combinedTestsProjectGenerator.getBuildableCombinedTestTargets(); for (PBXTarget target : synthesizedCombinedTestTargets) { targetToProjectPathMapBuilder.put(target, combinedTestsProjectGenerator.getProjectPath()); } this.combinedTestsProjectGenerator = Optional.of(combinedTestsProjectGenerator); } } Path workspacePath = workspaceGenerator.writeWorkspace(); final Multimap<BuildTarget, PBXTarget> buildTargetToTarget = buildTargetToPbxTargetMapBuilder.build(); final Function<BuildTarget, PBXTarget> targetNodeToPBXTargetTransformer = new Function<BuildTarget, PBXTarget>() { @Override public PBXTarget apply(BuildTarget input) { ImmutableList<PBXTarget> targets = ImmutableList.copyOf(buildTargetToTarget.get(input)); if (targets.size() == 1) { return targets.get(0); } // The only reason why a build target would map to more than one project target is if // there are two project targets: one is the usual one, the other is a target that just // shells out to Buck. Preconditions.checkState(targets.size() == 2); PBXTarget first = targets.get(0); PBXTarget second = targets.get(1); Preconditions.checkState(first.getName().endsWith(ProjectGenerator.BUILD_WITH_BUCK_POSTFIX) ^ second.getName().endsWith(ProjectGenerator.BUILD_WITH_BUCK_POSTFIX)); PBXTarget buildWithBuckTarget; PBXTarget buildWithXcodeTarget; if (first.getName().endsWith(ProjectGenerator.BUILD_WITH_BUCK_POSTFIX)) { buildWithBuckTarget = first; buildWithXcodeTarget = second; } else { buildWithXcodeTarget = first; buildWithBuckTarget = second; } return buildWithBuck ? buildWithBuckTarget : buildWithXcodeTarget; } }; writeWorkspaceSchemes(workspaceName, outputDirectory, schemeConfigs, schemeNameToSrcTargetNode, buildForTestNodes, ungroupedTests, targetToProjectPathMapBuilder.build(), synthesizedCombinedTestTargets, new Function<TargetNode<?>, Collection<PBXTarget>>() { @Override public Collection<PBXTarget> apply(TargetNode<?> input) { return buildTargetToTarget.get(input.getBuildTarget()); } }, targetNodeToPBXTargetTransformer); return workspacePath; }
From source file:net.shibboleth.idp.session.AbstractIdPSession.java
/** {@inheritDoc} */ @Override//from ww w .j a v a 2s. c o m @Nonnull @NonnullElements @NotLive @Unmodifiable public Set<SPSession> getSPSessions() { return ImmutableSet.copyOf(Optional.presentInstances(spSessions.values())); }
From source file:org.apache.aurora.common.args.apt.CmdLineProcessor.java
@Nullable private Set<String> getParsedTypes(@Nullable Configuration configuration, Set<? extends Element> parsers) { if (!isCheckLinkage) { return null; }//from w ww . ja v a 2 s. com Iterable<String> parsersFor = Optional.presentInstances(Iterables.transform(parsers, parser -> { TypeMirror parsedType = getTypeArgument(parser.asType(), typeElement(Parser.class)); if (parsedType == null) { error("failed to find a type argument for Parser: %s", parser); return Optional.absent(); } // Equals on TypeMirrors doesn't work - so we compare string representations :/ return Optional.of(typeUtils.erasure(parsedType).toString()); })); if (configuration != null) { parsersFor = Iterables.concat(parsersFor, Iterables .filter(Iterables.transform(configuration.parserInfo(), new Function<ParserInfo, String>() { @Override @Nullable public String apply(ParserInfo parserInfo) { TypeElement typeElement = elementUtils.getTypeElement(parserInfo.parsedType); // We may not have a type on the classpath for a previous round - this is fine as // long as the no Args in this round that are of the type. return (typeElement == null) ? null : typeUtils.erasure(typeElement.asType()).toString(); } }), Predicates.notNull())); } return ImmutableSet.copyOf(parsersFor); }
From source file:org.apache.aurora.common.args.apt.CmdLineProcessor.java
private Iterable<ArgInfo> processAnnotatedArgs(@Nullable final Set<String> parsedTypes, Set<? extends Element> args, final Class<? extends Annotation> argAnnotation) { return Optional.presentInstances(Iterables.transform(args, arg -> { @Nullable/* w w w .jav a 2s. c om*/ TypeElement containingType = processArg(parsedTypes, arg, argAnnotation); if (containingType == null) { return Optional.absent(); } else { return Optional.of(new ArgInfo(getBinaryName(containingType), arg.getSimpleName().toString())); } })); }
From source file:clocker.docker.location.DockerHostLocation.java
@Override public DockerContainerLocation obtain(Map<?, ?> flags) throws NoMachinesAvailableException { lock.readLock().lock();/*w w w. j a v a2 s . c o m*/ try { // Lookup entity from context or flags Object context = flags.get(LocationConfigKeys.CALLER_CONTEXT.getName()); if (context == null || !(context instanceof Entity)) { throw new IllegalStateException("Invalid location context: " + context); } Entity entity = (Entity) context; // Flag to configure adding SSHable layer boolean useSsh = entity.config().get(DockerContainer.DOCKER_USE_SSH) && dockerHost.config().get(DockerContainer.DOCKER_USE_SSH); // Configure the entity LOG.info("Configuring entity {} via subnet {}", entity, dockerHost.getSubnetTier()); entity.config().set(SubnetTier.PORT_FORWARDING_MANAGER, dockerHost.getSubnetTier().getPortForwardManager()); entity.config().set(SubnetTier.PORT_FORWARDER, portForwarder); if (getOwner().config().get(SdnAttributes.SDN_ENABLE)) { SdnAgent agent = getOwner().sensors().get(SdnAgent.SDN_AGENT); if (agent == null) { throw new IllegalStateException("SDN agent entity on " + getOwner() + " is null"); } Map<String, Cidr> networks = agent.sensors().get(SdnAgent.SDN_PROVIDER).sensors() .get(SdnProvider.SUBNETS); entity.config().set(SubnetTier.SUBNET_CIDR, networks.get(entity.getApplicationId())); } else { entity.config().set(SubnetTier.SUBNET_CIDR, Cidr.UNIVERSAL); } // Add the entity Dockerfile if configured String dockerfile = entity.config().get(DockerAttributes.DOCKERFILE_URL); String entrypoint = entity.config().get(DockerAttributes.DOCKERFILE_ENTRYPOINT_URL); String contextArchive = entity.config().get(DockerAttributes.DOCKERFILE_CONTEXT_URL); String imageId = entity.config().get(DockerAttributes.DOCKER_IMAGE_ID); Optional<String> baseImage = Optional .fromNullable(entity.config().get(DockerAttributes.DOCKER_IMAGE_NAME)); String imageTag = Optional.fromNullable(entity.config().get(DockerAttributes.DOCKER_IMAGE_TAG)) .or("latest"); boolean autoCheckpointImagePostInstall = Boolean.TRUE .equals(entity.config().get(DockerAttributes.AUTO_CHECKPOINT_DOCKER_IMAGE_POST_INSTALL)); // TODO incorporate more info (incl registry?) String imageName; if (autoCheckpointImagePostInstall) { imageName = DockerUtils.imageName(entity, dockerfile); } else { // Generate a random id, and avoid collisions boolean collision; do { imageName = DockerUtils.randomImageName(); collision = dockerHost.getImageNamed(imageName, imageTag).isPresent(); if (collision) LOG.info("Random image name collision '{}' on host {}; generating new id", imageName, getOwner()); } while (collision); } // Lookup image ID or build new image from Dockerfile LOG.info("ImageName ({}) for entity {}: {}", new Object[] { (autoCheckpointImagePostInstall ? "hash" : "random"), entity, imageName }); if (dockerHost.getImageNamed(imageName, imageTag).isPresent()) { assert autoCheckpointImagePostInstall : "random imageName " + imageName + " collision on host " + getOwner(); // Wait until committed before continuing - Brooklyn may be midway through its creation. waitForImage(imageName); // Look up imageId again imageId = dockerHost.getImageNamed(imageName, imageTag).get(); LOG.info("Found image {} for entity: {}", imageName, imageId); // Skip install phase entity.config().set(SoftwareProcess.SKIP_INSTALLATION, true); } else if (baseImage.isPresent()) { // Use the repository configured on the entity if present Optional<String> imageRepo = Optional .fromNullable(entity.config().get(DockerAttributes.DOCKER_IMAGE_REGISTRY_URL)); // Otherwise only use the configured repo here if it we created it or it is writeable Optional<String> localRepo = Optional.absent(); if (config().get(DockerInfrastructure.DOCKER_SHOULD_START_REGISTRY) || config().get(DockerInfrastructure.DOCKER_IMAGE_REGISTRY_WRITEABLE)) { localRepo = Optional.fromNullable( getDockerInfrastructure().sensors().get(DockerAttributes.DOCKER_IMAGE_REGISTRY_URL)); ; } imageName = Joiner.on('/') .join(Optional.presentInstances(ImmutableList.of(imageRepo.or(localRepo), baseImage))); String fullyQualifiedName = imageName + ":" + imageTag; if (useSsh) { // Create an SSHable image from the one configured imageId = dockerHost.layerSshableImageOnFullyQualified(fullyQualifiedName); LOG.info("Created SSHable image from {}: {}", fullyQualifiedName, imageId); } else { try { dockerHost.runDockerCommand(String.format("pull %s", fullyQualifiedName)); } catch (Exception e) { // XXX pulls fail sometimes but issue fixed in Docker 1.9.1 LOG.debug("Caught exception pulling {}: {}", fullyQualifiedName, e.getMessage()); } imageId = dockerHost.getImageNamed(imageName, imageTag).orNull(); } entity.config().set(SoftwareProcess.SKIP_INSTALLATION, true); } else { // Push or commit the image, otherwise Clocker will make a new one for the entity once it is installed. if (autoCheckpointImagePostInstall) { if (getDockerInfrastructure().config().get(DockerInfrastructure.DOCKER_IMAGE_REGISTRY_WRITEABLE) && (getDockerInfrastructure().config() .get(DockerInfrastructure.DOCKER_SHOULD_START_REGISTRY) || Strings.isNonBlank(getDockerInfrastructure().sensors() .get(DockerInfrastructure.DOCKER_IMAGE_REGISTRY_URL)))) { insertCallback(entity, SoftwareProcess.POST_INSTALL_COMMAND, DockerCallbacks.push()); } else { insertCallback(entity, SoftwareProcess.POST_INSTALL_COMMAND, DockerCallbacks.commit()); } } if (Strings.isNonBlank(dockerfile)) { if (imageId != null) { LOG.warn("Ignoring container imageId {} as dockerfile URL is set: {}", imageId, dockerfile); } Map<String, Object> substitutions = getExtraTemplateSubstitutions(imageName, entity); imageId = dockerHost.buildImage(dockerfile, entrypoint, contextArchive, imageName, useSsh, substitutions); } if (Strings.isBlank(imageId)) { imageId = getOwner().sensors().get(DockerHost.DOCKER_IMAGE_ID); } // Tag the image name and create its latch imageLatches.putIfAbsent(imageName, new CountDownLatch(1)); dockerHost.runDockerCommand(String.format("tag -f %s %s:latest", imageId, imageName)); } // Look up hardware ID String hardwareId = entity.config().get(DockerAttributes.DOCKER_HARDWARE_ID); if (Strings.isEmpty(hardwareId)) { hardwareId = getOwner().config().get(DockerAttributes.DOCKER_HARDWARE_ID); } // Fix missing device link for urandom on some containers insertCallback(entity, SoftwareProcess.PRE_INSTALL_COMMAND, "if [ ! -e /dev/random ] ; then ln -s /dev/urandom /dev/random ; fi"); // Create new Docker container in the host cluster LOG.info("Starting container with imageId {} and hardwareId {} at {}", new Object[] { imageId, hardwareId, machine }); Map<Object, Object> containerFlags = MutableMap.builder().putAll(flags).put("useSsh", useSsh) .put("entity", entity).putIfNotNull("imageId", imageId) .putIfNotNull("imageName", imageId == null ? imageName : null) .putIfNotNull("imageTag", imageId == null ? imageTag : null) .putIfNotNull("hardwareId", hardwareId).build(); Group cluster = dockerHost.getDockerContainerCluster(); EntitySpec<DockerContainer> spec = EntitySpec .create(getOwner().sensors().get(DockerHost.DOCKER_CONTAINER_SPEC)); spec.configure(containerFlags); Entity added = cluster.addMemberChild(spec); if (added == null) { throw new NoMachinesAvailableException( String.format("Failed to create container at %s", dockerHost)); } else { if (LOG.isDebugEnabled()) LOG.debug("Starting container {} at {}, config {}", new Object[] { added, machine, Sanitizer.sanitize(((EntityInternal) added).config().getBag()) }); Entities.invokeEffector(entity, added, Startable.START, MutableMap.of("locations", ImmutableList.of(machine))).getUnchecked(); } DockerContainer dockerContainer = (DockerContainer) added; // Save the container attributes dockerContainer.sensors().set(DockerContainer.DOCKER_IMAGE_ID, imageId); dockerContainer.sensors().set(DockerContainer.DOCKER_IMAGE_NAME, imageName); dockerContainer.sensors().set(DockerContainer.DOCKER_HARDWARE_ID, hardwareId); // record SDN application network details if (getOwner().config().get(SdnAttributes.SDN_ENABLE)) { SdnAgent agent = getOwner().sensors().get(SdnAgent.SDN_AGENT); Cidr applicationCidr = agent.sensors().get(SdnAgent.SDN_PROVIDER) .getSubnetCidr(entity.getApplicationId()); entity.sensors().set(SdnProvider.APPLICATION_CIDR, applicationCidr); dockerContainer.sensors().set(SdnProvider.APPLICATION_CIDR, applicationCidr); } return dockerContainer.getDynamicLocation(); } finally { lock.readLock().unlock(); } }
From source file:com.twitter.common.args.apt.CmdLineProcessor.java
@Nullable private Set<String> getParsedTypes(@Nullable Configuration configuration, Set<? extends Element> parsers) { if (!isCheckLinkage) { return null; }// www . j av a 2 s . co m Iterable<String> parsersFor = Optional .presentInstances(Iterables.transform(parsers, new Function<Element, Optional<String>>() { @Override public Optional<String> apply(Element parser) { TypeMirror parsedType = getTypeArgument(parser.asType(), typeElement(Parser.class)); if (parsedType == null) { error("failed to find a type argument for Parser: %s", parser); return Optional.absent(); } // Equals on TypeMirrors doesn't work - so we compare string representations :/ return Optional.of(typeUtils.erasure(parsedType).toString()); } })); if (configuration != null) { parsersFor = Iterables.concat(parsersFor, Iterables .filter(Iterables.transform(configuration.parserInfo(), new Function<ParserInfo, String>() { @Override @Nullable public String apply(ParserInfo parserInfo) { TypeElement typeElement = elementUtils.getTypeElement(parserInfo.parsedType); // We may not have a type on the classpath for a previous round - this is fine as // long as the no Args in this round that are of the type. return (typeElement == null) ? null : typeUtils.erasure(typeElement.asType()).toString(); } }), Predicates.notNull())); } return ImmutableSet.copyOf(parsersFor); }