summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevan Goodwin <dgoodwin@redhat.com>2009-11-02 17:37:12 -0400
committerDevan Goodwin <dgoodwin@redhat.com>2009-11-02 17:37:12 -0400
commitdee2d1a386fcb018bd9503c7d34a2efcc11b2339 (patch)
tree23600efc34e5a758e90be6a51d160992b2559c18
parent9956f5627241ab84ad74bb30b91974ae8d1e0667 (diff)
downloadcobbler-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.py4
-rw-r--r--cobbler4j/object_base.tmpl4
-rw-r--r--cobbler4j/src/org/fedorahosted/cobbler/CobblerObject.java26
-rw-r--r--cobbler4j/src/org/fedorahosted/cobbler/test/FinderTests.java1
-rw-r--r--cobbler4j/src/org/fedorahosted/cobbler/test/RepoTests.java27
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...
+ }
+
+}
+