There were no replies to this, so I went into the wilderness...

To recap, my goal was to find a programmatic method to associate a repository 
to a channel.  The challenge that drove this was to deploy a current Spacewalk 
environment, but replicate software channels from the old environment.  The 
code to create channels and repos is centered around invocations of "spacecmd" 
(verbs "softwarechannel_create" and "repo_create"), but there is no verb in the 
CLI for associating a repository to a channel.

The following bash function is called out, with arguments of the channel and 
repository names, and directly engages PostgreSQL to insert a relationship:

# $1 = channel
# $2 = repo
fn_bind_repo ()
{
        psql -U [postgres_user] -h [postgres_server] <<FIN
          insert into rhnchannelcontentsource ( channel_id, source_id )
            select rhnchannel.id, rhncontentsource.id from rhnchannel, 
rhncontentsource where rhnchannel.label = '$1' and rhncontentsource.label = 
'$2';
FIN

        return $?
}

If there *is* a "spacecmd" verb or API call that accomplishes this, then my 
apologies for going off the beaten path.  Otherwise, would this be a base for 
an RFE to add verbs to the CLI/API functionality?

Best Regards,
Michael Snyder


-----Original Message-----
From: Michael Snyder 
Sent: Tuesday, August 20, 2013 12:32 PM
To: [email protected]
Subject: Channel/repository Relationship

Greetings!

I am working on an upgrade from Spacewalk 1.8 to 2.0, and have found an 
interesting challenge in the process.  One of the goals is to populate the new 
system repositories from the old system, and to uniformly establish distinct 
repositories which are then referenced by the channels.

"spacecmd" has been instrumental in providing data from the old system useful 
for creating the existing channels, and I have also successfully established 
matching repositories for the channels.  Some examples for the channel and repo 
creations, as driven through scripting on both ends with "spacecmd":

 - spacecmd "softwarechannel_create -n centos6-base-x86_64 -l 
legacy-centos6-base-x86_64 -a x86_64"
 - spacecmd "repo_create -n centos6-base-x86_64-repo -u 
http://[old_spacewalk_server]/ks/dist/centos6-base-x86_64";

The one detail that I can't seem to solve is registering/relating the 
repository to the channel.  I have not found any spacecmd verb that corresponds 
to something like:

 - spacecmd "softwarechannel_addrepo -r centos6-base-x86_64-repo 
centos6-base-x86_64"
 - spacecmd "softwarechannel_addrepo -r [repo_name] channel_name"   #to be more 
generic ...

(and of course, proposing an "add" verb implies that a "delete" counterpart 
should exist)

Have I missed this functionality expressed with a different verb?  Can this be 
done in a programmatic way?

Best Regards,
Michael Snyder 


_______________________________________________
Spacewalk-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/spacewalk-list

Reply via email to