package io.fathom.cloud.cluster; import io.fathom.cloud.CloudException; import io.fathom.cloud.protobuf.CloudCommons.NodeData; import java.net.InetAddress; import javax.inject.Inject; import com.fathomdb.Configuration; import com.google.common.net.InetAddresses; import com.google.inject.persist.Transactional; public class ServiceRegistrationImpl implements ServiceRegistration { @Inject ClusterService clusterService; @Inject Configuration config; @Inject LocalMachineInfo localMachineInfo; @Override @Transactional public void register() throws CloudException { registerStorageNode(); } void registerStorageNode() throws CloudException { String key = localMachineInfo.getMachineKey(); NodeData proposed = buildNodeConfig(key); clusterService.register(proposed); } private NodeData buildNodeConfig(String key) { NodeData.Builder node = NodeData.newBuilder(); node.setKey(key); for (InetAddress address : localMachineInfo.getAddresses()) { if (address.isLoopbackAddress()) { continue; } if (address.isLinkLocalAddress()) { continue; } String s = InetAddresses.toAddrString(address); node.addAddress(s); } String queue = config.lookup("objectstore.queue", "sftp:///var/openstack/objectstore/queue/"); node.setQueue(queue); String store = config.lookup("objectstore.store", "sftp:///var/openstack/objectstore/store/"); node.setStore(store); NodeData proposed = node.build(); return proposed; } }