cluster: STABLE3 - fenced: rename things from cman to cluster
by David Teigland
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 36279bd1cbed1b4a3a9026df00326148b42e67f6
Parent: a02442e84d4cd139f609de65f7e2e4e6be712f59
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Wed Sep 16 12:13:16 2009 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Wed Sep 16 12:13:16 2009 -0500
fenced: rename things from cman to cluster
Use the name "cluster" instead of "cman" for things visible
outside member_cman.c to make the code closer to the fence.git
version and make porting patches easier.
Signed-off-by: David Teigland <teigland(a)redhat.com>
---
fence/fenced/cpg.c | 33 +++++++++++----------
fence/fenced/fd.h | 18 ++++++------
fence/fenced/group.c | 2 +-
fence/fenced/main.c | 8 ++--
fence/fenced/member_cman.c | 67 ++++++++++++++++++++++---------------------
fence/fenced/recover.c | 12 ++++----
6 files changed, 71 insertions(+), 69 deletions(-)
diff --git a/fence/fenced/cpg.c b/fence/fenced/cpg.c
index be89fce..0bd2057 100644
--- a/fence/fenced/cpg.c
+++ b/fence/fenced/cpg.c
@@ -323,7 +323,7 @@ void node_history_init(struct fd *fd, int nodeid)
list_add_tail(&node->list, &fd->node_history);
}
-void node_history_cman_add(int nodeid)
+void node_history_cluster_add(int nodeid)
{
struct fd *fd;
struct node_history *node;
@@ -333,15 +333,16 @@ void node_history_cman_add(int nodeid)
node = get_node_history(fd, nodeid);
if (!node) {
- log_error("node_history_cman_add no nodeid %d", nodeid);
+ log_error("node_history_cluster_add no nodeid %d",
+ nodeid);
return;
}
- node->cman_add_time = time(NULL);
+ node->cluster_add_time = time(NULL);
}
}
-void node_history_cman_remove(int nodeid)
+void node_history_cluster_remove(int nodeid)
{
struct fd *fd;
struct node_history *node;
@@ -349,12 +350,12 @@ void node_history_cman_remove(int nodeid)
list_for_each_entry(fd, &domains, list) {
node = get_node_history(fd, nodeid);
if (!node) {
- log_error("node_history_cman_remove no nodeid %d",
+ log_error("node_history_cluster_remove no nodeid %d",
nodeid);
return;
}
- node->cman_remove_time = time(NULL);
+ node->cluster_remove_time = time(NULL);
}
}
@@ -642,10 +643,10 @@ static int check_quorum_done(struct fd *fd)
struct node_history *node;
int wait_count = 0;
- /* We don't want to trust the cman_quorate value until we know
+ /* We don't want to trust the cluster_quorate value until we know
that cman has seen the same nodes fail that we have. So, we
first make sure that all nodes we've seen fail are also
- failed in cman, then we can just check cman_quorate. This
+ failed in cman, then we can just check cluster_quorate. This
assumes that we'll get to this function to do all the checks
before any of the failed nodes can actually rejoin and become
cman members again (if that assumption doesn't hold, perhaps
@@ -655,10 +656,10 @@ static int check_quorum_done(struct fd *fd)
if (!node->check_quorum)
continue;
- if (!is_cman_member_reread(node->nodeid)) {
+ if (!is_cluster_member_reread(node->nodeid)) {
node->check_quorum = 0;
} else {
- log_debug("check_quorum %d is_cman_member",
+ log_debug("check_quorum %d is_cluster_member",
node->nodeid);
wait_count++;
}
@@ -667,7 +668,7 @@ static int check_quorum_done(struct fd *fd)
if (wait_count)
return 0;
- if (!cman_quorate) {
+ if (!cluster_quorate) {
log_debug("check_quorum not quorate");
return 0;
}
@@ -812,11 +813,11 @@ static int match_change(struct fd *fd, struct change *cg, struct fd_header *hd,
return 0;
}
- if (node->cman_add_time > cg->create_time) {
+ if (node->cluster_add_time > cg->create_time) {
log_debug("match_change %d:%u skip cg %u created %llu "
- "cman add %llu", hd->nodeid, seq, cg->seq,
+ "cluster add %llu", hd->nodeid, seq, cg->seq,
(unsigned long long)cg->create_time,
- (unsigned long long)node->cman_add_time);
+ (unsigned long long)node->cluster_add_time);
return 0;
}
@@ -1367,7 +1368,7 @@ static void add_victims_init(struct fd *fd, struct change *cg)
list_for_each_entry_safe(node, safe, &fd->complete, list) {
list_del(&node->list);
- if (!is_cman_member_reread(node->nodeid) &&
+ if (!is_cluster_member_reread(node->nodeid) &&
!find_memb(cg, node->nodeid) &&
!is_victim(fd, node->nodeid)) {
node->init_victim = 1;
@@ -1842,7 +1843,7 @@ static void receive_protocol(struct fd_header *hd, int len)
log_debug("daemon node %d stateful merge", hd->nodeid);
- if (cman_quorate && node->left_time &&
+ if (cluster_quorate && node->left_time &&
quorate_time < node->left_time) {
log_debug("daemon node %d kill due to stateful merge",
hd->nodeid);
diff --git a/fence/fenced/fd.h b/fence/fenced/fd.h
index d16a49b..ab162b8 100644
--- a/fence/fenced/fd.h
+++ b/fence/fenced/fd.h
@@ -63,7 +63,7 @@ extern int daemon_debug_opt;
extern int daemon_quit;
extern int cluster_down;
extern struct list_head domains;
-extern int cman_quorate;
+extern int cluster_quorate;
extern uint64_t quorate_time;
extern int our_nodeid;
extern char our_name[MAX_NODENAME_LEN+1];
@@ -140,8 +140,8 @@ struct node_history {
uint64_t fail_time;
uint64_t fence_time;
uint64_t fence_external_time;
- uint64_t cman_add_time;
- uint64_t cman_remove_time;
+ uint64_t cluster_add_time;
+ uint64_t cluster_remove_time;
int fence_external_node;
int fence_master;
int fence_how; /* VIC_DONE_ */
@@ -223,8 +223,8 @@ int set_domain_info(struct fd *fd, struct fenced_domain *domain);
int set_domain_nodes(struct fd *fd, int option, int *node_count,
struct fenced_node **nodes);
int is_clean_daemon_member(int nodeid);
-void node_history_cman_add(int nodeid);
-void node_history_cman_remove(int nodeid);
+void node_history_cluster_add(int nodeid);
+void node_history_cluster_remove(int nodeid);
/* group.c */
@@ -251,10 +251,10 @@ void cluster_dead(int ci);
/* member_cman.c */
-void process_cman(int ci);
-int setup_cman(void);
-void close_cman(void);
-int is_cman_member_reread(int nodeid);
+void process_cluster(int ci);
+int setup_cluster(void);
+void close_cluster(void);
+int is_cluster_member_reread(int nodeid);
char *nodeid_to_name(int nodeid);
int name_to_nodeid(char *name);
struct node *get_new_node(struct fd *fd, int nodeid);
diff --git a/fence/fenced/group.c b/fence/fenced/group.c
index 0f85e85..d9ddd4e 100644
--- a/fence/fenced/group.c
+++ b/fence/fenced/group.c
@@ -173,7 +173,7 @@ static void _add_first_victims(struct fd *fd)
log_debug("first complete list empty warning");
list_for_each_entry_safe(prev_node, safe, &fd->complete, list) {
- if (!is_cman_member_reread(prev_node->nodeid)) {
+ if (!is_cluster_member_reread(prev_node->nodeid)) {
list_del(&prev_node->list);
list_add(&prev_node->list, &fd->victims);
log_debug("add first victim %s", prev_node->name);
diff --git a/fence/fenced/main.c b/fence/fenced/main.c
index 9e473d2..deb9515 100644
--- a/fence/fenced/main.c
+++ b/fence/fenced/main.c
@@ -741,10 +741,10 @@ static void loop(void)
goto out;
client_add(rv, process_listener, NULL);
- rv = setup_cman();
+ rv = setup_cluster();
if (rv < 0)
goto out;
- client_add(rv, process_cman, cluster_dead);
+ client_add(rv, process_cluster, cluster_dead);
rv = setup_ccs();
if (rv < 0)
@@ -831,7 +831,7 @@ static void loop(void)
close_cpg_daemon();
close_logging();
close_ccs();
- close_cman();
+ close_cluster();
if (!list_empty(&domains))
log_error("domain abandoned");
@@ -1068,7 +1068,7 @@ int daemon_debug_opt;
int daemon_quit;
int cluster_down;
struct list_head domains;
-int cman_quorate;
+int cluster_quorate;
uint64_t quorate_time;
int our_nodeid;
char our_name[MAX_NODENAME_LEN+1];
diff --git a/fence/fenced/member_cman.c b/fence/fenced/member_cman.c
index 5e977a6..a245adf 100644
--- a/fence/fenced/member_cman.c
+++ b/fence/fenced/member_cman.c
@@ -49,7 +49,7 @@ static int is_old_member(int nodeid)
return is_member(old_nodes, old_node_count, nodeid);
}
-static int is_cman_member(int nodeid)
+static int is_cluster_member(int nodeid)
{
return is_member(cman_nodes, cman_node_count, nodeid);
}
@@ -146,14 +146,14 @@ int name_to_nodeid(char *name)
return -1;
}
-static void statechange(void)
+static void update_cluster(void)
{
- int quorate = cman_quorate;
+ int quorate = cluster_quorate;
int i, rv;
- cman_quorate = cman_is_quorate(ch);
+ cluster_quorate = cman_is_quorate(ch);
- if (!quorate && cman_quorate)
+ if (!quorate && cluster_quorate)
quorate_time = time(NULL);
old_node_count = cman_node_count;
@@ -169,12 +169,12 @@ static void statechange(void)
for (i = 0; i < old_node_count; i++) {
if (old_nodes[i].cn_member &&
- !is_cman_member(old_nodes[i].cn_nodeid)) {
+ !is_cluster_member(old_nodes[i].cn_nodeid)) {
- log_debug("cman node %d removed",
+ log_debug("cluster node %d removed",
old_nodes[i].cn_nodeid);
- node_history_cman_remove(old_nodes[i].cn_nodeid);
+ node_history_cluster_remove(old_nodes[i].cn_nodeid);
}
}
@@ -182,17 +182,34 @@ static void statechange(void)
if (cman_nodes[i].cn_member &&
!is_old_member(cman_nodes[i].cn_nodeid)) {
- log_debug("cman node %d added",
+ log_debug("cluster node %d added",
cman_nodes[i].cn_nodeid);
- node_history_cman_add(cman_nodes[i].cn_nodeid);
+ node_history_cluster_add(cman_nodes[i].cn_nodeid);
}
}
}
+/* Note: in fence delay loop we aren't processing callbacks so won't
+ have done an update_cluster() in response to a cman callback */
+
+int is_cluster_member_reread(int nodeid)
+{
+ int rv;
+
+ update_cluster();
+
+ rv = is_cluster_member(nodeid);
+ if (rv)
+ return 1;
+
+ /* log_debug("cman_member %d not member", nodeid); */
+ return 0;
+}
+
static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
{
- int quorate = cman_quorate;
+ int quorate = cluster_quorate;
switch (reason) {
case CMAN_REASON_TRY_SHUTDOWN:
@@ -204,10 +221,10 @@ static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
}
break;
case CMAN_REASON_STATECHANGE:
- statechange();
+ update_cluster();
/* domain may have been waiting for quorum */
- if (!quorate && cman_quorate && (group_mode == GROUP_LIBCPG))
+ if (!quorate && cluster_quorate && (group_mode == GROUP_LIBCPG))
process_fd_changes();
break;
@@ -218,7 +235,7 @@ static void cman_callback(cman_handle_t h, void *private, int reason, int arg)
}
}
-void process_cman(int ci)
+void process_cluster(int ci)
{
int rv;
@@ -227,7 +244,7 @@ void process_cman(int ci)
cluster_dead(0);
}
-int setup_cman(void)
+int setup_cluster(void)
{
cman_node_t node;
int rv, fd;
@@ -272,7 +289,7 @@ int setup_cman(void)
return rv;
}
- statechange();
+ update_cluster();
fd = cman_get_fd(ch);
@@ -296,28 +313,12 @@ int setup_cman(void)
return fd;
}
-void close_cman(void)
+void close_cluster(void)
{
cman_finish(ch);
cman_finish(ch_admin);
}
-int is_cman_member_reread(int nodeid)
-{
- int rv;
-
- /* Note: in fence delay loop we aren't processing callbacks so won't
- have done a statechange() in response to a cman callback */
- statechange();
-
- rv = is_cman_member(nodeid);
- if (rv)
- return 1;
-
- /* log_debug("cman_member %d not member", nodeid); */
- return 0;
-}
-
struct node *get_new_node(struct fd *fd, int nodeid)
{
cman_node_t cn;
diff --git a/fence/fenced/recover.c b/fence/fenced/recover.c
index e0d4fd8..d3bf35f 100644
--- a/fence/fenced/recover.c
+++ b/fence/fenced/recover.c
@@ -67,7 +67,7 @@ static int reduce_victims(struct fd *fd)
num_victims = list_count(&fd->victims);
list_for_each_entry_safe(node, safe, &fd->victims, list) {
- if (is_cman_member_reread(node->nodeid) &&
+ if (is_cluster_member_reread(node->nodeid) &&
is_clean_daemon_member(node->nodeid)) {
log_debug("reduce victim %s", node->name);
victim_done(fd, node->nodeid, VIC_DONE_MEMBER);
@@ -285,7 +285,7 @@ void fence_victims(struct fd *fd)
struct node *node;
int error, i, ll, flog_count, prev_flog_count;
int override = -1;
- int cman_member, cpg_member, ext;
+ int cluster_member, cpg_member, ext;
unsigned int limit, retries;
list_for_each_entry(node, &fd->victims, list) {
@@ -325,17 +325,17 @@ void fence_victims(struct fd *fd)
/* for queries */
fd->current_victim = node->nodeid;
- cman_member = is_cman_member_reread(node->nodeid);
+ cluster_member = is_cluster_member_reread(node->nodeid);
cpg_member = is_clean_daemon_member(node->nodeid);
if (group_mode == GROUP_LIBCPG)
ext = is_fenced_external(fd, node->nodeid);
else
ext = 0;
- if ((cman_member && cpg_member) || ext) {
+ if ((cluster_member && cpg_member) || ext) {
log_debug("averting fence of node %s "
- "cman member %d cpg member %d external %d",
- node->name, cman_member, cpg_member, ext);
+ "cluster member %d cpg member %d external %d",
+ node->name, cluster_member, cpg_member, ext);
node->local_victim_done = 1;
victim_done(fd, node->nodeid,
14 years, 7 months
cluster: STABLE3 - config: Update LDIF schema
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: a02442e84d4cd139f609de65f7e2e4e6be712f59
Parent: a14288eeded329dd2851d887d169a4b2a5b8cfd0
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Sep 16 12:14:19 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Wed Sep 16 12:14:19 2009 -0400
config: Update LDIF schema
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
config/plugins/ldap/99cluster.ldif | 14 ++++++++++++--
config/plugins/ldap/ldap-base.csv | 6 ++++--
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/config/plugins/ldap/99cluster.ldif b/config/plugins/ldap/99cluster.ldif
index 38e39ce..0f6925c 100644
--- a/config/plugins/ldap/99cluster.ldif
+++ b/config/plugins/ldap/99cluster.ldif
@@ -1,4 +1,4 @@
-# Auto-generated @ 2009-09-10 13:42:25
+# Auto-generated @ 2009-09-16 12:13:26
dn: cn=schema
attributeTypes: (
1.3.6.1.4.1.2312.8.1.1.15 NAME 'rhcsAlias'
@@ -1303,6 +1303,12 @@ attributeTypes: (
SINGLE-VALUE
)
attributeTypes: (
+ 1.3.6.1.4.1.2312.8.1.1.240 NAME 'rhcsResource'
+ EQUALITY caseExactIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+ SINGLE-VALUE
+ )
+attributeTypes: (
1.3.6.1.4.1.2312.8.1.1.227 NAME 'rhcsQuick-status'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
@@ -1566,7 +1572,7 @@ objectClasses: (
)
objectClasses: (
1.3.6.1.4.1.2312.8.1.2.46 NAME 'rhcsVm' SUP top STRUCTURAL
- MAY ( rhcs--enforce-timeouts $ rhcs--independent-subtree $ rhcsMigration-uri $ rhcsHypervisor-uri $ rhcsHypervisor $ rhcsRestart-expire-time $ rhcsMax-restarts $ rhcsDepend-mode $ rhcsDepend $ rhcsSnapshot $ rhcsMigrate $ rhcsXmlfile $ rhcsUse-virsh $ rhcsMigration-mapping $ rhcsRecovery $ rhcsExclusive $ rhcsHardrecovery $ rhcsAutostart $ rhcsDomain $ name $ rhcsRef )
+ MAY ( rhcs--enforce-timeouts $ rhcs--independent-subtree $ rhcsMigration-uri $ rhcsHypervisor-uri $ rhcsHypervisor $ rhcsRestart-expire-time $ rhcsMax-restarts $ rhcsDepend-mode $ rhcsDepend $ rhcsSnapshot $ rhcsPath $ rhcsMigrate $ rhcsXmlfile $ rhcsUse-virsh $ rhcsMigration-mapping $ rhcsRecovery $ rhcsExclusive $ rhcsHardrecovery $ rhcsAutostart $ rhcsDomain $ name $ rhcsRef )
)
objectClasses: (
1.3.6.1.4.1.2312.8.1.2.47 NAME 'rhcsSAPInstance' SUP top STRUCTURAL
@@ -1585,6 +1591,10 @@ objectClasses: (
MAY ( rhcs--enforce-timeouts $ rhcs--independent-subtree $ rhcsDeep-probe-timeout $ rhcsStart-timeout $ rhcsShutdown-timeout $ rhcsSybase-user $ rhcsInterfaces-file $ rhcsLogin-file $ rhcsServer-name $ rhcsSybase-ocs $ rhcsSybase-ase $ rhcsSybase-home $ name $ rhcsRef )
)
objectClasses: (
+ 1.3.6.1.4.1.2312.8.1.2.58 NAME 'rhcsDrbd' SUP top STRUCTURAL
+ MAY ( rhcs--enforce-timeouts $ rhcs--independent-subtree $ rhcsResource $ name $ rhcsRef )
+ )
+objectClasses: (
1.3.6.1.4.1.2312.8.1.2.51 NAME 'rhcsFs' SUP top STRUCTURAL
MAY ( rhcs--enforce-timeouts $ rhcs--independent-subtree $ rhcsOptions $ rhcsForce-fsck $ rhcsFsid $ rhcsNfslock $ rhcsSelf-fence $ rhcsQuick-status $ rhcsForce-unmount $ rhcsFstype $ rhcsDevice $ rhcsMountpoint $ name $ rhcsRef )
)
diff --git a/config/plugins/ldap/ldap-base.csv b/config/plugins/ldap/ldap-base.csv
index 9f015b6..33941b7 100644
--- a/config/plugins/ldap/ldap-base.csv
+++ b/config/plugins/ldap/ldap-base.csv
@@ -1,5 +1,5 @@
-# Max attribute value: 239
-# Max object class value: 57
+# Max attribute value: 240
+# Max object class value: 58
obj,rhcsCluster,cluster,1
obj,rhcsCman,cman,3
obj,rhcsTotem,totem,4
@@ -295,3 +295,5 @@ attr,rhcsHypervisor-uri,hypervisor_uri,237
attr,rhcsMigration-uri,migration_uri,238
attr,rhcsSkip-undefined,skip_undefined,239
obj,rhcsLogging-daemon,logging_daemon,57
+obj,rhcsDrbd,drbd,58
+attr,rhcsResource,resource,240
14 years, 7 months
cluster: STABLE3 - rgmanager: Ensure 'make clean' kills resources.rng
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: a14288eeded329dd2851d887d169a4b2a5b8cfd0
Parent: 1c3cc2a3ad2713bcd9d518cf70d7b045af0df598
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Sep 16 12:01:03 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Wed Sep 16 12:01:03 2009 -0400
rgmanager: Ensure 'make clean' kills resources.rng
Resources.rng is not a normal build target, so it
is not getting cleaned up by 'make clean'.
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/Makefile | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/rgmanager/src/resources/Makefile b/rgmanager/src/resources/Makefile
index 2365773..049f3cb 100644
--- a/rgmanager/src/resources/Makefile
+++ b/rgmanager/src/resources/Makefile
@@ -74,6 +74,7 @@ uninstall:
${sharedir}
clean: generalclean
+ rm -f resources.rng
check: $(RESOURCES) $(TARGET2) $(TARGET3) ra-api-1-modified.dtd
@echo Validating resource agent meta-data
14 years, 7 months
cluster: STABLE3 - config: Add missing stuff to schema
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 1c3cc2a3ad2713bcd9d518cf70d7b045af0df598
Parent: 9897e9cc034cae278c66c358a4265ae668e45e9f
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Sep 16 11:57:48 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Wed Sep 16 11:57:48 2009 -0400
config: Add missing stuff to schema
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
config/tools/xml/cluster.rng.in | 30 ++++++++++++++++++++++++++++++
1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/config/tools/xml/cluster.rng.in b/config/tools/xml/cluster.rng.in
index 801b3da..871d44e 100644
--- a/config/tools/xml/cluster.rng.in
+++ b/config/tools/xml/cluster.rng.in
@@ -1990,6 +1990,9 @@ To validate your cluster.conf against this schema, run:
<attribute name="migrate"/>
</optional>
<optional>
+ <attribute name="path"/>
+ </optional>
+ <optional>
<attribute name="snapshot"/>
</optional>
<optional>
@@ -2223,6 +2226,32 @@ To validate your cluster.conf against this schema, run:
</define>
+ <define name="DRBD">
+ <element name="drbd">
+ <!-- This is a DRBD resource. -->
+ <choice>
+ <group>
+ <!-- rgmanager specific stuff -->
+ <attribute name="ref"/>
+ </group>
+ <group>
+ <attribute name="name"/>
+ <attribute name="resource"/>
+ </group>
+ </choice>
+ <optional>
+ <attribute name="__independent_subtree"/>
+ </optional>
+ <optional>
+ <attribute name="__enforce_timeouts"/>
+ </optional>
+ <optional>
+ <ref name="CHILDREN"/>
+ </optional>
+ </element>
+ </define>
+
+
<define name="FS">
<element name="fs">
<!-- Defines a file system mount. -->
@@ -2334,6 +2363,7 @@ To validate your cluster.conf against this schema, run:
<ref name="SAPDATABASE"/>
<ref name="NAMED"/>
<ref name="ASEHAAGENT"/>
+ <ref name="DRBD"/>
<ref name="FS"/>
<ref name="ORACLEDB"/>
<ref name="RESOURCEACTION"/>
14 years, 7 months
cluster: STABLE3 - rgmanager: Merge resource schema generation bits
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 9897e9cc034cae278c66c358a4265ae668e45e9f
Parent: 334039edb71ed9e5577726b71ed3bf67ee80dbe1
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Sep 16 11:56:37 2009 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Wed Sep 16 11:56:37 2009 -0400
rgmanager: Merge resource schema generation bits
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/Makefile | 23 +++++++++
rgmanager/src/resources/ra2csv.xsl | 19 --------
rgmanager/src/resources/ra2oid.xsl | 68 ----------------------------
rgmanager/src/resources/ra2ref.xsl | 10 ++++
rgmanager/src/resources/ra2rng.xsl | 43 +++++++++++++++++
rgmanager/src/resources/resources.rng.head | 1 +
rgmanager/src/resources/resources.rng.mid | 4 ++
rgmanager/src/resources/resources.rng.tail | 32 +++++++++++++
8 files changed, 113 insertions(+), 87 deletions(-)
diff --git a/rgmanager/src/resources/Makefile b/rgmanager/src/resources/Makefile
index 8d79cbe..2365773 100644
--- a/rgmanager/src/resources/Makefile
+++ b/rgmanager/src/resources/Makefile
@@ -83,3 +83,26 @@ check: $(RESOURCES) $(TARGET2) $(TARGET3) ra-api-1-modified.dtd
./ra-api-1-modified.dtd --noout -; \
if [ $$? -ne 0 ]; then exit 1; fi \
done
+
+#
+# Schema maintenance. Run 'make resources.rng' and paste it in to
+# config/tools/xml/cluster.rng.in where it says 'autogenerated'.
+#
+# resources.rng.* should never be distributed by themselves.
+#
+resources.rng: $(RESOURCES) $(TARGET2) $(TARGET3) ra2rng.xsl ra2ref.xsl
+ rm -f resources.rng
+ cat resources.rng.head >> resources.rng
+ @echo Generating per-resource RelaxNG information...
+ @for f in $(RESOURCES) $(TARGET2) $(TARGET3); do \
+ echo " ./$$f"; \
+ bash ./$$f meta-data | xsltproc ra2rng.xsl - >> resources.rng; \
+ done
+ cat resources.rng.mid >> resources.rng
+ @echo Generating per-resource RelaxNG reference information...
+ @for f in $(RESOURCES) $(TARGET2) $(TARGET3); do \
+ echo " ./$$f"; \
+ bash ./$$f meta-data | xsltproc ra2ref.xsl - >> resources.rng; \
+ done
+ cat resources.rng.tail >> resources.rng
+
diff --git a/rgmanager/src/resources/ra2csv.xsl b/rgmanager/src/resources/ra2csv.xsl
deleted file mode 100644
index a00243a..0000000
--- a/rgmanager/src/resources/ra2csv.xsl
+++ /dev/null
@@ -1,19 +0,0 @@
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="text" indent="no"/>
-
-<xsl:template name="normalize-name">
- <xsl:param name="type"/>
- <xsl:param name="value"/>
- <xsl:variable name="normalized" select="concat( translate(substring(@name, 1, 1), '_abcdefghijklmnopqrstuvwrxyz', '-ABCDEFGHIJKLMNOPQRSTUVWRXYZ'), translate(substring(@name, 2), '_ABCDEFGHIJKLMNOPQRSTUVWRXYZ', '-abcdefghijklmnopqrstuvwrxyz'))"/>
- <xsl:choose>
- <xsl:when test="$normalized = 'Name'"></xsl:when>
- <xsl:otherwise><xsl:value-of select="$type"/>,rhcs<xsl:value-of select="$normalized"/><xsl:text>
-</xsl:text></xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="/resource-agent"><xsl:call-template name="normalize-name"><xsl:with-param name="type">obj</xsl:with-param><xsl:with-param name="value" select="normalize-space(@name)"/></xsl:call-template>
-<xsl:for-each select="parameters/parameter"><xsl:call-template name="normalize-name"><xsl:with-param name="type">attr</xsl:with-param><xsl:with-param name="value" select="normalize-space(@name)"/></xsl:call-template>
-</xsl:for-each>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/rgmanager/src/resources/ra2oid.xsl b/rgmanager/src/resources/ra2oid.xsl
deleted file mode 100644
index 697bd49..0000000
--- a/rgmanager/src/resources/ra2oid.xsl
+++ /dev/null
@@ -1,68 +0,0 @@
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="text" indent="no"/>
-
-<xsl:template name="normalize-name">
- <xsl:param name="value"/>
- <xsl:variable name="normalized" select="concat( translate(substring(@name, 1, 1), '_abcdefghijklmnopqrstuvwrxyz', '-ABCDEFGHIJKLMNOPQRSTUVWRXYZ'), translate(substring(@name, 2), '_ABCDEFGHIJKLMNOPQRSTUVWRXYZ', '-abcdefghijklmnopqrstuvwrxyz'))"/>
- <xsl:choose>
- <xsl:when test="$normalized = 'Name'">name</xsl:when>
- <xsl:otherwise>rhcs<xsl:value-of select="$normalized"/></xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="/resource-agent">
-#
-# Resource Agent: <xsl:value-of select="@name"/>
-# Provider: <xsl:value-of select="@provider"/>
-# Provider Version: <xsl:value-of select="@version"/>
-# API Version: <xsl:value-of select="normalize-space(version)"/>
-# Description: <xsl:value-of select="normalize-space(shortdesc)"/>
-#
-objectClasses: (
- 1.3.6.1.4.1.2312.8.1.2.@@OBJ_CLASS_<xsl:call-template name="normalize-name"><xsl:with-param name="value" select="@name"/></xsl:call-template>@@ NAME '<xsl:call-template name="normalize-name">
- <xsl:with-param name="value" select="@name"/>
- </xsl:call-template>' SUP top STRUCTURAL
- DESC '<xsl:value-of select="normalize-space(shortdesc)"/>'
- MUST( <xsl:for-each select="parameters/parameter">
- <xsl:if test="@required = 1 or @primary = 1">
- <xsl:call-template name="normalize-name">
- <xsl:with-param name="value" select="@name"/>
- </xsl:call-template>
- <xsl:if test="position()!=last()"> $ </xsl:if>
- </xsl:if>
- </xsl:for-each> )
- MAY( <xsl:for-each select="parameters/parameter">
- <xsl:if test="string(number(@primary)) = 'NaN' or @primary = 0">
- <xsl:if test="string(number(@required)) = 'NaN' or @required = 0">
- <xsl:call-template name="normalize-name">
- <xsl:with-param name="value" select="@name"/>
- </xsl:call-template>
- <xsl:if test="position()!=last()"> $ </xsl:if>
- </xsl:if>
- </xsl:if>
- </xsl:for-each> )
-)
-
-#
-# Object Attributes
-# FIXME: Run a list of known attribute types
-#
-<xsl:for-each select="parameters/parameter">
-<xsl:if test="@name != 'name'">
-attributeTypes: (
- 1.3.6.1.4.1.2312.8.1.1.@@ATTR_TYPE_<xsl:call-template name="normalize-name"><xsl:with-param name="value" select="@name"/></xsl:call-template>@@ NAME '<xsl:call-template name="normalize-name"><xsl:with-param name="value" select="@name"/></xsl:call-template>'
- DESC '<xsl:value-of select="normalize-space(shortdesc)"/>'
- <xsl:choose>
- <xsl:when test="content/@type = 'integer'">EQUALITY integerMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27</xsl:when>
- <xsl:when test="content/@type = 'boolean'">EQUALITY booleanMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.7</xsl:when>
- <xsl:otherwise>EQUALITY caseExactIA5Match
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.26</xsl:otherwise>
- </xsl:choose>
- SINGLE-VALUE
-)
-</xsl:if>
-</xsl:for-each>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/rgmanager/src/resources/ra2ref.xsl b/rgmanager/src/resources/ra2ref.xsl
new file mode 100644
index 0000000..6e61073
--- /dev/null
+++ b/rgmanager/src/resources/ra2ref.xsl
@@ -0,0 +1,10 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text" indent="yes"/>
+<xsl:template name="capitalize">
+ <xsl:param name="value"/>
+ <xsl:variable name="normalized" select="translate($value, '_abcdefghijklmnopqrstuvwrxyz', '-ABCDEFGHIJKLMNOPQRSTUVWRXYZ')"/>
+ <xsl:value-of select="$normalized"/>
+</xsl:template>
+<xsl:template match="/resource-agent">
+ <ref name="<xsl:call-template name="capitalize"><xsl:with-param name="value" select="@name"/></xsl:call-template>"/></xsl:template>
+</xsl:stylesheet>
diff --git a/rgmanager/src/resources/ra2rng.xsl b/rgmanager/src/resources/ra2rng.xsl
new file mode 100644
index 0000000..e3e2815
--- /dev/null
+++ b/rgmanager/src/resources/ra2rng.xsl
@@ -0,0 +1,43 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text" indent="yes"/>
+<xsl:template name="capitalize">
+ <xsl:param name="value"/>
+ <xsl:variable name="normalized" select="translate($value, '_abcdefghijklmnopqrstuvwrxyz', '-ABCDEFGHIJKLMNOPQRSTUVWRXYZ')"/>
+ <xsl:value-of select="$normalized"/>
+</xsl:template>
+
+<xsl:template match="/resource-agent">
+ <define name="<xsl:call-template name="capitalize"><xsl:with-param name="value" select="@name"/></xsl:call-template>">
+ <element name="<xsl:value-of select="@name"/>">
+ <!-- <xsl:value-of select="normalize-space(shortdesc)"/> -->
+ <choice>
+ <group>
+ <!-- rgmanager specific stuff -->
+ <attribute name="ref"/>
+ </group>
+ <group><xsl:for-each select="parameters/parameter">
+ <xsl:choose>
+ <xsl:when test="@required = 1 or @primary = 1">
+ <attribute name="<xsl:value-of select="@name"/>"/></xsl:when>
+ <xsl:otherwise>
+ <optional>
+ <attribute name="<xsl:value-of select="@name"/>"/>
+ </optional></xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </group>
+ </choice>
+ <optional>
+ <attribute name="__independent_subtree"/>
+ </optional>
+ <optional>
+ <attribute name="__enforce_timeouts"/>
+ </optional>
+ <optional>
+ <ref name="CHILDREN"/>
+ </optional>
+ </element>
+ </define>
+
+</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/rgmanager/src/resources/resources.rng.head b/rgmanager/src/resources/resources.rng.head
new file mode 100644
index 0000000..750c6d3
--- /dev/null
+++ b/rgmanager/src/resources/resources.rng.head
@@ -0,0 +1 @@
+<!-- Autogenerated. Paste in to cluster.ng in the 'resources' section -->
diff --git a/rgmanager/src/resources/resources.rng.mid b/rgmanager/src/resources/resources.rng.mid
new file mode 100644
index 0000000..fb35cbd
--- /dev/null
+++ b/rgmanager/src/resources/resources.rng.mid
@@ -0,0 +1,4 @@
+ <define name="CHILD">
+ <!-- for recursion to work properly, CHILD may be referenced at CHILDREN only -->
+ <zeroOrMore>
+ <choice>
diff --git a/rgmanager/src/resources/resources.rng.tail b/rgmanager/src/resources/resources.rng.tail
new file mode 100644
index 0000000..c273680
--- /dev/null
+++ b/rgmanager/src/resources/resources.rng.tail
@@ -0,0 +1,32 @@
+
+ <ref name="RESOURCEACTION"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+
+ <define name="CHILDREN">
+ <zeroOrMore>
+ <choice>
+ <ref name="CHILD"/>
+ </choice>
+ </zeroOrMore>
+ </define>
+
+ <define name="RESOURCEACTION">
+ <zeroOrMore>
+ <element name="action">
+ <attribute name="name"/>
+ <optional>
+ <attribute name="depth"/>
+ </optional>
+ <optional>
+ <attribute name="interval"/>
+ </optional>
+ <optional>
+ <attribute name="timeout"/>
+ </optional>
+ </element>
+ </zeroOrMore>
+ </define>
+
+<!-- End autogenerated resources definitions -->
14 years, 7 months
cluster: master - config: in LDAP cluster entry is not a cn=
by Christine Caulfield
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 41477a7f678f5c73b0a890ed2e608471cf029c27
Parent: 40fde3c0295e7bb940e1bf4bab3b4633b50f7fe3
Author: Christine Caulfield <ccaulfie(a)redhat.com>
AuthorDate: Mon Sep 14 14:59:48 2009 +0100
Committer: Christine Caulfield <ccaulfie(a)redhat.com>
CommitterDate: Wed Sep 16 10:50:05 2009 +0100
config: in LDAP cluster entry is not a cn=
cn=cluster should be name=cluster. This gets rid of a
schema anomoly.
Signed-off-by: Christine Caulfield <ccaulfie(a)redhat.com>
---
config/plugins/ldap/configldap.c | 2 +-
config/tools/ldap/confdb2ldif.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/config/plugins/ldap/configldap.c b/config/plugins/ldap/configldap.c
index 273d702..557b08f 100644
--- a/config/plugins/ldap/configldap.c
+++ b/config/plugins/ldap/configldap.c
@@ -281,7 +281,7 @@ static int init_config(struct objdb_iface_ver0 *objdb)
return -1;
}
- rc = read_config_for(ld, objdb, OBJECT_PARENT_HANDLE, "cluster", "cn=cluster", 1);
+ rc = read_config_for(ld, objdb, OBJECT_PARENT_HANDLE, "cluster", "name=cluster", 1);
ldap_unbind(ld);
return 0;
diff --git a/config/tools/ldap/confdb2ldif.c b/config/tools/ldap/confdb2ldif.c
index 5f59179..607d87d 100644
--- a/config/tools/ldap/confdb2ldif.c
+++ b/config/tools/ldap/confdb2ldif.c
@@ -188,7 +188,7 @@ int main(int argc, char *argv[])
exit (1);
}
- sprintf(basedn, "cn=%s,%s", clusterroot, argv[1]);
+ sprintf(basedn, "name=%s,%s", clusterroot, argv[1]);
/* Print a header */
printf("# This file was generated by confdb2ldif, from an existing cluster configuration\n");
14 years, 7 months
test
by Fabio M. Di Nitto
test
14 years, 7 months
test2
by Fabio M. Di Nitto
test2
14 years, 7 months