Upscaling OpenShift application nodes

What does this PR do?
It scales up number of application nodes to the target number predefined by the user (when not defined, the current number of app nodes is increased by 1).
How should this be manually tested?

Run oc get nodes on master node to get the current number of nodes, remember the result
Change mode to executable for ./openshift-ansible-contrib/playbooks/upscaling_run.sh
Run the following script from directory where the inventory, openshift-ansible-contrib and openshift-ansible directories are located
./openshift-ansible-contrib/playbooks/upscaling_run.sh -i <relative path to inventory directory> [-e nodes=<new number of nodes>] [-h] [-v]

Notes:
a) if you enter a lower number than the current number of nodes, the upscaling will fail with a corresponding message (intended)
b) if verbosity is set, -vvv mode is applied
c) -e is supposed to look like when running ansible, therefore key=value is expected
d) if you renamed openshift-ansible-contrib directory, you must change the name in the script as well (TODO: should I customise it in the future?)

Run oc get nodes on master node again to check that number of nodes has increased to predefined value or check openstack_num_nodes value in master node inventory
Try to run a container on one of the newly deployed nodes to test their availability

Is there a relevant Issue open for this?
--
Who would you like to review this?
cc: @tomassedovic @bogdando @tzumainn  PTAL

@bogdando When I prompt for openstack_num_nodes, instead of the current number of app nodes in OpenShift, it returns the value of said variable in my inventory, which is not updated after a successful deployment, at least not in my experience.

@Tlacenka do you mean that the initial openstack_num_nodes value might change because of the autoscaling events or the like? Then setting a fact to evaluate it totally makes sens to me!

@bogdando  No, that's not what I mean.
I now tried printing openstack_num_nodes value.
Note: openstack server list shows me 3 app nodes, even the broken oc get nodes shows me 5 entries (even if it had counted all other types of nodes, it would have only been 4) so that means that the nodes are there.
But, using the following playbook:
---
- hosts: masters
  tasks:
  - debug:
      var: openstack_num_nodes

and running it like so:
ansible-playbook --user openshift --private-key ~/.ssh/openshift -i <inventory path> <file containing the playbook>

I get this output:
ok: [master-0.openshift.example.com] => {
    "openstack_num_nodes": 1
}

This value is the value set in my all.yml file in my inventory, so if I used this value before rerunning provisioning + OpenShift installation, I would have to count on the user having the right value in his inventory file. Therefore, I concluded that using oc get nodes is the only way of getting the actual number of nodes.
Correct me if I'm wrong.

I thinks that the openstack_num_nodes should be the only source of truth then. It should be fixed to match real app nodes numbers, and oc get nodes should be omitted.

openstack server list does not know about app nodes AFAICT. The node labels we want for app nodes only makes sense, right @tomassedovic ? could you please comment on that topic?

when I deployed it now with it checking both the number oc get nodes returns and current openstack_num_nodes value on masters host, only oc get nodes returned the right value...so not sure if I'm doing it wrong or if it's the desired behaviour

@Tlacenka can you paste the output of oc get nodes, openstack server list and the openstack_num_nodes variable? Just so we have something concrete to look at.
After the initial deployment, openstack_num_nodes should be equal to the number of app nodes (so without infra and masters). If it's not, that's super weird and we ought to figure out why.
So what @bogdando's trying to say is to make openstack_num_nodes the value that always defines the number of nodes, right? So scaling would always involve changing the inventory (say by increasing openstack_num_nodes) and then running the provisioning & openshift-ansible playbooks, right?
I think that's worth exploring, but then we really need to get to the bottom of why the values seem to diverge.

So what @bogdando's trying to say is to make openstack_num_nodes the value that always defines the number of nodes, right? So scaling would always involve changing the inventory (say by increasing openstack_num_nodes) and then running the provisioning & openshift-ansible playbooks, right?

Correct. Thank you for clarifying this @tomassedovic !

I think that's worth exploring, but then we really need to get to the bottom of why the values seem to diverge.

It think it diverge exactly because of the reasons you've mentioned: oc get nodes returns info not only for app nodes, but masters and infras. And openstack server list adds dns nodes there. While all we need to scale up/down the app nodes (and to look for) is only the openstack_num_nodes! It is a nice to update the description for the latter, to outline that in fact it is a count for app nodes only.

That's true, but the playbook adds a grep: oc get nodes | grep app-node -c and this should return the same value as openstack_num_nodes unless the cluster was changed outside of ansible.

@Tlacenka can you paste the output of oc get nodes, openstack server list and the openstack_num_nodes variable? Just so we have something concrete to look at.

openstack server list output:

+----------------------+----------------------+--------+----------------------+-------------------------+
| ID                   | Name                 | Status | Networks             | Image Name              |
+----------------------+----------------------+--------+----------------------+-------------------------+
| f3eb6212-284a-4880-8 | app-node-1.openshift | ACTIVE | openshift-ansible-   | rhel73                  |
| 0c1-d7cf9b1a6fa1     | .example.com         |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,    |                         |
|                      |                      |        | <IP_ADDRESS>        |                         |
| 63a118e7-e728-4627   | app-node-2.openshift | ACTIVE | openshift-ansible-   | rhel73                  |
| -a81e-14cbbf93f55d   | .example.com         |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,    |                         |
|                      |                      |        | <IP_ADDRESS>        |                         |
| 44a0b14d-f54e-4371-9 | app-node-3.openshift | ACTIVE | openshift-ansible-   | rhel73                  |
| 4d9-d3fbebc15612     | .example.com         |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,   |                         |
|                      |                      |        | <IP_ADDRESS>         |                         |
| 6e8b5cee-32dc-4a82   | infranode-0.openshif | ACTIVE | openshift-ansible-   | rhel73                  |
| -a8bd-d8e8635da617   | t.example.com        |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,    |                         |
|                      |                      |        | <IP_ADDRESS>         |                         |
| 5353abc2-e999-4126-8 | dns-0.openshift.exam | ACTIVE | openshift-ansible-   | rhel73                  |
| 164-0e111440bde5     | ple.com              |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,    |                         |
|                      |                      |        | <IP_ADDRESS>        |                         |
| 69d28494-646e-43e7   | master-0.openshift.e | ACTIVE | openshift-ansible-   | rhel73                  |
| -80ed-7b146d608e87   | xample.com           |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,    |                         |
|                      |                      |        | <IP_ADDRESS>         |                         |
| 03cafd40-91ec-4f00   | app-node-0.openshift | ACTIVE | openshift-ansible-   | rhel73                  |
| -b62b-274422e15c1d   | .example.com         |        | openshift.example    |                         |
|                      |                      |        | .com-                |                         |
|                      |                      |        | net=<IP_ADDRESS>,    |                         |
|                      |                      |        | <IP_ADDRESS>         |                         |
| 5f2b2cfa-16a8-412a-  | workaround           | ACTIVE | private=<IP_ADDRESS>, | CentOS-7-x86_64-Generic |
| a5a3-1ddfb5ba0b21    |                      |        | <IP_ADDRESS>        | Cloud-1703              |
+----------------------+----------------------+--------+----------------------+-------------------------+

oc get nodes output:

NAME                                STATUS                     AGE
app-node-0.openshift.example.com    Ready                      1d
app-node-1.openshift.example.com    Ready                      1d
app-node-2.openshift.example.com    Ready                      1d
app-node-3.openshift.example.com    Ready                      1d
infranode-0.openshift.example.com   Ready                      1d
master-0.openshift.example.com      Ready,SchedulingDisabled   1d

oc get nodes | grep app-node -c output is 4.

when running the following playbook

---
- hosts: masters
  tasks:
  - debug:
      var: openstack_num_nodes

- hosts: localhost
  tasks:
  - debug:
      var: openstack_num_nodes

the output is:
PLAY [masters] ******************************************************************************************

TASK [Gathering Facts] **********************************************************************************
ok: [master-0.openshift.example.com]

TASK [debug] ********************************************************************************************
ok: [master-0.openshift.example.com] => {
    "openstack_num_nodes": 1
}

PLAY [localhost] ****************************************************************************************

TASK [Gathering Facts] **********************************************************************************
ok: [localhost]

TASK [debug] ********************************************************************************************
ok: [localhost] => {
    "openstack_num_nodes": 1
}

the only way I was able to update the variable for the provisioning and installation was to set said value to the defined one right before running these playbooks (line 20 in the playbook file).
As of now, the whole playbook runs successfully up to the point where the equivalence of nodes (new value defined by used) and openstack_num_nodes var is checked. Turns out that openstack_num_nodes returned to its previous value by now. nodes and the result of oc get nodes | grep ... return the same value for me.

oc get nodes | grep app-node -c and this should return the same value as openstack_num_nodes
@tomassedovic @Tlacenka that works for me, although I do not understand the case why we want to call oc instead of thinking of the inventory vars as the only source of truth. Anyway, please add an assertion to stop the playbook with an error, if those was found unexpectedly not equal

@bogdando
It's already there, the current playbook ends with an error for me. The said assert starts at line 45 in the scale-up.yaml file.

@bogdando So have you tried  upscaling your development?
If it didn't fail on comparing nodes and openstack_num_nodes, it's different from my behaviour and it should be explored.
If it fails for you as well, we need to find out what's happening before this PR can be merged and potentially remove the check in order for it to succeed before merging.

@Tlacenka not yet, I will try it out shortly

So, I came to a conclusion that the process needs to be split in two, therefore I added a bash script that runs both playbooks. Manual is updated above.

In the readme, please also document that it requires ansible_become: true in group_vars/OSEv3.yml.
I forgot to update my inventory and while the normal deployment works fine, the scaling really needs that value explicitly.

So in my testing, the nodes got created, but when I used an existing app and tried to scale its pods, they while they got scheduled to the newly created node, they never ended up running there.
Did you try to schedule a workload on the new nodes?

Oh, one more thing, this post-scaling check failed:
TASK [Check that the actual number of nodes matches defined value] ****************************************************************************************************************************
Tuesday 01 August 2017  12:56:55 +0000 (0:00:00.364)       0:16:13.840 ********
fatal: [master-0.openshift.example.com]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'node
s' is undefined\n\nThe error appears to have been in '/home/centos/openshift-ansible-contrib/playbooks/upscaling_scale-up.yaml': line 16, column 5, but may\nbe elsewhere in the file depending
 on the exact syntax problem.\n\nThe offending line appears to be:\n\n    register: oc_new_result\n  - name: Check that the actual number of nodes matches defined value\n    ^ here\n"}

