diff options
author | Devan Goodwin <dgoodwin@redhat.com> | 2009-11-02 17:37:12 -0400 |
---|---|---|
committer | Devan Goodwin <dgoodwin@redhat.com> | 2009-11-02 17:37:12 -0400 |
commit | dee2d1a386fcb018bd9503c7d34a2efcc11b2339 (patch) | |
tree | 23600efc34e5a758e90be6a51d160992b2559c18 | |
parent | 9956f5627241ab84ad74bb30b91974ae8d1e0667 (diff) | |
download | cobbler-dee2d1a386fcb018bd9503c7d34a2efcc11b2339.tar.gz cobbler-dee2d1a386fcb018bd9503c7d34a2efcc11b2339.tar.xz cobbler-dee2d1a386fcb018bd9503c7d34a2efcc11b2339.zip |
cobbler4j: Use more efficient API calls, implement create/remove.
Add first test for Repo creation/deletion.
-rw-r--r-- | cobbler/remote.py | 4 | ||||
-rw-r--r-- | cobbler4j/object_base.tmpl | 4 | ||||
-rw-r--r-- | cobbler4j/src/org/fedorahosted/cobbler/CobblerObject.java | 26 | ||||
-rw-r--r-- | cobbler4j/src/org/fedorahosted/cobbler/test/FinderTests.java | 1 | ||||
-rw-r--r-- | cobbler4j/src/org/fedorahosted/cobbler/test/RepoTests.java | 27 |
5 files changed, 53 insertions, 9 deletions
diff --git a/cobbler/remote.py b/cobbler/remote.py index a227d10f..c46f17a3 100644 --- a/cobbler/remote.py +++ b/cobbler/remote.py @@ -781,7 +781,9 @@ class CobblerXMLRPCInterface: Though we must preserve the old ways for backwards compatibility these cause much less XMLRPC traffic. - Ex: xapi_object_edit("distro","el5","new",{"kernel":"/tmp/foo","initrd":"/tmp/foo"},token) + edit_type - One of 'add', 'rename', 'copy', 'remove' + + Ex: xapi_object_edit("distro","el5","add",{"kernel":"/tmp/foo","initrd":"/tmp/foo"},token) """ self.check_access(token,"xedit_%s" % object_type, token) diff --git a/cobbler4j/object_base.tmpl b/cobbler4j/object_base.tmpl index b7dc5cdd..84f56fcb 100644 --- a/cobbler4j/object_base.tmpl +++ b/cobbler4j/object_base.tmpl @@ -37,6 +37,10 @@ public class $JavaObjectType extends CobblerObject { super(clientIn, dataMapIn); } + public ${JavaObjectType}(CobblerConnection clientIn) { + super(clientIn, new HashMap()); + } + #for $val in $fields #set $interface_specific = "False" #set $field_name = $val[0] diff --git a/cobbler4j/src/org/fedorahosted/cobbler/CobblerObject.java b/cobbler4j/src/org/fedorahosted/cobbler/CobblerObject.java index 9a8669e8..83c6ab1d 100644 --- a/cobbler4j/src/org/fedorahosted/cobbler/CobblerObject.java +++ b/cobbler4j/src/org/fedorahosted/cobbler/CobblerObject.java @@ -157,9 +157,19 @@ public abstract class CobblerObject { } public void commit() { - client.invokeMethod("commit_" + getObjectType().getName() , getHandle(), dataMap); + // Old way: + //client.invokeMethod("commit_" + getObjectType().getName(), getHandle(), + // dataMap); + + // New less chatty cobbler 2.0 way: + client.invokeMethod("xapi_object_edit", getObjectType().getName(), + getName(), "add", dataMap); } + public void remove() { + client.invokeMethod("xapi_object_edit", getObjectType().getName(), + getName(), "remove", dataMap); + } protected String getHandle() { if (handle == null || handle.trim().length() == 0) { @@ -168,18 +178,20 @@ public abstract class CobblerObject { return handle; } - private String invokeGetHandle() { - return (String)client.invokeMethod("get_"+ getObjectType().getName() + "_handle", this.getName()); + return (String)client.invokeMethod("get_"+ getObjectType().getName() + + "_handle", this.getName()); } - static CobblerObject load(ObjectType type, CobblerConnection client, Map<String, Object> dataMap) { + static CobblerObject load(ObjectType type, CobblerConnection client, + Map<String, Object> dataMap) { try { - Constructor ctor = type.getObjectClass().getConstructor(new Class [] { - CobblerConnection.class, Map.class}); + Constructor ctor = type.getObjectClass().getConstructor( + new Class [] {CobblerConnection.class, Map.class}); - CobblerObject obj = (CobblerObject) ctor.newInstance(new Object [] {client, dataMap}); + CobblerObject obj = (CobblerObject) ctor.newInstance( + new Object [] {client, dataMap}); return obj; } catch(Exception e) { diff --git a/cobbler4j/src/org/fedorahosted/cobbler/test/FinderTests.java b/cobbler4j/src/org/fedorahosted/cobbler/test/FinderTests.java index cf49933b..67e019eb 100644 --- a/cobbler4j/src/org/fedorahosted/cobbler/test/FinderTests.java +++ b/cobbler4j/src/org/fedorahosted/cobbler/test/FinderTests.java @@ -13,7 +13,6 @@ public class FinderTests extends Fixture { @Test public void findDistros() { Finder finder = Finder.getInstance(); - // TODO: Will fail if your cobbler server has no distros: List<Distro> d = (List<Distro>)finder.listItems(cobblercon, ObjectType.DISTRO); diff --git a/cobbler4j/src/org/fedorahosted/cobbler/test/RepoTests.java b/cobbler4j/src/org/fedorahosted/cobbler/test/RepoTests.java new file mode 100644 index 00000000..44227b6c --- /dev/null +++ b/cobbler4j/src/org/fedorahosted/cobbler/test/RepoTests.java @@ -0,0 +1,27 @@ +package org.fedorahosted.cobbler.test; + +import java.util.List; +import org.junit.Test; +import org.junit.BeforeClass; +import static org.junit.Assert.*; + +import org.fedorahosted.cobbler.autogen.*; +import org.fedorahosted.cobbler.*; + +public class RepoTests extends Fixture { + + @Test + public void createRepo() { + Repo newRepo = new Repo(cobblercon); + newRepo.setName("testrepo"); + newRepo.setMirror("rsync://centos.arcticnetwork.ca/centos/5.4/os/i386/"); + newRepo.commit(); + + // Now remove it: + newRepo.remove(); + + // TODO: Make sure it's gone... + } + +} + |