[Ocfs2-tools-commits] jlbec commits r688 - trunk/o2cb_ctl
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Fri Mar 18 17:35:49 CST 2005
Author: jlbec
Signed-off-by: manish
Date: 2005-03-18 17:35:47 -0600 (Fri, 18 Mar 2005)
New Revision: 688
Modified:
trunk/o2cb_ctl/o2cb_config.c
trunk/o2cb_ctl/o2cb_ctl.c
Log:
o Teach o2cb_ctl to create clusters
Signed-off-by: manish
Modified: trunk/o2cb_ctl/o2cb_config.c
===================================================================
--- trunk/o2cb_ctl/o2cb_config.c 2005-03-18 23:05:57 UTC (rev 687)
+++ trunk/o2cb_ctl/o2cb_config.c 2005-03-18 23:35:47 UTC (rev 688)
@@ -414,6 +414,10 @@
O2CBCluster *cluster;
g_return_val_if_fail(config != NULL, NULL);
+
+ cluster = o2cb_config_get_cluster_by_name(config, name);
+ if (cluster)
+ return NULL;
cluster = g_new(O2CBCluster, 1);
@@ -529,6 +533,10 @@
g_return_val_if_fail(cluster != NULL, NULL);
+ node = o2cb_cluster_get_node_by_name(cluster, name);
+ if (node)
+ return NULL;
+
node = g_new(O2CBNode, 1);
node->n_name = g_strdup(name);
Modified: trunk/o2cb_ctl/o2cb_ctl.c
===================================================================
--- trunk/o2cb_ctl/o2cb_ctl.c 2005-03-18 23:05:57 UTC (rev 687)
+++ trunk/o2cb_ctl/o2cb_ctl.c 2005-03-18 23:35:47 UTC (rev 688)
@@ -784,6 +784,107 @@
return rc;
} /* run_change() */
+static gint run_create_clusters(O2CBContext *ctxt)
+{
+ gint rc = 0;
+ O2CBCluster *cluster;
+ errcode_t err;
+ gchar *name;
+ GList *list;
+
+ list = ctxt->oc_objects;
+ while (list)
+ {
+ name = list->data;
+ cluster = o2cb_config_get_cluster_by_name(ctxt->oc_config,
+ name);
+ if (cluster)
+ {
+ rc = -EEXIST;
+ fprintf(stderr,
+ PROGNAME ": Cluster \"%s\" already exists\n",
+ name);
+ break;
+ }
+
+ cluster = o2cb_config_add_cluster(ctxt->oc_config, name);
+ if (!cluster)
+ {
+ rc = -ENOMEM;
+ fprintf(stderr,
+ PROGNAME ": Unable to add cluster \"%s\"\n",
+ name);
+ break;
+ }
+
+ if (ctxt->oc_modify_running)
+ {
+ err = o2cb_create_cluster(name);
+ if (err)
+ {
+ if (err != O2CB_ET_CLUSTER_EXISTS)
+ {
+ rc = -EIO;
+ com_err(PROGNAME, err, "while setting cluster name");
+ break;
+ }
+ }
+ else
+ fprintf(stdout, "Cluster %s created\n", name);
+ }
+
+ list = list->next;
+ }
+
+ return rc;
+}
+
+static gint run_create(O2CBContext *ctxt)
+{
+ gint rc;
+
+ if (!ctxt->oc_type || !ctxt->oc_objects)
+ {
+ fprintf(stderr,
+ PROGNAME ": Operation \'-C\' requires an object and an object type\n");
+ return -EINVAL;
+ }
+
+ rc = validate_attrs(ctxt);
+ if (rc)
+ return rc;
+
+ rc = load_config(ctxt);
+ if (rc)
+ return rc;
+
+ if (ctxt->oc_type == O2CB_TYPE_NODE)
+ {
+ rc = -ENOTSUP;
+ fprintf(stderr,
+ PROGNAME ": Node creation not yet supported\n");
+ goto out_error;
+ }
+ else if (ctxt->oc_type == O2CB_TYPE_CLUSTER)
+ {
+ rc = run_create_clusters(ctxt);
+ if (rc)
+ goto out_error;
+ }
+ else
+ {
+ rc = -EINVAL;
+ fprintf(stderr,
+ PROGNAME ": Invalid object type!\n");
+ goto out_error;
+ }
+
+ rc = write_config(ctxt);
+
+out_error:
+ return rc;
+} /* run_change() */
+
gint main(gint argc, gchar *argv[])
{
int rc;
@@ -803,6 +904,9 @@
break;
case O2CB_OP_CREATE:
+ rc = run_create(&ctxt);
+ break;
+
case O2CB_OP_DELETE:
case O2CB_OP_INFO:
rc = -ENOTSUP;
More information about the Ocfs2-tools-commits
mailing list