I think the upscaling_scale-up.yaml playbook should say {{ oc_new_result }} instead of {{ nodes }}.

@tomassedovic
I finished running the deployment (successfully) just now and passing -e nodes=N to the second playbook (upscaling_scale-up.yaml) seems to be enough for me to use nodes variable there. It is strange that it doesn't work for you.
I tried running a pod on the newly created node - it shows the pod on the app node but doesn't show it on master node, which is also strange.

Oh, I think I get why nodes was a problem for me: I didn't pass -e nodes=N but instead relied on the default "increment by one" behaviour. Which means that the nodes var was never set for me.
Which means the shell script should either disallow that or make it work.

@tomassedovic

there are 2 usecases: one is manual scaling -- where we shouldn't really update the inventory or do anything weird like that

For autoscaling, it makes sense to add another inventory var, like auto_scale: False (defaults) that makes provision and deploy playbooks to completely ignore nodes counts and always evaluate it runtime. You never know how your cluster grows or shrinks. It may be doing so, while you're in the middle of a playbook execution.
For manual scaling, as we all agreed, it seems, let's not update inventory files stored on disk, and basically may be a part of a user repository. Unless we own the whole pipeline, like generating inventory, submitting changes to it on code review etc. Let's just document for users doing manual scaling up/down to update inventory groupvars manually.

@bogdando

Enabling it makes provision and deploy playbooks to completely ignore nodes counts and always evaluate it runtime.

I found out that the values are being extracted at this point in openshift-ansible-contrib. How should it evaluate the counts other than from the variable?

As "evaluate it runtime" I mean only using the outputs of the oc commands

if you mean oc get nodes, the hostnames customisation effectively disables that as now the user can change app-node to literally anything

@Tlacenka oc get nodes --show-labels should always give the correct numbers for app nodes identified by tags. @tomassedovic thoughts?

@Tlacenka end to end CI: https://travis-ci.org/openshift/openshift-ansible-contrib/builds/267986163

@Tlacenka how far did you test this? After scaling up, I tried to run the good old cake php app and the image push failed. Did you see anything like it?
OK (1 test, 1 assertion)
Pushing image <IP_ADDRESS>:5000/test/cakephp-mysql-example:latest ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Warning: Push failed, retrying in 5s ...
Registry server Address:
Registry server User Name: serviceaccount
Registry server Email<EMAIL_ADDRESS>Registry server Password: <<non-empty>>
error: build error: Failed to push image: After retrying 6 times, Push image still failed

@tomassedovic since the openshift-ansible problem isn't afaik fixed yet and I did not use the last working commit cause...I am dumb, I only tested the deployment (post-deployment part failed at pushing image as usual...so isn't the error you are seeing related to that as well?)

@Tlacenka yeah, but the error is different and I was using a working branch of openshift-ansible.

@Tlacenka FYI if you pull the latest openshift-ansible, it should work agai.

@tomassedovic so, I tried the deployment again with the right openshift-ansible (hopefully).

When I tried scaling up without an existing deployment, it was successful and the cakephp app was created and running.
However, when I tried the same with an existing deployment, it failed the same way yours did. No clue why.

note: still in progress, I need to do some testing with the openshift-ansible scaleup playbook

I'll run the e2e CI and we can merge it afterwards.

@Tlacenka can you please merge master again? We've had a CI breakage 2 days ago and this pull request doesn't seem to have the fix in.


Multi step pipeline failed on step 741c7ff2-eff5-47b2-bf62-2b410d65c96b

We're having some issues with the workspaces being created. This is a brand new deployment within a dedicated Azure Subscription/Tenant. We have successfully deployed the base configuration and the update worked, its just when we deploy the workspaces that we get the updating_failed error.
Resource Id
: 467e7b19-9fac-4481-bd1c-e349f9edff4d
Resource Path
: /workspaces/7c769b3f-6c33-4b32-b7a5-8f117bafc811/workspace-services/467e7b19-9fac-4481-bd1c-e349f9edff4d
Resource Version
: 3
Status
: updating_failed
Action
: upgrade
Message
: Multi step pipeline failed on step 741c7ff2-eff5-47b2-bf62-2b410d65c96b
Created
: Wed Nov 16 2022 11:00:38 GMT+0000 (4 hours ago)
Updated
: Wed Nov 16 2022 11:01:00 GMT+0000 (4 hours ago)
User
: removed

Can you get the full operation logs via the API at /api/docs. You will need the workspace ID and operation ID.

@marrobi thanks for the quick response,  which endpoints should we call to get the logs. The /operations one does not require parameters and just returns some high level info

Not in front of a computer, but believe /workspaces/<workspace_id>/operations/<operation_id>

The workspace creation was successful (so when I call /workspaces/<workspace_id>/operations/<operation_id> I get a successful entry) , we get the error when creating a workspace service. Is there a way to query the workspace service operation, thanks

Apologies.
Yes, each workspace has an API at '/api/workspaces/<workspace_id>/docs`.

Thats a swagger page that should load - then should click authorise in swagger? Have you authorised?
A screen shot would be useful.

Yea that's what I expected - a Swagger page that I can then authorise in (like the other /docs endpoint) and call the available methods. Screenshot attached

Hmm, somehow you have been directed to an Azure Websites URL - the URL you should be using will be an App Gateway address ending in cloudapp.azure.com or similar.

Thanks, I have worked out the correct url and was able to get the logs for one of the failed workspace service operations. I have attached the responses from the workspace service operations endpoint for the 3 workspace services that I tried to create.
failed_operations_response.zip


Remove swap functionality on reindex

This will also remove the deletion of the index. This is a hotfix pending a more permanent solution.

Lazy man:
for x in doc/src/sphinx/conf.py project/Build.scala public/swagger.yml; do sed -i~ 's/1.12.1/1.12.2/g' $x; done


Add .travis.yml for automatic deployment

