Skip to content

Instantly share code, notes, and snippets.

@xrl
Last active January 2, 2016 15:29
Show Gist options
  • Save xrl/8323877 to your computer and use it in GitHub Desktop.
Save xrl/8323877 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'bundler'
require_relative 'options'
Bundler.require
client_name = 'xrl'
options = Pix.parsed_options!
ridley = Ridley.new(:server_url => 'https://api.opscode.com/organizations/fanpix',
:client_name => client_name,
:client_key => File.join(ENV['HOME'],'.chef',client_name+".pem" ))
nodes = ridley.search(:node,"chef_environment:#{options[:environment]}")
builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
xml.TelemetryDatabase(:xmlns => "http://www.mncsoftware.com/mosaic/schemas") {
nodes.each do |node|
xml.Parameter(:id => "Camera #{node.name}", :template => "Cannon EOS 5D Mark III") {
xml.Attributes{
xml.Parameter(:name => "IPAddr", :value => node.chef_attributes[:ipaddress])
}
}
end
xml.Group(:id => "Camera") {
nodes.each do |node|
xml.ParameterRef(:parm => "Camera #{node.name}")
end
}
xml.Template(:id => "Cannon EOS 5D Mark III") {
xml.Prototype(:id => "Cannon EOS 5D Mark III") {
xml.Attributes {
xml.Parameter(:name => "Mosaic.DriverRouting", :value => "localhost")
xml.Parameter(:name => "driverName", :value => "FanPixCamera")
xml.Parameter(:name => "driverConfigFile", :value => "CameraDriverCfg.xml")
xml.Parameter(:name => "DeviceType", :value => "Cannon EOS 5D Mark III")
}
xml.Subparameter(:id => "Camera Pan", :type => "INTEGER", :defaultValue => "0") {
xml.Conversion(:type => "TYPE_CONVERTER")
}
xml.Subparameter(:id => "Camera Tilt", :type => "INTEGER", :defaultValue => "0") {
xml.Conversion(:type => "TYPE_CONVERTER")
}
[
{:id => "Picture Mode", :type => "STRING"},
{:id => "Current Sequence", :type => "INTEGER", :defaultValue => "-1"},
{:id => "Trigger Sequence", :type => "INTEGER", :defaultValue => "-1"},
{:id => "Sequences", :type => "STRING", :isArray => true},
{:id => "Current Command", :type => "STRING", :defaultValue => "None"},
{:id => "Movement Error", :type => "STRING", :defaultValue => "Clear"},
{:id => "Camera Connection State", :type => "STRING", :defaultValue => "Disconnected"},
{:id => "Trigger Connection State", :type => "STRING", :defaultValue => "Disconnected"},
{:id => "Flash Connection State", :type => "STRING", :defaultValue => "Disconnected"},
{:id => "Motor Controller Connection", :type => "STRING", :defaultValue => "Disconnected"},
{:id => "Install_Location", :type => "STRING"},
{:id => "City", :type => "STRING"},
{:id => "Software_Version", :type => "STRING"},
{:id => "Last Image Taken", :type => "STRING"}
].each do |subparam|
xml.Subparameter(subparam)
end
}
}
}
end
File.open("CameraTelemetry.xml",'w'){|f| f << builder.to_xml}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment