Skip to content

Conversation

Akshay2191
Copy link
Contributor

Issue:
Currently, if more than one Plus API is defined in NGINX config, Agent will always select the first working API URL, and if that API has  "api write=off", that leads to "MethodDisabled" error while trying to update upstream using an API.

Fix:
With this change agent is parsing all the Plus API's defined in the NGINX config to find if any of them have "api write=on" and if yes, then we are selecting that as the default api; else we are selecting the first API defined in the NGINX config as the default one, which is the current behaviour.

Checklist

Before creating a PR, run through this checklist and mark each as complete.

  • I have read the CONTRIBUTING document
  • I have run make install-tools and have attached any dependency changes to this pull request
  • If applicable, I have added tests that prove my fix is effective or that my feature works
  • If applicable, I have checked that any relevant tests pass after adding my changes
  • If applicable, I have updated any relevant documentation (README.md)
  • If applicable, I have tested my cross-platform changes on Ubuntu 22, Redhat 8, SUSE 15 and FreeBSD 13

@Akshay2191 Akshay2191 requested a review from a team as a code owner October 2, 2025 09:11
@github-actions github-actions bot added chore Pull requests for routine tasks documentation Improvements or additions to documentation labels Oct 2, 2025
return false
}

func (ncp *NginxConfigParser) sortPlusAPIs(apis []*model.APIDetails) []*model.APIDetails {
Copy link
Contributor

Choose a reason for hiding this comment

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

Could you add a comment or update the naming to explain that this is trying to prioritise and find apis with write enabled?

server_name _;
location /api/ {
api write=on;
api write=off;
Copy link
Contributor

Choose a reason for hiding this comment

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

Could you add unit test for

  • the case where there are multiple apis and the first one doesn't have write enabled but another does
  • the function that prioritises the api with write on

// the API CA file path
string Ca = 3;
// flag to know API is configured with 'write=on;'
bool write_enabled = 4;
Copy link
Contributor

Choose a reason for hiding this comment

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

Does a change need to happen to the MPI ? Do the management planes care about the write status ? Could the change instead only be made to the APIDetails struct thats internal to the Agent?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore Pull requests for routine tasks documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants