Coder Social home page Coder Social logo

Comments (6)

Liujingfang1 avatar Liujingfang1 commented on August 15, 2024

/cc @mortent @seans3

from cli-utils.

seans3 avatar seans3 commented on August 15, 2024

Some context: kubectl apply should "ContinueOnError", which is the default behavior. The current version of kubectl included in cli-utils does not, but that is a bug. Upgrading to using kubectl >= 1.18 should fix the bug.

from cli-utils.

mortent avatar mortent commented on August 15, 2024

For kpt, I think we need to consider "FailOnError" as a feature, not as a bug. No matter what the original intention, it has never actually continued on error. I agree though that upgrading the kubectl libraries is a good idea, but we need to support both continue-on-error and fail-on-error.

from cli-utils.

Liujingfang1 avatar Liujingfang1 commented on August 15, 2024

@seans3 Thanks for sharing the "ContinueOnError" in 1.18 kubectl. I'll take a look at that. @mortent In the kpt library, we need to provide an option for the apply behavior on error. By that option, the CLI will fail-on-error and the consumer of that library can choose continue-on-error.

from cli-utils.

Liujingfang1 avatar Liujingfang1 commented on August 15, 2024

Per offline discussion, we decided the apply process to be continue-on-error by default. The process has the following steps:

  1. (optional) Create the namespace for the inventory object if it doesn't exist
  2. update the inventory object with the union of last applied objects and current objects
  3. apply current objects
  4. prune last applied objects
  5. update the inventory object to remove the last applied objects from the inventory list

step 1 and step 2

  • If it fails to create the namespace, the process exists with an error.
  • If it fails to update the inventory object, the process exits with an error.

Once the inventory object is updated, the process should be continued to the last step of updating the inventory object even if some error occurs when applying/pruning an object.

step 3

For every resource being applied, it sends out an event.

  • If the resource is successfully applied, send out an ApplyEvent without error
  • If the resource is failed to be applied, send out an ApplyEvent with an error

step4

For every resource being pruned, it sends out an event.

  • If the resource is successfully pruned, send out a PruneEvent without error
  • If the resource is failed to be pruned, send out a PruneEvent with an error

step5

In the final step of updating the inventory object, the inventory list includes the union of the current set of objects and the previous objects that are failed to be pruned.

from cli-utils.

Liujingfang1 avatar Liujingfang1 commented on August 15, 2024

Fixed via #286

from cli-utils.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.