Skip to content

Instantly share code, notes, and snippets.

@discreet
Created September 29, 2014 14:34
Show Gist options
  • Select an option

  • Save discreet/8036e2e5411c48bf2a56 to your computer and use it in GitHub Desktop.

Select an option

Save discreet/8036e2e5411c48bf2a56 to your computer and use it in GitHub Desktop.
Remove servers from Spacewalk
#!/usr/bin/env ruby
require 'xmlrpc/client'
require 'net/https'
require 'openssl'
#The following variables can take variables for puppet
@SATELLITE_URL = "serverurl/rpc/api"
@SATELLITE_LOGIN = "username"
@SATELLITE_PASSWORD = "password"
@mysystem = ARGV[0].to_s
@use_ssl = true
@mytimeout = 30
#Break up url to provide data for client object
match = /^([^:]+):\/\/(([^@]+)@)?([^\/]+)(\/.*)?$/.match(@SATELLITE_URL)
#Host and port for url
@host, @port = match[4].split(":")
def delete_server(myserver, myserverid)
puts "This script has deleted server #{myserver} with id: #{myserverid} from #{@host}"
return_code = @client.call('system.deleteSystems', @key, myserverid)
end
@client = XMLRPC::Client.new2("#{@SATELLITE_URL}")
#disable check of ssl cert
@client.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
@key = @client.call('auth.login', @SATELLITE_LOGIN, @SATELLITE_PASSWORD)
serverList = @client.call('system.listSystems', @key)
serverList.each do |x|
if x['name'] == "#{@mysystem}"
delete_server(x['name'], x['id'])
else
next
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment