OpenLiberty / open-liberty

Open Liberty is a highly composable, fast to start, dynamic application server runtime environment
https://openliberty.io
Eclipse Public License 2.0
1.16k stars 598 forks source link

Implement proxy exclusion list in featureUtility #27508

Open jjiwooLim opened 10 months ago

jjiwooLim commented 10 months ago

Description

FeatureUtility can connect to Maven repository using proxy. However, users may not want to use proxy for some Maven repository even when they configured proxy settings. Common use case would be when they want connect to internal repository that doesn't require proxy.

We had a customer who requested this feature.

FeatureUtility should allow users to set proxy exclusion list. Although there is no specification for proxy exclusion list, no_proxy environment variable is the most standard way to specify it. Java uses http.nonProxyHosts system properties.

Therefore, featureUtility could check proxy exclusion list using both ways:

1) Using no_proxy environment variable 2) Using http.nonProxyHosts jvm property in featureUtility.properties file.


Documents

When available, add links to required feature documents. Use "N/A" to mark particular documents which are not required by the feature.

General Instructions

The process steps occur roughly in the order as presented. Process steps occasionally overlap.

Each process step has a number of tasks which must be completed or must be marked as not applicable ("N/A").

Unless otherwise indicated, the tasks are the responsibility of the Feature Owner or a Delegate of the Feature Owner.

If you need assistance, reach out to the OpenLiberty/release-architect.

Important: Labels are used to trigger particular steps and must be added as indicated.


Prioritization (Complete Before Development Starts)

The (OpenLiberty/chief-architect) and area leads are responsible for prioritizing the features and determining which features are being actively worked on.

Prioritization

Design preliminaries determine whether a formal design, which will be provided by an Upcoming Feature Overview (UFO) document, must be created and reviewed. A formal design is required if the feature requires any of the following: UI, Serviceability, SVT, Performance testing, or non-trivial documentation/ID. Furthermore, each identified item places a blocking requirement on another team so it must be identified early in the process. The feature owner may check-off the item if they know it doesn't apply, but otherwise they should work with the focal point to determine what work, if any, will be necessary and make them aware of it.

Design Preliminaries

Design

No Design

FAT Documentation

A feature must be prioritized before any implementation work may begin to be delivered (inaccessible/no-ship). However, a design focused approach should still be applied to features, and developers should think about the feature design prior to writing and delivering any code.
Besides being prioritized, a feature must also be socialized (or No Design Approved) before any beta code may be delivered. All new Liberty content must be inaccessible in our GA releases until it is Feature Complete by either marking it kind=noship or beta fencing it.
Code may not GA until this feature has obtained the Design Approved or No Design Approved label, along with all other tasks outlined in the GA section.

Feature Development Begins

Legal and Translation

In order to avoid last minute blockers and significant disruptions to the feature, the legal items need to be done as early in the feature process as possible, either in design or as early into the development as possible. Similarly, translation is to be done concurrently with development. Both MUST be completed before Beta or GA is requested.

Legal (Complete before Feature Complete Date)

Innovation (Complete 1 week before Feature Complete Date)

Translation (Complete by Feature Complete Date)

In order to facilitate early feedback from users, all new features and functionality should first be released as part of a beta release.

Beta Code

Beta Blog (Complete by beta eGA)

A feature is ready to GA after it is Feature Complete and has obtained all necessary Focal Point Approvals.

Feature Complete

Focal Point Approvals (Complete by Feature Complete Date)

These occur only after GA of this feature is requested (by adding a target:ga label). GA of this feature may not occur until all approvals are obtained.

All Features

Design Approved Features

Remove Beta Fencing (Complete by Feature Complete Date)

GA Blog (Complete by Friday after GM)

Post GM (Complete before GA)

Post GA

neuwerk commented 7 months ago

Notes from UFO Socialization:

Slide 11 -

Need to document that if both are set then the property file with take precedence

Slide 12 -

Adjust the bypass wording since its slightly hidden behind the image

Slide 18 -

Specify that docker can also use no_proxy

Slide 30 -

Remove L3 queue

Other points to follow up -

Need to check if proxies work with our maven plugins, and if not then the issue will need to be opened against them.

jjiwooLim commented 7 months ago

Follow ups: Updated UFO slides. Checked and tested that proxies work with LMP using Maven settings. Maven/Gradle follow a different path to download artifacts(Liberty features) from Maven repsoitories so it does not have any impact by this feature

NottyCode commented 4 months ago

@jjiwooLim where is the UFO? There isn't a link in the description to it.

jjiwooLim commented 3 months ago

@NottyCode Added the UFO link in the description.

NottyCode commented 3 months ago

@jjiwooLim isn't it usual for env var names to be all upper case rather than all lower case?

jjiwooLim commented 3 months ago

@NottyCode that might be the usual way, but we followed the proxy env var convention used in featureUtility : https://openliberty.io/docs/latest/reference/command/featureUtility-commands.html#mod

jjiwooLim commented 1 month ago

@OpenLiberty/demo-approvers Demo scheduled for EOI 24.22

donbourne commented 1 month ago

Serviceability Approval Comment - Please answer the following questions for serviceability approval:

  1. UFO -- does the UFO identify the most likely problems customers will see and identify how the feature will enable them to diagnose and solve those problems without resorting to raising a PMR? Have these issues been addressed in the implementation?

  2. Test and Demo -- As part of the serviceability process we're asking feature teams to test and analyze common problem paths for serviceability and demo those problem paths to someone not involved in the development of the feature (eg. IBM Support, test team, or another development team).
    a) What problem paths were tested and demonstrated? b) Who did you demo to? c) Do the people you demo'd to agree that the serviceability of the demonstrated problem scenarios is sufficient to avoid PMRs for any problems customers are likely to encounter, or that IBM Support should be able to quickly address those problems without need to engage SMEs?

  3. SVT -- SVT team is often the first team to try new features and often encounters problems setting up and using them. Note that we're not expecting SVT to do full serviceability testing -- just to sign-off on the serviceability of the problem paths they encountered. a) Who conducted SVT tests for this feature? b) Do they agree that the serviceability of the problems they encountered is sufficient to avoid PMRs, or that IBM Support should be able to quickly address those problems without need to engage SMEs?

  4. Which IBM Support / SME queues will handle PMRs for this feature? Ensure they are present in the contact reference file and in the queue contact summary, and that the respective IBM Support/SME teams know they are supporting it. Ask Don Bourne if you need links or more info.

  5. Does this feature add any new metrics or emit any new JSON events? If yes, have you updated the JMX metrics reference list / Metrics reference list / JSON log events reference list in the Open Liberty docs?

jjiwooLim commented 3 weeks ago

@OpenLiberty/serviceability-approvers

UFO -- does the UFO identify the most likely problems customers will see and identify how the feature will enable them to diagnose and solve those problems without resorting to raising a PMR? Have these issues been addressed in the implementation?

Yes

Test and Demo -- As part of the serviceability process we're asking feature teams to test and analyze common problem paths for serviceability and demo those problem paths to someone not involved in the development of the feature (eg. IBM Support, test team, or another development team). a) What problem paths were tested and demonstrated? b) Who did you demo to? c) Do the people you demo'd to agree that the serviceability of the demonstrated problem scenarios is sufficient to avoid PMRs for any problems customers are likely to encounter, or that IBM Support should be able to quickly address those problems without need to engage SMEs?

a) There are no new errors coming from this feature. If there are network issue connecting to Maven repository with/without proxy, featureUtility will print appropriate error messages. b) EOI meeting/ Install team c) Yes

SVT -- SVT team is often the first team to try new features and often encounters problems setting up and using them. Note that we're not expecting SVT to do full serviceability testing -- just to sign-off on the serviceability of the problem paths they encountered.

SVT not required

Which IBM Support / SME queues will handle PMRs for this feature? Ensure they are present in the contact reference file and in the queue contact summary, and that the respective IBM Support/SME teams know they are supporting it. Ask Don Bourne if you need links or more info.

WAS: L3 Liberty Install

Does this feature add any new metrics or emit any new JSON events? If yes, have you updated the JMX metrics reference list / Metrics reference list / JSON log events reference list in the Open Liberty docs?

There are no new errors coming from this feature

jjiwooLim commented 3 weeks ago

@OpenLiberty/ste-approvers slide uploaded to STE-archive

chirp1 commented 1 week ago

David is going to complete the doc for the feature. The doc issue is at https://github.com/OpenLiberty/docs/issues/7442. Approving the feature.