On Thu, May 7, 2020 at 3:03 PM Just Marvin <
marvin.the.cynical.ro...@gmail.com> wrote:

> Ben,
>
>     That explains it the build wait failure - you can see from the output
> I included at the end of my email, that I'm at v4.3.12 . Does this explain
> my observations with the project delete not waiting correctly either?
>

No.  I couldn't tell from your output what you're observing w/ oc delete
project --wait?  But it would be unrelated to the issue w/ using oc wait
with builds.




>
> Regards,
> Marvin
>
>
> On Thu, May 7, 2020 at 2:53 PM Ben Parees <bpar...@redhat.com> wrote:
>
>> what version is your cluster?  conditions were only recently added to the
>> build.status section to OCP 4.4. oc wait doesn't work no resources that
>> don't have a status.conditions section.
>>
>>
>>
>>
>> On Thu, May 7, 2020 at 2:47 PM Just Marvin <
>> marvin.the.cynical.ro...@gmail.com> wrote:
>>
>>> Ben,
>>>
>>>      It looks like I have a general problem with "oc wait" or waits, in
>>> general, not working reliably on my cluster. Here is my code now:
>>>
>>> #  Step 7: Wait for the build to start. For some reason, the wait
>>> command doesn't work, saying that the build doesn't exist even
>>> #  though the new-app command has completed.
>>> buildName=""
>>> while true; do
>>>         sleep 1
>>>         buildName=`oc get build | sed '1d' | awk '/^teams[-]/{print $1;
>>> exit 0}!/^teams[-]/{exit 1}'`
>>>         if [[ $? -eq 0 ]]; then
>>>                 echo "build detected. Waiting for it to complete..."
>>>                 break;
>>>         fi
>>> done
>>> #  Step 8: wait for the build to complete. Sigh. Doesn't work.
>>> oc wait build/${buildName} --for=condition=Complete --timeout=240s
>>>
>>> ......which produces this output:
>>>
>>> --> Success
>>>     Build scheduled, use 'oc logs -f bc/teams' to track its progress.
>>>     Application is not exposed. You can expose services to the outside
>>> world by executing one or more of the commands below:
>>>      'oc expose svc/teams'
>>>     Run 'oc status' to view your app.
>>> build detected. Waiting for it to complete...
>>> error: timed out waiting for the condition on builds/teams-1
>>>
>>> .....which may seem ok, but is a problem because the build completes in
>>> less than 4 mins, so the timeout should never happen. Here is a portion of
>>> the build/teams-1 yaml:
>>>
>>>   phase: Complete
>>>   stages:
>>>   - durationMilliseconds: 341
>>>     name: FetchInputs
>>>     startTime: "2020-05-07T18:35:37Z"
>>>     steps:
>>>     - durationMilliseconds: 341
>>>       name: FetchGitSource
>>>       startTime: "2020-05-07T18:35:37Z"
>>>   - durationMilliseconds: 39822
>>>     name: PullImages
>>>     startTime: "2020-05-07T18:35:40Z"
>>>     steps:
>>>     - durationMilliseconds: 21704
>>>       name: PullBaseImage
>>>       startTime: "2020-05-07T18:35:40Z"
>>>     - durationMilliseconds: 18117
>>>       name: PullBaseImage
>>>       startTime: "2020-05-07T18:36:02Z"
>>>   - durationMilliseconds: 55408
>>>     name: Build
>>>     startTime: "2020-05-07T18:36:20Z"
>>>     steps:
>>>     - durationMilliseconds: 55408
>>>       name: DockerBuild
>>>       startTime: "2020-05-07T18:36:20Z"
>>>   - durationMilliseconds: 2102
>>>     name: PushImage
>>>     startTime: "2020-05-07T18:37:15Z"
>>>     steps:
>>>     - durationMilliseconds: 2102
>>>       name: PushDockerImage
>>>       startTime: "2020-05-07T18:37:15Z"
>>>   startTimestamp: "2020-05-07T18:35:35Z"
>>>
>>> .....so the build actually completes in about 2 mins.
>>>
>>> Other observations:
>>>
>>> [zaphod@oc3027208274 gatt]$ oc delete project demo-mongo-apps
>>> --wait=true;date
>>> project.project.openshift.io "demo-mongo-apps" deleted
>>> Thu May  7 14:11:46 EDT 2020
>>> [zaphod@oc3027208274 gatt]$ oc delete project demo-mongo-apps
>>> --wait=true;date
>>> project.project.openshift.io "demo-mongo-apps" deleted
>>> Thu May  7 14:11:48 EDT 2020
>>> [zaphod@oc3027208274 gatt]$ oc delete project demo-mongo-apps
>>> --wait=true;date
>>> project.project.openshift.io "demo-mongo-apps" deleted
>>> Thu May  7 14:11:50 EDT 2020
>>> [zaphod@oc3027208274 gatt]$ oc delete project demo-mongo-apps
>>> --wait=true;date
>>> project.project.openshift.io "demo-mongo-apps" deleted
>>> Thu May  7 14:11:51 EDT 2020
>>> .....and it takes about 30 seconds or so for the delete to take effect.
>>>
>>>     One unusual think I've noticed about my cluster (I didn't set it up)
>>> is that it is a three node cluster with all three nodes sharing the master
>>> and worker node roles. Could this be a cause of the symptoms I'm seeing?
>>>
>>> [zaphod@oc3027208274 gatt]$ oc version
>>> Client Version: openshift-clients-4.3.0-201909231341
>>> Server Version: 4.3.12
>>> Kubernetes Version: v1.16.2
>>> [zaphod@oc3027208274 gatt]$
>>>
>>> Regards,
>>> Marvin
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Wed, May 6, 2020 at 1:20 PM Ben Parees <bpar...@redhat.com> wrote:
>>>
>>>>
>>>>
>>>> On Wed, May 6, 2020 at 12:50 PM Just Marvin <
>>>> marvin.the.cynical.ro...@gmail.com> wrote:
>>>>
>>>>> Ben,
>>>>>
>>>>>    I appreciate the pointer, but this doesn't seem to do the right
>>>>> thing. Here is the relevant portion of my code:
>>>>>
>>>>
>>>>> oc new-app --name=teams git@<enterprise git repo> -e
>>>>> MONGODB_USER=uuuu -e MONGODB_PASSWORD=pppp -e MONGODB_HOST=mongodb -e
>>>>> MONGODB_PORT=27017 -e MONGODB_DATABASE=teamdb --source-secret=<enterprise
>>>>> git secret>
>>>>> #  Adding waits for teams and teams-1 because the build resource seems
>>>>> to be teams-1
>>>>> oc wait build/teams --for=condition=Complete
>>>>>
>>>>
>>>> this line won't do anything, there's no build named "teams", only
>>>> "teams-1" (and later teams-2, etc)
>>>>
>>>>
>>>>
>>>>> oc wait build/teams-1 --for=condition=Complete
>>>>>
>>>>
>>>> this looks correct
>>>>
>>>>
>>>>>    And here is the output:
>>>>>
>>>>> warning: Cannot check if git requires authentication.
>>>>> --> Found container image 1db9786 (6 months old) from docker.io for "
>>>>> docker.io/websphere-liberty:javaee8"
>>>>>
>>>>>     * An image stream tag will be created as
>>>>> "websphere-liberty:javaee8" that will track the source image
>>>>>     * A Docker build using source code from git@<enterprise git repo>
>>>>> will be created
>>>>>       * The resulting image will be pushed to image stream tag
>>>>> "teams:latest"
>>>>>       * Every time "websphere-liberty:javaee8" changes a new build
>>>>> will be triggered
>>>>>       * WARNING: this source repository may require credentials.
>>>>>                  Create a secret with your git credentials and use 'oc
>>>>> set build-secret' to assign it to the build config.
>>>>>     * This image will be deployed in deployment config "teams"
>>>>>     * Ports 9080/tcp, 9443/tcp will be load balanced by service "teams"
>>>>>       * Other containers can access this service through the hostname
>>>>> "teams"
>>>>>
>>>>> --> Creating resources ...
>>>>>     imagestream.image.openshift.io "websphere-liberty" created
>>>>>     imagestream.image.openshift.io "teams" created
>>>>>     buildconfig.build.openshift.io "teams" created
>>>>>     deploymentconfig.apps.openshift.io "teams" created
>>>>>     service "teams" created
>>>>> --> Success
>>>>>     Build scheduled, use 'oc logs -f bc/teams' to track its progress.
>>>>>     Application is not exposed. You can expose services to the outside
>>>>> world by executing one or more of the commands below:
>>>>>      'oc expose svc/teams'
>>>>>     Run 'oc status' to view your app.
>>>>> Error from server (NotFound): builds.build.openshift.io "teams" not
>>>>> found
>>>>>
>>>>
>>>> this error is because as noted above, build/teams isn't ever going to
>>>> exist.
>>>>
>>>>
>>>>> Error from server (NotFound): builds.build.openshift.io "teams-1" not
>>>>> found
>>>>>
>>>>
>>>> this error doesn't make sense to me since new-app should have created
>>>> the build already, however there is a bit of a timing window since new-app
>>>> creates the buildconfig and then relies on the build controller to kick off
>>>> the first build.  It's possible that new-app is finishing and your oc wait
>>>> is starting, before the build controller sees your buildconfig and creates
>>>> the first build (teams-1)
>>>>
>>>> unfortunately I don't think oc wait can wait for a resource to exist,
>>>> so you're stuck doing either:
>>>> 1) a short sleep before you invoke oc wait, to give the build time to
>>>> be created (easy, but potentially flaky)
>>>> 2) an oc get loop that loops until the resource exists, and then you
>>>> can start waiting on it.  (of course if you do that, you can also use a go
>>>> template to extract the phase of the build once it exists and watch it
>>>> yourself, instead of using oc wait)
>>>>
>>>>
>>>>
>>>>> deploymentconfig.apps.openshift.io/teams patched
>>>>> deploymentconfig.apps.openshift.io/teams patched
>>>>> error: timed out waiting for the condition on deploymentconfigs/teams
>>>>> error: no matching resources found
>>>>> route.route.openshift.io/teams exposed
>>>>> route.route.openshift.io/teams patched
>>>>> The teams api is now available at http://teams.<a domain name>
>>>>>
>>>>>     At this point, I can see that the build resource has been created,
>>>>> even though the "wait" that I tried to put in place has not worked.
>>>>>
>>>>> [zaphod@oc3027208274 gatt]$ oc get builds
>>>>> NAME      TYPE     FROM          STATUS    STARTED          DURATION
>>>>> teams-1   Docker   Git@b4dba21   Running   36 seconds ago
>>>>> [zaphod@oc3027208274 gatt]$
>>>>>
>>>>>      What am I doing wrong?
>>>>>
>>>>> Regards,
>>>>> Marvin
>>>>>
>>>>> On Wed, May 6, 2020 at 11:52 AM Ben Parees <bpar...@redhat.com> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, May 6, 2020 at 11:34 AM Just Marvin <
>>>>>> marvin.the.cynical.ro...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>>     I've been trying to write a script that runs various commands
>>>>>>> following a new-app. These commands will operate on the dc created by
>>>>>>> new-app, but fail if the resources haven't reached the right stage, so 
>>>>>>> I'd
>>>>>>> like to wait for the build to complete. Unfortunately, I can't seem to
>>>>>>> figure out the right condition to wait for using the "oc wait" command.
>>>>>>> Does anyone have a suggestion? Wait on the bc or the build or.... (and 
>>>>>>> for
>>>>>>> what condition)?
>>>>>>>
>>>>>>
>>>>>> oc wait build/buildresourcename --for=condition=Complete
>>>>>>
>>>>>> unfortunately that won't help if the build in question fails
>>>>>> (Complete means success) so set your timeout appropriately.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Marvin
>>>>>>> _______________________________________________
>>>>>>> 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