Package org.platformlayer.core.model

Examples of org.platformlayer.core.model.PlatformLayerKey


    platformLayerClient.deleteItem(machine.getKey());
  }

  @Override
  public Machine refreshMachine(Machine machine) throws OpsException {
    PlatformLayerKey key = machine.getKey();
    InstanceBase refreshed = findInstanceByInstanceKey(key);
    return cloudHelpers.toMachine(refreshed);

  }
View Full Code Here


  protected void raiseNotFound() {
    throw new WebApplicationException(Response.SC_NOT_FOUND);
  }

  protected ItemBase getManagedItem(boolean fetchTags) throws RepositoryException {
    PlatformLayerKey modelKey = getPlatformLayerKey();

    ItemBase managedItem = repository.getManagedItem(modelKey, fetchTags, getSecretProvider());
    if (managedItem == null) {
      raiseNotFound();
    }
View Full Code Here

  protected Class<?> getJavaClass(ModelKey modelKey) {
    return opsSystem.getJavaClass(modelKey);
  }

  protected PlatformLayerKey getPlatformLayerKey() {
    return new PlatformLayerKey(null, getProject(), getServiceType(), getItemType(), getItemId());
  }
View Full Code Here

        // item.setId(id);
      }
    }

    ProjectId project = getProjectId(auth);
    PlatformLayerKey itemKey = new PlatformLayerKey(null, project, modelClass.getServiceType(),
        modelClass.getItemType(), new ManagedItemId(id));
    item.setKey(itemKey);

    item.state = ManagedItemState.CREATION_REQUESTED;

    final OpsContext opsContext = buildTemporaryOpsContext(modelClass.getServiceType(), auth);

    T created = OpsContext.runInContext(opsContext, new CheckedCallable<T, Exception>() {
      @Override
      public T call() throws Exception {
        PlatformLayerKey itemKey = item.getKey();

        T existing;

        SecretProvider secretProvider = SecretProvider.from(auth);

        if (uniqueTagKey != null) {
          boolean fetchTags = true;
          Tag uniqueTag = null;
          for (Tag tag : item.getTags()) {
            if (Objects.equal(tag.getKey(), uniqueTagKey)) {
              uniqueTag = tag;
            }
          }
          if (uniqueTag == null) {
            throw new IllegalArgumentException("Could not find unique tag");
          }
          Filter filter = TagFilter.byTag(uniqueTag);
          filter = StateFilter.excludeDeleted(filter);

          existing = null;
          List<T> existingList = repository.findAll(modelClass, itemKey.getProject(), fetchTags,
              secretProvider, filter);
          if (!existingList.isEmpty()) {
            if (existingList.size() != 1) {
              throw new IllegalArgumentException("Found multiple items with unique tag");
            }
            existing = existingList.get(0);
          }

          if (existing == null) {
            itemKey = findUniqueId(item, itemKey, secretProvider);
          }
        } else {
          if (generateUniqueName) {
            itemKey = findUniqueId(item, itemKey, secretProvider);
          }

          try {
            boolean fetchTags = true;
            existing = Casts.checkedCast(repository.getManagedItem(itemKey, fetchTags, secretProvider),
                javaClass);
          } catch (RepositoryException e) {
            throw new OpsException("Error fetching item from database", e);
          }
        }

        if (!canExist && existing != null) {
          throw new OpsException("Item already exists");
        }

        serviceProvider.beforeCreateItem(item);

        ProjectId project = getProjectId(auth);
        T newItem;
        try {
          if (existing == null) {
            newItem = repository.createManagedItem(project, item);
          } else {
            item.secret = existing.secret;
            item.setKey(existing.getKey());

            newItem = repository.updateManagedItem(project, item);

            TagChanges tagChanges = new TagChanges();
            for (Tag tag : item.getTags()) {
              if (newItem.getTags().hasTag(tag)) {
                continue;
              }

              boolean uniqueTagKey = false;
              if (tag.getKey().equals(Tag.PARENT.getKey())) {
                uniqueTagKey = true;
              }

              tagChanges.addTags.add(tag);

              if (uniqueTagKey) {
                for (Tag oldTag : newItem.getTags().findTags(tag.getKey())) {
                  tagChanges.removeTags.add(oldTag);
                }
              }
            }

            if (!tagChanges.isEmpty()) {
              repository.changeTags(modelClass, project, newItem.getKey().getItemId(), tagChanges, null);
            }
          }
        } catch (RepositoryException e) {
          throw new OpsException("Error writing object to database", e);
        }

        itemKey = newItem.getKey();
        JobData jobKey = changeQueue.notifyChange(auth, itemKey, ManagedItemState.CREATION_REQUESTED);
        // returnJobKey(jobKey);

        return newItem;
      }

      private <T extends ItemBase> PlatformLayerKey findUniqueId(final T item, final PlatformLayerKey itemKey,
          SecretProvider secretProvider) throws RepositoryException {
        int sequence = 0;
        while (true) {
          String tryId = item.getId();
          if (sequence != 0) {
            tryId += sequence;
          }
          final PlatformLayerKey tryKey = itemKey.withId(new ManagedItemId(tryId));
          boolean fetchTags = false;
          ItemBase found = repository.getManagedItem(tryKey, fetchTags, secretProvider);
          if (found == null) {
            item.setKey(tryKey);
            return tryKey;
View Full Code Here

    ModelClass<T> modelClass = serviceProviderDirectory.getModelClass(itemClass);
    // Class<T> javaClass = modelClass.getJavaClass();

    ProjectId project = getProjectId(auth);

    PlatformLayerKey modelKey = new PlatformLayerKey(null, project, modelClass.getServiceType(),
        modelClass.getItemType(), new ManagedItemId(id));

    boolean fetchTags = true;
    T managedItem;
    try {
View Full Code Here

        }

        Collections.sort(collection.items, Ordering.natural().onResultOf(new Function<T, String>() {
          @Override
          public String apply(T input) {
            PlatformLayerKey key = input.getKey();
            if (key == null)
              return "";
            return key.getUrl();
          }
        }));
      }
    }
    return collection;
View Full Code Here

    return executions;
  }

  @Path("{jobId}")
  public JobResource getJob(@PathParam("jobId") String jobId) throws OpsException {
    PlatformLayerKey jobKey = JobData.buildKey(getProject(), new ManagedItemId(jobId));

    JobData record = jobRegistry.getJob(jobKey);
    if (record == null) {
      raiseNotFound();
    }
View Full Code Here

    // actionName = action.getClass().getSimpleName();
    // // throw new IllegalArgumentException("Action is required");
    // action.name = actionName;
    // }
    // OperationType operationType = EnumUtils.valueOfCaseInsensitive(OperationType.class, actionName);
    PlatformLayerKey itemKey = getPlatformLayerKey();
    // PlatformLayerKey jobKey = jobRegistry.enqueueOperation(action, getProjectAuthorization(), itemKey);
    //
    // JobData jobData = new JobData();
    // jobData.key = jobKey;
    //
View Full Code Here

    return itemService.putItem(getProjectAuthorization(), item, uniqueTag);
  }

  private void checkItemKey(ItemBase item) throws OpsException {
    PlatformLayerKey key = item.getKey();

    ManagedItemId itemId = getItemId();
    ServiceType serviceType = getServiceType();
    ItemType itemType = getItemType();
    ProjectId project = getProject();

    if (key != null) {
      if (key.getItemId() != null && !equal(key.getItemId(), itemId)) {
        throw new OpsException("Item id mismatch");
      }
      if (key.getServiceType() != null && !equal(key.getServiceType(), serviceType)) {
        throw new OpsException("Service type mismatch");
      }
      if (key.getItemType() != null && !key.getItemType().isEmpty() && !equal(key.getItemType(), itemType)) {
        throw new OpsException("Item type mismatch");
      }
      if (key.getProject() != null && !equal(key.getProject(), project)) {
        throw new OpsException("Project mismatch");
      }
    }

    key = new PlatformLayerKey(null, project, serviceType, itemType, itemId);
    item.setKey(key);
  }
View Full Code Here

  }

  @DELETE
  @Produces({ XML, JSON })
  public JobData deleteItem() throws RepositoryException, OpsException {
    PlatformLayerKey key = getPlatformLayerKey();

    return itemService.deleteItem(getProjectAuthorization(), key);
    // PlatformLayerKey jobKey = itemService.deleteItem(getProjectAuthorization(), key);
    //
    // JobData jobData = new JobData();
View Full Code Here

TOP

Related Classes of org.platformlayer.core.model.PlatformLayerKey

Copyright © 2018 www.massapicom. 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.