Package io.fathom.cloud.compute.services

Source Code of io.fathom.cloud.compute.services.NetworkMapImpl

package io.fathom.cloud.compute.services;

import io.fathom.cloud.CloudException;
import io.fathom.cloud.compute.scheduler.InstanceScheduler;
import io.fathom.cloud.compute.state.HostStore;
import io.fathom.cloud.protobuf.CloudModel.HostData;
import io.fathom.cloud.protobuf.CloudModel.HostGroupData;
import io.fathom.cloud.protobuf.CloudModel.HostGroupData.Builder;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import com.google.inject.persist.Transactional;

@Singleton
@Transactional
public class NetworkMapImpl implements NetworkMap {

    @Inject
    HostStore hostStore;

    @Inject
    InstanceScheduler instanceScheduler;

    @Override
    public List<HostGroupData> listHostGroups() throws CloudException {
        List<HostGroupData> dcs = hostStore.getHostGroups().list();
        return dcs;
    }

    @Override
    public HostGroupData findHostGroup(long key) throws CloudException {
        return hostStore.getHostGroups().find(key);
    }

    @Override
    public HostData createHost(HostData.Builder b) throws CloudException {
        long parent = b.getHostGroup();
        if (parent == 0) {
            throw new IllegalArgumentException();
        }

        instanceScheduler.refreshHosts();

        return hostStore.getHosts().create(b);
    }

    @Override
    public List<HostData> listHosts() throws CloudException {
        return hostStore.getHosts().list();
    }

    @Override
    public HostGroupData createHostGroup(Builder b) throws CloudException {
        return hostStore.getHostGroups().create(b);
    }

    @Override
    public HostData updateHost(long hostId, io.fathom.cloud.protobuf.CloudModel.HostData.Builder b)
            throws CloudException {
        HostData host = hostStore.getHosts().find(hostId);
        if (host == null) {
            throw new IllegalArgumentException();
        }

        HostData.Builder hb = HostData.newBuilder(host);
        hb.mergeFrom(b.buildPartial());
        hb.setId(host.getId());

        return hostStore.getHosts().update(hb);
    }

    @Override
    public HostData findHost(String cidr) throws CloudException {
        for (HostData host : listHosts()) {
            if (host.getCidr().equals(cidr)) {
                return host;
            }
        }
        return null;
    }

    @Override
    public HostGroupData findHostGroupByKey(String findKey) throws CloudException {
        for (HostGroupData hostGroup : listHostGroups()) {
            if (findKey.equals(hostGroup.getKey())) {
                return hostGroup;
            }
        }
        return null;
    }

}
TOP

Related Classes of io.fathom.cloud.compute.services.NetworkMapImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.