Makefiles missing source dependencies

Hi all,
New to this, so I'm sorry if I'm missing something obvious, but it seems that all the make files are missing source dependencies? Is it expected for the user to add them?
Also, it seems that it might be useful to include blank source files, especially since there are references to the required files in the Makefiles and test files. I feel like both of these would just be one less step for setting up.

I'm not quite sure what the status of this is. This track isn't active, and I don't think that it has been under active development over the past few months.

My impression was that there hasn't been a consensus on which build system to use:
https://github.com/exercism/xc/issues/4
With the tests as is, the user is expected to read the test #include(s) in order to figure out which source files to create. An alternative compromise could be to provide a stub header file, and let the participant consider breaking off code into an implementation file.
Either way, if you want to try experimenting with how to provide the build environment, now is a good time as any.

A stub header file would work, since any files not named /[Ee]xample/ are delivered to the user when they fetch the exercise.

I began creating stub .h and .c files and including them in the makefile dependencies. However, doing so made me wonder how much we expect to leave to the user. Should the program compile with no work? Should the program compile but pass no tests? Some tests? Should the user be deciding on datatypes?
Just including the dependencies without the source files means you get something like this when running make
make: *** No rule to make target src/leap.c', needed by tests.out'.  Stop.
Which people might be able to interpret correctly as "Hey, you should create this file".
Even including the .h files with just the appropriate function invites some decision of what datatypes to use, or the names of function arguments. But maybe including too much, like a dummy variable to return, would put the user off from modifying existing code.
Personally, I think providing stub files with a blank template for the required function is beneficial. It lets the user focus on solving the problem than having them consider whether they want an int or an unsigned int. Though, this being my first track, I'm not sure what is expected of exercism exercises.

In many languages we start the user off with nothing--it doesn't compile, we don't give them hints, and they have to piece together what to define by looking at the error messages and the tests.
We do, however, make sure that the test dependencies are all in place.
I think it's beneficial to have to think about whether you want an int or an unsigned int.
In the Go track we provide lots of hints and a very complete stub file for the first exercise, then we back off little by little.

The xcpp repo for C++ is a good place to look for examples: https://github.com/exercism/xcpp/
Specifically, the setup readme provides documentation for how to start with the C++ exercises.
You can also compare the source readme(s) with the final output on the docs page: http://exercism.io/languages/cpp

Adding my two cents as @McFadge and I know each other in person and I had mentioned this fledgeling track to him since we're both fans of C.
The C++ track uses cmake in tandem with make. I did create a working CMakeLists.txt yesterday and tested it across the C exercises on linux and OS X from the command line (that is to say, I didn't test it from any common IDEs). I think cmake for C is a bit overkill, though, and it adds a link in the chain.
make seems the path of least resistance and I have the time on my hands to go through and clean things up and maybe add/port a few exercises. Just don't want to make any large steps until people confer unless action is considered to be the consensus.

Since the exercise set is still private, I'm all for trying out alternative build setups. May be worth pinging the other folks in this thread: https://github.com/exercism/xc/issues/4
@LegalizeAdulthood , @lpil , @silentbicycle any thoughts about using make (only) versus Cmake?

I prefer the idea of using just make.

Here are some of my thoughts:

The trend for C/C++ projects has been increasingly to use CMake for building.
CMake can simplify things when using a test framework.

You have to locate the include directory for the test framework.
You have to locate any compiled libraries for the test framework.
You have to specify the library to link against when linking your test executable.
CMake does all this in one or two lines of code that are easily explained with a comment.
Adding all the necessary parts to a Makefile to achieve the same thing is more arcane and harder to explain (particularly with Makefiles still relying on the TAB character to separate actions from dependency declarations).

CMake gives you IDE projects for CLion, Visual Studio (any version) and Xcode for free.
Users preferring make can generate Makefiles from CMake.
Makefiles don't leverage the strengths of Xcode, CLion or Visual Studio as an IDE.
Currently, I don't think CLion understands anything but CMake for projects.
My opinion based on experience is that:

Many C developers are unix/linux oriented.
They are historically comfortable with Makefiles.
They either use fancy editors as primitive IDEs (vim, emacs) or have no experience with IDEs (Xcode, CLion, Visual Studio).
This results in a bias towards more antiquated tooling, but newer programmers to C might be more comfortable with the familiarity of IDEs for C coding.

The C++ track specifically instructs you to create empty implementation files as a starting point for the CMake step of creating your build.  Once you've got a Makefile, project file, etc., you need to put the minimal amount of implementation in your files to get the tests to compile --- and then fail.  From that point on, it's straightforward TDD.
Once you've gone through setting up the first exercise, the steps are the same for all subsequent exercises.

Playing devil's advocate; some may be turned off from completing exercises if they feel they need to learn how to navigate makefiles in tandem with learning C (and let's face it, C can already be daunting for newcomers to begin with).
@LegalizeAdulthood I actually took your C++ CMakeLists.txt and modified it. Here's the modified version that works with the exercises but I've only tested it using cmake -G "Unix Makefiles" .. as I don't really use any IDEs so I'm not sure if it's kosher with any other cmake generators. As such, I don't know if the MSVC line needs to be kept or if it's a C++ specific issue.
It could probably be cleaned up; I'm not expert in cmake but I kind of know how to get around it.
CMakeLists.txt

Those compiler flags will only work for GCC flavored compilers.  Also, I'm not sure why you're building optimized, it's useful to use the debugger to step into the tests and your implementation.
You'll want to have someone on VS/MSVC and Xcode testing your build before deploying.

Purely force of habit. I don't typically use visual studio but I could set it up easily enough for testing.

For C code, you might want to anticipate that some of the secure CRT warnings can be off-putting to a new programmer:
https://msdn.microsoft.com/en-us/library/8ef0s5kh.aspx

Here is What i did to compile, its simple
$touch src/leap.c
$make
$./tests.out
thats it , it should compile well....

Looks like all current exercises use make and include the source file in the makefile. I agree with sticking with plain old make for now since this reduces the number of hurdles to jump over given that learning C is already daunting enough.
I'm going to call this one done for now and if we want to investigate anything further, let's create a new issue to continue the discussion.


Preset selection overlay

Very very very rough version of preset selection overlay (not worth reviewing the code).  Was going to work on it further, but thought it might be worth talking about what I have currently.  Few things we will need to deal with:

Winamp preset selection opens with the 'L' key, that is currently being used to load tracks.  Could potentially be solved by focusing on elements? (or picking different keybinds)

Doesn't really work well with initial layout. Not sure if we want to change the initial layout, or change the way preset selection works.

Currently I'm trying to make it mimic the milkdrop preset selection, not sure if we do or don't want to do that.

This is amazing! Looks great. Sadly I still don't have a working Milkdrop locally that I can compare to, so I'm a bit unqualified to check how it looks compared to real Milkdrop. In general, I'm all for parity even at the expense of experience.
I'll look again at how we can improve the focus management. If I can get that solved, then I think the hotkey issue resolves itself. Sounds like the "right" solution.

Link to try it out (for anyone else dropping by): https://deploy-preview-587--ecstatic-poincare-fe4c13.netlify.com/#{"milkdrop":true}

@captbaritone : Working now with the focus and keybind changes, wooo!  Seems to be working pretty well.  Was thinking maybe the CSS should go in its own file, not sure what you prefer, let me know what you think.

This looks good to me. I don't mind the CSS in JS if you don't, but if you want to pull it out, feel free. I can point you to an example if you want one.
Any reason not to merge this now?

@captbaritone: nope, merge it! hah 🎉


Can I add an occupancy_timeout parameter to a BLE motion sensor using the BLE number（model）?

for example，in configuration.yaml
//
xiaomi_gateway3:
devices:
"13617":
occupancy_timeout: 30
"lumi.sensor_motion":
occupancy_timeout: 60
"e0798d2ce9dc":
occupancy_timeout: 30
//
Sensors defined by MAC address will take effect（ble）. And  sensors defined by model will take effect（zigbee）. If I have a large number of identical devices, it would be inconvenient to add them individually through MAC addresses. Thanks
1：
extra:
cloud_fw: 2.0.1_0036
cloud_name: 过道人体-里
did: blt.3.1ftgfhk58kc00
mac: e0:79:8d:2c:e9:dc
market_brand: xiaomi
market_model: XMPIRO25XS, xiaomi.motion.pir1
market_name: Motion Sensor 2s
occupancy_timeout: 30
seq: 39
type: ble
last_report:
idle_time: 120
last_report_gw:
fw_ver: 1.0.6_0016
host: <IP_ADDRESS>
mac: 54:ef:44:3e:ee:2d
model: lumi.gateway.mcn001
name: Xiaomi Smart Home Hub 2
last_report_ts: 17s
last_seen:
54ef443eee2d: 16s
54ef44551d7b: 16s
listeners: 4
model: 13617
params:
idle_time: 120
motion: true
ttl: 1h5m
uid: e0798d2ce9dc
2：
extra:
cloud_fw: 2.0.1_0036
cloud_name: 过道人体-外
did: blt.3.1ftgd5b50kk00
mac: e0:79:8d:6f:d2:f5
market_brand: xiaomi
market_model: XMPIRO25XS, xiaomi.motion.pir1
market_name: Motion Sensor 2s
seq: 133
type: ble
last_report:
idle_time: 120
last_report_gw:
fw_ver: 1.0.7_0021
host: <IP_ADDRESS>
mac: 54:ef:44:55:1d:7b
model: lumi.gateway.mcn001
name: 小米智能多模网关2 第二台
last_report_ts: 1m38s
last_seen:
54ef443eee2d: 1m38s
54ef44551d7b: 1m38s
listeners: 4
model: 13617
params:
idle_time: 120
illuminance: 56.0
motion: true
ttl: 1h5m
uid: e0798d6fd2f5
3：
extra:
cloud_fw: 1.0.0_0011
cloud_name: 小米人体传感器
did: lumi.158d000445e1f8
fw_ver: 11
hw_ver: 0
ieee: 00:15:8d:00:04:45:e1:f8
lqi: 76
market_brand: Xiaomi
market_model: RTCGQ01LM
market_name: Motion Sensor
nwk: '0xdc37'
occupancy_timeout: 60
rssi: -81
seq: 61
type: zigbee
last_report:
battery: 57
battery_original: 181
battery_voltage: 2985
chip_temperature: 86
lqi: 76
resets: 30
send_all_cnt: 1
send_fail_cnt: 0
send_retry_cnt: 0
last_report_gw:
fw_ver: 1.0.6_0016
host: <IP_ADDRESS>
mac: 54:ef:44:3e:ee:2d
model: lumi.gateway.mcn001
name: Xiaomi Smart Home Hub 2
last_report_ts: 3m15s
last_seen:
54ef443eee2d: 3m15s
listeners: 3
model: lumi.sensor_motion
params:
battery: 57
battery_original: 181
battery_voltage: 2985
chip_temperature: 86
lqi: 76
resets: 30
send_all_cnt: 1
send_fail_cnt: 0
send_retry_cnt: 0
ttl: 2h50m
uid: '0x00158d000445e1f8'