Hi,
Before merging, it would be best to enable travis for this repository and give the "pyqtconsole" user access rights on PyPI.
It does not perform any tests so far (running at least pyflakes would be good in the future to prevent typo's etc, but some changes are needed for that).
Many thanks,
Thomas

Hey !
Alright, thanks for taking care of setting up this. Travis CI should be activated now and pyqtconsole have beend added as maintainer. By the way whats your PyPI username ?
Cheers,
Marcus

Oh, and yes pyflakes or pylint would be a nice addition as well.

Awesome! My PyPI username is coldfix.
I will work on pyflakes/pylint checks shortly then.


New Translation: {fr-FR}

Some keywords were not translated into French so I have translated all keywords into French.
fr-FR.zip
for the README.md file:
My name: Fredatgithub
The link to my Github profile: https://github.com/fredatgithub

I have changed the escape quote sign, here is the new correct file:
fr-FR.zip

@all-contributors please add @fredatgithub for translation.

@all-contributors please add @fredatgithub for translation.

Hi @fredatgithub,
thanks for the contribute!

you are welcome


PDOException: SQLSTATE[42000]

PDOException: SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes in C:\xampp\htdocs\scat-master\vendor\robmorgan\phinx\src\Phinx\Db\Adapter\PdoAdapter.php:167
error on Migration command running
$ vendor/bin/phinx migrate
Phinx by CakePHP - https://phinx.org. 0.10.8
using config file .\phinx.yml
using config parser yaml
using migration paths

C:\xampp\htdocs\Road&story\scat-master\db\migrations
using seed paths
warning no environment specified, defaulting to: db
using adapter mysql
using database scat_db

==<PHONE_NUMBER>2546 InitialSetup: migrating
PDOException: SQLSTATE[42000]: and so on error

What version of MySQL are you using?

Apache/2.4.38, PHP/7.3.3, phpmyadmin 4.8.5, Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407

Scat requires MySQL 8, this is now documented in the README.


Issues with content files without front matter markers

A corner case I see in some tests, but right now a content file with no front matter must look like this to work:

---

---
**Content here**

This issue has been automatically marked as stale because it has not been commented on for at least four months.
The resources of the Hugo team are limited, and so we are asking for your help.
If this is a bug and you can still reproduce this error on the master branch, please reply with all of the information you have about it in order to keep the issue open.
If this is a feature request, and you feel that it is still valuable, please open a proposal at https://discuss.gohugo.io/.
This issue will automatically be closed in four months if no further activity occurs. Thank you for all your contributions.

Note/Update: This issue is marked as stale, and I may have said something earlier about "opening a thread on the discussion forum". Please don't.
If this is a bug and you can still reproduce this error on the latest release or the master branch, please reply with all of the information you have about it in order to keep the issue open.
If this is a feature request, and you feel that it is still relevant and valuable, please tell us why.


Unable to fetch modbus registers with aurora_fetch: "execution expired (ModBus::Errors::ModBusTimeout)"

First off, really handy tool - thanks for releasing it.
I've had some small successes querying a limited number of registers and have successfully gotten data back:
$ aurora_fetch /dev/ttyUSB0 745-746

Heating Set Point (745): 62.0°F
Cooling Set Point (746): 75.0°F

Unfortunately, when I try to query a larger number of registers, I get the following ModBus::Errors::ModBusTimeout errors:
$ aurora_fetch /dev/ttyUSB0 valid --yaml > myheatpump.yml

I, [2023-12-27T18:23:08.392344 #909]  INFO -- : Fetching register(s) 0..100...
Traceback (most recent call last):
	24: from /usr/local/bin/aurora_fetch:23:in `<main>'
	23: from /usr/local/bin/aurora_fetch:23:in `load'
	22: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/exe/aurora_fetch:60:in `<top (required)>'
	21: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:73:in `query_registers'
	20: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:73:in `each'
	19: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:74:in `block in query_registers'
	18: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:81:in `rescue in block in query_registers'
	17: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:81:in `each'
	16: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:82:in `block (2 levels) in query_registers'
	15: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:91:in `rescue in block (2 levels) in query_registers'
	14: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:91:in `each'
	13: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:93:in `block (3 levels) in query_registers'
	12: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:26:in `[]'
	11: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/proxy.rb:13:in `[]'
	10: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:178:in `read_holding_register'
	 9: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:174:in `read_holding_registers'
	 8: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:267:in `query'
	 7: from /usr/lib/ruby/2.7.0/timeout.rb:105:in `timeout'
	 6: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:269:in `block in query'
	 5: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu_slave.rb:32:in `read_pdu'
	 4: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:35:in `read_rtu_response'
	 3: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu.rb:43:in `read'
	 2: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu.rb:43:in `loop'
	 1: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu.rb:47:in `block in read'
/var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu.rb:47:in `wait_readable': execution expired (ModBus::Errors::ModBusTimeout)
	17: from /usr/local/bin/aurora_fetch:23:in `<main>'
	16: from /usr/local/bin/aurora_fetch:23:in `load'
	15: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/exe/aurora_fetch:60:in `<top (required)>'
	14: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:73:in `query_registers'
	13: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:73:in `each'
	12: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:74:in `block in query_registers'
	11: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:81:in `rescue in block in query_registers'
	10: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:81:in `each'
	 9: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:82:in `block (2 levels) in query_registers'
	 8: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:91:in `rescue in block (2 levels) in query_registers'
	 7: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:91:in `each'
	 6: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:93:in `block (3 levels) in query_registers'
	 5: from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:26:in `[]'
	 4: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/proxy.rb:13:in `[]'
	 3: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:178:in `read_holding_register'
	 2: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:174:in `read_holding_registers'
	 1: from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:266:in `query'
/var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:275:in `rescue in query': Timed out during read attempt (ModBus::Errors::ModBusTimeout)

Is there something I can do to extend the timeout period? I believe I'm executing the aurora_fetch command correctly, and am trying to follow the section of the README.md that begins with "This is the easiest way to make a "dump" of your system to send if you're having problems".
Please let me know if there's any other information I can provide to assist with debugging. This looks like a really useful tool! To that end, here is some other generic information you might find useful:
$ cat /etc/os-release

PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

$ uname -a

Linux rpi-waterfurnace 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

$ journalctl -u water_furnace_monitor

Dec 27 18:35:06 rpi-waterfurnace systemd[1]: Started Aurora MQTT Bridge.
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]: /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:275:in `rescue in query': Timed out during read attempt (ModBus::>
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:266:in `query'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:12:in `read_multiple_holding_registers'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:28:in `[]'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:157:in `initialize'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/exe/aurora_mqtt_bridge:42:in `new'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/exe/aurora_mqtt_bridge:42:in `<top (required)>'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /usr/local/bin/aurora_mqtt_bridge:23:in `load'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /usr/local/bin/aurora_mqtt_bridge:23:in `<main>'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]: /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu_slave.rb:44:in `sleep': execution expired (ModBus::Errors::ModBusTimeout)
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu_slave.rb:44:in `block in read_pdu'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu_slave.rb:42:in `loop'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/rtu_slave.rb:42:in `read_pdu'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:269:in `block in query'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /usr/lib/ruby/2.7.0/timeout.rb:105:in `timeout'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/rmodbus-ccutrer-2.1.0/lib/rmodbus/client/slave.rb:267:in `query'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:12:in `read_multiple_holding_registers'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/modbus/slave.rb:28:in `[]'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/lib/aurora/abc_client.rb:157:in `initialize'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/exe/aurora_mqtt_bridge:42:in `new'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /var/lib/gems/2.7.0/gems/waterfurnace_aurora-1.4.8/exe/aurora_mqtt_bridge:42:in `<top (required)>'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /usr/local/bin/aurora_mqtt_bridge:23:in `load'
Dec 27 18:35:37 rpi-waterfurnace aurora_mqtt_bridge[2435]:         from /usr/local/bin/aurora_mqtt_bridge:23:in `<main>'
Dec 27 18:35:37 rpi-waterfurnace systemd[1]: aurora_mqtt_bridge.service: Main process exited, code=exited, status=1/FAILURE
Dec 27 18:35:37 rpi-waterfurnace systemd[1]: aurora_mqtt_bridge.service: Failed with result 'exit-code'.
Dec 27 18:35:37 rpi-waterfurnace systemd[1]: aurora_mqtt_bridge.service: Consumed 1.594s CPU time.

$ cat /proc/cpuinfo | grep -v "Serial"
processor	: 0
BogoMIPS	: 38.40
Features	: fp asimd evtstrm crc32 cpuid
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 1
BogoMIPS	: 38.40
Features	: fp asimd evtstrm crc32 cpuid
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 2
BogoMIPS	: 38.40
Features	: fp asimd evtstrm crc32 cpuid
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

processor	: 3
BogoMIPS	: 38.40
Features	: fp asimd evtstrm crc32 cpuid
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x0
CPU part	: 0xd03
CPU revision	: 4

Hardware	: BCM2835
Revision	: a020d3
Model		: Raspberry Pi 3 Model B Plus Rev 1.3

Through a day or two of trial and error, I have found that I can almost reliably (75% of the time) dump stats in 10-20 register chunks if I break the list of registers I'm trying to dump up into the following groups (expressed in Python list[] format).
register_chunks = ["1,2,6,9,15,16,19,20,25,26",
"30,31,33,84,85,88-110,112,209,282",
"321-323,325,340-342,344,346,347,362",
"400,401,404,412,413,419,501,502,565,567",
"740,741,745-747,813,900,901,903,908",
"1103-1117,1119",
"1124-1126,1134-1136,1146-1157,1164,1165,3000,3001",
"3322,3323,3325-3327,3330-3332,3422-3425,3522-3524,3808,3903-3906",
"12_005,12_006,12_309,12_310,31_003,31_007,31_008,31_009,31_010,31_013,31_016,31_019,31_022,31_109,31_110,31_200"]

Then, using a loop, I can iterate through the list and feed each chunk to aurora_fetch and usually get responses (about 50% of the time) without a timeout. If I add a 3-5 second sleep() at the end of each loop iteration to force a pause between successive calls to aurora_fetch, that gets me up to about a 75% success rate.
Admittedly, this is a bit of a hack, so any thoughts on how to make aurora_fetch perform more reliably/not timeout would be welcome!

I'm having a similar issue. Running aurora_fetch with a small number of registers works, but running it with the valid argument dies with a Timeout.
Running aurora_mqtt_bridge dies with a Timeout.
I'm wondering if this is due to my RS485 adapter. I have one of these. I just ordered the one from the readme to see if that helps.

I ordered the adapter listed in the readme and now everything is working perfectly.  So I'm guessing the adapter I had was not compatible. I opened it up and didn't see a MAX485 chip, but it could have been a MAX485 clone that needs similar signaling to be used.


Overcloud host image improvements

1st commit was reverted so I'll squash them when merging

Workflow seems to be working as expected: https://github.com/stackhpc/stackhpc-kayobe-config/actions/runs/4981847393/jobs/8916671378
The run failed because there's no packages in pulp for jammy, but all other images built without issue.

Ubuntu Jammy builds are now working with the help of the zstd on the builder. This PR is now in a reviewable state.
Once this is merged, I will follow up with this PR which starts using the images in AIO workflows. It also includes fixes for various issues, allowing those tests to pass.


Automated cherry pick of #4650: fix: 避免创建rds account, database后未设置exteranl_id

Cherry pick of #4650 on release/3.0.
#4650: fix: 避免创建rds account, database后未设置exteranl_id

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/3.0@987495c). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             release/3.0   #4651   +/-   ##
=============================================
  Coverage               ?    6.8%
=============================================
  Files                  ?     524
  Lines                  ?   89593
  Branches               ?       0
=============================================
  Hits                   ?    6094
  Misses                 ?   82995
  Partials               ?     504

Flag
Coverage Δ

#aFlag
6.8% <ø> (?)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 987495c...ec7bc01. Read the comment docs.

/lgtm

/approve


Workflow Execution: Sample Name Cell Component

What does this PR do and why?
Updated the SamplesheetComponent to include sample names.
See http://localhost:3000/rails/lookbook/inspect/nextflow_samplesheet/default.
Fixes #670.
Screenshots or screen recordings

How to set up and validate locally

Add add-sample-name to versions within the pipelines.json file. (Reference https://github.com/phac-nml/iridanextexample/tree/add-sample-name)
Run sapporo-service.
Run irida-next.
Execute the newly added pipeline add-sample-name.
Verify the sample name is displayed within the sample sheet.

PR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

[ ] I have evaluated the PR acceptance checklist for this PR.

On hold as pipelines failing on validation with sample names that contain spaces.


NATS Transporter: unhandled promise rejection upon disconnect

Upon sending SIGINT to an application, the NATS transporter sends a disconnect packet, every now and then resulting in an unhandled promise rejection:
Unhandled rejection TypeError: Cannot read property 'publish' of null
    at NatsTransporter.publish (\node_modules\moleculer\src\transporters\nats.js:151:14)
    at Transit.publish (\node_modules\moleculer\src\transit.js:494:18)
    at Transit.sendDisconnectPacket (\node_modules\moleculer\src\transit.js:162:8)
    at Transit.disconnect (\node_modules\moleculer\src\transit.js:145:16)
    at Promise.resolve.then.catch.then (\node_modules\moleculer\src\service-broker.js:291:26)
    at runCallback (timers.js:800:20)
    at tryOnImmediate (timers.js:762:5)
    at processImmediate [as _immediateCallback] (timers.js:733:5)
From previous event:
    at ServiceBroker.stop (\node_modules\moleculer\src\service-broker.js:289:5)
    at process.ServiceBroker._closeFn (\node_modules\moleculer\src\service-broker.js:159:9)
    at emitOne (events.js:115:13)
    at process.emit (events.js:210:7)

@icebob I have not tested this with other transporters. Based on the documentation I assume that both Redis and MQTT transporters might have been based on the NATS transporter.

Thanks, I will check it.

Released in v0.8.5


Type checking and API docs with TypeScript JSDoc annotations

We are currently transitioning the code base from type annotations understood by JSDoc to TypeScript JSDoc annotations. This ticket is an overview on progress and remaining tasks:

[x] #8345 Rewrite JSDoc annotations to those understood by TypeScript
[x] #8449 New tool chain to generate API docs from the source code and JSDoc annotations
[ ] Investigate TypeScript integration: will --allowJS be enough for users, or do we need to publish .d.ts files?

Since TypeScript knowledge is limited among the OpenLayers dev community, we appreciate any help on this. Also, please comment if we are missing something in the list above.

@ahocevar
Thanks! I'll take the liberty to ping some users that showed interest in the whole
ts-issue, so we can pool some manpower.

I pinged you because your activity on the openlayers project indicates you might
be interested in the current plan to publish typescript definitions within the openlayers
ol-package (as opposed to use the outdated DefinitlyTyped version, which used to
worked well for the 4.x series BTW thanks @yairtawil
If you are in fact not interested in the issue (anymore), I am sorry to have 'spammed' you.
@8byr0
@achimha
@agxs
@bjornharrtell
@BobbyT
@BrkCoder
@ca0v
@craigsnyders
@cvenzin
@DarthPinguin
@fgravin
@gberaudo
@h3imdall
@hei-pa
@icholy
@idevtech
@josepgomes
@jumpinjackie
@martin-reiterer
@mrfx
@niftydevelopment
@quentinol
@vrmerlin
@wulfsberg
@yairtawil

I have no experience with the JSDoc-annotation style of type definitions for TypeScript, so I'll be of limited use there
I am primarily coming at it as a consumer of OpenLayers in Angular applications, and have never been deep into the build stack of OpenLayers itself, so I'll probably be most useful as a guinea pig for the integration.

Once the transition is complete, the typescript compiler can automatically generate a .d.ts file from the sources. Shipping with the definition file makes it easier to consume.

I wanna also mention
@chrismayer
@kaivolland
@dnlkoch
@jansule
@weskamm
@atd-schubert
@annarieger
and
@ahennr
... if you can help, this would be much appreciated. If you cannot help or don't want to, this is perfectly fine and I am sorry for spamming you.

If we need to generate *.d.ts files, the question is how to generate them. Looks like tsc won't be of much help, see Microsoft/TypeScript#21455.

@ahocevar that's very unfortunate. We might be able to leverage https://github.com/jumpinjackie/jsdoc-typescript-plugin until tsc supports it.
@jumpinjackie

Hi all,
There is also tsd-jsdoc as an option. I am currently using it to generate types for CesiumJS and integrates very nice for the time being. Currently, we modify the jsdoc block tags of the CesiumJS source so that it helps the tsd-jsdoc compiler to produce as much accurate output as possible.

If I'm not mistaken, DefinitelyTyped used tsd-jsdoc for openlayers 4.

@icholy Sorry, I'm certain you won't get much success with this. That plugin was geared around the OL (pre 5.x) case and not for ES6 modules in general.

I have an idea about how we can generate a mostly accurate d.ts for OpenLayers (and as a double-whammy, possibly also solve the new API docs problem in #8449)
Basically, you want to use TypeDoc  as the API generation tool and take advantage of the fact that it can support allowJs mode of TypeScript to support API doc generation from non-TypeScript sources.
The main reason for choosing TypeDoc is that it also supports JSON output (via --json) which will give you full definition of the module and its classes/methods/parameters/return types/etc/etc. Then in terms of generating the d.ts, it's just reading the data from this JSON file and writing out the appropriate class/module declarations.
This approach is blocked by #8357. If you remove the offending typedef as suggested by @aikrez in that issue, then the docs and JSON can get generated by TypeDoc.
Attached is what the docs and JSON files produced by TypeDoc look like
docs.zip
ol.zip
I'm sure if you look at the attached JSON file, that it should not be hard to write a simple post-processor tool to generate the required d.ts file.

Thanks for your thoughts @jumpinjackie. Here is an update of what we've achieved so far and what we're working on:
TypeDoc does not have full support for JSDoc @typedef and @enum annotations yet. I am currently working on that, see my https://github.com/ahocevar/typedoc/tree/typescript-3.1.x branch.
Regarding the offending @typedef annotations, we will be transforming them to annotations that are fully understood by TypeScript v3.1.x. See #8345.
Using TypeDoc's JSON output is definitely an option, but looking at Microsoft/TypeScript#21455, I think a fresh start on that pull request and giving TypeScript the capability to create *.d.ts files from a JSDoc type annotated JavaScript code base would be a better invested effort, which would also benefit more projects and users.

@tschaub & @ahocevar - Myself and @wallw-bits would like to help out with the TypeScript effort. We're both new to TypeScript, but have been using OpenLayers extensively for several years in OpenSphere.
It looks like a lot of the remaining errors are related to lack of @abstract support, but we can start working off other errors. To avoid duplicating effort with other developers, would you prefer we submit smaller PR's handling a few files at a time (I did this in #8643), or keep a WIP PR open and commit to that as we work (similar to #8345)?

Thanks for helping out @schmidtk.  I think small PRs will probably be easier to manage (compared to a long lived big one).  If there is something that you think will require significant effort, opening a ticket describing the problem and saying you are going to work on it could help reduce the change of duplicate efforts.

News on API doc generation with TypeDoc: Trying to make TypeDoc work with all JSDoc type annotations is a fruitless effort (see https://github.com/ahocevar/typedoc/tree/typescript-3.1.x). However, TypeDoc's --includeDeclarations option will help us produce good docs. The "only" thing missing to get these declarations is *.d.ts files.
So the next step will be to make TypeScript's allowJs and declarations options work together, see Microsoft/TypeScript#7546. I have started working on a pull request for that (Microsoft/TypeScript#27478), but my insights into TypeScript are too limited to finish the effort alone. Anyone able and willing to help please comment on that pull request so we can coordinate.

Any news on this? I still can't get openlayers 5 working with typescript / intellisense in VSCode. The 'ol' types package is still on 4.6.3.

Making TypeScript support *.d.ts generation from JSDoc annotated JavaScript is an effort too big for the purpose of our library. As an alternative, we'll be publishing two packages in the future: one with the original ES6 sources that support IntelliSense and type checking through tsc, and another with ES5 sources for zero config use with bundlers like the current ol package.

Thanks for that. Do you know when that version will be released? Is there any way to use Openlayers v5 with typescript now? The @types/ol package has not been updated to 5.x.

There is a way. Instead of installing<EMAIL_ADDRESS>you install git://github.com/openlayers/openlayers.git#v5.3.0. Then, instead of importing from ol (e.g. import Map from 'ol/Map';, you import from ol/src/ol (e.g. import Map from 'ol/src/ol/Map';).

Npm sometimes have difficulties with git repos. An alternative is to use a tarbal URLl: https://api.github.com/repos/openlayers/openlayers/tarball/v5.3.0.

@Diaaz, do you have
"allowJs": true,
"checkJs": true,

In your tsconfig.json/compilerOptions?

Here is a minimal setup that works: https://gist.github.com/ahocevar/9a7253cb4712e8bf38d75d8ac898e36c

appreciate the work you're doing!
i can get your minimal setup to actually go to the definitions in vs-code (not sure what it's using behind the scenes - never use it) but when i correct the file ending to ts it'll stop working.
i can't get it working with tsserver from neovim even with allowJs and checkJs using typescript 3.1.6.
we're not really missing any features if sticking to 4.x long term but it would be nice to get performance upgrades and perhaps even tree-shaking in the future.
what's preventing you from generating definitions atm?

what's preventing you from generating definitions atm?

Microsoft/TypeScript#7546, i.e. definitions cannot be created with "allowJs": true.

and just changing the extensions and flipping allowJs to false wouldn't result in actually typed typescript as the jsdocs are ignored?

Setting allowjs and checkjs does not work, and using the gist from @ahocevar generates tons of errors on build in an existing typescript project, because all js is compiled. Is there any way to update the  @types/ol  package? That worked perfectly for the last year.

The @types/ol package has always been maintained by volunteers outside of the OpenLayers project.  If there are any TypeScript users with experience creating these definition files and interest in maintaining them, I'm sure your contributions to the @types/ol package would be welcome.  I think this is the project to look into: https://github.com/DefinitelyTyped/DefinitelyTyped

@tschaub i do not install deps without types and if there are no alternatives, i wrap them (and type the entry-points).

@tschaub I only use typed dependencies, the errors come from dependencies from OpenLayers. The proposed solution from @ahocevar includes OpenLayers in the complete build.

@Diaaz You could make the type issues from OpenLayers dependencies go away by adding these types as devDependencies in your package.json:
    "@types/arcgis-rest-api": "^10.4.3",
    "@types/geojson": "^7946.0.4",
    "@types/pbf": "^3.0.1",
    "@types/rbush": "^2.0.2",
    "@types/topojson-specification": "^1.0.0",

@ahocevar a project template for tsc development that doesn't require rollup/webpack, etc. would really help.
I'm not sure those dependencies you mention are getting transformed into an TSC consumable format.  I know rbush is still using node syntax.  If a pre-processor converted it to ES6 then maybe ol5 users could link using just tsc with "allowJs" but those dependencies don't allow it as-is.  See https://github.com/mourner/rbush/blob/v2.0.2/index.js#L6.

It would be helpful if that gist could be extended to show how to compile using tsc.  Or is the point only to make vscode happy?
TL;DR;
It would be nice to be able to build using just tsc.  I looked at the gist and got it to build using tsc --allowJS ./index.js --outDir ./bin but it only produces a transpiled version of index.  I modified it to use amd thinking it might concatentate but it didn't.  And if it did it would choke on rbush and pbf.  See  https://github.com/mourner/rbush/blob/v2.0.2/index.js#L6 for an explanation.  Until those get ported or transpiled to ES6 we can't really build using just tsc.
If they were to get transpiled we could build directly to a single amd file with tree-shaking using just tsc but until that time I think rollup/webpack, etc. is still necessary.

It would be helpful if that gist could be extended to show how to compile using tsc.

There is no need to compile the OpenLayers sources with tsc – they are already JavaScript.  tsc is only used for type checking (and this can be done with or without vscode).

@tschaub tsc can transpile js files.  In an es6 environment tsc can build/shake w/out help from rollup/webpack.  One build option I would like to see is the ability to produce a single AMD file using nothing but tsc and loading with requirejs.  That's a fast development experience.  Couple with uglifyjs and it's possible to run compressed code and debug typescript in chrome.

@ca0v – I understand that tsc can transpile files, but our intention is to use it for type checking.  If others want to use it to do more, that is great.  But we also want the library to work well for people who don't have any interest in TypeScript, so tsc won't be deeply integrated or required in any way.

@tschaub - I was under the impression you were migrating toward typescript due to the recent changes.  I'm unclear how tsc is helping you and the gist doesn't clear it up (for me).

@ca0v are you talking about the DX of hacking on openlayers or consuming it as a library?

@ahocevar as @gimerstedt pointed out, the workaround only works for me
if the file as a *.js extension. Renaming to *.ts kills Intellisense.
Since I had some forks sitting around,waiting to upgrade, but I did want
to have some autocompletion, I went ahead and started a small shell/python-based
project to generate typescript-declarations from the jsdoc-annotated source files.
The declaration files pass tsc and I managed to use the typings in a medium sized
ol-based library and some other smaller projects. The result is far from perfect,
but could be a starting point for new types on DefinitleyTyped. As far as i understand
the original openlayers-types where generated with dts-gen and manually reviewed,
the ol-types basically was a wrapper around the openlayers-types.
The repository is under:
https://github.com/OSHistory/generate_ol_types
I uploaded the resulting types for quick review:
@types.zip

@icholy main concern is looking for a way to consume with tsc alone.
I tried it a while back (https://github.com/ca0v/ol4-lab/tree/v4.0.1) but ran into the same issues I'm seeing today (node-style requires).  I mentioned it on https://github.com/openlayers/openlayers/issues/6494.

@ca0v I don't think that use-case is valid enough to justify the work/change involved. Let's try to make these changes as incremental as possible.

The next release probably won't be out before February, because we're currently working on a major overhaul of the library.

Just wondering if you're talking major, minor or even bug fix. As documented in the  issue
https://github.com/openlayers/openlayers/issues/8815
production builds inside angular fail with the current package, which is fixed by
adding proj.js sideEffects (merged in master). Adding and (remembering to add) after
fresh installs is a bit tedious, so a patch with 5.3.1 would be greatly appreciated.

Hi !
Thanks to use Type checking and API doc with TypeScript ;-)
I nave a question. How to declare a OpenLayers type ? For instance, I have a TypeScript function like
import  View from 'ol/View';
const myFunc = (viewInstanceParam: typeof View): void => {
// or const myFunc = (viewInstanceParam: typeof import('ol/View').default): void => {
// here intellisense works, but he believes it's a `Function`
};
const viewInstance = new View();
// here IntelliSense works perfectly, it knows that it's an instance of View.
// Bellow we have error: "2345 Argument of type 'View' is not assignable to parameter of type 'typeof View' ".
myFunc(viewInstance);

Please, have you and Idea how to declare the type view ?
I've also tried with type ol/View, View and many others without success. I've passed lot of time on this problem, without success.
Please, could you help me ?
Thanks in advance !

(viewInstanceParam: typeof View) is wrong. You just want (viewInstanceParam: View) to declare the type.
It is a fairly bizarre reaction from the compiler, though. typeof is an operator which returns a string describing the parameter. It is about the same as defining your type to be (viewInstanceParam: 2+2). I honestly have no idea what the TypeScript compiler is attempting to do with it.

@wulfsberg when used in the type context, typeof can be used to get the type of an expression. It's a typescript feature.

Interesting. I've never seen it used that way. Is that to pick out the type signature of anonymous lambdas or similar? (I assume it's https://github.com/microsoft/typescript/issues/6606. Something to read up on :-D )

Thanks a lot for your answer, but as I said I have already tested  (viewInstanceParam: View) without success. But I have error 2304 Cannot find name 'View. Have you the same issue  on a TypeScript project ?

@JulioJu I have stalled hard on the fact that the JSDoc annotations simply cannot be used with a packaged library (per https://github.com/Microsoft/TypeScript/issues/7546) which makes the whole JSDoc maneuver pretty much a non-starter for my current situation, so I have never actually gotten a version of this beta running.

@wulfsberg
yes I have already seen Microsoft/TypeScript#7546 ,  but my goal is not generate declaration files from JsDoc (I've already seen that actually it works not very well), but know how to describe type of an instance of an object.
As I've said before, actually tsc know perfectly the type of const viewInstance = new View(); : intelliSence retrieves perfectly properties of viewInstance.
But my goal is to do the same when we use a function. As it, we must describe the type of viewInstance
const viewInstance: typeof ???????? = new View()

As I said before, typeof View is not the instance of the object, but only a newable / Constructor Function.

As described at https://www.typescriptlang.org/docs/handbook/generics.html

import  View from 'ol/View';
const myFunc = (view: new() => typeof View): void => {
// the type of `view' is the Constructor Function 'ol/View.js'
};
const viewInstance = new View();
// here IntelliSense works perfectly, it knows that it's an instance of `ol/View.js`.
myFunc(viewInstance);

I have tested with typeof new View() or typeof Object.create(View.prototype) without success.

Maybe it's a limitation of the typeof syntax.
Maybe I could post a new issue on typescript that reference https://github.com/Microsoft/TypeScript/issues/6606 ?
What do you think about that ?
P.S. thanks for the link to ng7-ol5, but it seems does not work actually: see https://github.com/OSHistory/ng7-ol5-demo/issues/2

@JulioJu Using typeof is simply wrong in this case.
It is an operator which gives you the type of an existing instance (which, in case of View is a function, since that's how you create classes in the underlying JavaScript).
You say that you have already tried (viewInstanceParam: View) without success. I don't know which errors that caused, but those are the ones to chase. It is absolutely the correct notation, and you will never get  (viewInstanceParam: typeof View) to do what you want.

@wulfsberg thanks a lot for your answer. Please see https://github.com/openlayers/openlayers/pull/9259 .

@JulioJu this is not the right place for this discussion. Please use Stack Overflow, or at the very least, open a separate issue.

Sorry, very sorry probably I must delete my previous comments ? I spam and confuse the current issue. Very sorry.

@ahocevar Good news 🎉 --declaration and --allowJs are now in Typescript 3.7 Beta 😄


Fix formatting performance problems with .formatter.exs in subdirectories

When dealing with .formatter.exs files that are in subdirectories of the
main project, the behaviour was incorrect:
https://github.com/elixir-lsp/elixir-ls/issues/361
And also caused performance problems:
https://github.com/elixir-lsp/elixir-ls/issues/381
A good example is a project I currently work on. We have a top-level
.formatter.exs, as well as a test/.formatter.exs.
The one in test/ has the :inputs option set to ["**/*.{ex,exs}"].
Before this commit, should_format?/3 would take this pattern and
concatenate it with the project directory. This would result in
Path.wildcard/2 globbing for all source files in the entire project, rather
than just under test/. This causes formatting to take about 5 seconds on
our project.
This commit fixes the problem by taking the file to be formatted, and
finding the .formatter.exs file that exists in the closest parent
directory (so long as that directory is still within the project root). We
then perform the Path.wildcard/2 relative to that directory.
I’ve removed the hack that was in place to support umbrella projects,
because this is a more general solution to the problem.
On our project, I am now able to format a file in 100ms or so, which isn’t
a bad speed-up!

Thanks for the review @lukaszsamson :bow:

I've updated the branch to address your comments @lukaszsamson

Ok, I've added one more commit which avoids the filesystem traversal entirely:

I wrote a library called path_glob that implements matching for globs without interacting with the filesystem
I've implemented it by writing a parser with nimble_parsec, so I believe it to be fairly robust. I wrote a lot of test cases and fixed lots of edge cases.
That said, it's a new library so more testing/review is welcome. But I'm pretty sure it will handle the most common use cases without trouble.
The new commit just drops in this library.

If there is a concern about maintenance, I'd be happy for the library to be hosted under the elixir-lsp org.

@axelson Thanks for that, I've merged your PR and released v0.1.1 with it.
I'll just note for completeness that I had a chat with José Valim about adding a Path.match?() function to Elixir's standard library. He was keen on the idea but said that because Path.wildcard() is built on Erlang's filelib, it would need to be added to Erlang first. It turns out that there is a private function in filelib that provides a parse tree for a glob expression so it wouldn't require implementing a parser, just converting the parse tree into a regex. (I didn't realise this when writing path_glob... but it was a fun exploration of nimble_parsec anyway.)
I put that in the "maybe one day" basket. I don't think I'm going to make time to do that in the near future but it would be a good addition to the standard library I think and I understand why he doesn't want to just include/maintain a whole new parser in Elixir.

@jonleighton Thanks for that write-up and additional detail. I just opened https://github.com/elixir-lsp/elixir-ls/pull/628 once we've tested and merged that I think this PR should be good to go!


Support for non-pairing groups like Curve25519?

You can already implement non-pairing based curves from their parameters atm. (You can define curves in short weierstrass form or edwards form atm. Here is an example for an edwards curves: https://github.com/arkworks-rs/curves/tree/master/ed_on_bls12_381)
Theres no implementation at the moment for Curve25519, though you could add one by specifying the parameters. For curve25519 in particular though, I think it'd be best to add a wrapper of dalek's curve25519 implementation with the Arkworks group interface in https://github.com/arkworks-rs/curves . (Dalek's library should yield much better performance for Curve25519)

After Curve25519 there might be Ristretto. https://ristretto.group/

What method/software do you use to calculate the static BigNumbers? A bit unfamiliar with how to calculate R and others.
So far for Curve25519 I have:
	/// MODULUS =<PHONE_NUMBER>8658097711785492504343953926634992332820282019728792003956564819949
	#[rustfmt::skip]
	const MODULUS: BigInteger = BigInteger([
		0xffffffffffffffed,
		0xffffffffffffffff,
		0xffffffffffffffff,
		0x7fffffffffffffff,
	]);

	const MODULUS_BITS: u32 = 255;
	const CAPACITY: u32 = Self::MODULUS_BITS - 1;

	#[rustfmt::skip]
	const MODULUS_MINUS_ONE_DIV_TWO: BigInteger = BigInteger([
		0xfffffffffffffff6,
		0xffffffffffffffff,
		0xffffffffffffffff,
		0x3fffffffffffffff,
	]);

	// GENERATOR = 9

Some description of these parameters and how to calculate them are here: https://github.com/arkworks-rs/algebra/blob/master/ff/src/fields/mod.rs#L202
Warning: some of them need to be in the Montgomery form. The documentation of this is still in progress.
(https://github.com/arkworks-rs/algebra/issues/69)
This is why generator 7 does not look like 7.
These files may contain some discussion on what needs to be in the Montgomery form and what not.
https://github.com/arkworks-rs/curves/blob/master/ed_on_mnt4_298/src/fields/fr.rs
https://github.com/arkworks-rs/curves/blob/master/ed_on_mnt4_298/src/curves/mod.rs

I would hold off a little on implementing this until this PR is merged: https://github.com/arkworks-rs/algebra/pull/96

Yes. That PR would simplify the matter a lot.
By the way, previously I used Python to calculate. To chop a big number into u64 u64, I use % pow(2, 64) and / pow(2, 64).


scipy.io.netcdf_file fails to read masked arrays written by netCDF4

When reading masked arrays written by netCDF4 with scipy.io.netcdf_file, the mask is not recovered.
Reproducing code example:

import os

import numpy as np
from scipy.io import netcdf_file
from netCDF4 import Dataset

nx, ny = 5, 4
data = 2*np.ones([nx, ny])
data[1, 1] = 3
mask = np.zeros([nx, ny], dtype=bool)
mask[1, 1] = True
a = np.ma.array(data, mask=mask)
print('### Initial masked array:')
print(a)
print('## Fill value:')
print(a.fill_value)

with Dataset('test_netCDF4.nc', 'w', format='NETCDF3_64BIT_OFFSET') as nc:
    nc.createDimension('x', nx)
    nc.createDimension('y', ny)

    masked_data_var = nc.createVariable('masked_data', 'f8', ('x', 'y'))
    masked_data_var[...] = a

with netcdf_file('test_scipy.nc', 'w', maskandscale=True) as nc:
    nc.createDimension('x', nx)
    nc.createDimension('y', ny)

    masked_data_var = nc.createVariable('masked_data', 'f8', ('x', 'y'))
    masked_data_var[...] = a

print('### Output of: ncdump -v masked_data test_scipy.nc')
os.system('ncdump -v masked_data test_scipy.nc')
print('### Output of: ncdump -v masked_data test_netCDF4.nc')
os.system('ncdump -v masked_data test_netCDF4.nc')

for fn in ['test_scipy.nc', 'test_netCDF4.nc']:
    print('### Re-reading file:', fn)
    with netcdf_file(fn, 'r', maskandscale=True) as nc:
        print('## Reading with scipy:', nc.variables['masked_data'][...])

    with Dataset(fn, 'r') as nc:
        print('## Reading with netCDF4:', nc.variables['masked_data'][...])

Error message:

This is a sample output from the code above:
netcdf test_scipy {
dimensions:
	x = 5 ;
	y = 4 ;
variables:
	double masked_data(x, y) ;
		masked_data:missing_value = 1.e+20 ;
		masked_data:_FillValue = 1.e+20 ;
data:

 masked_data =
  2, 2, 2, 2,
  2, _, 2, 2,
  2, 2, 2, 2,
  2, 2, 2, 2,
  2, 2, 2, 2 ;
}
netcdf test_netCDF4 {
dimensions:
	x = 5 ;
	y = 4 ;
variables:
	double masked_data(x, y) ;
data:

 masked_data =
  2, 2, 2, 2,
  2, _, 2, 2,
  2, 2, 2, 2,
  2, 2, 2, 2,
  2, 2, 2, 2 ;
}
### Initial masked array:
[[2.0 2.0 2.0 2.0]
 [2.0 -- 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]]
## Fill value:
1e+20
### Output of: ncdump -v masked_data test_scipy.nc
### Output of: ncdump -v masked_data test_netCDF4.nc
### Re-reading file: test_scipy.nc
## Reading with scipy: [[2.0 2.0 2.0 2.0]
 [2.0 -- 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]]
## Reading with netCDF4: [[2.0 2.0 2.0 2.0]
 [2.0 -- 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]]
### Re-reading file: test_netCDF4.nc
## Reading with scipy: [[2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00]
 [2.00000000e+00 9.96920997e+36 2.00000000e+00 2.00000000e+00]
 [2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00]
 [2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00]
 [2.00000000e+00 2.00000000e+00 2.00000000e+00 2.00000000e+00]]
## Reading with netCDF4: [[2.0 2.0 2.0 2.0]
 [2.0 -- 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]
 [2.0 2.0 2.0 2.0]]

Scipy/Numpy/Python version information:
Python: 3.8.10
Scipy: 1.7.1
Numpy: 1.21.1
netCDF4: 1.5.6

This may actually be a but in netCDF4, that does not set _FillValue. See also here:
https://github.com/Unidata/netcdf4-python/issues/468

It turns out that it works if I explicitly specify a fill_value in the creation of the variable in netCDF4. It will then attach a _FillValue attribute to the variable which scipy.io.netcdf_file understands. Note that the default fill value seems to be different (for floats 1e+20 in scipy vs. 9.969209968386869e+36 in netCDF4.

I am not sure whether this means:

There is a problem in netCDF4 since it should always write _FillValue for all variable
There is a problem in scipy.io.netcdf_file as it seems to use a different (wrong) default value for _FillValue


xhyve: bump version 0.3.2

/cc @dalehamel

:heart: would love to see this ship and get into homebrew, so we can stop using our custom binary :sparkles:


[WIP] Implement Process wrapper class to allow more control over running processes.

Removes open_console parameter from the core_bind::OS::execute, due to the way GDScript wrapper is implemented, it's always piping output and opened console will not show anything or be interactive. It's also impossible to read partial output, since GDScript wrapper is waiting for the process and returning all output as a single string.
Implements core_bind::Process class to allow:

Asynchronously monitor, read output and kill running process using GDScript.
Wait for the interactive process running with opened console.

See https://github.com/godotengine/godot/pull/26674#issuecomment-1315272838
https://user-images.githubusercontent.com/7645683/202197673-4f3a79f1-4f3f-42f1-9acc-42f10a00e036.mp4

How does this wrapper compare with the Process class implemented in #66830 ? CC @EIREXE

How does this wrapper compare with the Process class implemented in https://github.com/godotengine/godot/pull/66830

Have not noticed it, not sure why we would use third party library for this. It's already possible to do with the existing C++ code in the OS (with exception to popen not returning PID), the issue is only with GDScript bindings.

Does this implement https://github.com/godotengine/godot-proposals/issues/216?

How does this wrapper compare with the Process class implemented in #66830

Have not noticed it, I'm not sure why we would use third party library for this. It's already possible to do with the existing C++ code in the OS (with exception to popen not returning PID), the issue is only with GDScript bindings.

The reason why a third party library is used is to handle stuff like flatpak portals, it also handles dispatching the child processes to prevent zombie processes, but that's something that could be done here too


dockerhub latest tag is not the latest image

https://hub.docker.com/layers/cypress/browsers/latest/images/sha256-4d89ccfeb297b10c75936c172cd35b961ff57335c3bb195ed42d618dea6a95da?context=explore
The browser image with latest tag is form 2020 - with a chrome version 83.
Would have assumed latest gets me  the latest image (currently node16.5.0-chrome94-ff93)

cypress/browsers latest has been updated (and will be with any new release)


Update atlasci user to point to devops/infra mailing list

btw, should we also create an altlasmapci user to Docker Hub which can push images to the Docker orga atlasmap ? Currently, this is performed by the syndesisci user, but would make more sense to decouple this.


Make Cert Handler CRD Configurable

Make CRD configurable so that the app can generate for different CRDs
Adap kustomize resources to use CRD name

Description
Make CRD configurable so that cert-handler can be configured for a different CRD too
Changes proposed in this pull request:

Make CRD configurable so that the app can generate for different CRDs
Adap kustomize resources to use CRD name

Related issue(s)
#15346

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Could not find com.yqritc:android-scalablevideoview:1.0.4

Installation commands:

npm install rnv -g
rnv new
rnv plugin add react-native-video

All above run successful; when trying to run on androdtv it is generating the following error:
FAILED with ERROR:
1: Task failed with an exception.

What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.

Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.yqritc:android-scalablevideoview:1.0.4.
2: Task failed with an exception.

What went wrong:
Execution failed for task ':react-native-video:generateDebugRFile'.

Could not resolve all files for configuration ':react-native-video:debugCompileClasspath'.
Could not find com.yqritc:android-scalablevideoview:1.0.4.

Command failed with exit code 1: ./gradlew assembleDebug -x bundleReleaseJsAndAssets
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.

What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.

Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.yqritc:android-scalablevideoview:1.0.4.
Searched in the following locations:
- file:/Users/user/Desktop/sgrn-demo/rnv19april/node_modules/react-native/android/com/yqritc/android-scalablevideoview/1.0.4/android-scalablevideoview-1.0.4.pom
- file:/Users/user/Desktop/sgrn-demo/rnv19april/node_modules/jsc-android/dist/com/yqritc/android-scalablevideoview/1.0.4/android-scalablevideoview-1.0.4.pom
- https://repo.maven.apache.org/maven2/com/yqritc/android-scalablevideoview/1.0.4/android-scalablevideoview-1.0.4.pom
- https://dl.google.com/dl/android/maven2/com/yqritc/android-scalablevideoview/1.0.4/android-scalablevideoview-1.0.4.pom
- https://www.jitpack.io/com/yqritc/android-scalablevideoview/1.0.4/android-scalablevideoview-1.0.4.pom
Required by:
project :app > project :react-native-video

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.

What went wrong:
Execution failed for task ':react-native-video:generateDebugRFile'.

Could not resolve all files for configuration ':react-native-video:debugCompileClasspath'.
Could not find com.yqritc:android-scalablevideoview:1.0.4.
Required by:
project :react-native-video

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================

add
jcenter() {             content {                 includeModule("com.yqritc", "android-scalablevideoview")             }         }
to your android\build.gradle. Works for me. You can alternatively add whole center to build.gradle, but center is no longer maintained and often offline, so I would not recommend that.

@maciejsiiminski we tried but it doesnt work, is it because jcenter service is down ?
We made the change as per your recommendation but on but the moment you run "nvm run", the running script will restore build.gradle to default, deleting what we added.

Ok, so you have to eject the platform you have this problem using renative cli. I think the command is platform eject . After you do so, a new folder called platform templates will be created. From now the reantive will use this folder as the template instead the default one from the @rnv node module. Here you can change all the gradle and other compilation-related files and they will not be overwritten. Platform builds are overwritten on every compilation so changing them doesn't do a thing.

That's a problem but I think it can be overcome. You can add the platformTemplatesDirs property to the path in your renative.json like this.
"platformTemplatesDirs": {
            "androidtv": "./platformTemplates"
        }

My whole path object in renative.json looks like this.
"paths": {
        "appConfigsDir": "./appConfigs",
        "platformAssetsDir": "./platformAssets",
        "platformBuildsDir": "./platformBuilds",
        "platformTemplatesDirs": {
            "androidtv": "./platformTemplates"
        }
    },

Then you should create a folder platformTemplates and copy node_modules/@rnv/engine-rn/templates/platforms/androidtv folder into it. Then in theory it should build androidtv from this folder and you can change this template however you want.
I reverse-engineered this solution so can't guarantee it would work, but I hope so. Alternatively, you can just edit the files inside the template in node modules (previously mentioned path) but keep in mind, that the changes will be lost with every newly installed/updated node module.

@maciejsiiminski done as you said but still, I'm getting the same error. Any idea?

@saimirg Thanks for reporting this issue, could you provide rnv and node versions, os type?

Please try again with version 0.37, it should fix the issue with the missing plugins. If not, feel free to reopen.


Zoom box is blurring the product image

Terms

[X] Before you openning this issue, i have checked if the issue has already been reported.

Bagisto Version(s) affected
1.4.1
Issue Description
In product detail page when we zoom over the product image, the zoom square box is showing the blurry part of that image. But when we zoom out, the square box looks good but the fonts in the image gets smaller. So,

How can we set default zoom in or zoom out so that the portion in the zoomed box doesn't look blurry
What should be the ideal size to that even with current default zoom, the image doesn't look blurry

Preconditions
The product is in our demo server which is a VPS server - Linux based. You can check the actual issue on this webpage: https://www.demo.arkabotanicals.com/arka-adam-plus-?looking_for=International
Steps to reproduce

Check this url: https://www.demo.arkabotanicals.com/arka-adam-plus-?looking_for=International
Do the image hover on the product image and you will see the blurry write up in the zoomed box.

Expected Result
The zoomed box shouldn't show the blurry part. It should be clear.
Actual Result
The zoomed box is showing the blurry magnified image.
Screenshots
No response
Additional context
No response

@engineer-ashwattha
If you zoom in beyond the original resolution of the image, you will start to see a loss in image quality and potentially encounter blurriness. This is because you are essentially stretching the pixels, which can lead to a decrease in sharpness.
Conversely, if you zoom out from the original image size, you are reducing the number of pixels displayed, which can make the image appear smaller but maintain its clarity.
Therefore, if you want to maintain optimal image quality, it's best to work with the highest-resolution version of the image whenever possible.

Hello Amit,
Thank you for the response.
Ofcourse, we are using the high resolution images only. The zoom works when we zoom oout the square box. So, can you tell me from where to set the default zoom option? So, once the page is loaded and a person starts using the magnifying glass, it already shows the zoomed out box.

@engineer-ashwattha,
To manage the zoom levels you need to follow the below steps.
Go to the path and run the below commands:-
..packages/Webkul/Velocity
npm install
npm run watch
Reach on this path.


Credit card amount error bug

When user is logged in using Portis can they buy crypto with credit card?
The current code doesn't set a min / max value, reason for the above error
Sorry, amount must be between $0 and $0

fixed. closing


Error in gtbook.discrete.show()

Hello Prof. Dellaert,
When executing the S32_vacuum_actions Colab from https://www.roboticsbook.org/S32_vacuum_actions.html, we are running into the following error:
TypeError                                 Traceback (most recent call last)
TypeError: Unregistered type : std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
[<ipython-input-6-4c1425e2b058>](https://localhost:8080/#) in <module>
      2 fragment = gtsam.DiscreteBayesNet()
      3 fragment.add(motion_model)
----> 4 show(fragment, hints={"A":2, "X":1}, boxes={A[1][0], X[1][0]})

2 frames
[<ipython-input-2-23c57660802c>](https://localhost:8080/#) in show(obj, **kwargs)
     11     return gtbook.display.pretty(obj, VARIABLES)
     12 def show(obj, **kwargs):
---> 13     return gtbook.display.show(obj, VARIABLES, **kwargs)
     14
     15 # From section 3.1:

[/usr/local/lib/python3.8/dist-packages/gtbook/display.py](https://localhost:8080/#) in __init__(self, obj, *args, **kwargs)
     28
     29         # Check if a DotWriter needs creating (or amending)
---> 30         writer = dbn_writer(**kwargs)
     31         if writer is not None:
     32             kwargs = {"writer": writer}

[/usr/local/lib/python3.8/dist-packages/gtbook/dbn.py](https://localhost:8080/#) in dbn_writer(writer, hints, positions, boxes, factor_positions, binary_edges, **kwargs)
     42     if boxes is not None:
     43         assert isinstance(boxes, set)
---> 44         bx: set = writer.boxes
     45         for key in boxes:
     46             bx.add(key)

TypeError: Unable to convert function return value to a Python type! The signature was
	(self: gtsam.gtsam.DotWriter) -> std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >

Did you forget to `#include <pybind11/stl.h>`? Or <pybind11/complex.h>,
<pybind11/functional.h>, <pybind11/chrono.h>, etc. Some automatic
conversions are optional and require extra headers to be included
when compiling your pybind11 module.

I tried debugging, but was not sure what caused the issue. Can you suggest a fix to this? It is currently blocking the release of Project 2 for CS3630 at Georgia Tech as well.
Thank you!

Let me take a look. What;'s the timing/deadline?

We are planning to release this late Monday evening (Jan 30). I understand it is a short term, my apologies for that. I am available to help as much as I can in resolving this. I wonder if we can release the assignment and communicate the fix later as we get to the solution.

Let me take a look. What;'s the timing/deadline?

We are planning to release this late Monday evening (Jan 30). I understand it is a short term, my apologies for that. I am available to help as much as I can in resolving this. I wonder if we can release the assignment and communicate the fix later as we get to the solution.

No, that's not a great idea. I'll take a look today or at latest Saturday

Let me take a look. What;'s the timing/deadline?

We are planning to release this late Monday evening (Jan 30). I understand it is a short term, my apologies for that. I am available to help as much as I can in resolving this. I wonder if we can release the assignment and communicate the fix later as we get to the solution.

No, that's not a great idea. I'll take a look today or at latest Saturday

Thank you so much, Frank. Please let me know if I can be of any help.

This is so weird. Not seeing this with version 4.2a8 on my mac, but do see it on colab :-(

This is so weird. Not seeing this with version 4.2a8 on my mac, but do see it on colab :-(

Yeah, that is weird. Are there any version specifications that we can do on Colab?

For the assignment, a workaround is to not use the boxes argument.
PS I have spent some time trying to fix the underlying issue but it is harder than I thought - as I am running into python versioning issues. Try the workaround?

For the assignment, a workaround is to not use the boxes argument.
PS I have spent some time trying to fix the underlying issue but it is harder than I thought - as I am running into python versioning issues. Try the workaround?

The workaround works perfectly fine 🤯 Thank you so much for working on this at such short notice! ❤ I wonder if it depends on different python versions used in gtsam, gtbook and Colab somehow?

gtbook was updated to 0.0.31 and now loads a new version of GTSAM, 4.2a9. Please do let me know when you run into issues again, I am about to release GTSAM 4.2 and would love to know if there other things wrong. Thanks !

Thank you, Prof. Dellaert! We'll keep you posted if we run into any other issues.


Infer string quotes

Is this for preserving the original quotes?

@eventualbuddha Yeah. If a file contains single quotes then the code generator will just adopt that for all string literal generation.

+1

:+1: :)

Superseded by #883.


This PR is for removing Magical Record

This branch and PR have the following changes from develop

Magical Record removal; This is incomplete and needs to be tested thoroughly
Initial SwiftUI updates to some views
Initial repository and data source updates
lots of tests

Recommended path forward:

finish removing magical record
thoroughly test
merge this and then create new PRs for moving all obj-c code to swift
thoroughly test and merge
Remove AFNetworking in favor of Alamofire which would include creating URLRequestConvertible enums
Create all repositories and local and remote data sources
SwiftUI


Patrick j

Hey @pjohnsongenesys can you resolve the merge conflicts above and then I can go ahead and merge the code.

@pjohnsongenesys I moved this over to a new branch to help upgrade you to the newest version"


Network option for bind address

I recently configured this manually, binding to <IP_ADDRESS> so I could use the web chat from my phone. Might be a nice option to expose in the UI.

As far as I know Javalin binds to <IP_ADDRESS> by default, in fact I have been using it on my phone without adjustments.
Doesn't mean I think it is a bad idea, if anything we should bind to localhost by default and let the user widen that scope if they really want to.
If we do make this an option we do need to make sure the description is really clear on what it does.


Allow to define custom namespace for PodMonitor

In our company we are using monitoring namespace for prometheus probeNamespaceSelector, that means prometheus monitors this namespace only.
cnpg operator doesn't allow to specify different namespace for podmonitor and creates podmonitor in current namespace only.
It's a good idea to add custom namespace support for podmonitor kind, allow to setup monitoring in more flexible way, imho.

We are seeing the same issue, we have an existing installation of the kube-prometheus-stack that monitoring the 'monitoring' namespace. Following the monitoring examples leads to "No data" in all dashboards. We'd prefer not to have to run 2 full prometheus and grafana stacks to use this operator fully.

Being able to add additional labels would be ideal, too. For kube-prometheus-stack you need a release label that matches the name of the helm release in order for prometheus to pick up the monitor.
On the other hand, it was super simply to just set enablePodMonitor: false and create one manually, too, which I'm fairly certain has the same exact effect, i.e.:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: postgres
  labels:
    release: prometheus-stack
  namespace: whatever-you-want
spec:
  selector:
    matchLabels:
      cnpg.io/cluster: postgres
  podMetricsEndpoints:
    - port: metrics


Remove mention of truecrypt in FAQ

Hello,
not sure it's the right place for that but anyway,
In the FAQ (http://0bin.net/faq/), it's advised to use truecrypt for volume/files encryption.
This should be changed to whatever still works (https://prism-break.org/en/all/#disk-encryption) !
Cheers, and thanks a lot for having put new work on zerobin !

Can be closed


Can we get rid of the "location" parameter?

          "remove location" I think should be a separate PR. Here, the issuer is *optional* and only used for OSV where that information is not necessarily derivable from the contents.

Originally posted by @bobmcwhirter in https://github.com/trustification/trustify/pull/264#discussion_r1598774977

The idea of the "location" was to be able to trace where this document came from. With the idea of being able to delete all related documents when the source gets deleted.
I think this relates to the question: how do we handle the case when two different users upload the same SBOM/advisory, and those users should be isolated?

We did, yeah?

We did, yeah?

No. It's still hard-coded for advisories and required for SBOM's. We should agree on its value. Are the use cases @ctron cites above real?

I would say https://github.com/trustification/trustify/pull/442 closes this one.


BITMAKER-2239: estela-web Create New Project Component

Description
estela-web: Create New Project Component
Issue
https://tasks.bitmaker.dev/issues/2239
Checklist before requesting a review

[x] I have performed a self-review of my code.
[x] My code follows the style guidelines of this project.
[x] I have made corresponding changes to the documentation.
[x] New and existing tests pass locally with my changes.
[x] If this change is a core feature, I have added thorough tests.
[x] If this change affects or depends on the behavior of other estela repositories, I have created pull requests with the relevant changes in the affected repositories. Please, refer to our official documentation.
[x] I understand that my pull request may be closed if it becomes obvious or I did not perform all of the steps above.

ready to review @raymond1242

@reqhiem Make a rebase before this PR would be approved


Preparing for Ecto v3.5

Hi @mjaric and @leandrocp,
We will likely release Ecto v3.5 in a week or two, so if there is any feature you want to get in regarding TDS or the EXPLAIN support, please let me know. I would say it would be important to at least get EXPLAIN working, but I am following if there is already a release of the TDS adapter that includes the necessary features. :)
Thanks and have a great week!

Hey @josevalim,
Yeah I'd like to implement EXPLAIN for TDS adapter. @mjaric already released a version supporting multiple calls, which is required to run explain. Ref: https://github.com/livehelpnow/tds/issues/108#issuecomment-643824465
Although I'm not sure what path to take here. Please read @mjaric comment https://github.com/elixir-ecto/ecto_sql/pull/231#discussion_r434312982. Considering that STATISTICS IO/TIME doesn't give too much information and STATISTICS XML returns results in Xml (and there's no Xml parser available), looks like the best approach is to implement PROFILE for now.
@josevalim and @mjaric wdyt?

Erlang comes with xmerl, which can parse XML. It is not safe for external input but it should be safe for parsing XML results from SQL Server. So that would be my choice if we can make the results somewhat readable. If not, I would say the feature is just not supported, as profiling/statistics are effectively another feature.

Ok good I'll try that. I'll send a draft PR this week to hopefully get it into v3.5 release so we have full support for EXPLAIN :)

Actually, while going through Ecto issues tracker, I remembered of some on going work that will probably tackle a month or even more, so take your time. :)

To keep everyone on the same page, we are making progress on the Ecto front, so I am hoping for a release in about month. :)

More updates: Ecto v3.5 is ready from the Ecto side of things. We will probably ship a RC, so people can try it out as it has some non-minor changes, so this is still buys us a bit of time in case we want to get EXPLAIN in.

RC is out. Thanks everyone!


Incorporate LOCA data selection and retrieval into climakitae

This PR builds in the functionality to retrieve LOCA data from the AE bucket using app.select() and app.retrieve().
Please test selection and retrieval for as many cases as you have time/energy for, since I modified a ton of the backend I'm worried I may have introduced bugs in places without realizing (although, I tried to be thorough to avoid this, but it's always possible!). Also try visualizing the data with app.view()

max temp doesn't return anything in app.view and subsetting for any option doesn't matter here (tried time slice, location, area averaged/not)

Out of curiosity, why does some of the LOCA data have differing numbers of simulations? Noting that max temp has 14, specific humidity has 11, precip has 14

Precipitation when both LOCA and WRF are selected, a couple of things

Ahah! Ignoring scale here (that's a separate issue), looks like the WRF data has 0s, LOCA has nans

In terms of scale, precipitation is off by 1e5... like 10 meters to 1 mm? Something funky is going on in terms of a unit conversion here

In terms of scale, LOCA precipitation in mm is off by 1e5... like 10 meters to 1 mm? Something funky is going on in terms of a unit conversion here

Thanks for figuring out all the weirdness going on with the LOCA precip, I hadn't noticed that. I've removed it from the options for now and we can re-address it in a separate PR.

Specific humidity colormap should also be ae_blue

Yep, you're right. Something was going on with the cmaps, I have just fixed it!

Do we want the default variable in the LOCA variable dropdown list to be specific humidity? I would vote for max temp, personally

Agreed, just shifted it to max temp. Thansk!

only specific humidity returns a plot in app.view Works: specific humidity Doesn't work: max temp, min temp, precip, N-S winds, E-W winds

Yeah... something is up with some of the LOCA simulations that are causing issues on the data retrieval end. Thanks for pointing this out. I've restricted the LOCA runs to just a few non-problematic simulations. In another PR I can look more into this issue and add back in the other simulations

Two things:

I seem to recall that CESM2 doesn't have LOCA2 daily min and max temperature, but it should have specific humidity, yet I don't see it among the simulations even when I select specific humidity
General preferred behavior would be to return all available LOCA2 simulations if 'statistical' and 'dynamical' are both selected, even though we only return the WRF ones that are bias-corrected on the LOCA grid.

9/1/1980

Thinking on this. Thanks for pointing out!


OutOfRangeError (see above for traceback): End of sequence

hi,i found that i can not train successfully,and get this message when i run the script named train_nets_mgpu_new.py,maybe that is because of the " iterator.get_next()"can not get the itertor ,and i did not find this function,i use python3 and please let me know if you have any idea aboout this problem,thanks a lot
Caused by op 'IteratorGetNext', defined at:
File "/InsightFace_TF-master/train_nets_mgpu_new.py", line 107, in
next_element = iterator.get_next()
OutOfRangeError (see above for traceback): End of sequence
[[{{node IteratorGetNext}} = IteratorGetNextoutput_shapes=[[?,112,112,3], [?]], output_types=[DT_FLOAT, DT_INT64], _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

I had the same problem when running the  script named train_nets.py, and still have no idea to solve it.


Implement subprocess expansion if deployment model is too big

ref: #31

Seems not to work for me.

If I reload the topology, the edges are there but the subprocess is not expanded

I added a small improvement for the Smart Edges here. I noticed that the sorting by y only meant that edges coming from or going to the bottom or top still overlapped a lot, the example topology I had was barely decipherable, so I adjusted it. Might be better to move this to a different PR though or remove it if unwanted.

Expanding the deployment model looks good in general, however, the margins are a bit too large:

Collapsing the deployment models leaves the subprocesses in the state with the expanded size.

I think the margins are not right when explanding the deployment model. The topology nodes are outside the subprocess

If the option: "No CSAR" is selected, the size of the subprocess does not change back.

Closed, as the edges are currently not smart enough and lead to overlaps


Local install improvements

Changes in this PR
Improvement of the developer guide to detail more about installing the website on a local development machine.
Next steps
It would be ideal if a developer could use the docker environment to develop in. I tried it out and it works but further content is needed in the developer docs. Initial findings were that the node_modules needed to be installed to be able to run rpm start and the local port of 3000 needs to be exposed.

 Documentation on / improvements to the process of how to set up and run the application locally


Implement Caesars Palace on Franklin

https://www.caesars.com/caesars-palace

This is the overall issue that will be complete once everything else for phase 1 is done.


Feat: Track Reconciliation Status in Configmaps

Implements https://github.com/kyma-incubator/reconciler/issues/1012

/retest-required

/retest-required


Ability to add labels and annotations to generated secret

For instance reflector  and reloader allow to configure what can get synched where and if it should be considered for their respective tasks.
Currently there is no way of configuring annotations/labels for the generated secret resources.

What is the purpose of this configuration you want to do?

Currently, a service instance can only be used for bindings within the owning namespace.
In our case each application is sandboxed within one namespace, but we would still be using the same logical btp subaccount.
Reloader would automatically restart deployments when the operator would rotate them, currently we can only restrict by namespace but cannot do it at a secret granularity as it is needs labels.
Reflector would be used to sync the bindings from the management namespace to the app namespace whatever that maybe.
namespace1: App1 + reflected-secret1
namespace2: App2 + reflected-secret2
management: ServiceInstance + ServiceBinding1 + ServiceBinding2 + secret1 (annotated) + secret2(annotated)
Instead of
namespace1: App1 + ServiceInstance + ServiceBinding1 + secret1 + operator-secret(btp-subaccount)
namespace2: App2 + ServiceInstance + ServiceBinding2 + secret2 + operator-secret(btp-subaccount)
Which would end up using 2 quotas for the service in BTP.

In our new version (0.5.2) we allow the creation of the binding in different namespace, so please use that version.

@TalShorSap Can you also add the new field in the documentation?
I'm assuming since secrets are namespace specific the binding should have the same pair of secrets as the instance namespace, correct?
As far as I can tell it did correctly create the resources.


deps: update google-cloud-core

@frankyn

@frankyn Please investigate the failures here. This is a P1. Users are going to use this with the later google-cloud-core whatever the pom.xml says.

Going through PRs. Thanks @elharo

Dedup: https://github.com/googleapis/java-storage/pull/103