Search in sources :

Example 11 with Tag

use of org.platformlayer.core.model.Tag in project platformlayer by platformlayer.

the class PlatformlayerBackedPool method release.

@Override
public void release(PlatformLayerKey owner, T item) throws OpsException {
    for (int i = 0; i < 10; i++) {
        ItemBase resource = platformLayer.getItem(resourceKey);
        List<Assignment> assignments = findAssignments(resource);
        String key = adapter.toKey(item);
        Assignment assigned = Assignment.find(assignments, key, subkey);
        if (assigned == null) {
            throw new OpsException("Resource not assigned");
        }
        if (!assigned.item.equals(owner.getUrl())) {
            throw new OpsException("Resource not held");
        }
        Tag assignmentTag = assigned.asTag();
        TagChanges tagChanges = new TagChanges();
        tagChanges.removeTags.add(assignmentTag);
        if (null != platformLayer.changeTags(resourceKey, tagChanges, resource.getVersion())) {
            return;
        }
        if (!TimeSpan.ONE_SECOND.doSafeSleep()) {
            break;
        }
    }
// List<PlatformLayerKey> assignedTo = Tag.POOL_ASSIGNMENT.build(t) Tag.ASSIGNED_TO.find(item);
// if (!assignedTo.contains(holder)) {
// throw new OpsException("Resource not owned");
// }
// 
// platformLayer.deleteItem(item.getKey());
}
Also used : OpsException(org.platformlayer.ops.OpsException) ItemBase(org.platformlayer.core.model.ItemBase) Tag(org.platformlayer.core.model.Tag) TagChanges(org.platformlayer.core.model.TagChanges)

Example 12 with Tag

use of org.platformlayer.core.model.Tag in project platformlayer by platformlayer.

the class NginxBackendFirewall method buildItemTemplate.

@Override
protected ItemBase buildItemTemplate() {
    NginxService nginxService = OpsContext.get().getInstance(NginxService.class);
    NginxBackend nginxBackend = OpsContext.get().getInstance(NginxBackend.class);
    NetworkConnection networkConnection = new NetworkConnection();
    networkConnection.setDestItem(nginxBackend.backend);
    networkConnection.setSourceItem(nginxService.getKey());
    networkConnection.setPort(port);
    networkConnection.setProtocol(protocol.toString());
    Tag parentTag = Tag.buildParentTag(nginxBackend.getKey());
    networkConnection.getTags().add(parentTag);
    Tag uniqueTag = UniqueTag.build(nginxService, nginxBackend);
    networkConnection.getTags().add(uniqueTag);
    String id = nginxBackend.getId();
    if (Strings.isNullOrEmpty(id)) {
        id = "nginx";
    }
    networkConnection.key = PlatformLayerKey.fromId(id);
    return networkConnection;
}
Also used : NginxBackend(org.openstack.service.nginx.model.NginxBackend) NetworkConnection(org.platformlayer.service.network.v1.NetworkConnection) UniqueTag(org.platformlayer.ops.UniqueTag) Tag(org.platformlayer.core.model.Tag) NginxService(org.openstack.service.nginx.model.NginxService)

Example 13 with Tag

use of org.platformlayer.core.model.Tag in project platformlayer by platformlayer.

the class NginxFrontendDns method buildItemTemplate.

@Override
protected DnsRecord buildItemTemplate() throws OpsException {
    // TODO: Idempotency etc
    // Machine machine = OpsContext.get().getInstance(Machine.class);
    NginxService nginxService = OpsContext.get().getInstance(NginxService.class);
    NginxFrontend nginxFrontend = OpsContext.get().getInstance(NginxFrontend.class);
    Machine machine = instanceHelpers.getMachine(nginxService);
    String address = machine.getNetworkPoint().getBestAddress(NetworkPoint.forPublicInternet());
    DnsRecord record = new DnsRecord();
    record.setDnsName(nginxFrontend.hostname);
    record.getAddress().add(address);
    Tag parentTag = Tag.buildParentTag(nginxFrontend.getKey());
    record.getTags().add(parentTag);
    Tag uniqueTag = UniqueTag.build(nginxService, nginxFrontend);
    record.getTags().add(uniqueTag);
    record.key = PlatformLayerKey.fromId(nginxFrontend.hostname);
    return record;
}
Also used : NginxFrontend(org.openstack.service.nginx.model.NginxFrontend) UniqueTag(org.platformlayer.ops.UniqueTag) Tag(org.platformlayer.core.model.Tag) DnsRecord(org.platformlayer.dns.model.DnsRecord) Machine(org.platformlayer.ops.Machine) NginxService(org.openstack.service.nginx.model.NginxService)

Example 14 with Tag

use of org.platformlayer.core.model.Tag in project platformlayer by platformlayer.

the class UntypedItemFormatter method tagsToString.