i know，It is not possible to add "" outside of 13617.

You should use numeric model for BLE and Mesh devices

You should use numeric model for BLE and Mesh devices

thanks


Fix windows/conda builds

Fixes 32-bit issues as well as tests/simulations leaking handles to adjustments dbs (via data portals).

Coverage decreased (-0.04%) to 84.226% when pulling 2c1cfb04aaeac29b9a367f837973410af41736f8 on lazy_windows into 005299e7e46478920536e238d63b2ba7d6b11236 on master.

Coverage increased (+0.009%) to 84.28% when pulling 116ec6356298e679ca4d2e6e80cd5408f2ffe56c on lazy_windows into c5e15f2e8e15042ce428669cdc4d7b1789e57372 on master.

Coverage decreased (-0.1%) to 84.137% when pulling df13bb8746c682f54cccec2543e31f626be9244d on lazy_windows into 675eff4f6d17345a159002b3cfe9c39d004e05af on master.

Coverage decreased (-0.1%) to 84.167% when pulling 9883f2de997dc77ed96c3ada11005df9c6896b44 on lazy_windows into 675eff4f6d17345a159002b3cfe9c39d004e05af on master.

Coverage decreased (-0.1%) to 84.167% when pulling 9883f2de997dc77ed96c3ada11005df9c6896b44 on lazy_windows into 675eff4f6d17345a159002b3cfe9c39d004e05af on master.

Coverage decreased (-0.09%) to 84.18% when pulling babefcc176cd391c5b9bd62dc858d9d69df3ae86 on lazy_windows into 675eff4f6d17345a159002b3cfe9c39d004e05af on master.

Coverage decreased (-0.07%) to 84.204% when pulling 693db009975cedd20675539f2180c95771fe7c7f on lazy_windows into 675eff4f6d17345a159002b3cfe9c39d004e05af on master.

Coverage decreased (-0.07%) to 84.169% when pulling d55a62b2985fd7241f5aa1afa55b3191747ad159 on lazy_windows into d2ab5ed46ec579c72a92c69bee3d8decf2240886 on master.

Coverage decreased (-0.03%) to 84.233% when pulling d331059f971c4f75e3f35464f1527abe45011fa6 on lazy_windows into 8313c8c36c41f0a614e3af6e1e80bd1276703408 on master.

Coverage decreased (-0.07%) to 84.198% when pulling a6ea095a9a27860beccf3bc1221afcd252bbebcb on lazy_windows into 8313c8c36c41f0a614e3af6e1e80bd1276703408 on master.


[ROS2] Build from source // Exception in shell extension 'bat'

I'm trying to build ROS2 eloquent from source by following steps described here.
When I run (after completing the steps required before that)
cd c:\dev\ros2_eloquent
colcon build --merge-install

it fails with the following output:
colcon.colcon_core.shell ERROR Exception in shell extension 'bat': Expected ['c:\\dev\\ros2_eloquent\\src\\build\\ament_flake8\\colcon_command_prefix_setup_py.bat', '&&', 'set'] to pass
Traceback (most recent call last):
  File "c:\python37\lib\site-packages\colcon_core\shell\__init__.py", line 289, in get_command_environment
    task_name, Path(build_base), dependencies)
  File "c:\python37\lib\site-packages\colcon_core\shell\bat.py", line 128, in generate_command_environment
    env = await get_environment_variables(cmd, cwd=str(build_base))
  File "c:\python37\lib\site-packages\colcon_core\shell\__init__.py", line 325, in get_environment_variables
    output = await check_output(cmd, cwd=cwd, shell=shell)
  File "c:\python37\lib\site-packages\colcon_core\subprocess.py", line 107, in check_output
    assert not rc, 'Expected {args} to pass'.format_map(locals())
AssertionError: Expected ['c:\\dev\\ros2_eloquent\\src\\build\\ament_flake8\\colcon_command_prefix_setup_py.bat', '&&', 'set'] to pass

When I call colcon_command_prefix_setup_py.bat, it results in The syntax of the command is incorrect.
I installed ROS2 eloquent from binaries alongside and it works as expected, so the prerequisites are satisfied.
Environment information:

OS version: Windows 10

Chocolatey Versions

Chocolatey v0.10.15
asio 1.12.1
chocolatey 0.10.15
chocolatey-core.extension <IP_ADDRESS>
chocolatey-windowsupdate.extension 1.0.4
cmake 3.17.1
cmake.install 3.17.1
cppcheck 1.90
cunit 2.1.3
curl 7.69.1
eigen 3.3.4
KB2919355 1.0.20160915
KB2919442 1.0.20160915
KB2999226 1.0.20181019
KB3033929 1.0.5
KB3035131 1.0.3
log4cxx 0.10.0
patch 2.5.9
pip 1.2.0
python3 3.8.2
tinyxml-usestl 2.6.2
tinyxml2 6.0.0
vcredist140 14.25.28508.3
vcredist2013 12.0.40660.20180427
vcredist2015 14.0.24215.20170201

@lilustga can you take a look at this?

I thought it might be a problem with my Python (I had 3.7 installed with the official installer), so I installed python 3.7.5 from choco (and removed all other installations), but the issue persists.

