Re: OpenShift Jenkins Pipeline (DSL) Plugin : erroneous 'incorrect namespace' error from create()?

2017-12-19 Thread Alan Christie
Thanks, issue created…

https://github.com/openshift/jenkins-client-plugin/issues/96 


For now the work-around gets me out of the hole. Cheers.

Alan.

> On 19 Dec 2017, at 14:26, Justin Pierce  wrote:
> 
> 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 
> > 
> 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 > > 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 
>> > 
>> 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=’)
>>  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 >> > 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  | 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=’)
>>> 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


Re: OpenShift Jenkins Pipeline (DSL) Plugin : erroneous 'incorrect namespace' error from create()?

2017-12-19 Thread Alan Christie
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  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 
> > 
> 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=’)
>   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 > > 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  | 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=’)
>>  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


Re: OpenShift Jenkins Pipeline (DSL) Plugin : erroneous 'incorrect namespace' error from create()?

2017-12-19 Thread Justin Pierce
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=’)
> 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 
> 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  | 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=’)
> 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


Re: OpenShift Jenkins Pipeline (DSL) Plugin : erroneous 'incorrect namespace' error from create()?

2017-12-19 Thread Alan Christie
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=’)
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  
> 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  | 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=’)
>   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