On Sun, Aug 6, 2017 at 8:30 PM, Andrew Lau <and...@andrewklau.com> wrote:

>
>
> On Mon, 7 Aug 2017 at 09:11 Ben Parees <bpar...@redhat.com> wrote:
>
>> On Sun, Aug 6, 2017 at 4:42 AM, Andrew Lau <and...@andrewklau.com> wrote:
>>
>>>
>>> On Fri, 28 Jul 2017 at 01:11 Ben Parees <bpar...@redhat.com> wrote:
>>>
>>>> On Thu, Jul 27, 2017 at 9:23 AM, Andrew Lau <and...@andrewklau.com>
>>>> wrote:
>>>>
>>>>> On Thu, 27 Jul 2017 at 22:52 Ben Parees <bpar...@redhat.com> wrote:
>>>>>
>>>>>> On Thu, Jul 27, 2017 at 1:41 AM, Andrew Lau <and...@andrewklau.com>
>>>>>> wrote:
>>>>>>
>>>>>>> What is the purpose of the {name} URL parameter for the instantiate
>>>>>>> in BuildRequests? ie.
>>>>>>> POST /oapi/v1/namespaces/{namespace}/buildconfigs/{name}/instantiate
>>>>>>>
>>>>>>
>>>>>> the {name} parameter is the name of the buildconfig you are
>>>>>> instantiating a new build of, not the name of the build being created.
>>>>>>
>>>>>>
>>>>> I don't think that's the case.
>>>>>
>>>>> In my example I have the build config "test"
>>>>>
>>>>> So when I POST 
>>>>> /oapi/v1/namespaces/{namespace}/buildconfigs/test/instantiate
>>>>> with the body:
>>>>>
>>>>> {
>>>>>     "triggeredBy" : {}
>>>>> }
>>>>>
>>>>> It will return the 403 error:
>>>>>
>>>>> "message": "buildconfigs "Unknown" is forbidden: resource name may not
>>>>> be empty"
>>>>>
>>>>> Then if I post something like:
>>>>>
>>>>> {
>>>>>       "metadata": {
>>>>>       "name": "test2"
>>>>>     },
>>>>>     "triggeredBy" : {}
>>>>> }
>>>>>
>>>>> I still get the error:
>>>>>
>>>>> "message": "buildconfigs "test2" is forbidden: buildconfigs "test2"
>>>>> not found",
>>>>>
>>>>> Only until metadata.name matches the buildconfig will I get the 201
>>>>> created code.
>>>>>
>>>>> Now the second confusing thing is I can POST  /oapi/v1/namespaces/{
>>>>> namespace}/buildconfigs/idontexist/instantiate
>>>>>
>>>>> {
>>>>>       "metadata": {
>>>>>       "name": "test"
>>>>>     },
>>>>>     "triggeredBy" : {}
>>>>> }
>>>>>
>>>>> Now this is accepted and creates the build for test, even though I
>>>>> posted to the buildconfig"idontexist" which also doesn't exist..
>>>>>
>>>>
>>>> you're correct, the rest endpoint for instantiate does not actually
>>>> care what resource you invoked it with, all that matters is the name field
>>>> of the buidlrequest object, the name field provides the name of the
>>>> buildconfig you are instantiating.
>>>>
>>>>
>>>>
>>>
>>> Confusing!
>>>
>>> Is there a better way for overwriting the git reference of the build
>>> request?
>>>
>>> {
>>>     "kind": "BuildRequest",
>>>     "apiVersion": "v1",
>>>     "metadata": {
>>>         "name": "test",
>>>         "creationTimestamp": null
>>>     },
>>>     "revision": {
>>>         "type": "Source",
>>>         "git": {
>>>             "commit": "develop"
>>>         }
>>>     },
>>>     "triggeredBy": [{
>>>         "message": "Manually triggered"
>>>     }]
>>> }
>>>
>>> This will tell the build to pull from the "develop" branch but then the
>>> builds revision section will end up with "Source: develop authored by"
>>>
>>
>> Can you provide me an exact paste of what you're referring to?  I'm
>> guessing the issue is we treat the value in "commit" as if it's a commit
>> when describing it, even though in your case it's actually a branch ref.
>>
>>
> It looks like it is because I am putting in the git "reference" as I want
> to deploy the "develop" branch. In the BuildRequest it is called "commit".
> This being my json:
>

Yes some invalid assumptions/short-sighted choices were made when naming
the api.  The reality is that any of the fields labeled "commit" can really
be populated with any valid git reference.



>
> {
>     "kind": "BuildRequest",
>     "apiVersion": "v1",
>     "metadata": {
>         "name": "test",
>         "creationTimestamp": null
>     },
>     "revision": {
>         "type": "Source",
>         "git": {
>             "commit": "develop"
>         }
>     },
>     "triggeredBy": [{
>         "message": "Manually triggered"
>     }]
> }
>
> It ends up pre-filling the resultant "Build" spec with:
>
> [...]
>   revision:
>     git:
>       author: {}
>       commit: develop
>       committer: {}
>     type: Git
>
> It does end up pulling the "develop" branch though. So my "revision" input
> from the BuildRequest overwrites the "Build" spec rather then the default
> when it was automatically pre-filled based on the source.
>

right, the "revision" field of the build spec was intended as a way to
override the branch that might be provided as part of the gitsource field
and the assumption was that if you were doing so, you'd be doing so with a
commit ("i want to build this exact commit, not the head of the branch"),
but it will work (confusion aside) if what you provide is not actually a
commit.  Again, the api is imperfect in several ways, though functional for
the intended purpose.

This confusion is on our list of things to clean up when we get to a v2
build api.



>
> Perhaps this is intended as it is possible to put in also specify the
> author and committer values in the BuildRequest?
>
>
>>
>>
>>>
>>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>> https://docs.openshift.org/latest/rest_api/openshift_v1.
>>>>>>> html#create-instantiate-of-a-buildrequest
>>>>>>>
>>>>>>> The docs seem to suggest it's the name but I can set it to anything
>>>>>>> and the name ends up getting pulled from the JSON body ie.:
>>>>>>>
>>>>>>> {
>>>>>>>       "metadata": {
>>>>>>>       "name": "test"
>>>>>>>     },
>>>>>>>     "triggeredBy" : {}
>>>>>>> }
>>>>>>>
>>>>>>> If my JSON body does not include a name then it complains that there
>>>>>>> is no "name".
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> users mailing list
>>>>>>> users@lists.openshift.redhat.com
>>>>>>> http://lists.openshift.redhat.com/openshiftmm/listinfo/users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ben Parees | OpenShift
>>>>>>
>>>>>>
>>>>
>>>>
>>>> --
>>>> Ben Parees | OpenShift
>>>>
>>>>
>>
>>
>> --
>> Ben Parees | OpenShift
>>
>>


-- 
Ben Parees | OpenShift
_______________________________________________
users mailing list
users@lists.openshift.redhat.com
http://lists.openshift.redhat.com/openshiftmm/listinfo/users

Reply via email to