private String tagsToString(PlatformLayerCliContext context, Tags tags) {
    if (tags == null) {
        return "";
    }
    List<Tag> tagList = tags.getTags();
    if (tagList == null) {
        return "";
    }
    StringBuilder sb = new StringBuilder();
    for (Tag tag : tagList) {
        if (sb.length() != 0) {
            sb.append(", ");
        }
        String value = tag.getValue();
        value = Utils.reformatText(context, value);
        sb.append(tag.getKey() + "=" + value);
    }
    return sb.toString();
}
Also used : Tag(org.platformlayer.core.model.Tag)

Example 15 with Tag

use of org.platformlayer.core.model.Tag in project platformlayer by platformlayer.

the class PutItem method runCommand.

@Override
public Object runCommand() throws PlatformLayerClientException, JSONException {
    PlatformLayerClient client = getPlatformLayerClient();
    if (json == null) {
        InputStream stream = new NoCloseInputStream(System.in);
        byte[] data;
        try {
            data = ByteStreams.toByteArray(stream);
            json = new String(data, Charsets.UTF_8);
        } catch (IOException e) {
            throw new CliException("Error reading stdin", e);
        }
    }
    JSONObject jsonObject = new JSONObject(json);
    PlatformLayerKey parentKey = null;
    if (parent != null || !tags.isEmpty()) {
        JSONObject tagsObject = null;
        if (jsonObject.has("tags")) {
            tagsObject = jsonObject.getJSONObject("tags");
        } else {
            tagsObject = new JSONObject();
            jsonObject.put("tags", tagsObject);
        }
        JSONArray tagsArray;
        if (tagsObject.has("tags")) {
            tagsArray = tagsObject.getJSONArray("tags");
        } else {
            tagsArray = new JSONArray();
            tagsObject.put("tags", tagsArray);
        }
        if (parent != null) {
            parentKey = parent.resolve(getContext());
            Tag parentTag = Tag.buildParentTag(parentKey);
            JSONObject jsonTag = new JSONObject();
            jsonTag.put("key", parentTag.getKey());
            jsonTag.put("value", parentTag.getValue());
            tagsArray.put(jsonTag);
        }
        for (String tag : tags) {
            int equalsIndex = tag.indexOf('=');
            if (equalsIndex == -1) {
                throw new CliException("Expected tagname=tagvalue");
            }
            String tagName = tag.substring(0, equalsIndex);
            String tagValue = tag.substring(equalsIndex + 1);
            JSONObject jsonTag = new JSONObject();
            jsonTag.put("key", tagName);
            jsonTag.put("value", tagValue);
            tagsArray.put(jsonTag);
        }
    }
    PlatformLayerKey key = path.resolve(getContext());
    boolean wrap = false;
    String data;
    if (wrap) {
        JSONObject wrapped = new JSONObject();
        wrapped.put(key.getItemType().getKey(), jsonObject);
        data = wrapped.toString();
    } else {
        data = jsonObject.toString();
    }
    UntypedItem retval = client.putItem(key, data, Format.JSON);
    return retval;
}
Also used : UntypedItem(org.platformlayer.common.UntypedItem) NoCloseInputStream(com.fathomdb.io.NoCloseInputStream) InputStream(java.io.InputStream) JSONArray(org.json.JSONArray) PlatformLayerKey(org.platformlayer.core.model.PlatformLayerKey) IOException(java.io.IOException) PlatformLayerClient(org.platformlayer.PlatformLayerClient) NoCloseInputStream(com.fathomdb.io.NoCloseInputStream) CliException(com.fathomdb.cli.CliException) JSONObject(org.json.JSONObject) Tag(org.platformlayer.core.model.Tag)

Aggregations

Tag (org.platformlayer.core.model.Tag)41 OpsException (org.platformlayer.ops.OpsException)16 ItemBase (org.platformlayer.core.model.ItemBase)8 PlatformLayerKey (org.platformlayer.core.model.PlatformLayerKey)8 Tags (org.platformlayer.core.model.Tags)8 Handler (org.platformlayer.ops.Handler)8 TagChanges (org.platformlayer.core.model.TagChanges)6 JSONObject (org.json.JSONObject)4 OpenstackException (org.openstack.client.OpenstackException)4 RepositoryException (org.platformlayer.RepositoryException)4 Machine (org.platformlayer.ops.Machine)4 JdbcTransaction (com.fathomdb.jdbc.JdbcTransaction)3 SQLException (java.sql.SQLException)3 OpenstackImageClient (org.openstack.client.common.OpenstackImageClient)3 Filter (org.platformlayer.Filter)3 PlatformLayerClient (org.platformlayer.PlatformLayerClient)3 StateFilter (org.platformlayer.StateFilter)3 OpsTarget (org.platformlayer.ops.OpsTarget)3 UniqueTag (org.platformlayer.ops.UniqueTag)3 SshKey (org.platformlayer.ops.helpers.SshKey)3