= Federation Information and Operation Interface = The current {{{fedd}}} implementation creates and terminates multi-testbed topologies with minimal facilities for managing the elements that make up the topology. This page describes the emerging interfaces that will provide information about the resources and their status as well as access to infrastructure-level operations on the elements. A topology is made up of ''elements'' and ''substrates'' that interconnect them. Elements are owned by testbeds, interconnected by substrates that may span testbeds. Two elements on the same substrate can communicate in some way. Testbeds, substrates, and elements all support services and operations. [FeddAbout#ExperimentServices Services] provide features to experimental environments, such as file service and authorization information. Operations manipulate elements, substrates, testbeds or the services they provide. Operations and services are discovered through the info interface and manipulated through the operation interface. There are two interconnections to revamp, the experiment controller interface between users and the federation system and the access controller interface between the experiment controller and the access controllers. The access controllers manipulate local resources on behalf of the federated experiment (represented by the experiment controller). [[Image(fedd-info-scaled.png)]] == Experiment Controller Interfaces == The experiment controller info interface returns information to a user about the elements in their experiment, their status, and the operations supported by the elements. Those operations can be invoked by through the operation interface. === Info Interface === The info interface allows a user to request information from the experiment controller about an existing federated experiment. The request names the experiment. The information represents the entire experiment. The info response is broken into three sections, '''Testbed''', '''Element''', and '''Substrate'''. The '''Testbed''' section tells which testbeds have given elements to the topology. They are identified by the name the experiment controller knows them by and include the [FeddAbout#ExperimentServices services] used by the testbed and any operations that the testbed supports. Similarly the substrate and element sections describe the current state of the object, the testbed(s) to which it is bound and the services and operations it supports. The current data returned by the interface includes: * Testbeds * name * supported services (format below) * status: {{{started}}}, {{{stopped}}} * supported operations (format below) * Elements * testbed * local name * logical/topology name * status * supported services (format below) * status: {{{started}}}, {{{stopped}}} * supported operations (format below) * Substrates * testbed(s) * local name(s) * logical/topology name * status * supported services (format below) * status: {{{started}}}, {{{stopped}}} * supported operations (format below) Services include * name * importers * parameters * name * type * description Operations are a set of strings namimg the operations. The following operations are globally understood, though they need not be supported by each object (i.e., element/substrate/testbed). * !RestoreState: restore the object to an initial state (which may be object dependent) or saved state * Snapshot: Capture a state * Service: Manipulate a service exported by the object * start service (params) * stop service * modify importers * Shutdown: Put the object into a quiescent state * Modify: Change any parameter in the object description (topdl) === Operation Interface === The operation interface names the experiment and object(s) on which the operation(s) are to be called, names the operation to be invoked and supplies parameters. The operations are carried out in order given in the request. The response is the requests annotated with the success or failure information. These are requests from the user to take action on one or more elements of the topology. The experiment controller routes the request to the appropriate sub-experiment, using the interfaces below. The experiment controller collects the responses into a single response to the user. == Access Control Interfaces === These are identical in format to the experiment control interfaces, but pertain only to resources at the controller in question. The other extension is to add information to the success message when a segment is started that gives experiment status in the new format.