blob: af6fc8300360d18b422de9473b12ba94e9306808 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.oodt.cas.resource.util;
import java.util.Collection;
import org.apache.mesos.Protos.Resource;
import org.apache.mesos.Protos.Value.Range;
import org.apache.mesos.Protos.Value.Type;
import org.apache.commons.lang.SerializationUtils;
import org.apache.oodt.cas.resource.structs.JobSpec;
import org.apache.oodt.cas.resource.structs.JobSpecSerializer;
import org.apache.mesos.protobuf.ByteString;
/**
* @author starchmd
* @version $Revision$
*/
public class MesosUtilities {
/**
* Get a ByteString serialization of a JobSpec to send over the wire to the mesos-backend.
* @param jobSpec - JobSpec to serialize
* @return bytestring containing byte[] of jobspec
*/
public static ByteString jobSpecToByteString(JobSpec jobSpec)
{
return ByteString.copyFrom(SerializationUtils.serialize(new JobSpecSerializer(jobSpec)));
}
/**
* Build a JobSpec from a ByteString off the wire
* @param data - ByteString to deserialize
* @return newly minted JobSpec
* @throws IllegalAccessException
* @throws InstantiationException
* @throws ClassNotFoundException
*/
public static JobSpec byteStringToJobSpec(ByteString data) throws ClassNotFoundException, InstantiationException, IllegalAccessException
{
return ((JobSpecSerializer)SerializationUtils.deserialize(data.toByteArray())).getJobSpec();
}
/**
* Makes a string message from resources list.
* @param resources - resource list to make into string.
* @return string representing the resource list.
*/
public static String getResourceMessage(Collection<Resource> resources) {
String ret = "";
for (Resource res : resources)
ret += "\n\t"+getResourceMessage(res);
return ret;
}
/**
* Creates string out an offer in a nice format.
* @param resource - mesos resource to make into string.
* @return string representing a resource.
*/
public static String getResourceMessage(Resource resource) {
Type type = resource.getType();
String ret = resource.getName() +" "+resource.getRole()+ ": ";
switch (type) {
case SCALAR:
ret += resource.getScalar().getValue();
break;
case RANGES:
for (Range range : resource.getRanges().getRangeList())
ret += range.getBegin() + " - "+range.getEnd()+",";
break;
case TEXT:
ret += " TEXT type...cannot find.";
break;
case SET:
for (String string : resource.getSet().getItemList())
ret += string + ",";
break;
}
return ret;
}
}