/*
* Copyright (c) 2013 Intellectual Reserve, Inc. All rights reserved.
*
* Licensed 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 cf.service;
/**
* Service providers must implement this interface.
*
* @author Mike Heath
* @deprecated Use the V2 services.
*/
@Deprecated
public interface Provisioner {
/**
* When the user types 'cf create-service ...' this method will get called.
*
* @param request the create request sent by the Cloud Controller
* @return
*/
ServiceInstance create(CreateRequest request) throws ServiceBrokerException;
/**
* When the user types 'cf delete-service ...' this method will probably get called.
*
* @param instanceId the id of the service instance to be deleted. The value of this is the instance id that is
* returned by {@link #create(CreateRequest)}.
*/
void delete(String instanceId) throws ServiceBrokerException;
/**
* When the user types 'cf bind-service ...' this method will get called.
*/
ServiceBinding bind(BindRequest request) throws ServiceBrokerException;
/**
* When the user types 'cf unbind-service ...' this method will probably get called.
*
* @param instanceId
* @param bindingId
*/
void unbind(String instanceId, String bindingId) throws ServiceBrokerException;
/**
* Returns iterable for each service ids for the services the gateway is aware of.
*
* @return service ids for the services the gateway is aware of, or {@code null} if this service gateway does not
* track service instances.
*/
Iterable<String> serviceInstanceIds();
/**
* Returns binding ids for the given service instance id.
*
* @return binding ids for the given service instance id, or {@code null} if this service broker does not track
* bindings.
*/
Iterable<String> bindingIds(String instanceId);
/**
* This gets called when the cc deletes a service binding but the delete request didn't make it to the broker.
*/
void removeOrphanedBinding(String instanceId, String bindingId);
/**
* This gets called when the cc deletes a service instance but the delete request didn't make it to the broker.
* @param instanceId
*/
void removeOrphanedServiceInstance(String instanceId);
}