Skip to content

Conversation

@dtantsur
Copy link
Member

The new command run-local-ironic generates a YAML file with Kubernetes
manifests and then applies it using "podman kube play" with host
networking. This allows easy local testing of both IrSO and ironic-image
and can replace the existing bash script in BMO.

Closes: #86
Generated-By: Claude Code
Signed-off-by: Dmitry Tantsur [email protected]

@metal3-io-bot metal3-io-bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Sep 24, 2025
@metal3-io-bot metal3-io-bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Sep 24, 2025
@dtantsur dtantsur force-pushed the local branch 3 times, most recently from 8f19525 to 575304e Compare September 24, 2025 16:08
@metal3-io-bot metal3-io-bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Sep 24, 2025
The new command run-local-ironic generates a YAML file with Kubernetes
manifests and then applies it using "podman kube play" with host
networking. This allows easy local testing of both IrSO and ironic-image
and can replace the existing bash script in BMO.

Generated-By: Claude Code
Signed-off-by: Dmitry Tantsur <[email protected]>
@dtantsur dtantsur force-pushed the local branch 2 times, most recently from 680f7f6 to 1e03ee7 Compare September 24, 2025 16:28
Copy link
Member

@tuminoid tuminoid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea of using k8s manifests for local ironic, removes a lot of maintenance burden. Some quick nits and questions from quick look as requested.

@dtantsur dtantsur changed the title WIP Add a command to run ironic locally using podman ✨ Add a command to run ironic locally using podman Sep 26, 2025
@metal3-io-bot metal3-io-bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Sep 26, 2025
@dtantsur
Copy link
Member Author

I haven't checked this command with dnsmasq yet, I suspect it might need a bit more work. But in the meantime, I suggest we merge the base version and expand on it if necessary.

@dtantsur dtantsur requested a review from tuminoid September 26, 2025 12:49
@tuminoid
Copy link
Member

I'll give it a go next week

@dtantsur
Copy link
Member Author

So, dnsmasq was not too bad, I only had to switch to using "sudo".

Copy link
Member

@tuminoid tuminoid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tested it manually, both scenarios work nicely.

Same nits reappeared, tell Claude to be consistent :)

Comment on lines 42 to 43
while [[ $ATTEMPT -ne 30 ]]
do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
while [[ $ATTEMPT -ne 30 ]]
do
while [[ "${ATTEMPT}" -ne 30 ]]; do

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a bit too much of a nitpick: we know how ATTEMPT looks like :) Will fix anyway

@dtantsur
Copy link
Member Author

Same nits reappeared, tell Claude to be consistent :)

The bash part is fully on me :D

@Rozzii
Copy link
Member

Rozzii commented Sep 30, 2025

I would like to discuss the leagal background of this PR on wednesday a bit further as I beleive this is the first PR marked as AI generated that is proposed for the project.

I am worried because of the potential miss match between Claude's provider Anthropics AI usage policies, the LinuxFoundations rules https://www.linuxfoundation.org/legal/generative-ai (point 1 or rule 1) and our project's license.

Anthropic states here https://www.anthropic.com/legal/consumer-terms
image
that only non commercial use of Anthropic's tools is allowed. While LF asks the projects to make sure the "generative AI tool do not place any contractual restrictions on how the tool’s output can be used", IMO according to LF standards there is a conflict between our project's Apache liccence and Anthropic's general licence that states that the tools (thus their output) can be used for non commercial use.

I know I am not a lawyer that is why I tried to base my reasoning on the guidelines of the LF, and it seems to me very clear cut conflict here. For me the only question is whether we follow LF guidelines or not because we are a CNCF project but AFAIK cncf has no guideline of it's own.

Copy link
Member

@Rozzii Rozzii left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/hold
I would like to hold this a little bit because of my legal worries. Let's discuss this on community meeting, I will try to also find someone who is much more well versed about this topic than me.

@metal3-io-bot metal3-io-bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Sep 30, 2025
@JanMkl
Copy link

JanMkl commented Sep 30, 2025

I would like to discuss the leagal background of this PR on wednesday a bit further as I beleive this is the first PR marked as AI generated that is proposed for the project.

I am worried because of the potential miss match between Claude's provider Anthropics AI usage policies, the LinuxFoundations rules https://www.linuxfoundation.org/legal/generative-ai (point 1 or rule 1) and our project's license.

Anthropic states here https://www.anthropic.com/legal/consumer-terms image that only non commercial use of Anthropic's tools is allowed. While LF asks the projects to make sure the "generative AI tool do not place any contractual restrictions on how the tool’s output can be used", IMO according to LF standards there is a conflict between our project's Apache liccence and Anthropic's general licence that states that the tools (thus their output) can be used for non commercial use.

I know I am not a lawyer that is why I tried to base my reasoning on the guidelines of the LF, and it seems to me very clear cut conflict here. For me the only question is whether we follow LF guidelines or not because we are a CNCF project but AFAIK cncf has no guideline of it's own.

@Rozzii and @dtantsur I took a bit more closer look at the Anthropic Terms and just to first say not a lawyer but some experience from the commercial contract parts. Here is how I read the agreement.

Anthropic’s Consumer Terms are broadly compatible with the Linux Foundation’s policy for general use, but some ambiguous provisions — particularly around “non-commercial use” and conditional compliance requirements — create areas of potential risk.

