Package io.fathom.cloud.compute.api.os.resources

Source Code of io.fathom.cloud.compute.api.os.resources.ComputeResourceBase

package io.fathom.cloud.compute.api.os.resources;

import io.fathom.cloud.CloudException;
import io.fathom.cloud.compute.state.ComputeRepository;
import io.fathom.cloud.server.auth.Auth;
import io.fathom.cloud.server.auth.Auth.Domain;
import io.fathom.cloud.server.model.Project;
import io.fathom.cloud.server.resources.OpenstackResourceBase;

import javax.inject.Inject;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response.Status;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ComputeResourceBase extends OpenstackResourceBase {
    private static final Logger log = LoggerFactory.getLogger(ComputeResourceBase.class);

    @Inject
    ComputeRepository computeStore;

    private Project project;

    protected Project getProject() throws CloudException {
        if (project == null) {
            project = findProject(getProjectKey());
        }
        if (project == null) {
            throw new WebApplicationException(Status.UNAUTHORIZED);
        }
        return project;
    }

    @Deprecated
    // This is a dark corner of the OpenStack API
    protected void checkDomainAdmin() {
        Auth auth = getAuth();

        Domain domainAdmin = auth.findDomainWithAdminRole();
        if (domainAdmin == null) {
            log.debug("Expected domain admin: {}", auth);
            throw new WebApplicationException(Status.FORBIDDEN);
        }
    }

    protected String getProjectKey() throws CloudException {
        String uri = httpRequest.getRequestURI();
        if (!uri.startsWith("/")) {
            uri = "/" + uri;
        }
        if (uri.startsWith("/openstack/compute/")) {
            uri = uri.substring("/openstack/compute/".length());
        }

        int slashIndex = uri.indexOf('/');
        if (slashIndex != -1) {
            uri = uri.substring(0, slashIndex);
        }

        if (uri.contains("/")) {
            throw new IllegalStateException();
        }

        return uri;
    }

}
TOP

Related Classes of io.fathom.cloud.compute.api.os.resources.ComputeResourceBase

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.