The Inductor consumes WorkOrders (rfc / configuration change) or ActionOrders
stop, etc) from a queue by zone, executes them and posts a result
message back to the controller.
A WorkOrder is a request for change (RFC) of a configuration item (CI). An ActionOrder is request to perform an action that is typically not associated to a configuration item. Example action are reboot, repair, snapshot, restore, etc.
account.Cloud.location is used by the controller to publish the order into a queue. The inductors consume,
does the work and publish the result back to the
Here is the logical flow from CMS:
The inductor is Java core with Ruby for control. The Java side is standard maven + spring,basically a Spring
DefaultMessageListenerContainer using Apache Commons DefaultExecutor
to spawn either local chef-solo (for IaaS or non-managed via orders) or a remote
via SSH chef-solo execution.
The image below shows a logical view of the classes in
There is a ruby gem to simplify setup and control.
Source / Downloads
An Inductor runs using Java jar with a several arguments. There is a gem or bash script to make easier.
Inductor gem: inductor help, start, stop, restart, status
Inductor control bash script located in the root dir of the repo: ./inductor start,stop,restart,status
Logs / Inductor Log Agent and Sink
The Inductor will put logs where the conf.dir's log4j.xml specifies. The gem redirects to the relative log dir.
The inductor logs are shipped using logstash forwarder to backe end elastic search cluster.
The UI uses the daq api (Spring based) PerfController to get data.
Inductor Directory Structure
The directory structure after you have created inductor successfully will look like this,
cd /opt/oneops/inductor ├── circuit-oneops-1 -> /home/oneops/build/circuit-oneops-1 from (https://github.com/oneops/circuit-oneops-1) ├── clouds-available # All inductor which are created will go in this │ └── public.oneops.clouds.aws ├── clouds-enabled │ └── public.oneops.clouds.aws -> ../clouds-available/public.oneops.clouds.aws ├── Gemfile ├── Gemfile.lock ├── init.d │ └── inductor ├── lib │ └── client.ts ├── log └── shared ## Refer (https://github.com/oneops/oneops-admin/tree/master/lib/shared) ├── cookbooks ├── exec-gems.yaml ├── exec-order.rb └── hiera.yaml