Could you elaborate on why you building ROS2 from source?
(Knowing this will help us with documentation and scripts. We'll be working to improve the workflow - both on customer setup as well as build)

I want to make my node a standalone executable, so I need to compile static libs for rclcpp, etc.
The idea is to omit the full ROS2 installation on the end-user PC. Does that make sense?

Thank you for the explanation. The installation is quite complex, and we too are investigating how to improve it.

I noticed it does say python3 version 3.8.2 in your listed choco packages. Is that outdated from before you switched to 3.7.5?
Is python added to the path? If not, try adding it before building e.g:
set "PATH=C:\opt\python37amd64\DLLs;C:\opt\python37amd64\;C:\opt\python37amd64\Scripts

yea, 3.8.2 was outdated (also then I was using the official installation with 3.7, not choco).
Thanks for the pointer to look at the PATH. I did have python in the PATH (only DLLs folder was missing), but my pythonpath was PYTHONPATH=c:\Python37" and likely that quotation was causing path issue in batch files... 🤦


[test] Set up Vagrant for to provide a consistent OpenLDAP test server

This is based in the setup original setup instructions https://github.com/zendframework/zf2/blob/eb6275e9227e9ed1995d326087488d3ea25811b5/tests/docs/README-LDAP.txt
the work of pwdng for the FreeRADIUS project FreeRADIUS/freeradius-server#1107
and the first implementation stub of heiglandreas for zend-ldap #8
Supersede #8

@weierophinney @ralphschindler Thoughts?

@Maks3w This looks great! Only thing is: while I succesfully did the vagrant up, I'm not sure what I have to do to enable the online tests. Can you document that in the README and/or CONTRIBUTING docs, please?

Looks good in so far that it sets up a vagrant box for testing against.
The tests now have to be adapted. Also there should be a note in the README_TEST.md (which will be included in PR #7 ) that states that the TESTS_ZEND_LDAP_ONLINE_ENABLED has to be set to true before calling phpunit. ( @weierophinney - that's the trick, we'll document it)


Adding table in creates a new div, not table, but that div serializes to a table?

I copied the implementation from the example file. I'm really confused by how this outcome is possible. I'm using Slate 0.16.18 and slate-edit-table 0.8.4 in Electron 1.4.15
Slate generated HTML:

Paragraph

Some Text

HTML Serializer Output:

Paragraph

         Some Text

Any ideas how this outcome is possible?

Any thoughts on this? I'm really baffled by it.

What HTML serializer are you talking about? And what is it given as input?

I resolved this with some sort of schema validation rules. I can't recall the exact nature of the issue.


No source distribution or Python 3 wheel on PyPI for 0.2.1

When I try to install dependencies for an application that uses gunicorn_thrift, I get errors from pip complaining about not finding a version that satisfies my given requirement.
Looking on PyPI, the only available distribution for gunicorn_thrift 0.2.1 is a Python 2 wheel.
Can you guys please upload an sdist and a Python 3 wheel?
Thanks!

I've just uploaded a sdist and wheel version. Sorry for the inconvenience..

No worries, thanks very much. :smiley:


Use concurrency control in Redis store's Multi()

Description
Change Multi() to use same setQuery and delQuery mechanisms as Set() and Delete().
Issue reference
Please reference the issue this PR will close: #375
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[x] Created/updated tests
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

LGTM. thanks for the cleaning up the code as well.
Please do backward compat test similar to the below scenario manually.
with 0.10.0 dapr

dapr uninstall --all
dapr init
dapr run
call transaction api to save teststate state with oldvalue value

with your change

build new daprd with your change
copy new daprd build to ~/.dapr/bin/
dapr run
call get state api to get teststate state
ensure that returned state value is oldvalue
call transaction api to save teststate state with newvalue value
call get state api to get teststate state
ensure the returned state value is newvalue

@youngbupark thanks for the instruction. I've confirmed backward compat using that sequence.


add command exists implementation

Thanks for all your help.
Can you split the EXISTS work out into a separate PR from the other stuff?

Ok, done.

Thanks very much


Want to know which version that I need to buy about MC in Macos

I saw the  MC website,There are two version for paying,I don't which version that I can use it for test the Voyager.

help!!!

Base Game is enough

Minecraft Java - needs to be compatible w Mineflayer for sure

I got it, Thanks, bro. I will buy base Game @Ellen7ions @ProjectAtlantis-dev

I bought it and running

Bedrock integration for mineflayer appears to be ongoing.  There is progress and significant number of features merged.
See this issue for what else is needed for support:
https://github.com/PrismarineJS/bedrock-protocol/issues/116


Bug: Group is not updating when a change has many children (Semilla BTC case)

Problem
For some reason this group is not being updated on the eyes of the backend. This is making users create many "branches" on top of this particular change and the backend is not capable of showing the real latest change.
Steps to Reproduce
There's nothing to reproduce. The only Group we have that have this behavior is "Semilla BTC"
groupId: hm://g/Mqhpne2hUTy6yZdAtrUV6a
version as shown as latest: bafy2bzaceasknkpt77i24peb4twwkcaqi524sqjfsex6uoygaueoizp5ulqgq

If you get the entityTimeline of this particular group, you'll get all the changes (21) and even changes that happened after this particular change.
checkout all the children this change has:

Assumptions

the backend is filtering changes the same way is filtering publications and for that reason is not showing all the changes that it needs to be, and that is making other users create so many changes based on the wrong change.
the backend is returning the latest change of the owner and not the latest change of all the editors. is not concatenating changes the way it should be.

any questions please ping @horacioh. he has all the info about it.

Should be fixed by https://github.com/MintterHypermedia/mintter/commit/a11e2bea153fca45dafb52c7ffd1c16615193f3c. Please report if still happens.


OAuth Sign in: Unable to let the user switch the credentials

Details of the Bot Framework Composer version I use:
Version: 2.1.1
Electron: 8.2.4
Chrome: 80.0.3987.165
NodeJS: 12.13.0
V8: 8.0.426.27-electron.0
I use the 'OAuth Login' of the composer to let the user sign in via service providers (I support Google & Microsoft for now). This works.
When the user logs out, I tried using "Sign out user" option of composer, but I kept getting the error: "signOutUser() not supported by the current adapter". So, I wrote a custom action (see below):
const adapter = new BotFrameworkAdapter({
        msAppId,
        msAppPwd
      });
adapter.signOutUser(dc.context, connectionName, userId)

The above executes without any error.
However, the challenge I face is I am not able to let the user switch the account next time when they want to log in. As I read from numerous blogs, issues and documents, I understand that the existing access token is sent back if it already exists. This is a nice feature because it does not let user to go through the consent prompt over and over. However, in my case, I need to give my users an option to re-login with the same account or re-login with a different account. So, I am stuck.
In case of Google, during logout, I tried revoking the access token through this API: "POST https://oauth2.googleapis.com/revoke?token=". Though this revokes the token successfully, the "OAuth Login" component of Bot composer returns the same revoked token to me back, instead of taking the user to the account selection and consent pages.
Possible solutions I would expect are:

Botframeworkadapter's signOutUser method should revoke/delete access token and any associated refresh token. In the next re-login, user should be allowed to select an account.
The "Sign out user" option in composer should revoke/delete access token and any associated refresh token, without throwing any error. In the next re-login, user should be allowed to select an account.
The 'OAuth Login' option in the composer should accept "prompt" parameter, accepting the respective values ('consent' for Google and 'login' for Microsoft). Setting prompt=login or prompt=consent works from my other web applications, as intended.

Or is there any solution for me to let my user change the account/credentials during re-login? Please help me.

Hi @RamkumarManavalan
Sorry, I'm not sure why that is happening. I've transferred this issue to the BotFramework-Services repository as the token service is part of Azure Bot Service. Maybe someone here will have some ideas.

Hi @RamkumarManavala it is advised to use Service Provider Azure Active Directory v2 for Microsoft and Google for Google.
I have verified that they worked in signin and signout scenario (after signout, user could not get token any more).
Hi @EricDahlvang, could you help to verify Composer works as what SDK does? Thanks~

Yes, Composer and SDK work similarly. What this issue is about however, is the account selection or consent popup.  For AAD apps, you can go here: https://portal.office.com/account/?ref=MeControl#apps and remove consent under 'You can revoke permission for these apps' The login experience is different when consent has not been provided. As far as I know, the bot framework user auth api does not provide a parameter to always force consent. I was hoping the oauth 2 generic provider would expose these parameters and enable forcing consent every time.

@RamkumarManavalan For the signout, please reach out to Composer / SDK for fix. For your request, I have verified with the following configs, please test:
Microsoft:

Name
Value

Authorization URL Template
https://login.microsoftonline.com/common/oauth2/v2.0/authorize

Authorization URL Query String Template
?client_id={ClientId}&response_type=code&scope={Scopes}&redirect_uri={RedirectUrl}&state={State}&prompt=login

Token URL Template
https://login.microsoftonline.com/common/oauth2/v2.0/token

Token URL Query String Template
?

Token Body Template
code={Code}&redirect_uri={RedirectUrl}&scope={Scopes}&grant_type=authorization_code&client_id={ClientId}&client_secret={ClientSecret}

Refresh URL Template
https://login.microsoftonline.com/common/oauth2/v2.0/token

Refresh URL Query String Template
?

Refresh Body Template
refresh_token={RefreshToken}&redirect_uri={RedirectUrl}&grant_type=refresh_token&client_id={ClientId}&client_secret={ClientSecret}

Google:

Name
Value

Authorization URL Template
https://accounts.google.com/o/oauth2/auth

Authorization URL Query String Template
?client_id={ClientId}&response_type=code&scope={Scopes}&redirect_uri={RedirectUrl}&state={State}&access_type=offline&prompt=consent

Token URL Template
https://accounts.google.com/o/oauth2/token

Token URL Query String Template
?

Token Body Template
code={Code}&redirect_uri={RedirectUrl}&scope={Scopes}&grant_type=authorization_code&client_id={ClientId}&client_secret={ClientSecret}

Refresh URL Template
https://accounts.google.com/o/oauth2/token

Refresh URL Query String Template
?

Refresh Body Template
refresh_token={RefreshToken}&grant_type=refresh_token&client_id={ClientId}&client_secret={ClientSecret}

closed since inactive for long time, please reopen if needed.


chore: add usertask element template

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 46.11%. Comparing base (345cdee) to head (e82175d).

Additional details and impacted files
@@            Coverage Diff            @@
##               main     #407   +/-   ##
=========================================
  Coverage     46.11%   46.11%
  Complexity      397      397
=========================================
  Files           187      187
  Lines          2084     2084
  Branches        110      110
=========================================
  Hits            961      961
  Misses         1089     1089
  Partials         34       34

Flag
Coverage Δ

unittests
46.11% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Unhandled failure of docker-credential-desktop causes silent failure

Summary
I've just chased down a bug when using this library as part of jest globalSetup (via a fork of the jest-testcontainers library).
If the library is ran without being logged into docker, it silently fails. (This may be MacOS specific, and the silence is likely exacerbated by jest).
I would be happy to create the fix, but I'm not 100% on the implications for the wider code.
Info
Looking at runCredentialProvider function here: https://github.com/testcontainers/testcontainers-node/blob/master/src/registry-auth-locator/credential-provider.ts#L57-L81
This code never rejects its promise in the event of an exception or non-zero exit code. In my case, I hadn't ran docker login and so this process was returning an error message instead of credentials. The function above continues to process this error message as if it were json, catches the JSON parse exception, logs and then continues, leaving the promise in a pending state.
Interestingly, earlier versions of the library (4.7.0) successfully spawned the containers regardless of me being logged in or not.
Steps to Reproduce
Not sure I can create an isolated, reproducible error given the dependencies between docker, my OS, this library, etc.
Environment Information

Operating System: MacOS 12.6
Docker Version:  20.10.14
Node version: v16.15.0
Testcontainers version: 9.0.0 (also tested 9.1.0)

Hi @manterfield, thanks for raising, though I wish you'd filled out the issue template because now I'll need to ask you to share the logs 🙂 I'm also on MacOS, and tried running this test after a docker logout:
https://github.com/testcontainers/testcontainers-node/blob/86ef45d792dae55cbb35fc898fcb8b3786f427a3/src/generic-container/generic-container.test.ts#L40-L49
The test fails immediately with the following expected error as expected:
Error: (HTTP code 404) unexpected - pull access denied for cristianrgreco/testcontainer-private,
repository does not exist or may require 'docker login': denied: requested access to the resource is denied

I'll need the logs to be able to debug further

Could you try out version 9.1.2-beta.1 and let me know if it fixes your issue?

Sorry,  I figured since I'd debugged down to a definite issue in the code it'd be no big deal - but yeah, that was silly on my part. Of course you'd want to check the original issue. 😄
I probably would have been better off raising this on a place for discussion first as I was happy to fix once I'd had a sense check, but failed to spot if such a place exists. (apologies if I just missed it, my bad).

More info:
This wasn't actually a private registry. It's a public one (postgres on docker hub).
Logs:
Determining test suites to run...  testcontainers DEBUG Found applicable Docker client strategy: UnixSocketStrategy +0ms
  testcontainers DEBUG Testing Docker client strategy URI: unix:///var/run/docker.sock +0ms
  testcontainers INFO  Using Docker client strategy: UnixSocketStrategy, Docker host: localhost +15ms
  testcontainers DEBUG Fetching system diagnostics +0ms
  testcontainers DEBUG Executing Docker credential provider: docker-credential-desktop +1ms
  testcontainers WARN  Docker credential provider exited with code: 1 +58ms
  testcontainers ERROR Unexpected response from Docker credential provider GET command: "credentials not found in native keychain
  testcontainers " +0ms
  testcontainers DEBUG System diagnostics: {"node":{"version":"v16.15.0","architecture":"arm64","platform":"darwin"},"docker":{"serverVersion":"20.10.14","operatingSystem":"Docker Desktop","operatingSystemType":"linux","architecture":"aarch64","cpus":5,"memory":10434543616},"dockerCompose":{"version":"2.4.1"}} +67ms

I can login and it goes away, log out again and get the above.
Whilst I haven't used private images with this package, I have private docker registries configured on my machine (GCP artifact registry using their credential helpers).

Thanks @manterfield, could you try version 9.1.2-beta.1 and let me know if it fixes your issue?


x/playground: Please bring color and editor to playground

Currently, the playground is yellow background and black text, make it difficult to read the codes. Can you make codes colorful and bring editor to playground (like Wandbox) ?

This was asked in the past. The most relevant discussion is at #28539.
To sum it up:

the tour (https://tour.golang.org) has syntax colouring powered by CodeMirror (a rather beefy js lib)
the playground code doesn't use CodeMirror and has no syntax colouring
Apparently, codemirror is huge and it was decided not to add it to the playground (see final decision at #18723)
Adding colouring to the playground has been on the table  (see my comment at https://github.com/golang/go/issues/28539#issuecomment-435385779), but since it was decided not to use CodeMirror in the playground, we would need to either use a lightweight library or implement is from scratch

Essentially: it appears that adding syntax colouring for the playground would be okay, but someone need to do the work and without using a beefy 3rd party lib like the one the tour uses.

Duplicate of #28539.

#28539 is closed. This should be left open as the canonical reference for this work.

I think we could base ourselves on MicroLight: https://asvd.github.io/microlight/ , but change it so it recognises Go code only specifically. This also has the advantage that it highlights syntax without using color, only using font effects or a literal highlight effect.

If it can be made to look like the default vscode, that would be great.

Is this issue still open? I would like to take a stab at this.

It is still open but ALTree has requested that this should be implemented using a very light weight library. That's why I proposed MicroLight which has the advantage that it is tiny and it also works also for color blind people like myself because it uses syntax styling instead of colors.


Server install script does not work

Steps to reproduce:

Build and install Open GEE server by following the instructions in the wiki.

The install_server.sh script will produce output like the following:
Welcome to the Google Earth Enterprise Server 5.2.1 installer.

Checking geserver services:
postgres service: false
gehttpd service: false
wsgi service: false

The existing Google Earth Enterprise Server 5.2.1 configuration files have been backed up to the following location:

The source volume(s) and asset root remain unchanged.

Copying files from source to target directories...DONE
Setting up system links...DONE
upgrade done
pgsql_data
/var/opt/google/pgsql/data
Failed to create PostGresDb.
The PostgreSQL component of the installation failed
         to install.
Setting up the geserver daemon...
GEE Server daemon setup ... DONE
Publishroot creation succeeded.
Please restart your server to apply the change.
# a) Start the PSQL Server
# b) Install GEPlaces Database
# c) Install SearchExample Database
# d) Stop the PSQL Server
Do you want to start the Google Earth Enterprise Server Service(y/n)?
n
Congratulations! Google Earth Enterprise has been successfully installed in the following directory:
                   /opt/google

                   Start Google Earth Enterprise Server with the following command:
                   /etc/init.d/geserver start

Note that it fails to create the postgres database and /etc/init.d/geserver fails.

so how can i solve this problem?

This particular bug was fixed a while ago. If you're using the latest code, it should be fixed.


memory leaks on windows clients in V1.3.3, V1.2.1

Have an app that sends permanent data to more than ten windows clients so users can choose what they need. This app should run 24/7 . After round about 2 days firefox quitted responding on all machines. So used the simplest socket.io app I could find (http://stackoverflow.com/questions/9914816/what-is-an-example-of-the-simplest-possible-socket-io-example) with the latest socket.io v1.3.3 and got the same results: In 10 Minutes 3.5 MB, in 30 Minutes nearly 14 MB, in 90 Minutes more than 26 MB.
Used this files:
app.js
var http = require('http'),
fs = require('fs'),
index = fs.readFileSync(__dirname + '/index.html');
// Send index.html to all requests
var app = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(index);
});
// Socket.io server listens to our app
var io = require('socket.io').listen(app);
// Send current time to all connected clients
function sendTime() {
io.sockets.emit('time', { time: new Date().toJSON() });
}
setInterval(sendTime, 100);
io.sockets.on('connection', function(socket) {
socket.emit('welcome', { message: new Date().toJSON() });
socket.on('i am client', console.log);
});
app.listen(3000);
index.html
<!doctype html>

Can you add the complete index.html also? I would like to debug this...

Sorry,
index.html
<!doctype html>

For that particular case the memory on Chrome 40 and socket.io 1.3.3 is < 10Mb, and I cannot find any obvious leaks at least.

Maybe its because I used Firefox 34.0.5. But I don't think so. Maybe its when more than 1 machine are used. Maybe it needs time. After nearly exact 1 day the used RAM in taskmanager  decreases by round about 50 MB from 131 to 81 MB. And then grows to more than 131MB and falls to 83MB and so on (Don't know the exact values).
On 3 of my test machines the game is over.  On  the other I started with ws the same test later .
In the case you would not believe it, I made screenshots:

.

What I meant is that I cannot find obvious leaks on Chrome 40. I made memory snapshots and analize them, and I could not find anything suspicious. You could also debug a bit more in firefox, just checking the task manager is not going to tell you much, it could be a leak in Firefox for all we know...

You could also debug a bit more in firefox.
What are your suggestions?

https://developer.mozilla.org/en-US/docs/Mozilla/Performance/about:memory

Thank you for now. I'll check it.

We can bring it to an end. Neither socket.io nor my app caused firefox quitting responding. It was firefox's setting ""firefox will remember history". After I gave it a last try with "firefox will never remember history" it is now 2 weeks running. Interisting is the memory consumption compared with chromium. 5 Days after start chromium reached its peak working set with 80272k and 71240k and is unchanged since 7 days. Firefox's peak working set is yet increasing and is now 197176k.
Pagefaults after 2 weeks: firefox 343.373.099 and chromium 2.976.538 and 127.783.
Looks like I have to switch my clients over to chromium.
@manast: thanx for your collaboration.
cu

It looks the problem has been solved.


How often will Node.js updates cause breaking changes?

Disclaimer: I am a new user and also new to AWS in general so forgive if I've misunderstood anything.
I have been doing some testing and trying to build a video upload & streaming website using the Video On Demand template and I recently started receiving the following automated emails:

Subject: AWS Lambda: Node.js 8.10 is EOL, please migrate your functions to a newer runtime version
Hello,
We are contacting you as we have identified that your AWS Account currently has one or more Lambda functions using Node.js 8.10, which will reach its EOL at the end of 2019.
What’s happening?
The Node community has decided to end support for Node.js 8.x on December 31, 2019 [1]. From this date forward, Node.js 8.x will stop receiving bug fixes, security updates, and/or performance improvements. To ensure that your new and existing functions run on a supported and secure runtime, language runtimes that have reached their EOL are deprecated in AWS [2].
For Node.js 8.x, there will be 2 stages to the runtime deprecation process:

Disable Function Create – Beginning January 6, 2020, customers will no longer be able to create functions using Node.js 8.10

Disable Function Update – Beginning February 3, 2020, customers will no longer be able to update functions using Node.js 8.10

After this period, both function creation and updates will be disabled permanently. However, existing Node 8.x functions will still be available to process invocation events.
What do I need to do?
We encourage you to update all of your Node.js 8.10 functions to the newer available runtime version, Node.js 10.x[3] or Node.js 12.x[4]. You should test your functions for compatibility with either the Node.js 10.x or Node.js 12.x language version before applying changes to your production functions.
What if I have issues/What if I need help?
Please contact us through AWS Support [5] or the AWS Developer Forums [6] should you have any questions or concerns.
[1] https://github.com/nodejs/Release
[2] https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html
[3] https://aws.amazon.com/about-aws/whats-new/2019/05/aws_lambda_adds_support_for_node_js_v10/
[4] https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-node-js-12/
[5] https://aws.amazon.com/support
[6] https://forums.aws.amazon.com/forum.jspa?forumID=186
Sincerely,
Amazon Web Services

The video on demand solution was 'sold' to us by an AWS sales rep as a more or less set and forget solution, it took me some time and reading and going back and forth with your support staff to establish that this had something to do with the lambda functions that are part of the VOD workflow. The pdf documentation had been updated last month to include the following notice (easily missed in my opinion):

Solution Updates:
Video on Demand on AWS version 5.0 features MediaPackage functionality, and uses the most up-to-date Node.js runtime. Version 4.2 uses the Node.js 8.10 runtime, which reaches end-of-life on December 31, 2019. In January, AWS Lambda will block the create operation and, in February, Lambda will block the update operation. For more information, see Runtime Support Policy in the AWS Lambda Developer Guide.
To continue using this solution with the latest features and improvements, you must deploy version 5.0 as a new stack. For customers who do not want to use the new functionality, you can update your existing stack to version 4.3. Version 4.3 keeps the same functionality as version 4.2 but uses the most up-to-date runtimes. You can find both versions in the solution’s GitHub repository. You can also download the version 4.3 template.

(please forgive all the copy pastes, I'm trying to include as much info as possible in one place just for the benefit of anyone else in a similar boat to me!)
My concern was that deploying a new stack would involve losing the crucial data in the DynamoDB table associated to the stack (on a live version of my site this could be hundreds of videos+metadata), and whether or not the contents of the destination S3 buckets would be somehow orphaned. I don't think it's very clear from your documentation how to perform an update to version 5.0 on a live site or project that depends on this stack and what is affected.
When I asked support staff for some guidance on this I was told:

Create a new stack with version 5.0
Update this stack by deleting/removing dynamodb::table resource from the template
Once the above update is completed successfully, perform a second update on this stack to import the dynambodb table which you were using into this stack.

This might make sense to someone with a bit more AWS experience but for a relative newbie like me it didn't fully address my concerns about losing my current data.
When I enquired further I was given instructions for updating from version 4.2 to version 4.3 instead, but I don't see that as a future proof solution at all, how long until 4.3 is obsoleted due to use of some deprecated/EOL code?
I'll include the response to the rest of my questions from the support staff who also recommended I post here for more info. Again, apologies for so much reading, but this is useful info for anyone stuck in my position.

Below answers are not relevant when updating from 4.2 to 4.3. These are concerned to version 5.0 (as creating a new stack is the only option for version 5.0) and you can completely ignore this information if you would like to.
===========
Q1: When you say create a new stack do you mean to run  "Launch Solution" again from the PDF like I did last time?
Yes, the pdf that you were referring to [2] is now updated and "Launch solution" will now launch a new stack with version 5.0. This is a quick solution. But there are other methods to upload a template to cloudformation [4].
Q2: How do I delete/remove the dynamodb::table resource from "the template"? Which "template" are you referring to here, is the CloudFormation "stack" a template?
Here is a documentation[5] which details steps to modify a cloudformation template. Once you get to "step 3: Modify the template", search for AWS::DynamoDB::Table resource and remove this resource section from the template file.
Q3: How do I perform updates on "stacks", and how would I perform an update which imports a dynamodb table?
To import dynamodb table, please see this documentation[6]. And, here is a documentation[3] that describes steps to perform updates on a stack.
Q4: Do I need to export my current dynamoDB table and if so how do I do that? (and also reimport).
If you follow documentation [6] it is not necessary to export dynamodb resource. Importing itself helps.
Q5: Also I need to know how often there will be breaking changes like this because my concern is that if this is something that can happen often then I'm not sure I can trust what I'm using. Will there be potential of losing data every time I attempt to update the stack/workflow/cloudformation/template? (I'm still not clear what the correct terminology is here).
I would suggest moving from version 4.2 to 4.3 which is not a breaking change as this is not replacing the resources. As Premium Support members do not have an idea of future updates, I would recommend you to try creating a github issue under VideoOnDemand GitHub issues [7]. One of our soultions architect will address your concern.
Q6: will all of the security credentials and IAM roles and Cognito Identity pools etc. need to be redone as well?
These resources need not be redone.
======
I hope this information helps you. Please do not hesitate to reach back to me if you have further questions or concerns. I will be glad to assist you further.
Thank you and have a great rest of the day!
References:

GitHub ChangeLog: https://github.com/awslabs/video-on-demand-on-aws/blob/master/CHANGELOG.md
VideoOnDemand: https://s3.amazonaws.com/solutions-reference/video-on-demand-on-aws/latest/video-on-demand-on-aws.pdf
Updating stack: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-direct.html
Selecting a template: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-template.html
Modifying a template: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-get-template.html
Importing resources into stack: https://aws.amazon.com/blogs/aws/new-import-existing-resources-into-a-cloudformation-stack/
github issues page: https://github.com/awslabs/video-on-demand-on-aws/issues

Can anyone shed some light on whether version 5.0 is something I can rely on going forward, or should I expect to have to do the above steps relatively often? I imagine a lot of users would need to know this so that they can budget accordingly for maintenance & manual updating costs. Is there any way to automate updating the stack? Is that wise? How would you suggest maintaining this stack on a production environment?

Hi @mike-source,
Thanks a lot for the feedback. You're correct that the documentation could be improved (at the moment, there's a bit of an overlap between the README and the implementation guide), and this is something we will review for future releases.
As I wrote on https://github.com/awslabs/video-on-demand-on-aws/issues/37#issuecomment-556460396, we are planning on writing a blog post, and one of the things we will mention is moving data from the previous version.
We don't plan on adding any updates to v4.3 (this version was released specifically to address the Node 8 runtime reaching its EOL). On the other hand, we are going to keep adding features and fixing any bugs to v5, and you should be able to rely on it moving forward without having to go through the series of steps you listed (we've made improvements to guarantee a cleaner update path).
If you have any more questions, please let us know.

Well, as my project is currently in development, v4.3 seems useless to me. I would not want to deploy a production version of my project locked in to a version that will be receiving no bug fixes.
I'm in the middle of a project and working to a deadline, what would you recommend:
Attempt to upgrade to v4.3 for now, allowing me to continue development after December 31st 2019 on my frontend, and wait for these better instructions for the v5 upgrade?
Will going from v4.3 to v5.0 be quite painless?
Also can you give some idea when the blog post or better documentation will be available, as I need to pass on info about any delays to my client and colleagues.
I would certainly make that a priority! This is not a fun position to be in at my end!
Thanks for the response though and I hope this gets addressed soon as the stack itself has been working great for me up until now.

I don't appear to be able to follow the steps for updating to v5.0 provided by the AWS support staff above by the way! - I get as far as "step 3: Modify the template" I search for the "AWS::DynamoDB::Table" resource and try to remove this from the template by removing lines 801-831 from the template in template designer.
When I do that step I get the following error:
"Template contains errors.: Template format error: Unresolved resource dependencies [DynamoDBTable] in the Resources block of the template"
I'm then unable to proceed with the instructions. I assume from this error the issue is you can't just remove the DDB Table because there are other parts of the stack that expect it to be there? or perhaps I've missed something obvious!
I think they may also be overlooking the fact there are source and destination S3 buckets attached to the workflow as well, these contain files which would need to be migrated/attached to the new 5.0 stack.
Does this not also need to be done by modifying the template?
Sorry for bombarding you with questions!

No need to apologize for that, we want as much feedback as possible.
We won't be able to release the blog post this year, so what we'd recommend is using v4.3 for the moment (so that you can update your functions - if needed - after January 1st).
Version 5 is not backwards compatible with v4.3 (it won't be possible to just update the existing stack), but in the blog post we'll address the points you mentioned (such as moving data between DynamoDB tables).

Hi @mike-source - Closing this issue for now but please let us know if you need additional assistance.


List Webpart's view not retained in Modern Page!

Category
[*] Bug
[ ] Enhancement
Problem Area
[ ] Page Transformation: Error during the setup/use of the Page Transformation UI solution (did you check our troubleshooting guide?)
[ ] Page Transformation: Error during the use of page transformation from PnP PowerShell
[ ] Page Transformation: Error during the use of page transformation from .Net
[*] Page Transformation: Page is not looking correct after transformation
[ ] Modernization Scanner: something went wrong...
Expected or Desired Behavior
Modern page's List webpart should retain the view as in classic
Observed Behavior
User has customized the list webpart's view. After the Page upgradation to Modern, the View is not retained. It has been  set to the default list view
Steps to Reproduce
Add a list view webpart in a classic page. Edit the view using webpart properties. Convert it to modern using  ConvertTo-PnPClientSidePage -Identity pagename.aspx

Hi @PriyankaDevi510 ,
Are you doing a transformation of a wiki page and create the new modern page in the same site or are you creating the modern page in another site collection?

It is a webpart page. And we are upgrading in the same site only

The view detection will not always work, let me explain.
What happens in the classic web part

You put the XSLTListView web part on a page
You select an existing view

If the list view query/fields/rowlimit was not changed after using it in the web part then the modern list/library web part should be able to find that view...however if there was a change in the underlying view then the view definition stored in the web part will be different than the view definition in the list and therefore we can't match up the views anymore.
Background: the view id property is not stored in the classic XSLTListViewWebPart and therefore we need to "try" to match up a view by comparing the view query/fields/rowlimit definition. The code that does this logic can be found here: https://github.com/SharePoint/sp-dev-modernization/blob/dev/Tools/SharePoint.Modernization/SharePointPnP.Modernization.Framework/Functions/BuiltIn.cs#L496
You could try by setting the view again in the web part and then see if it's retained during modernization. If that still does not work then we'll need to compare the view definition in the web part with the actual view definition in the list and try to understand where the matching goes wrong.

Hi @PriyankaDevi510 , did the above clarify things for you?

Closing this issue. If you still have issues with this then please provide me with the view xml of the source view and the view xml of the view on the target list. I can then verify if our "matching" logic requires updates or not.


Feat: support non-bgp switch

Proposal: use keepalived+envoy as DaemonSet to run on each node

/kind feature

Here are some open-source implementations we can refer to:
https://github.com/caicloud/loadbalancer-controller/blob/master/docs/design.md
https://github.com/hpcloud/kubernetes-service-loadbalancer#software-loadbalancer-using-keepalived-and-nginx
https://github.com/kontena/akrobateo#akrobateo

Proposal: use keepalived+envoy as DaemonSet to run on each node

Why use envoy?  Layer7 was  supported in  ingress controller

Proposal: use keepalived+envoy as DaemonSet to run on each node

Use keepalived to maintain the vip, and then the user configure the EIP route in the non-bgp switch.
Daemonset can configure lvs,  then we can use the lvs DR mode to enhance the forwarding performance.
The architecture diagram is as follows：

The data flow is as follows：

User sends request to eip
non-bgp switch route request to vip
vip node route  request to eip though lvs DR mode
dst node response to user directly

Similarly, the forwarding component can be replaced with xdp, ovs, dpdk, etc.

Introduction to PorterLB and its cloud-native architecture
What is PorterLB
Porter is an open source load balancer designed for bare metal Kubernetes clusters. It's implemented by physical switch, and uses BGP and ECMP to achieve the best performance and high availability.  Porter also offer a Layer 2 mode for non-production use, such as testing.
If your switch does not support BGP, Porter also provide VIP mode, where the VIP uses LVS/XDP/OVS etc. to handle service traffic forwarding.
Why PorterLB
From the official documentation on the Kubernetes site, we know that there are several ways to expose services to the outside of the cluster:

NodePort
LoadBalancer
Ingress
ExternalName

Where ExternalName relies on the external DNS system, which is outside the scope of our discussion.
The Ingress approach relies on the gateway. If the gateway is implemented inside the cluster, then the gateway's external exposure still relies on NodePort or LoadBalancer, and if the gateway is implemented outside the cluster, then the gateway's access to backend services still relies on the backend services being exposed via NodePort or LoadBalancer.
NodePort requires the visitor to be on the same network as the cluster node, and the three layers of the network can interoperate. NodePort has a limited range of ports, and there is an additional NAT transition during network access.
LoadBalancer is a way for Kubernetes to implement a framework that will eventually have to be implemented by different plugins, depending on the environment in which the cluster is located and the choice is different. If you're running on a public cloud, then you should choose the vendor's plugin, and if you're running in a physical environment, then you should choose Porter.
Note: If you are using a CNI network plug-in that implements the kube-proxy feature, then please refer to the corresponding plugin on how to expose the service to the outside world.
Principle
Porter's implementation of LoadBalancer relies heavily on Layer 3 routing, where the main job is to synchronize the EIP with the upstream switch for routing to the backend node.
BGP mode
The following figure describes the principle of Porter BGP mode. Assuming there is a distributed service deployed on node1 (<IP_ADDRESS>) and node2 (<IP_ADDRESS>). The service needs to be accessed through EIP <IP_ADDRESS>. After deploying the Example Service, Porter will automatically synchronize routing information to the leaf switch, and then synchronize to the spine and border switch, thus external users can access the service through EIP <IP_ADDRESS>.

Layer2 mode
The Porter layer2 mode is relatively simple and relies on Layer2 protocols such as ARP/ICMPv6 NDP. When a user requests an EIP, ARP/ICMPv6 NDP answers the MAC address of the node where the EIP is located and the packet is then routed to the node.
VIP mode
Some switches may not have bgp functionality, or may be inconvenient to turn on for some reason.In this case, use keepalived to maintain the vip, and then the user configure the EIP route in the non-bgp switch.
In this mode, external traffic is routed to the VIP node, where it can be programmed with OVS/XDP/LVS to route the EIP to the real backend.
Using LVS(DR mode) as an example, the following diagram illustrates the flow of data:

1 User sends request to eip
2 Switch route request to VIP node
3 VIP node route request to eip though lvs DR mode
4 Dst node response to user directly
Note: Now porter doesn't support this mode, it's just that this article is now a description of porter's future plans, so it's included here
Architecture
The porter design is a cloud native architecture, all BGP, EIP configuration is based on the CRD, then the controller implements the control logic, Daemonset is responsible for setting up the hostnetwork correspondence rules, and programming the forwarding component in VIP mode.

The above diagram shows the architecture of porter, which consists of two main components:

porter manager

Manage and assign EIPs to the LoadBalancer service
Using GoBGP to maintain a BGP connection to an upstream switch, synchronous routing
Monitor CRD changes, dynamically configure GoBGP
Responding to ARP/ICMPv6 NDP request

porter agent

Set DNAT rules to convert port 179 to a port that the GoBGP server listens on.(Some switches must use port 179 to establish
a BGP connection, or maybe port 179 is occupied by Calico)
Configure keepalived according to VIP
Maintain forwarding rules for forwarding components such as OVS/XDP/LVS in VIP mode based on endpoints changes.

High Availability
The porter-manager implements master high availability through the k8s election mechanism. The porter now places all speakers in the manager. After it hangs, the route is not deleted and the porter continues to synchronize the route after it is restored, relying on the router's graceful restart mechanism. In layer2 mode, it relies on arp neigh cache and does not affect existing resolved ip.
Comparison of the three models

BGP
Layer2
VIP

Switch requirements
ECMP/Graceful Restart
none
Manual routing

Performance
High
Lower
NAT(Low) / DR(Medium)

Endpoints
all
one of them
all

Use
Difficult
Easy
Medium

Scenario
Production
Test
Production

Related: https://github.com/kubernetes-retired/contrib/tree/master/keepalived-vip

/close


expose defaultLoad and defaultResolve in middleware

It seem that chaining hooks replace defaultLoad | defaultResolve with next handle , which make it's not possible access defaultLoad and defaultResolve, which is useful for some case. I'm wondering could defaultLoad and defaultResolve be exposed to context.

It's possible to access
default<HookName> at the end of the chain:
--loader b.mjs --loader a.mjs
nextResolve in A will be B, and then nextResolve in B will be defaultResolve.
A loader should defer to next (and thus eventually default) when it can't handle whatever, so A can access defaultResolve through B.

but i want to skip other middleware and just use the defaultLoad and defaultResolve，and use it like utils


az storage blob download-batch fails with 'Read timed out'

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az storage blob download-batch
Errors:
HTTPSConnectionPool(host='connectorssaacc.blob.core.windows.net', port=443): Read timed out.
Traceback (most recent call last):
site-packages/urllib3/contrib/pyopenssl.py, ln 297, in recv_into
    return self.connection.recv_into(*args, **kwargs)
python3.6/site-packages/OpenSSL/SSL.py, ln 1822, in recv_into
    self._raise_ssl_error(self._ssl, result)
python3.6/site-packages/OpenSSL/SSL.py, ln 1622, in _raise_ssl_error
    raise WantReadError()
OpenSSL.SSL.WantReadError

...

storage/v2018_03_28/common/storageclient.py, ln 311, in _perform_request
    raise AzureException(ex.args[0])
azure.common.AzureException: HTTPSConnectionPool(host='connectorssaacc.blob.core.windows.net', port=443): Read timed out.

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az storage blob download-batch -s {} --pattern {} -d {} --account-name {}

Expected Behavior
Environment Summary
Linux-4.18.0-25-generic-x86_64-with-debian-buster-sid
Python 3.6.5
Shell: bash

azure-cli 2.0.66 *

Additional Context

This seems be more likely network connection issue. @Makabata, can you reproduce the issue with --debug in the command? Thanks.

@Makabata Have your problem solved? If you still have connection error, can you show me your debug message with -debug appended?

Hey Zunli, indeed it was a network issue. Thanks for the replay.
On Fri, 2 Aug 2019 at 06:41, Zunli Hu<EMAIL_ADDRESS>wrote:

@Makabata https://github.com/Makabata Have your problem solved? If you
still have connection error, can you show me your debug message with
-debug appended?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Azure/azure-cli/issues/9890?email_source=notifications&email_token=AG55ZBQYF3DL5NE5PJG6UUDQCO3GNA5CNFSM4H7CX7T2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3MR23Y#issuecomment-517545327,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AG55ZBVVBA6P7QZOAWGG4DLQCO3GNANCNFSM4H7CX7TQ
.


feat: add cheatsheet

initially created by @vnamdeo  in the PR https://github.com/ansys/pyansys-cheat-sheet/pull/75

The cheatsheet has been added to the documentation. To build the documentation with the cheatsheet, install Quarto from here and Poppler following the instructions here, then run make doc. If you wish to build the documentation without the cheatsheet, set the environment variable BUILD_CHEATSHEET to "false". please check the artifacts to see the cheatsheet docs https://github.com/ansys/pyworkbench/actions/runs/12407035214


Feature: Add foreign data wrapper

https://wiki.postgresql.org/wiki/Foreign_data_wrappers
starting with postgres_fdw
https://www.postgresql.org/docs/current/postgres-fdw.html

Hey @mingfang, this is on the list here #10, I'm going to close this one as a duplicate.


Carousel indicators without ng-repeat

Hello folks!
I'm not using ng-repeat on my carousel, but I want to use the indicators.
There is any way to do this?
Thanks!

Hello @revolunet
Any update about this issue?
Thanks!

I'll add to the chorus with a "Me too!" -- I can't get this to work either.
Still a great plugin though, even without this capability. Thank you!

+1 in the same boat

Just had the same 'problem' but should be easy to fix by assigning an array to the slides attribute. My code:

        ...

        ...

        ...

        ...

I fixed this issue by changing https://github.com/revolunet/angular-carousel/blob/0.3.10/dist/angular-carousel.js#L66 with indexModel.assign(scope.$parent, index);

Just an update, if the ng-if="slides.length > 1" is not present, it will not work.  Otherwise, remove the $parent.

@dirkgroenen Defining the array in the html makes the indicators visible, but does clicking on the indicator to switch to the relevant slide work for you?

Nope, unfortunately that's the only thing which doesn't work. But I haven't tried anything to make it work since I don't need it for the current project.

I use this method for custom indicators.Hope it helps.
/*in controller.js*/
.controller('carousel',['$scope',function($scope){
    $scope.slides = [2,1,0];
}]);

/*in html*/

First Slide

Second Slide

Third Slide

EggFiredRice, thanx, this works )

This thread helped out helped out a lot!  declaring the carouselIndex did the trick for me.  Thanks!


Update python sdk pom.xml version to 0.5.0-incubating-SNAPSHOT

R: @dhalperi

Closing this. I will go ahead with a new merge instead:
https://github.com/apache/incubator-beam/pull/1690


All <img/> replaced with
import { LazyLoadImage } from 'react-lazy-load-image-component'; // npm i react-lazy-load-image-component

<LazyLoadImage
    alt="..."
    effect="blur"
    src="..." />

The images are not being fully loaded. I think we should remove the blur-effect option.


Fixes for KSM

add KSM image to telemetrydefaults webhook
remove image version from labels, because in some cases it can exceed maximum lenght of value

/lgtm

/test telemetry-operator-build-deploy-kuttl

/lgtm


Add Support Referral System

Hello,
Is it possible to add referral system on peatio? Thanks.

Can you describe an idea in more details? How should it work with KYC in barong? Probably, that issue is more about Barong and registration


Chapter 6 of BDA3

I would like to add this chapter to the main repository.
There are two examples in this chapter:

Example. Comparing Newcomb’s speed of light measurements to the posterior predictive distribution
Example. Checking the assumption of independence in binomial trials

I have used pymc3 to reproduce the results. If anyone has suggestions (either code or English), I'd like to hear them!

Looks good to me - I'll merge tomorrow if there are no other comments. Can you rerun all the cells if you have a chance, to make sure it runs from scratch? I notice the execution numbers are pretty high!

Thanks a bunch @rosgori!
By the way, do you want commit rights on this repository, given that you've contributed all of the BDA material?


[WIP] Fix the oracle hardhat demo

Proposed changes
This PR fixes the oracle hardhat demo
Fixes
If it fixes a bug or resolves a feature request, be sure to link to that issue.
Types of changes
What types of changes does your code introduce? (A breaking change is a fix or feature that would cause existing functionality and APIs to not work as expected.)
Put an x in the box that applies

[ ] Non-breaking fix (non-breaking change which fixes an issue)
[ ] Breaking fix (breaking change which fixes an issue)
[ ] Non-breaking feature (non-breaking change which adds functionality)
[ ] Breaking feature (breaking change which adds functionality)
[ ] Refactor (non-breaking change which changes implementation)
[ ] Messy (mixture of the above - requires explanation!)

Checklist
Put an x in the boxes that apply.

[ ] I have read the CONTRIBUTING doc
[ ] I am making a pull request against the main branch (left side). Also you should start your branch off our main.
[ ] Lint and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have locally run services that could be impacted and they do not present failures derived from my changes

I do not understand the purpose of this PR. The service configuration is correct and needs no changes, assuming that a user runs it using the registries image. This PR among other things removes the participants. How would the service work without participants?
We need the minimum number of changes here. Please close this PR and open a PR that only updates the docs to advise the user how to run the demo using the registries image.

The service configuration is not correct, it contains the http://hardhat:8545 as the ledger RPC which can be only used in the dev mode and we're not using the dev mode for the demo. The issue with the docker host gateway has been fixed on the open autonomy.
We don't need to use the registries image, the demo works fine with the default hardhat image.

Closing this PR as it performs unnecessary changes. Nothing needs to change on the service side. Only the docs need to be updated for the demo to run. Replaced by #52.


Display Stack outputs after executing an update

SAM currently displays the list of outputs, and it could potentially be useful.

Additionally, having a way to retrieve outputs is potentially useful for scripting - e.g. when one stack depends upon another - especially across regions where SSM parameters/exports cannot be used. This should not produce any other output (like the stack status).
myoutput=$(stackmanager get-output -e dev -r us-east-1 --output-name MyOutput)

While it would be possible to build in smarts to automatically read outputs from another stack into parameters that adds a lot of extra complexity (and moves down the road towards defining how configs are arranged like Septre etc.).


Command to sync specific CVE manually

STATIC variables were added to allow running command locally.

We can now call python manage.py syncflaws  CVE-2023-3972. This works because CVEs are aliases in BZ, so it is accepted instead of id.

I am running:
$ . .env; export OSIDB_DB_PASSWORD BZIMPORT_BZ_API_KEY; OSIDB_DB_PORT=$( podman port osidb-data | awk -F':' '/5432/ { print $2 }'); python manage.py syncflaws CVE-2023-3972 --settings=config.settings_shell

Without STATIC part, I get:
django.core.exceptions.ImproperlyConfigured: Empty static prefix not permitted

@Elkasitu I did a rebase, but I am not sure if it is correct. Can you please check?

@skontar try doing git pull --rebase origin master and changing the commit message, it looks like a merge commit

If this needs reconfirmation, still LGTM

See https://github.com/RedHatProductSecurity/osidb/pull/378


chore(ssa refactor): Add method to handle black box functions in Acir gen

Description
This will handle calls to black box functions

Problem*

Resolves
Summary*

This PR sets out to
Example

Before:

After:

Documentation

[ ] This PR requires documentation updates when merged.

[ ] I will submit a noir-lang/docs PR.

[ ] I will request for and support Dev Rel's help in documenting this PR.

Additional Context

PR Checklist*

[ ] I have tested the changes locally.
[ ] I have formatted the changes with Prettier and/or cargo fmt on default settings.

Still a WIP while :

I ponder over the API absraction we want to use for this. (Left some TODOs to specify which parts I plan to resolve)
It handles blackbox functions, but we also have builtins which are not handled.
An example calling intrinsics and builtins are missing
Clean up TODOs


Kitematic is terrible.

Expected behavior
Postgres container created
Actual behavior
Error message with a link to here
Information about the Issue
Kitematic seems to be not worth using, ever.
Steps to reproduce the behavior

Click the "+ NEW" button to go to the new container page
Click the "CREATE" button on the Postgres tile
???
Prof- ... error

I dont know what are you mean.

Not seeing the version number anywhere.

Updated and fixed. I rescind my comments about Kitematic being terrible, for now.


MudSelect when opened doesn't scroll to previous selected item

Bug type
Component
Component name
MudSelect
What happened?
If we have a long list of items and have selected on item down the list, when reopening the select it won't focus on the selected item (it will focus on the top item).
Expected behavior
Expect this to scroll to the selected item (similar to what happens on the MudDatePicker on the year selection).
Reproduction link
https://try.mudblazor.com/snippet/wkwbuGvmoNXcUUWe
Reproduction steps

Select a state down the list (e.g. Iowa)
Open the select again (it won't scroll to the correct element)

Relevant log output
No response
Version (bug)
6.0.5
Version (working)
No response
What browsers are you seeing the problem on?
Chrome
On what operating system are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I believe that the issue is from the OpenMenu here https://github.com/MudBlazor/MudBlazor/blob/84dee448b7d4beeb365decc4b9fa3ed224f03ccc/src/MudBlazor/Components/Select/MudSelect.razor.cs#L662
It shouldn't really just iterate 1 (as it does when navigating with the keys), but rather do a difference between the element position and the top of the parent.

We already prepared PR at #3785. Could you check the video that is the what you are looking for?

that's it spot on

Sadly this fix does not work with longer lists as demonstrated here: https://try.mudblazor.com/snippet/cEmGuwQaIGMSDSpz

I had the same problem (#4004). The reason is the implementation of the IMudScrollManager.
In this ticket, I already have made a fix. It with this versions of scrollToList (in mudScrollManager.js)
   scrollToListItem (elementId, increment, onEdges) {
        let element = document.getElementById(elementId);
        if (element) {
            element.parentElement.scrollTop = element.offsetTop
        }
    }

But I'm still investigating how to fix the ticket in a more general way.
With the same ticket, I think it is required to think about virtualization, when using larger lists. I'm working on a proposal (merge request).

https://github.com/MudBlazor/MudBlazor/pull/4005


useColorScheme hook

Summary:
A new useColorScheme hook is provided as the preferred way of accessing the user's preferred color scheme (aka Dark Mode).
Changelog:
[General] [Added] - useColorScheme hook
Differential Revision: D16860954

This is an exported version of the internal diff stack that starts at D16699954, to test changes in open source.


App crash when binding keyExtractor

Current behavior
I tried converting Flatlist to Flashlist
          <FlashList
            data={messages}
            estimatedItemSize={normalize(80)}
            renderItem={renderItemMessage}
            ref={scrollViewRef}
            inverted
            keyExtractor={(message) => message._id.toString()}
          />

The first time, it works fine.
But the crash happens after I add a message to messages.
With Flatlist,  the crash doesn't happen
https://user-images.githubusercontent.com/9895294/193225856-cdc50fd2-b535-45a2-ac17-387a437984a0.mov

Expected behavior

To Reproduce

Platform:

[ ] iOS

Environment

1.3.0

I followed the steps for moving from using SectionList to FlashList: https://shopify.github.io/flash-list/docs/guides/section-list
But now our keyExtractor seems to cause crashes at this point due to toString()
TypeError: Cannot read property 'toString' of undefined
getStableId = function (index) {
                // We assume `keyExtractor` function will never change from being `null | undefined` to defined and vice versa.
                // Similarly, data should never be `null | undefined` when `getStableId` is called.
                return flashList.props.keyExtractor(flashList.props.data[index], index).toString();
            };


Update 2022.3 to the stable release

Use the stable 2022.3 release
Upgrade the supported IDE versions so that oldest stable is 2022.2 and the latest stable is 2022.3

Recovery Request


Hazelcast 3.4.0 support

Is your feature request related to a problem? Please describe.
Hazelcast currently is not working with version 3.4.0 (also 4.3.6) as some metadata ist missing.
Describe the solution you'd like
Add missing metadata for supporting hazelcast 3.4.0.
Describe alternatives you've considered
Don't update metadata: hazelcast no longer works in native images from at least version 4.3.6
Additional context
We currently are trying to run a spring-cloud-gateway with spring-session-hazelcast and hazelcast (3.4.0) as native image.
While starting there are some hazelcast reflections missing.

To solve this i already collected metadata for the above mentioned application.
Then filtered the metadata for com.hazelcast.** which led to following raw metadata:
filtered-metadata.zip
After a bit of working around and reducing the metadata i got our application running with following:
reflection-config.json
[
  {
    "condition": {
      "typeReachable": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueProducerIndexField"
    },
    "name": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueProducerIndexField",
    "fields": [
      {
        "name": "consumerIndex"
      }
    ]
  },
  {
    "condition": {
      "typeReachable": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueProducerIndexField"
    },
    "name": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueProducerIndexField",
    "fields": [
      {
        "name": "producerIndex"
      }
    ]
  },
  {
    "condition": {
      "typeReachable": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueConsumerIndexField"
    },
    "name": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueConsumerIndexField",
    "fields": [
      {
        "name": "consumerIndex"
      }
    ]
  },
  {
    "condition": {
      "typeReachable": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueConsumerIndexField"
    },
    "name": "com.hazelcast.shaded.org.jctools.queues.MpmcArrayQueueConsumerIndexField",
    "fields": [
      {
        "name": "producerIndex"
      }
    ]
  },
  {
    "condition": {
      "typeReachable": "com.hazelcast.instance.BuildInfoProvider"
    },
    "name": "com.hazelcast.instance.GeneratedBuildProperties",
    "fields": [
      {
        "name": "ARTIFACT_ID"
      }
    ]
  },
  {
    "condition": {
      "typeReachable": "com.hazelcast.internal.metrics.impl.MetricsCollectionCycle"
    },
    "name": "com.hazelcast.internal.partition.impl.MigrationStats",
    "methods": [
      {
        "name": "getElapsedDestinationCommitTimeNanoseconds",
        "parameterTypes": []
      },
      {
        "name": "getElapsedMigrationOperationTimeNanoseconds",
        "parameterTypes": []
      },
      {
        "name": "getElapsedMigrationTimeNanoseconds",
        "parameterTypes": []
      },
      {
        "name": "getTotalElapsedDestinationCommitTimeNanoseconds",
        "parameterTypes": []
      },
      {
        "name": "getTotalElapsedMigrationOperationTimeNanoseconds",
        "parameterTypes": []
      },
      {
        "name": "getTotalElapsedMigrationTimeNanoseconds",
        "parameterTypes": []
      }
    ]
  }
]

Hey @simonhir, here is our guide on how to contribute metadata: https://github.com/oracle/graalvm-reachability-metadata/blob/master/CONTRIBUTING.md
I guess you will be able to find answers to all your questions there. If something remains unclear, feel free to ask

Hey @simonhir, I just wanted to check if you had any troubles making a pull request according to our docs. It should be pretty simple, just:

clone the repo
generate metadata and test stubs using ./gradlew scaffold --coordinates com.example:my-library:1.0.0 (just change coordinates to your library coordinates)
add your tests into generated test file
then you can run your test with ./gradlew test -Pcoordinates=com.example:my-library:1.0.0
to generate metadata please see this. Basically you have to add one config block into build.gradle (see) and perform ./gradlew -Pagent (for more details and how to copy metadata to the certain place, please see this)

Here is an example of a pull request: https://github.com/oracle/graalvm-reachability-metadata/pull/462

Hey @dnestoro
thank you for you explanation.
Hadn't time to do it yet. Hope to get to it next week.

Unfortunately, I still haven't had time due to other projects. However, I should definitely be able to do this by mid-October and then implement the whole thing directly for the latest version.

Looked in today but couldn't get it working. Has nothing to do with the above instructions but with the Hazelcast tests themselves.
What i tried to do is copy and modify the existing tests, as i never worked with Hazelcast itself but always through spring-session-hazelcast and thought that must be the easiest way.
The execution of the tests brought me to multiple problems:

They use java enterprise features (Which i don't have)
The tests try to connect via my network ip address instead of localhost, which isn't listening (couldn't got that fixed)
Deprecation of Portable Serialization (which i could refactor but breaks the tests and as i don't work with Hazelcast itself I can't assess whether the changes are equivalent)

All in all, it probably makes much more sense for someone who is familiar with Hazelcast to do this.


@Html.ReactInitJavaScript() and Single Page Apps

Do you think is possible to use @Html.ReactInitJavaScript()  in SPA pages?
In our case we don't re render the full page, we use PJax https://github.com/defunkt/jquery-pjax.
So before using React.net we make something like this
//Function to Render the React Component
function Render() {
    var element = document.getElementById('elementId');
    if (element) {
        ReactDOM.render(
        <Component/>,  element);
    }
}

//Render When full reload
$(function () {
    Render();
});

//Render When changed page in SPA app
$(document).on('pjax:end ready', function (event) {
    Render();
});

Using @Html.ReactInitJavaScript() the  ReactDOM.render code is auto generated. And is generated only with the components rendered server side in this current page. So how can I make it render for all componens in the page, even when not rendered in the current page?
Or whats the recommended approach to using this library in SPA pages?
Thanks!!

It was very simple. Just call @Html.ReactInitJavaScript() in every page that uses React. Not do that in the shared scripts.


Requests issue with PyInstaller: Import error: No module named ordered_dict

I'm trying to create executable for my script, which uses requests module.
When running I get error:

Import error: No module named ordered_dict

After further inspection the problem occurs in requests/compat.py file, on:
from .packages.urllib3.packages.ordered_dict import OrderedDict
I think the the problem is fact, that module is imported from subdirectory, but in my environment requests/packages does not contain other modules, as they are imported externally.
requests/packages/init.py contains some workaround that allows to correcly import required libraries:

'''
Debian and other distributions "unbundle" requests' vendored dependencies, and
rewrite all imports to use the global versions of urllib3 and chardet.
The problem with this is that not only requests itself imports those
dependencies, but third-party code outside of the distros' control too.
In reaction to these problems, the distro maintainers replaced
requests.packages with a magical "stub module" that imports the correct
modules. The implementations were varying in quality and all had severe
problems. For example, a symlink (or hardlink) that links the correct modules
into place introduces problems regarding object identity, since you now have
two modules in sys.modules with the same API, but different identities::
requests.packages.urllib3 is not urllib3
With version 2.5.2, requests started to maintain its own stub, so that
distro-specific breakage would be reduced to a minimum, even though the whole
issue is not requests' fault in the first place. See
https://github.com/kennethreitz/requests/pull/2375 for the corresponding pull
request.'''

from __future__ import absolute_import
import sys

try:
    from . import urllib3
except ImportError:
    import urllib3
    sys.modules['%s.urllib3' % __name__] = urllib3

try:
    from . import chardet
except ImportError:
    import chardet
    sys.modules['%s.chardet' % __name__] = chardet

But PyInstaller doesn't seem to recognize it. Is there an option/hook to use this configuration?
I'm using:
Ubuntu Mate, 16.04.2 LTS
requests - 2.9.1 - installed through pip
Pyinstaller - 3.2.1 - compiled from source

This is a PyInstaller problem, not a Requests one. When you install Requests from pip, it comes with the packages subdirectory populated. If it's not being populated when you use PyInstaller, then PyInstaller has lost track of what code it needs. You'll need to take it up with the maintainers of PyInstaller.


Oauth application per organization

We want applications to be registered against organizations with a maximum number of seats. That application should only be able to be used with user of any registered org, up to the maximum number of app seats.

Also, users of an organization should be able to see/access some of the apps created by other members of the organization. I'm thinking about the new dashboard, where some users must see apps that have been registered in their organizations.


hover dataset

I guess the hover dataset verdict should be

targed as two classes

Thank you so much for pointing this out! We will modify our paper accordingly.


Default Kubernetes storage detection logic should not run on Docker environments

In the 2.17 release, some storage class detection logic is being run when you connect an endpoint.
This results in the following error when connecting an endpoint that is not a Kubernetes one, e.g. local Docker:
2023/02/01 02:19PM ERR [github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:173](http://github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:173) > error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection","line":"169","source":"endpointutils.go"},{"func":"(*Handler).endpointInspect","line":"66","source":"endpoint_inspect.go"},{"func":"LoggerHandler.ServeHTTP","line":"23","source":"error.go"},{"func":"LogUserActivityWithContext.func1.1","line":"37","source":"useractivity.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwUpgradeToRestrictedRequest.func1","line":"327","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwCheckPortainerAuthorizations.func1","line":"282","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwCheckLicense.func1","line":"254","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*RequestBouncer).mwAuthenticateFirst.func1","line":"375","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"mwSecureHeaders.func1","line":"479","source":"bouncer.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*Router).ServeHTTP","line":"210","source":"mux.go"},{"func":"StripPrefix.func1","line":"2152","source":"server.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*Handler).ServeHTTP","line":"223","source":"handler.go"},{"func":"(*OfflineGate).WaitingMiddleware.func1","line":"39","source":"offlinegate.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"(*Monitor).WithRedirect.func1","line":"117","source":"admin_monitor.go"},{"func":"HandlerFunc.ServeHTTP","line":"2109","source":"server.go"},{"func":"serverHandler.ServeHTTP","line":"2947","source":"server.go"},{"func":"(*conn).serve","line":"1991","source":"server.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}] 2023/02/01 02:19PM INF [github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:176](http://github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:176) > retrying storage detection in 30 seconds | 2023/02/01 02:20PM INF [github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140](http://github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140) > unable to create Kubernetes client for initial storage detection | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}] 2023/02/01 02:20PM ERR [github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179](http://github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179) > final error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}] 2023/02/01 02:20PM INF [github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140](http://github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:140) > unable to create Kubernetes client for initial storage detection | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}] 2023/02/01 02:20PM ERR [github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179](http://github.com/portainer/portainer-ee/api/internal/endpointutils/endpointutils.go:179) > final error while detecting storage classes | error="unsupported environment type" stack_trace=[{"func":"(*ClientFactory).CreateClient","line":"158","source":"client.go"},{"func":"(*ClientFactory).createCachedAdminKubeClient","line":"133","source":"client.go"},{"func":"(*ClientFactory).GetKubeClient","line":"78","source":"client.go"},{"func":"storageDetect","line":"138","source":"endpointutils.go"},{"func":"InitialStorageDetection.func1","line":"178","source":"endpointutils.go"},{"func":"goexit","line":"1594","source":"asm_amd64.s"}]

Reported by users in #8461.