// $Id: Deployment_TargetManager.idl 77259 2007-02-20 17:59:29Z wotte $

#ifndef TARGETMANAGER_IDL
#define TARGETMANAGER_IDL

#include "DAnCE/Deployment/Deployment_PlanError.idl"
#include "DAnCE/Deployment/Deployment_TargetData.idl"
#include "DAnCE/Deployment/Deployment_DeploymentPlan.idl"
// Only needed for ResourceNotAvailable but that should go, so this include also
#include "DAnCE/Deployment/Deployment_ApplicationManager.idl"
#include "DAnCE/Deployment/Deployment_ResourceCommitmentManager.idl"

module Deployment {

  /// @todo, UpdateAvailable is not in the spec, must be UpdateDynamic
  enum DomainUpdateKind {
    Add,
    Delete,
    UpdateAll,
    // @@changed
    UpdateDynamic
  };
  
  interface TargetManager {
    Domain getAllResources ();
    Domain getAvailableResources ();

    // @@changed
    ResourceCommitmentManager createResourceCommitment (in ResourceAllocations resources)
      raises (ResourceCommitmentFailure);
    
    // @@added
    void destroyResourceCommitment (in ResourceCommitmentManager manager);

    /// @todo This is not part of 06-04-01
    // @@delete:
    //void releaseResources (in DeploymentPlan argname);

    void updateDomain (in ::CORBA::StringSeq elements,
                       in Domain domainSubset,
                       in DomainUpdateKind updateKind);
  };
};

#endif /* TARGETMANAGER_IDL */