The “non-commercial use only” language appears in Section 11 (Disclaimer of warranties, limitations of liability, and indemnity). Read in context, it can reasonably be interpreted as a limitation on Anthropic’s liability rather than a blanket prohibition on commercial use of outputs. If that interpretation is correct, there is no conflict with the LF policy. This view aligns with Section 4 (Inputs, Outputs, and Materials), which emphasizes that outputs “may be inaccurate,” making it the user’s responsibility to validate results. In practice, that means the individual submitting a pull request based on generated output bears responsibility for ensuring its accuracy and suitability.

To minimize risk and remain aligned with LF policy, it is best to:

  • Use only paid or standard accounts (not evaluation accounts, which are explicitly restricted to non-commercial use).
  • Avoid violating Anthropic’s Acceptable Use Policy (AUP), since rights in outputs are contingent on compliance. Notably, the AUP restricts use of outputs for training competing AI models.
  • Exercise caution if outputs are intended for training or further AI model development (likely not a concern for this project).
  • Record and rely on the interpretation that “non-commercial use” refers to liability disclaimers rather than a usage prohibition.

That said, because the wording is somewhat ambiguous and open to interpretation, it would be helpful for @krook to review this and confirm whether the ambiguity falls within acceptable limits under the LF and CNCF AI policy.

@dtantsur
Copy link
Member Author

Use only paid or standard accounts (not evaluation accounts, which are explicitly restricted to non-commercial use).

Yep, I used a paid (by my employer) account.

@elfosardo
Copy link
Member

elfosardo commented Sep 30, 2025

@Rozzii @JanMkl doesn't that clause refer exclusively to the Service API ?
https://support.claude.com/en/articles/8987200-can-i-use-the-claude-api-for-individual-use
meaning, in short, that I can't resell my access. let someone else use it, or use it for commercial use
for example, I can't build a tool or an app that use the Claude API on the background
anything that is built using the Claude API, but does not use them directly, is not covered by that

@dtantsur
Copy link
Member Author

Btw, I got a confirmation internally that these terms apply to us: https://www.anthropic.com/legal/commercial-terms

@JanMkl
Copy link

JanMkl commented Sep 30, 2025

Btw, I got a confirmation internally that these terms apply to us: https://www.anthropic.com/legal/commercial-terms

These Commercial Terms are more aligned with LF generative AI policy than the earlier linked consumer terms. They eliminate or mitigate most ambiguities and restraints. Key changes:

  • Clearer ownership of outputs, with disclaimed rights from Anthropic.
  • Indemnification protection for authorized use of outputs.
  • Absence of a “non-commercial use only” clause constraining liability or usage.

@Rozzii
Copy link
Member

Rozzii commented Sep 30, 2025

Btw, I got a confirmation internally that these terms apply to us: https://www.anthropic.com/legal/commercial-terms

I have checked, this license looks compatible IMO especially because of this part:
image

So I am okay with it, would it be possible to mark specifically that the code was created by commercial Claude Code? Is there some sort of metadata that you could add @dtantsur for future reference in the git history?

@tuminoid
Copy link
Member

tuminoid commented Oct 1, 2025

Btw, I got a confirmation internally that these terms apply to us: https://www.anthropic.com/legal/commercial-terms

...

So I am okay with it, would it be possible to mark specifically that the code was created by commercial Claude Code? Is there some sort of metadata that you could add @dtantsur for future reference in the git history?

We discussed this in community meeting some time back. IIRC we agreed that we will follow the LF policy and the contributor is responsible for committed code, do we really nee to even mark anything about the use of AI? Everyone is using some sort of AI assist (code completion alone is almost 100% AI these days, and generated/assisted content is very integrated into the editor workflow), do we really want to even have it displayed? Is it RH policy to show it, or personal preference?

@dtantsur
Copy link
Member Author

dtantsur commented Oct 1, 2025

Is it RH policy to show it, or personal preference?

Since LF policy is basically "YOLO", I'm following the OpenInfra (org. governing OpenStack) policies: https://openinfra.org/legal/ai-policy. The goal is essentially openness about AI usage since some folks find it a sensitive issue.

would it be possible to mark specifically that the code was created by commercial Claude Code?

I think it's a dead end. As Tuomo rightfully point out, we don't verify that you, for instance, are using IDE in a way that is compliant with this IDE's license. In the end, it's on me to comply with the licensing of whatever tooling I'm using. This is why we add Sign-Off to our commits: to take legal responsibility for the contributions.

@Rozzii
Copy link
Member

Rozzii commented Oct 1, 2025

I just asked to clarify the type of model because you were marking it anyway but whatever I guess the PR discussion is good enough historical record.
/hold cancel

@metal3-io-bot metal3-io-bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 1, 2025
@Rozzii
Copy link
Member

Rozzii commented Oct 1, 2025

/hold cancel

@dtantsur
Copy link
Member Author

dtantsur commented Oct 1, 2025

Thank you for the discussion folks! Please review the patch itself when you have time.

Copy link
Member

@tuminoid tuminoid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/approve

with one final nit. I've tested this manually for both scenarios, and it works nicely.

@metal3-io-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: tuminoid

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@metal3-io-bot metal3-io-bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 2, 2025
@elfosardo
Copy link
Member

/lgtm

@metal3-io-bot metal3-io-bot added the lgtm Indicates that a PR is ready to be merged. label Oct 2, 2025
@metal3-io-bot metal3-io-bot merged commit 345c641 into metal3-io:main Oct 2, 2025
18 checks passed
@metal3-io-bot metal3-io-bot added this to the IrSO - v0.6 milestone Oct 2, 2025
@dtantsur dtantsur modified the milestones: IrSO - v0.6, IrSO - v0.7 Oct 2, 2025
@dtantsur dtantsur deleted the local branch October 2, 2025 13:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Replacement script for run_local_ironic

6 participants