Skip to content

Instantly share code, notes, and snippets.

@hbokh
Last active January 19, 2020 16:31
Show Gist options
  • Save hbokh/012469d71d838cb0ff2de89e25a20fe4 to your computer and use it in GitHub Desktop.
Save hbokh/012469d71d838cb0ff2de89e25a20fe4 to your computer and use it in GitHub Desktop.
Some Cobbler 3 scripts to quickly test XMLRPC. Install on the Cobbler host, login config: cobbler/cobbler.
#!/usr/bin/python3
"""
Copyright 2007-2009, Red Hat, Inc and Others
Michael DeHaan <michael.dehaan AT gmail>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA
"""
from xmlrpc.client import ServerProxy
import optparse
if __name__ == "__main__":
p = optparse.OptionParser()
p.add_option("-u","--user",dest="user",default="cobbler")
p.add_option("-p","--pass",dest="password",default="cobbler")
# NOTE: if you've changed your xmlrpc_rw port or
# disabled xmlrpc_rw this test probably won't work
sp = ServerProxy("http://127.0.0.1:25151")
(options, args) = p.parse_args()
print(("- trying to login with user=%s" % options.user))
token = sp.login(options.user,options.password)
print(("- token: %s" % token))
print("- authenticated ok, now seeing if user is authorized")
check = sp.check_access(token,"imaginary_method_name")
print(("- access ok? %s" % check))
#!/usr/bin/python3
import xmlrpc.client
remote = xmlrpc.client.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
# make sure "/opt/stuff/" exists and has "vmlinuz" and "initrd.img". Files can be empty.
distro_id = remote.new_distro(token)
remote.modify_distro(distro_id, 'name', 'example-distro',token)
remote.modify_distro(distro_id, 'kernel', '/opt/stuff/vmlinuz',token)
remote.modify_distro(distro_id, 'initrd', '/opt/stuff/initrd.img',token)
remote.save_distro(distro_id,token)
#!/usr/bin/python3
import xmlrpc.client
remote = xmlrpc.client.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
# Cobbler 3
remote.read_autoinstall_snippet("some-snippet",token)
#!/usr/bin/python3
import xmlrpc.client
remote = xmlrpc.client.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
# Cobbler 3
remote.read_autoinstall_template("foo.ks",token)
#!/usr/bin/python
import xmlrpclib
remote = xmlrpclib.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
new_contents_as_a_string = "Testing"
# Cobbler 2 - pick one:
#remote.read_or_write_kickstart_template("/var/lib/cobbler/templates/foo.ks",False,new_contents_as_a_string,token)
remote.read_or_write_kickstart_template("/var/lib/cobbler/templates/foo.ks",True,new_contents_as_a_string,token)
#!/usr/bin/python3
import xmlrpc.client
remote = xmlrpc.client.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
# Cobbler 3
remote.remove_autoinstall_template("foo.ks",token)
#!/usr/bin/python3
import xmlrpc.client
remote = xmlrpc.client.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
# Cobbler 3
remote.write_autoinstall_snippet("some-snippet","some content\n",token)
#!/usr/bin/python3
import xmlrpc.client
remote = xmlrpc.client.Server("http://127.0.0.1/cobbler_api")
token = remote.login("cobbler","cobbler")
# Cobbler 3
remote.write_autoinstall_template("foo.ks","some content\n",token)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment