The plugin tries to simplify namespace handling for the majority of cases.
In your particular case, that attempt to help is detrimental.

An issue would probably be appreciated. I've copied Gabe, the active
maintainer.

On Tue, Dec 19, 2017 at 9:20 AM, Alan Christie <
achris...@informaticsmatters.com> wrote:

> Thanks Justin,
>
> Is it of interest that the plugin’s create() behaves differently to the
> command-line? It just doesn't _feel_ right. I could create an issue in the
> client plugin GitHub project if the consensus is that the behaviour is
> wrong. After all, why does create() care? Its command-line-cousin doesn’t.
>
> At the moment my work-around (inspecting the namespace) and iterating
> through the objects feels more pleasant than using raw.
>
> Alan.
>
>
> On 19 Dec 2017, at 14:09, Justin Pierce <jupie...@redhat.com> wrote:
>
> Alan - This might be a use case for the openshift.raw API [1]. It will
> simply pass through any arguments you give it.
>
> Best Regards,
> Justin
> [1] https://github.com/openshift/jenkins-client-plugin#i-need-more
>
> On Tue, Dec 19, 2017 at 6:57 AM, Alan Christie <
> achris...@informaticsmatters.com> wrote:
>
>> I appear to be able to work-around the problem by iterating through the
>> objects created by the call to process() and conditionally setting the
>> namespace, i.e. by doing this…
>>
>> def objs = openshift.process('—filename=<template-file>’)
>> for (obj in objs) {
>>         if (obj.metadata.namespace == “X") {
>>                 openshift.create(obj, "—namespace=X")
>>                 } else {
>>               openshift.create(obj)
>>                 }
>> }
>>
>>
>> But this is not ideal and just creates noise. Ideally I simply want
>> create() in the pipeline to be able to reproduce create() on the
>> command-line.
>>
>>
>>
>> On 19 Dec 2017, at 11:26, Alan Christie <achris...@informaticsmatters.com>
>> wrote:
>>
>> Hi guys,
>>
>> I have a template that can be successfully processed and the objects
>> created using oc from the command-line. The template is supposed to run in
>> one namespace (let’s call it *Y*) but it creates secrets that are placed
>> in another namespace/project (let’s call that *X*). The namespaces are
>> managed the same user. Both namespaces exist and the following command when
>> run on the command-line is valid and is successful:
>>
>> oc process -f <template-file> | oc create -f -
>>
>> The act of processing and creating templates works in the Jenkins
>> pipeline except when the template creates objects in different namespaces.
>> When I try and reproduce these actions from within a Jenkins pipeline job
>> that is using the OpenShift Jenkins Pipeline (DSL) Plugin, i.e. when I do
>> something like this…
>>
>> openshift.withCluster("${CLUSTER}") {
>> openshift.withProject(“${Y}") {
>> def objs = openshift.process('—filename=<template-file>’)
>> openshift.create(objs)
>> }
>> }
>>
>> I get the following error reported in the Jenkins Job output:
>>
>> err=error: the namespace from the provided object “*X*" does not match
>> the namespace “*Y*". You must pass '—namespace=*X*' to perform this
>> operation., verb=create
>>
>> How do replicate the actions that appear to be legitimate from the
>> command-line but using the Pipeline Plugin? Its error does not make sense.
>> Instead the plugin appears to assume that the objects created form the
>> template must reside in the namespace in which I am running and therefore
>> insists on it.
>>
>> Should I raise an issue on the Plugin project?
>>
>> https://github.com/openshift/jenkins-client-plugin
>>
>> Thank you in advance of any help but, in the meantime I will continue to
>> search for a solution.
>>
>> Alan Christie
>> Informatics Matters
>>
>>
>>
>>
>> _______________________________________________
>> dev mailing list
>> dev@lists.openshift.redhat.com
>> http://lists.openshift.redhat.com/openshiftmm/listinfo/dev
>>
>>
>
>
_______________________________________________
dev mailing list
dev@lists.openshift.redhat.com
http://lists.openshift.redhat.com/openshiftmm/listinfo/dev

Reply via email to