@Override public void rebootNode(String id) { NodeMetadata node = nodes.get(id); if (node == null) throw new ResourceNotFoundException("node not found: " + id); StubComputeServiceDependenciesModule.setState(node, NodeState.PENDING, 0); StubComputeServiceDependenciesModule.setState(node, NodeState.RUNNING, 50); }
@Override public Iterable<Hardware> listHardwareProfiles() { return ImmutableSet.<Hardware>of( StubComputeServiceDependenciesModule.stub("small", 1, 1740, 160), StubComputeServiceDependenciesModule.stub("medium", 4, 7680, 850), StubComputeServiceDependenciesModule.stub("large", 8, 15360, 1690)); }
@Override public void suspendNode(String id) { NodeMetadata node = nodes.get(id); if (node == null) throw new ResourceNotFoundException("node not found: " + id); if (node.getState() == NodeState.SUSPENDED) return; if (node.getState() != NodeState.RUNNING) throw new IllegalStateException( "to suspend a node, it must be in running state, not: " + node.getState()); StubComputeServiceDependenciesModule.setState(node, NodeState.PENDING, 0); StubComputeServiceDependenciesModule.setState(node, NodeState.SUSPENDED, 50); }
@Override public NodeMetadata createNodeWithGroupEncodedIntoNameThenStoreCredentials( String group, String name, Template template, Map<String, Credentials> credentialStore) { NodeMetadataBuilder builder = new NodeMetadataBuilder(); String id = idProvider.get() + ""; builder.ids(id); builder.name(name); // using a predictable name so tests will pass builder.hostname(group); builder.tags(template.getOptions().getTags()); builder.group(group); builder.location(location.get()); builder.imageId(template.getImage().getId()); builder.operatingSystem(template.getImage().getOperatingSystem()); builder.state(NodeState.PENDING); builder.publicAddresses(ImmutableSet.<String>of(publicIpPrefix + id)); builder.privateAddresses(ImmutableSet.<String>of(privateIpPrefix + id)); Credentials creds = template.getOptions().getOverridingCredentials(); if (creds == null) creds = new Credentials(null, null); if (creds.identity == null) creds = creds.toBuilder().identity("root").build(); if (creds.credential == null) creds = creds.toBuilder().credential(passwordPrefix + id).build(); builder.credentials(creds); NodeMetadata node = builder.build(); credentialStore.put("node#" + node.getId(), node.getCredentials()); nodes.put(node.getId(), node); StubComputeServiceDependenciesModule.setState(node, NodeState.RUNNING, 100); return node; }
@Override public void destroyNode(final String id) { NodeMetadata node = nodes.get(id); if (node == null) return; StubComputeServiceDependenciesModule.setState(node, NodeState.PENDING, 0); StubComputeServiceDependenciesModule.setState(node, NodeState.TERMINATED, 50); StubComputeServiceDependenciesModule.service.execute( new Runnable() { @Override public void run() { try { Thread.sleep(200); } catch (InterruptedException e) { Throwables.propagate(e); } finally { nodes.remove(id); } } }); }