feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat (airflowctl): transition of Variable Command - #50908

Merged
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable
May 28, 2025
Merged

feat (airflowctl): transition of Variable Command#50908
bugraoz93 merged 3 commits into
apache:mainfrom
jx2lee:airflowctl-variable

Conversation

@jx2lee

@jx2leejx2lee commented May 21, 2025

Copy link
Copy Markdown
Contributor

closes: #45669

Known Issues

action_on_existence Not Applied in Bulk Requests:

  • when performing bulk variable imports, action_on_existence parameter does not behave as expected.
  • Specifically, importing variables that already exist in the system does not trigger the appropriate error handling or overwrite logic, depending on the specified action.
  • This results in ambiguous outcomes, as the response lacks clear indicators of success or failure for individual items.

To address this, a separate issue has been created: #TO_BE_CONTINUED.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@jx2lee

jx2lee commented May 24, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
I have tested the import/export functionality, and overall, it works well.
However, I’ve encountered issue when using the action_on_existence parameter during import. Specifically, when I set it fail, overwrite, or skip, the behavior doesn’t align with expectations.

screencast.2025-05-24.16-47-53.mp4
  • situation: existed variables, contained existed variables in json(to upload), import with "fail"
  • expected: result.errors not empty
  • actual: results.errors empty

In particular, the bulk response returns a 200 status code, but both result.success and result.errors are empty. This makes it challenging to determine if the operation was successful or if there were any issues.

Could you please advise on the following:

  • Is the bulk request command functioning as intended?
  • Is there a potential issue in the current code?
  • Are there specific areas in the codebase I should examine to understand this behavior better?

Any guidance would be greatly appreciated! 🙏🏽
(Once above issue is resolved, I'll write unit tests.)

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 2f0cb0b to 0ac3cbbCompareMay 25, 2025 13:11
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks for the progress @jx2lee! If something is wrong, we should fix it on the API end. Don't need to be in the scope of this PR for sure. I am going to check your questions in detail soon and will address them.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch 3 times, most recently from e9ccc78 to 336ff23CompareMay 26, 2025 15:03
@jx2lee

jx2lee commented May 26, 2025

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93
Thank you for your response and support!
As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly.
Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 336ff23 to 1de0607CompareMay 26, 2025 15:42
@jx2lee
jx2lee marked this pull request as ready for review May 26, 2025 15:42
@bugraoz93

Copy link
Copy Markdown
Contributor

@bugraoz93 Thank you for your response and support! As you mentioned, it's appropriate to address above issue outside scope of current PR. I'll create a separate issue and link it accordingly.

Additionally, I've confirmed that the import/export commands are functioning correctly. Summary:

  • I'll investigate the issue separately and create a dedicated issue with a link.
  • Confirmed that the import/export commands are working as expected.

Make sense! That is the way to go. 🚀 Please cc me so I can follow up too :)

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks! Great work!

@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Thanks! I'll make issue, soon 👍🏽

@bugraoz93bugraoz93 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Small change required after a change on the API side. Could you please adopt?

Comment threadairflow-ctl/src/airflowctl/ctl/commands/variable_command.py Outdated
@jx2lee

Copy link
Copy Markdown
ContributorAuthor

@bugraoz93 Sure, I'll adopt tonight.

@jx2lee
jx2lee requested a review from bugraoz93May 28, 2025 11:53
@jx2lee
jx2leeforce-pushed the airflowctl-variable branch from 57dbf33 to 877b018CompareMay 28, 2025 12:03
@bugraoz93

Copy link
Copy Markdown
Contributor

Thanks, @jx2lee!

@bugraoz93
bugraoz93 merged commit 9bc32d9 into apache:mainMay 28, 2025
sanederchik pushed a commit to sanederchik/airflow that referenced this pull request Jun 7, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
jose-lehmkuhl pushed a commit to jose-lehmkuhl/airflow that referenced this pull request Jul 11, 2025
* init import/export in airflowctl variables
* BulkCreateActionVariableBody.action to str
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

AIP-81 Transition of Variable Command

2 participants

@jx2lee@bugraoz93