[WiP] Add virtletctl virsh and ssh

[X] Rework virtletctl to use cobra and pflag
[X] Add tests for virtletctl parts that use k8s API
[X] Add virsh command
[x] Add ssh command (by the means of port forwarding)
[x] Add tests for virsh and ssh commands
[ ] Support installation as kubectl plugin
[ ] Include virtletctl in releases and CircleCI build artifacts
[ ] Check that VM pods are really VM pods
[ ] Remove vmssh.sh and virsh.sh
[ ] Update docs (incl. Mac build instructions for virtletctl)

This change is

Reviewed 9 of 9 files at r1, 9 of 11 files at r2.
Review status: 13 of 14 files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

pkg/tools/dumpmetadata.go, line 42 at r2 (raw file):

// dumpMetadataCommand contains the data needed by the dump-metedata subcommand
// which is used to dump the contents of Virtlet boltdb in a human-readable

s/boltdb/metadata db/
Even if now we have boltdb on lower level - this command is using interfaces so it's implementation db independent.

pkg/tools/kubeclient.go, line 128 at r2 (raw file):

	// the specified VM pod.
	GetVMPodInfo(podName string) (*VMPodInfo, error)
	// ExecCommandOnContainer given a pod, container, namespace and command

Hmmm... I forgotten to update this docstring after func rename.

pkg/tools/ssh.go, line 92 at r2 (raw file):

<EMAIL_ADDRESS>s.user),
	}, s.args...)
	fmt.Printf("ssh: %q\n", sshArgs)

That looks like debug print, maybe it could be removed?

Comments from Reviewable

Reviewed 1 of 11 files at r2.
Review status: all files reviewed at latest revision, 4 unresolved discussions, some commit checks failed.

pkg/tools/ssh.go, line 47 at r2 (raw file):

	cmd := &cobra.Command{
		Use:   "ssh user@pod [ssh args...]",
		Short: "ssh into a VM pod",

Short description for internal "help" command is capitalized, so probably all of our commands need to follow the same rule.

Comments from Reviewable

Review status: all files reviewed at latest revision, 5 unresolved discussions, some commit checks failed.

pkg/tools/ssh.go, line 87 at r2 (raw file):

		"StrictHostKeyChecking=no",
		"-o",
		"UserKnownHostsFile=/dev/null",

We can add there -q option to suppress message Warning: Permanently added '[<IP_ADDRESS>]:37885' (ECDSA) to the list of known hosts.
It's adding it to /dev/null so it's not so useful info :)

Comments from Reviewable

Review status: 10 of 14 files reviewed at latest revision, 5 unresolved discussions.

pkg/tools/dumpmetadata.go, line 42 at r2 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
s/boltdb/metadata db/
Even if now we have boltdb on lower level - this command is using interfaces so it's implementation db independent.

Done.

pkg/tools/kubeclient.go, line 128 at r2 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
Hmmm... I forgotten to update this docstring after func rename.

Done.

pkg/tools/ssh.go, line 47 at r2 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
Short description for internal "help" command is capitalized, so probably all of our commands need to follow the same rule.

Done.

pkg/tools/ssh.go, line 87 at r2 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
We can add there -q option to suppress message Warning: Permanently added '[<IP_ADDRESS>]:37885' (ECDSA) to the list of known hosts.
It's adding it to /dev/null so it's not so useful info :)

Thanks, I wanted to look up this option in ssh docs but forgot about it :) Fixed.

pkg/tools/ssh.go, line 92 at r2 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
That looks like debug print, maybe it could be removed?

Thanks for spotting that, removed.

Comments from Reviewable

Reviewed 3 of 5 files at r3.
Review status: 12 of 14 files reviewed at latest revision, 3 unresolved discussions, some commit checks failed.

pkg/tools/kubeclient.go, line 151 at r3 (raw file):

var _ remoteExecutor = defaultExecutor{}

func (e defaultExecutor) Stream(config *rest.Config, method string, url *url.URL, options remotecommand.StreamOptions) error {

This func needs a docstring.

pkg/tools/kubeclient.go, line 167 at r3 (raw file):

var _ portForwarder = defaultPortForwarder{}

func (pf defaultPortForwarder) ForwardPorts(config *rest.Config, method string, url *url.URL, ports []string, stopChannel, readyChannel chan struct{}, out io.Writer) error {

This func needs a docstring.

pkg/tools/kubeclient.go, line 191 at r3 (raw file):

var _ KubeClient = &RealKubeClient{}

func NewRealKubeClient() *RealKubeClient {

This func needs a docstring.

Comments from Reviewable

As we now have almost only auto generated docs - the info about that we can have kubectl plugin is quite hidden in internals of virtletctl install docs. Maybe it could be added somewhere in new section added to README.md?

Reviewed 1 of 5 files at r3, 67 of 67 files at r4.
Review status: 52 of 55 files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

cmd/virtletctl/virtletctl.go, line 43 at r4 (raw file):

	// Fix unwanted glog warnings, see
	// https://github.com/kubernetes/kubernetes/issues/17162#issuecomment-225596212
	flag.CommandLine.Parse([]string{})

Argh, was searching that, thx!

docs/virtletctl/virtletctl_ssh.md, line 13 at r4 (raw file):

virtletctl ssh user@pod -- [ssh args...] [flags]

Hmmm... That sucx - flags should be before -- but as it's autogenerated we probably don't have a control on that :/

docs/virtletctl/virtletctl_virsh.md, line 16 at r4 (raw file):

on the information of the VM pod. In case if no @podname
is specified, it's necessary to provide the node name
using the --node flag.

Hmmm... Afair shell script allowed to e.g. list domains from all instances, on all nodes, so that looks like regression.

examples/README.md, line 27 at r4 (raw file):

Besides cirros-vm.yaml, there's also ubuntu-vm.yaml that can be used to start an Ubuntu Xenial VM. It can also be accessed using virtletctl ssh after it boots:

If there is info about ubuntu, imo we should also mention similar yaml for fedora. Now it looks like second-class citizen.

Comments from Reviewable

Review status: 36 of 55 files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

cmd/virtletctl/virtletctl.go, line 43 at r4 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
Argh, was searching that, thx!

For such comments pls select "Satisfied" in the circle with checkmark so it doesn't count as an "unresolved discussion" in Reviewable :)

docs/virtletctl/virtletctl_ssh.md, line 13 at r4 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
Hmmm... That sucx - flags should be before -- but as it's autogenerated we probably don't have a control on that :/

Done (it's easily fixable by adding [flags] to the Use string, it'll not be added there second time)

docs/virtletctl/virtletctl_virsh.md, line 16 at r4 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
Hmmm... Afair shell script allowed to e.g. list domains from all instances, on all nodes, so that looks like regression.

Fixed. Made it run on every node in this case as it was before.

examples/README.md, line 27 at r4 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
If there is info about ubuntu, imo we should also mention similar yaml for fedora. Now it looks like second-class citizen.

Done.

pkg/tools/kubeclient.go, line 151 at r3 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
This func needs a docstring.

It didn't need to be capitalized, fixed.

pkg/tools/kubeclient.go, line 167 at r3 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
This func needs a docstring.

It didn't need to be capitalized, fixed.

pkg/tools/kubeclient.go, line 191 at r3 (raw file):
Previously, jellonek (Piotr Skamruk) wrote…
This func needs a docstring.

Done.

Comments from Reviewable

Reviewed 2 of 9 files at r1, 49 of 67 files at r4, 19 of 19 files at r5.
Review status: all files reviewed at latest revision, 7 unresolved discussions, some commit checks failed.

Comments from Reviewable

Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable


[ANDROID] Cannot perform listBlobs action in Azure storage on Android

The listBlobs method (and other methods that return a flat-mapped PageIterable) fails with java.lang.ExceptionInInitializerError at com.azure.core.util.serializer.JacksonAdapter.getXmlMapper
when running on Android.
The http request returns an xml document containing the blobs but XmlMapperFactory doesn't seem able to be resolved and the process hangs until timeout (or until manually terminated if no timeout is set).
LOGCAT output:
logcat output.txt
To Reproduce
In android (API 26) use the BlockBlobClient.listBlobs() method.
Code Snippet
Add the code snippet that causes the issue.
Expected behavior
Should return an iterable list of the blobs.
Setup (please complete the following information):

OS: Android API 26
IDE: Android Studio
Library/Libraries: com.azure:azure-storage-blob:12.23.1, com.azure:azure-core-http-okhttp:1.11.2, com.fasterxml.jackson:jackson-bom:2.15.2 (plus all jackson dependencies at 2.15.2 as otherwise not android compatible due unsupported XmlFactory method)
Java version: compiled in 17, target 8/Android API 26

Additional context
PR#37007 may resolve some of this issue by updating reflectionutils in azure core

@jr1000000 is going to look into using the latest azure-core code to determine if that resolves this issue.

Hi @JonathanGiles I have tested importing the latest reflectionutils code and that hasn't resolved the issue.  I am still getting the same error logs as before.

Thanks - leave it with us then.

Tentatively closing this issue as fixed as Storage libraries should no longer be using Jackson for XML serialization.


How does extract concept in IntelliJ Idea work?

Function extract to concept should work in IntelliJ Idea?
you can find hints on this
here http://getgauge.io/documentation/technical/current/ide_plugin.html#extract-to-concept
and here http://getgauge.io/documentation/user/0.0.6/ide_support/features.html
How do I do it?
Gauge version
Gauge version: 0.6.1
Plugins
html-report (2.1.1)
java (0.5.0)
IntelliJ Idea Gauge Plugin
Version 0.2.3

any advice?

@kupna : Thanks for pointing out that the document needs to be updated.
Meanwhile here are the steps.
Steps to extract concept

Open a spec
Select the steps to be extracted.
Right click -> Refactor -> Extract to Concept will initiate the process
Give a concept name
enter the file name for extraction.
Choose an existing concept or specify the location for new file

Note: Currently may need to specify the extension .cpt. For the location you can use a existing folder under specs.

Hope this helps.

@kupna This feature is not yet released. It's still a WIP.

Please refer https://github.com/getgauge/gauge/issues/508 for more info on extract to concept feature.


[$500] Payment issue for #29628

Payment for https://github.com/Expensify/App/issues/29628
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~010966533092430811
Upwork Job ID:<PHONE_NUMBER>133584896
Last Price Increase: 2024-01-16

Paid, closing


add PodDisruptionBudget for each RedisCluster

Fixes: #9
In order to protect the RedisCluster, it is important to limit the
number of Pod that can be delete. The operator now create a
PodDisruptionBudget for each RedisCluster instance corresponding to the
service LabelSelector and limit to only one Pod deletion at the time.

Codecov Report

Merging #12 into master will decrease coverage by 2.34%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master      #12      +/-   ##
==========================================
- Coverage   39.21%   36.87%   -2.35%
==========================================
  Files          36       37       +1
  Lines        3330     3393      +63
==========================================
- Hits         1306     1251      -55
- Misses       1904     2027     +123
+ Partials      120      115       -5

Impacted Files
Coverage Δ

pkg/controller/controller.go
0% <0%> (ø)
:arrow_up:

pkg/controller/poddisruptionbudget_control.go
0% <0%> (ø)

pkg/controller/sanitycheck/clustersplit.go
0% <0%> (-81.43%)
:arrow_down:

pkg/controller/clustering/cluster-placement.go
60.16% <0%> (+1.62%)
:arrow_up:

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 e88cb08...5df4ab9. Read the comment docs.


Rename device_info()?

When using auto-completion, this interferes with default.
It would be nice to rename it to something not starting with 'd'.
See discussion in 2b4bb3d42addfe6702dceb4630b1d1ac446bf827.

It's not a real problem, but it's an inconvenience for a user who uses tab-completion a lot.
In my new module sounddevice, I renamed the function to query_devices().
This way, I only need to type d<Tab> to get the default object.


update versioneer for 3.12 compatibility

The current version of versionneer is not compatible with latest python. This brings versioneer up-to-date.

Thanks @cbouss for this. How can we be sure this won't break anything? I'm not familiar with versionneer at all.

I dont think the failures are related to this change. I'm happy with the versioneer and pre-commit changes. But @guillaumeeb  if you could pull the trigger just to make sure you're happy going ahead despite the SGE failure.

SGE failure has been here for months!


Not possible to create Text Channels in a category, even though direct MANAGE_CHANNEL permissions to this category were granted.

General Troubleshooting

[x] I have checked for similar issues.
[x] I have updated to the latest JDA version.
[x] I have checked the branches or the maintainers' PRs for upcoming bug fixes.

Bug Report
I assigned the MANAGE_CHANNEL permission to a role/botUser for a specific category only, not as a global permission.
The PermissionUtil.checkPermission() function returns true in the context of the category and for this member.
However the creation of the TextChannel throws an error:
InsufficientPermissionException: Cannot perform action due to a lack of Permission. Missing permission: MANAGE_CHANNEL

According to the documentation  this is the expected behavior, since it reads: For this to be successful, the logged in account has to have the MANAGE_CHANNEL Permission in the Guild.
However, if i try the same with a real user in a browser (same permission, same role, no owner/admin), I am able to add a new channel to this category, via "+" button next to the category.
Expected Behavior
Either the PermissionUtil.checkPermission() should return false here or the createTextChannel functionality should be updated in the context of a category, since it is possible to assign the permission in the scope of a category via the browser.
Code Example or Reproduction Steps
if (PermissionUtil.checkPermission(myCategory, selfMember, Permission.MANAGE_CHANNEL) )
{
    TextChannel myNewChannel = myCategory.createTextChannel("MyNewChannel").complete();
}

Code for JDABuilder or DefaultShardManagerBuilder Used
jda = JDABuilder.createDefault(BOT_TOKEN).build();

Exception or Error
2020-09-02T23:53:34.874+0200 [QUIET] [system.out] net.dv8tion.jda.api.exceptions.InsufficientPermissionException: Cannot perform action due to a lack of Permission. Missing permission: MANAGE_CHANNEL
2020-09-02T23:53:34.874+0200 [QUIET] [system.out] 	at net.dv8tion.jda.internal.entities.GuildImpl.checkPermission(GuildImpl.java:1441)
2020-09-02T23:53:34.874+0200 [QUIET] [system.out] 	at net.dv8tion.jda.internal.entities.GuildImpl.createTextChannel(GuildImpl.java:1322)
2020-09-02T23:53:34.874+0200 [QUIET] [system.out] 	at net.dv8tion.jda.internal.entities.CategoryImpl.createTextChannel(CategoryImpl.java:161)

However, if i try the same with a real user in a browser (same permission, same role, no owner/admin), I am able to add a new channel to this category, via "+" button next to the category.

Can confirm that, seems like Discord changed to allow people to create GuildChannels in a category they have a permission override for.

Note that you should not be using PermissionUtil in your code. This is an internal class and should not be used. We provide proper ways to check permissions in the IPermissionHolder interface which is implemented by Member.
See hasPermission


Failed to install sensu on Redhat

Hi ,
I am using the latest ansible with my playbook having the below code
- hosts: sensu-servers
    roles:
      - role: cmacrae.sensu

**It is failing at the step of  Deploy the Sensu client SSL cert/Key**

[DEPRECATION WARNING]: The use of 'include' for tasks has been deprecated. Use
'import_tasks' for static inclusions or 'include_tasks' for dynamic inclusions.
 This feature will be removed in a future release. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: include is kept for backwards compatibility but usage is
 discouraged. The module documentation details page may explain more about this
 rationale.. This feature will be removed in a future release. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: The use of 'static' has been deprecated. Use
'import_tasks' for static inclusion, or 'include_tasks' for dynamic inclusion.
This feature will be removed in a future release. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY [sensu-servers] ***********************************************************

TASK [Gathering Facts] *********************************************************
ok: [sensu-server]

TASK [cmacrae.sensu : include_vars] ********************************************
ok: [sensu-server]

TASK [cmacrae.sensu : include] *************************************************
included: /home/mohan/.ansible/roles/cmacrae.sensu/tasks/RedHat/main.yml for cd-a                                                                                rch-072

TASK [cmacrae.sensu : include_vars] ********************************************
ok: [sensu-server]

TASK [cmacrae.sensu : Set sensu_pkg_version RedHat override] *******************
ok: [sensu-server]

TASK [cmacrae.sensu : Ensure the Sensu Core Yum repo is present] ***************
ok: [sensu-server]

TASK [cmacrae.sensu : Ensure that credential is supplied if installing Sensu Ent                                                                                erprise] ***
skipping: [sensu-server]

TASK [cmacrae.sensu : Ensure the Sensu Enterprise repo is present] *************
skipping: [sensu-server]

TASK [cmacrae.sensu : Ensure the Sensu Enterprise Dashboard repo is present] ***
skipping: [sensu-server]

TASK [cmacrae.sensu : Ensure Sensu is installed] *******************************
ok: [sensu-server]

TASK [cmacrae.sensu : Ensure Sensu Enterprise is installed] ********************
skipping: [sensu-server]

TASK [cmacrae.sensu : include] *************************************************
skipping: [sensu-server]

TASK [cmacrae.sensu : include] *************************************************
included: /home/mohan/.ansible/roles/cmacrae.sensu/tasks/ssl.yml for sensu-server

TASK [cmacrae.sensu : include_vars] ********************************************
ok: [sensu-server]

TASK [cmacrae.sensu : Ensure Sensu SSL directory exists] ***********************
ok: [sensu-server]

TASK [cmacrae.sensu : include] *************************************************
included: /home/mohan/.ansible/roles/cmacrae.sensu/tasks/ssl_generate.yml for cd-                                                                                arch-072

TASK [cmacrae.sensu : include_vars] ********************************************
ok: [sensu-server]

TASK [cmacrae.sensu : Ensure SSL generation directory exists] ******************
skipping: [sensu-server]

TASK [cmacrae.sensu : Untar the ssl_certs tarball from sensuapp.org] ***********
skipping: [sensu-server]

TASK [cmacrae.sensu : Generate SSL certs] **************************************
skipping: [sensu-server]

TASK [cmacrae.sensu : Stash the Sensu SSL certs/keys] **************************
skipping: [sensu-server] => (item=sensu_ca/cacert.pem)
skipping: [sensu-server] => (item=server/cert.pem)
skipping: [sensu-server] => (item=server/key.pem)
skipping: [sensu-server] => (item=client/cert.pem)
skipping: [sensu-server] => (item=client/key.pem)

TASK [cmacrae.sensu : Deploy the Sensu client SSL cert/key] ********************
fatal: [sensu-server]: FAILED! => {"msg": "{{ sensu_ssl_tool_base_path }}/client/cert.pem: {{ dynamic_data_store }}/{{ groups['sensu_masters'][0] }}{{sensu_master_config_path }}/ssl_generation/sensu_ssl_tool: {{hostvars[groups['sensu_masters'][0]]['sensu_config_path'] | default('/etc/sensu') }}: 'dict object' has no attribute 'sensu_masters'"}
        to retry, use: --limit @/home/mohan/sensu/site.retry

PLAY RECAP *********************************************************************
sensu-server                : ok=12   changed=0    unreachable=0    failed=1

[mohan@ansible sensu]$ ansible-playbook --version
ansible-playbook <IP_ADDRESS>
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/mohan/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.5 (default, May  3 2017, 07:55:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-14)]

Hey @mohanrao,
Taking a quick look at your output:
fatal: [sensu-server]: FAILED! => {"msg": "{{ sensu_ssl_tool_base_path }}/client/cert.pem: {{ dynamic_data_store }}/{{ groups['sensu_masters'][0] }}{{sensu_master_config_path }}/ssl_generation/sensu_ssl_tool: {{hostvars[groups['sensu_masters'][0]]['sensu_config_path'] | default('/etc/sensu') }}: 'dict object' has no attribute 'sensu_masters'"}

It looks like you don't have a hostgroup called sensu_masters. It's not required (especially if you are only running the entire stack on one node). https://ansible-sensu.readthedocs.io/en/latest/single_master/ documents some alternatives. Can you give the options outlined in that doc a shot and let me know if anything doesn't make sense?

@jaredledvina Thanks. It worked!

Hello,
I'm deploying a full Sensu stack with this role. I'm downloading and running it with Packer/Docker, but I'm getting this same error. Changing RabbitMQ/Redis/Sensu host to localhost in a similar way the doc shows doesn't help.
I've found that two more variables could be related to this problem as they mention the same variable:
*sensu_master_config_path
*sensu_ssl_tool_base_path
But can't figure how to success.

@beeva-diegombeltran: Can you provide a redacted the output from the run of your playbook? Sounds like you're looking to deploy an all-in-one (Rabbit, Redis, Sensu, Uchiwa all on the same box), but let me know if that's not the case.

Hello,
I'm deploying a full Sensu stack with this role. I'm downloading and running it with Packer/Docker, but I'm getting this same error. Changing RabbitMQ/Redis/Sensu host to localhost in a similar way the doc shows doesn't help.
I've found that two more variables could be related to this problem as they mention the same variable:
*sensu_master_config_path
*sensu_ssl_tool_base_path
But can't figure how to success.

This was confusing to me as well. You are getting that error because those 2 variables require groups['sensu_masters'] but the Doc says it is not a required group. I tried setting sensu_ssl_gen_certs and sensu_ssl_manage_certs to false but the ruby service will not run because it is looking for the certs.
You can either override those variables with your own groups or add a 'sensu_masters' group with the same host to your inventory file

Hi, I don't know why GitHub isn't notifying me... anyway:
Yes, I'm trying to deploy all in the same box. I managed to workaround it by running the playbook with an inventory file (sensu_masters group), but it's not a good way, because I'm trying to launch the role from a GitLab CI pipeline, using Ansible dynamic inventories.

BTW, here is the output:
TASK [sensu.sensu : Deploy the Sensu client SSL cert/key] ********************** fatal: [ip-10-0-103-168.eu-central-1.compute.internal]: FAILED! => {"msg": "'dict object' has no attribute 'sensu_masters'"} 	to retry, use: --limit @/builds/OrangeX/System/Provisioning/serviceassurance-sensu-provision/sensu.retry

@beeva-diegombeltran  looks like you override the sensu_ssl_tool_base_path (that requires {{ groups['sensu_masters'][0] }}) variable with your dynamic host/group var. If AWS, then tags from ec2.py? If you are managing ssl in other ways, you can always turn off managing the certs to skip that task

Hello,
Yes, I'm using ec2.py. I'm not managing SSL generation in a different way, and it would be right if I do it with the Sensu role. Anyway, just to try, I'm going to turn off the certs generation for now and post here the results.

Hello,
Yes, I'm using ec2.py. I'm not managing SSL generation in a different way, and it would be right if I do it with the Sensu role. Anyway, just to try, I'm going to turn off the certs generation for now and post here the results.
EDIT--> Looks ok with the SSL generation set to false.

Well, it works... but there aren't any certificates in /etc/sensu/ssl... so not working at all.


Updating Next Steps

Thanks, Nick!
On Mon, Dec 7, 2015 at 11:15 PM, Nick Skelsey<EMAIL_ADDRESS>wrote:

You can view, comment on, or merge this pull request online at:
https://github.com/codefordc/school-modernization/pull/3
Commit Summary

Updating Next Steps

File Changes

M README.md
https://github.com/codefordc/school-modernization/pull/3/files#diff-0
(7)

Patch Links:

https://github.com/codefordc/school-modernization/pull/3.patch
https://github.com/codefordc/school-modernization/pull/3.diff

—
Reply to this email directly or view it on GitHub
https://github.com/codefordc/school-modernization/pull/3.

--
Tim Lee


Show date uploaded/modified, don't show duplicate creation dates

Fixes #1031

Changes Unknown when pulling 17967128a31d9884aad02d9d1f116ba12de28b3e on dates into ** on master**.


operator: startSynchronizingServices before kvstore

As kvstore with etcd-operator requires the services to be synchronized
first the setup of those services need to happen before the kvstore
setup is done.
Fixes: a9ed3577bcb2 ("operator: do not depend on cluster DNS to connect to etcd")
Signed-off-by: André Martins<EMAIL_ADDRESS>

This change is

test-me-please

Coverage decreased (-0.03%) to 44.2% when pulling cf90ff3335e6c4685be3307306bd3625b9e6991b on pr/fix-operator into b2c863af38cc10f5a097a37bad46de67164bf14f on master.


chore: bump to latest libs

What type of PR is this?
/kind feature
Any specific area of the project related to this PR?
/area build
What this PR does / why we need it:
bump to latest libs
Which issue(s) this PR fixes:
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
NONE

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 99abb9cb8ee98c6f5811b9b200940d27fa0a3776

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, FedeDP
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,FedeDP]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, FedeDP, incertum
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,FedeDP,incertum]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


[KeePassXC] ...

Extension
https://www.raycast.com/zkytech/keepassxc
Description
If the password contains the sequence ....{.....}.....   (where "." means any symbol), I think, that extension is trying to interpret this and receives an error and cannot paste the password.
Steps To Reproduce

Create a record with password, for example: 33{fg}555
Try to use it in console

Current Behaviour
Error: Maximum depths of replacement has been reached. Entry uuid: {some uuid here}
Expected Behaviour
Paste stored password

And maybe it can be a security problem.

Hello,
Sorry, but this problem returns.

Any news?

Any news?

already fixed 1 month ago


New Documentation

We need some new docs...badly. We're at the stage of the rewrite now where most things are pretty concrete so it's time to smash this. Anyone who wants a section, comment below and we'll knock them out.
I'm sure as we're going through this we can also weed out some of this junk for a cleaner API.
Also, it was a bit unclear from our chat earlier, but are we doing the docs on a subdomain using Github's wiki or are we keep it in Wordpress?
Public Methods

bind
unbind
destroy
retrieve
pause
resume
toggle
scroll
update

Options

callback
debug
behavior
binder
nextSelector
loading
navSelector
contentSelector
extraScrollPx
itemSelector
animate
pathParse
dataType
appendCallback
bufferPx
orientation
errorCallback
currPage
infid
state
pixelsFromNavToBottom
path

Behaviors

What are behaviors?
How to use?
Quick guide

Did this die? I can't even figure out how to call infiniteScroll in the latest version. What's up with that third element parameter that got added? Isn't the element just the .im-an-element part of  $('.im-an-element').infinitescroll({'blah': 'blah'}, someCallback());?

I've been working on this sporadically, but have been insanely busy and have lots and lots going on. If anyone wants to help, please do.
You call infinite scroll just the same as you always have. Is there some part in particular you're having an issue with? It still goes.
$('#el').infinitescroll({
  // your options
}, function (newElements) {
  // your callback
});

Infinite Scroll v3 is out!. With an all new site. Look at how younger Dave wanted to help :)


How to leverage versioning decorator in server endpoint params

Clear and concise description of the problem
https://github.com/Azure/azure-rest-api-specs/pull/27708/files#diff-40d8b2cf9bb6658c4dbf874ca40a783caaff9fa377b605ccc5b8a9fe76f38005
In the case, service team wants to update their server endpoint parameters, how should we do to keep the previous way in version v1, and have the new pattern in version v2?
Checklist

[X] Follow our Code of Conduct
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

investigate whether this is a blocking issue


Remove local.source_policy_documents and deprecated variable policy

Breaking Changes
Terraform version 1.3.0 or later is now required.
policy input removed
The deprecated policy input has been removed. Use source_policy_documents instead.
Convert from
policy = data.aws_iam_policy_document.log_delivery.json

to
source_policy_documents = [data.aws_iam_policy_document.log_delivery.json]

Do not use list modifiers like sort, compact, or distinct on the list, or it will trigger an Error: Invalid count argument. The length of the list must be known at plan time.
Logging configuration converted to list
To fix #182, the logging input has been converted to a list. If you have a logging configuration, simply surround it with brackets.
Replication rules brought into alignment with Terraform resrouce
Previously, the s3_replication_rules input had some deviations from the aws_s3_bucket_replication_configuration Terraform resource. Via the use of optional attributes, the input now closely matches the resource while providing backward compatibility, with a few exceptions.

Replication source_selection_criteria.sse_kms_encrypted_objects was documented as an object with one member, enabled, of type bool. However, it only worked when set to the string "Enabled". It has been replaced with the resource's choice of status of type String.
Previously, Replication Time Control could not be set directly. It was implicitly enabled by enabling Replication Metrics. We preserve that behavior even though we now add a configuration block for replication_time. To enable Metrics without Replication Time Control, you must set replication_time.status = "Disabled".

These are not changes, just continued deviations from the resources:

existing_object_replication cannot be set.
token to allow replication to be enabled on an Object Lock-enabled bucket cannot be set.

what

Remove local local.source_policy_documents and deprecated variable policy (because of that, pump the module to a major version)
Convert lifecycle_configuration_rules and s3_replication_rules from loosely typed objects to fully typed objects with optional attributes.
Use local bucket_id variable
Remove comments suppressing Bridgecrew rules
Update tests to Golang 1.20

why

The number of policy documents needs to be known at plan time. Default value of policy was empty, meaning it had to be removed based on content, which would not be known at plan time if the policy input was being generated.
Closes #167, supersedes and closes #163, and generally makes these inputs easier to deal with, since they now have type checking and partial defaults, meaning the inputs can be much smaller.
Incorporates and closes #197. Thank you @nikpivkin
Suppressing Bridgecrew rules Cloud Posse does not like should be done via external configuration so that users of this module can have the option of having those rules enforced.
Security and bug fixes

explanation
Any list manipulation functions should not be used in count since it can lead to the error:
│ Error: Invalid count argument
│
│   on ./modules/s3_bucket/main.tf line 462, in resource "aws_s3_bucket_policy" "default":
│  462:   count      = local.enabled && (var.allow_ssl_requests_only || var.allow_encrypted_uploads_only || length(var.s3_replication_source_roles) > 0 || length(var.privileged_principal_arns) > 0 || length(local.source_policy_documents) > 0) ? 1 : 0
│
│ The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to
│ first apply only the resources that the count depends on.

Using the local like this
source_policy_documents = var.policy != "" && var.policy != null ? concat([var.policy], var.source_policy_documents) : var.source_policy_documents

would not work either if var.policy depends on apply-time resources from other TF modules.
General rules:

When using for_each, the map keys have to be known at plan time (the map values are not required to be know at plan time)

When using count, the length of the list must be know at plan time, the items inside the list are not. That does not mean that the list must be static with the length known in advance, the list can be dynamic and come from a remote state or data sources which Terraform evaluates first during plan, it just can’t come from other resources (which are only known after apply)

When using count, no list manipulating functions can be used in count - it will lead to the The "count" value depends on resource attributes that cannot be determined until apply error in some cases

/terratest

/terratest


CON-847 -

Upgrade to dokka 1.5.31 and publish dokka to Artifactory.
Summary of changes:
Added notes about the changes made to Dokka.
Removed github/workflows.
Updated the dokka_version from 1.5.31 to 1.5.31-1.3-SNAPSHOT.
Updated the Maven group to com.r3.conclave.
Added publish to artifactory tasks

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 10 committers have signed the CLA.:x: MarcinAman:x: dependabot[bot]:x: kamildoleglo:x: rachelcarmena:x: msink:x: Goooler:x: vmishenev:x: fsladkey:x: surajsahani:x: filipesoliveiraYou have signed the CLA already but the status is still pending? Let us recheck it.


Move config out of common

[User Story] Move config out of common folder
----------|----------
T-shirt size: S(mall), M(edium), L(arge) | M
User Story |"As a developer there should only be one config for the app."
Description | There is a separate config file for the app in the common folder.  Need to move that to the external config.
Acceptance Criteria/Tests | One config

migrated to new tmobile/sawtooth-next-directory repo


RTSP Source 401 after v1.6.0

Which version are you using?
v1.6.0
Which operating system are you using?

[x] Linux amd64 Docker

Describe the issue
Hi Team,
Here is my story.
I have 3 different model of TP-Link cameras and added to the mediamtx.yml
at the version of 1.4.x of mediamtx all 3 cameras works perfectly
after upgrade to version 1.5.x one the camera goes down with the log of ERR [path ipc001] [RTSP source] bad status code: 401 (Unauthorized)
and when I update mediamtx to 1.6.0 two of the cameras going down with the 401 message only one camera works for now 😂
I'm pretty sure all the cameras are fine and can be lived with PotPlayer and VLC with the same rtsp url in mediamtx.yml
Describe how to replicate the issue

Did you attach the server logs?

yes
Did you attach a network dump?

no

Hello, this can be certainly fixed but you need to provide a server log with option logLevel: debug, in which the handshake with the cameras (and the resulting 401 status code) is clearly visible. Otherwise the bug cannot be replicated.

here is the server log for the issue

2024/04/28 06:49:18 INF [HLS] [muxer tplink] created (requested by <IP_ADDRESS>:49370)
2024/04/28 06:49:18 INF [path tplink] [RTSP source] started on demand
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] connecting
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] [c->s] OPTIONS rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 1
Date: Sun, Apr 28 2024 06:49:17 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER, MULTITRANS
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] [c->s] DESCRIBE rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: gortsplib
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] [s->c] RTSP/1.0 401 Unauthorized
CSeq: 2
Date: Sun, Apr 28 2024 06:49:17 GMT
WWW-Authenticate: Basic realm="TP-LINK IP-Camera"
WWW-Authenticate: Digest realm="TP-LINK IP-Camera", nonce="6100befdab6f407276c35030a302430b"
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] [c->s] DESCRIBE rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
Accept: application/sdp
Authorization: Digest username="admin", realm="TP-LINK IP-Camera", nonce="6100befdab6f407276c35030a302430b", uri="rtsp://<IP_ADDRESS>/stream1", response="7db77e7ba9fbbd76d723098ede1ed217", algorithm="MD5"
CSeq: 3
User-Agent: gortsplib
2024/04/28 06:49:18 DEB [path tplink] [RTSP source] [s->c] RTSP/1.0 401 Unauthorized
CSeq: 3
Date: Sun, Apr 28 2024 06:49:17 GMT
WWW-Authenticate: Basic realm="TP-LINK IP-Camera"
WWW-Authenticate: Digest realm="TP-LINK IP-Camera", nonce="21f7b6b2a54d22f10777ae5cff14b6ad"
2024/04/28 06:49:18 ERR [path tplink] [RTSP source] bad status code: 401 (Unauthorized)

below is the part of the mediamtx.yml config file

rtsp: yes
# List of enabled RTSP transport protocols.
# UDP is the most performant, but doesn't work when there's a NAT/firewall between
# server and clients, and doesn't support encryption.
# UDP-multicast allows to save bandwidth when clients are all in the same LAN.
# TCP is the most versatile, and does support encryption.
# The handshake is always performed with TCP.
protocols: [udp, multicast, tcp]
# Encrypt handshakes and TCP streams with TLS (RTSPS).
# Available values are "no", "strict", "optional".
encryption: 'no'
# Address of the TCP/RTSP listener. This is needed only when encryption is "no" or "optional".
rtspAddress: :8554
# Address of the TCP/TLS/RTSPS listener. This is needed only when encryption is "strict" or "optional".
rtspsAddress: :8322
# Address of the UDP/RTP listener. This is needed only when "udp" is in protocols.
rtpAddress: :8000
# Address of the UDP/RTCP listener. This is needed only when "udp" is in protocols.
rtcpAddress: :8001
# IP range of all UDP-multicast listeners. This is needed only when "multicast" is in protocols.
multicastIPRange: <IP_ADDRESS>/16
# Port of all UDP-multicast/RTP listeners. This is needed only when "multicast" is in protocols.
multicastRTPPort: 8002
# Port of all UDP-multicast/RTCP listeners. This is needed only when "multicast" is in protocols.
multicastRTCPPort: 8003
# Path to the server key. This is needed only when encryption is "strict" or "optional".
# This can be generated with:
# openssl genrsa -out server.key 2048
# openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
serverKey: server.key
# Path to the server certificate. This is needed only when encryption is "strict" or "optional".
serverCert: server.crt
# Authentication methods. Available are "basic" and "digest".
# "digest" doesn't provide any additional security and is available for compatibility only.
rtspAuthMethods: [basic]

pathDefaults:
  ###############################################
  # Default path settings -> General

  # Source of the stream. This can be:
  # * publisher -> the stream is provided by a RTSP, RTMP, WebRTC or SRT client
  # * rtsp://existing-url -> the stream is pulled from another RTSP server / camera
  # * rtsps://existing-url -> the stream is pulled from another RTSP server / camera with RTSPS
  # * rtmp://existing-url -> the stream is pulled from another RTMP server / camera
  # * rtmps://existing-url -> the stream is pulled from another RTMP server / camera with RTMPS
  # * http://existing-url/stream.m3u8 -> the stream is pulled from another HLS server / camera
  # * https://existing-url/stream.m3u8 -> the stream is pulled from another HLS server / camera with HTTPS
  # * udp://ip:port -> the stream is pulled with UDP, by listening on the specified IP and port
  # * srt://existing-url -> the stream is pulled from another SRT server / camera
  # * whep://existing-url -> the stream is pulled from another WebRTC server / camera
  # * wheps://existing-url -> the stream is pulled from another WebRTC server / camera with HTTPS
  # * redirect -> the stream is provided by another path or server
  # * rpiCamera -> the stream is provided by a Raspberry Pi Camera
  # If path name is a regular expression, $G1, G2, etc will be replaced
  # with regular expression groups.
  source: publisher
  # If the source is a URL, and the source certificate is self-signed
  # or invalid, you can provide the fingerprint of the certificate in order to
  # validate it anyway. It can be obtained by running:
  # openssl s_client -connect source_ip:source_port </dev/null 2>/dev/null | sed -n '/BEGIN/,/END/p' > server.crt
  # openssl x509 -in server.crt -noout -fingerprint -sha256 | cut -d "=" -f2 | tr -d ':'
  sourceFingerprint:
  # If the source is a URL, it will be pulled only when at least
  # one reader is connected, saving bandwidth.
  sourceOnDemand: yes
  # If sourceOnDemand is "yes", readers will be put on hold until the source is
  # ready or until this amount of time has passed.
  sourceOnDemandStartTimeout: 10s
  # If sourceOnDemand is "yes", the source will be closed when there are no
  # readers connected and this amount of time has passed.
  sourceOnDemandCloseAfter: 10s
  # Maximum number of readers. Zero means no limit.
  maxReaders: 0
  # SRT encryption passphrase require to read from this path
  srtReadPassphrase:
  # If the stream is not available, redirect readers to this path.
  # It can be can be a relative path (i.e. /otherstream) or an absolute RTSP URL.
  fallback:

  ###############################################
  # Default path settings -> Record and playback

  # Record streams to disk.
  record: no
  # Enable serving recordings with the playback server.
  playback: no
  # Path of recording segments.
  # Extension is added automatically.
  # Available variables are %path (path name), %Y %m %d %H %M %S %f %s (time in strftime format)
  recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S-%f
  # Format of recorded segments.
  # Available formats are "fmp4" (fragmented MP4) and "mpegts" (MPEG-TS).
  recordFormat: fmp4
  # fMP4 segments are concatenation of small MP4 files (parts), each with this duration.
  # MPEG-TS segments are concatenation of 188-bytes packets, flushed to disk with this period.
  # When a system failure occurs, the last part gets lost.
  # Therefore, the part duration is equal to the RPO (recovery point objective).
  recordPartDuration: 100ms
  # Minimum duration of each segment.
  recordSegmentDuration: 1h
  # Delete segments after this timespan.
  # Set to 0s to disable automatic deletion.
  recordDeleteAfter: 24h

  ###############################################
  # Default path settings -> Publisher source (when source is "publisher")

  # Allow another client to disconnect the current publisher and publish in its place.
  overridePublisher: yes
  # SRT encryption passphrase required to publish to this path
  srtPublishPassphrase:

  ###############################################
  # Default path settings -> RTSP source (when source is a RTSP or a RTSPS URL)

  # Transport protocol used to pull the stream. available values are "automatic", "udp", "multicast", "tcp".
  rtspTransport: automatic
  # Support sources that don't provide server ports or use random server ports. This is a security issue
  # and must be used only when interacting with sources that require it.
  rtspAnyPort: no
  # Range header to send to the source, in order to start streaming from the specified offset.
  # available values:
  # * clock: Absolute time
  # * npt: Normal Play Time
  # * smpte: SMPTE timestamps relative to the start of the recording
  rtspRangeType:
  # Available values:
  # * clock: UTC ISO 8601 combined date and time string, e.g. 20230812T120000Z
  # * npt: duration such as "300ms", "1.5m" or "2h45m", valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h"
  # * smpte: duration such as "300ms", "1.5m" or "2h45m", valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h"
  rtspRangeStart:

  ###############################################
  # Default path settings -> Redirect source (when source is "redirect")

  # RTSP URL which clients will be redirected to.
  sourceRedirect:

  ###############################################
  # Default path settings -> Raspberry Pi Camera source (when source is "rpiCamera")

  # ID of the camera
  rpiCameraCamID: 0
  # width of frames
  rpiCameraWidth: 1920
  # height of frames
  rpiCameraHeight: 1080
  # flip horizontally
  rpiCameraHFlip: false
  # flip vertically
  rpiCameraVFlip: false
  # brightness [-1, 1]
  rpiCameraBrightness: 0
  # contrast [0, 16]
  rpiCameraContrast: 1
  # saturation [0, 16]
  rpiCameraSaturation: 1
  # sharpness [0, 16]
  rpiCameraSharpness: 1
  # exposure mode.
  # values: normal, short, long, custom
  rpiCameraExposure: normal
  # auto-white-balance mode.
  # values: auto, incandescent, tungsten, fluorescent, indoor, daylight, cloudy, custom
  rpiCameraAWB: auto
  # auto-white-balance fixed gains. This can be used in place of rpiCameraAWB.
  # format: [red,blue]
  rpiCameraAWBGains: [0, 0]
  # denoise operating mode.
  # values: off, cdn_off, cdn_fast, cdn_hq
  rpiCameraDenoise: 'off'
  # fixed shutter speed, in microseconds.
  rpiCameraShutter: 0
  # metering mode of the AEC/AGC algorithm.
  # values: centre, spot, matrix, custom
  rpiCameraMetering: centre
  # fixed gain
  rpiCameraGain: 0
  # EV compensation of the image [-10, 10]
  rpiCameraEV: 0
  # Region of interest, in format x,y,width,height
  rpiCameraROI:
  # whether to enable HDR on Raspberry Camera 3.
  rpiCameraHDR: false
  # tuning file
  rpiCameraTuningFile:
  # sensor mode, in format [width]:[height]:[bit-depth]:[packing]
  # bit-depth and packing are optional.
  rpiCameraMode:
  # frames per second
  rpiCameraFPS: 30
  # period between IDR frames
  rpiCameraIDRPeriod: 60
  # bitrate
  rpiCameraBitrate: 1000000
  # H264 profile
  rpiCameraProfile: main
  # H264 level
  rpiCameraLevel: '4.1'
  # Autofocus mode
  # values: auto, manual, continuous
  rpiCameraAfMode: continuous
  # Autofocus range
  # values: normal, macro, full
  rpiCameraAfRange: normal
  # Autofocus speed
  # values: normal, fast
  rpiCameraAfSpeed: normal
  # Lens position (for manual autofocus only), will be set to focus to a specific distance
  # calculated by the following formula: d = 1 / value
  # Examples: 0 moves the lens to infinity.
  #           0.5 moves the lens to focus on objects 2m away.
  #           2 moves the lens to focus on objects 50cm away.
  rpiCameraLensPosition: 0.0
  # Specifies the autofocus window, in the form x,y,width,height where the coordinates
  # are given as a proportion of the entire image.
  rpiCameraAfWindow:
  # enables printing text on each frame.
  rpiCameraTextOverlayEnable: false
  # text that is printed on each frame.
  # format is the one of the strftime() function.
  rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - MediaMTX'

  ###############################################
  # Default path settings -> Hooks

  # Command to run when this path is initialized.
  # This can be used to publish a stream when the server is launched.
  # This is terminated with SIGINT when the program closes.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  runOnInit:
  # Restart the command if it exits.
  runOnInitRestart: no

  # Command to run when this path is requested by a reader
  # and no one is publishing to this path yet.
  # This can be used to publish a stream on demand.
  # This is terminated with SIGINT when there are no readers anymore.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * MTX_QUERY: query parameters (passed by first reader)
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  runOnDemand:
  # Restart the command if it exits.
  runOnDemandRestart: no
  # Readers will be put on hold until the runOnDemand command starts publishing
  # or until this amount of time has passed.
  runOnDemandStartTimeout: 10s
  # The command will be closed when there are no
  # readers connected and this amount of time has passed.
  runOnDemandCloseAfter: 10s
  # Command to run when there are no readers anymore.
  # Environment variables are the same of runOnDemand.
  runOnUnDemand:

  # Command to run when the stream is ready to be read, whenever it is
  # published by a client or pulled from a server / camera.
  # This is terminated with SIGINT when the stream is not ready anymore.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * MTX_QUERY: query parameters (passed by publisher)
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SOURCE_TYPE: source type
  # * MTX_SOURCE_ID: source ID
  runOnReady:
  # Restart the command if it exits.
  runOnReadyRestart: no
  # Command to run when the stream is not available anymore.
  # Environment variables are the same of runOnReady.
  runOnNotReady:

  # Command to run when a client starts reading.
  # This is terminated with SIGINT when a client stops reading.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * MTX_QUERY: query parameters (passed by reader)
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_READER_TYPE: reader type
  # * MTX_READER_ID: reader ID
  runOnRead:
  # Restart the command if it exits.
  runOnReadRestart: no
  # Command to run when a client stops reading.
  # Environment variables are the same of runOnRead.
  runOnUnread:

  # Command to run when a recording segment is created.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SEGMENT_PATH: segment file path
  runOnRecordSegmentCreate:

  # Command to run when a recording segment is complete.
  # The following environment variables are available:
  # * MTX_PATH: path name
  # * RTSP_PORT: RTSP server port
  # * G1, G2, ...: regular expression groups, if path name is
  #   a regular expression.
  # * MTX_SEGMENT_PATH: segment file path
  runOnRecordSegmentComplete:

###############################################
# Path settings

# Settings in "paths" are applied to specific paths, and the map key
# is the name of the path.
# Any setting in "pathDefaults" can be overridden here.
# It's possible to use regular expressions by using a tilde as prefix,
# for example "~^(test1|test2)$" will match both "test1" and "test2",
# for example "~^prefix" will match all paths that start with "prefix".
paths:
  tplink:
    source<EMAIL_ADDRESS>

it seems that a digest auth was used to authenticate with the camera but the camera seems not supporting in that way @aler9

@emeryao thanks for providing the log, please test this nightly release and let me know if it fixes the issues (click on "Arifacts", "binaries"):
https://github.com/bluenviron/mediamtx/actions/runs/8945300574

I have exactly the same issue with cameras from the same brand(TP-Link)

@bobocancan if you want to solve the issue, download and test the nightly release attached in the previous post and let me know if it fixes the problem. If it doesn't attach server logs with logLevel: debug option.

Thank you for your reply Alessandro.
I am using the docker version, not really sure how I can replace the binary.
On Mon, 6 May 2024 at 19:14, Alessandro Ros @.***>
wrote:

@bobocancan https://github.com/bobocancan if you want to solve the
issue, download and test the nightly release attached in the previous post
and let me know if it fixes the problem. If it doesn't attach server logs
with logLevel: debug option.
—
Reply to this email directly, view it on GitHub
https://github.com/bluenviron/mediamtx/issues/3116#issuecomment-2095526210,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIGL5XHGFYH375CR34R6CPTZA5CXPAVCNFSM6AAAAABEKH2Q2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOJVGUZDMMRRGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Sorry for the late repsponse since my computer went down during the weekend and I just fixed it 😅
Below is the debug log of the binary from https://github.com/bluenviron/mediamtx/actions/runs/8945300574

2024/05/07 09:43:57 INF [HLS] [muxer stdhqipc64] created (requested by <IP_ADDRESS>:48930)
2024/05/07 09:43:57 INF [path stdhqipc64] [RTSP source] started on demand
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] connecting
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] [c->s] OPTIONS rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] [s->c] RTSP/1.0 200 OK
CSeq: 1
Date: Tue, May 07 2024 09:43:57 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER, MULTITRANS
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] [c->s] DESCRIBE rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: gortsplib
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] [s->c] RTSP/1.0 401 Unauthorized
CSeq: 2
Date: Tue, May 07 2024 09:43:57 GMT
WWW-Authenticate: Basic realm="TP-LINK IP-Camera"
WWW-Authenticate: Digest realm="TP-LINK IP-Camera", nonce="96fa3da3bceda6441e098764e178ed07"
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] [c->s] DESCRIBE rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
Accept: application/sdp
Authorization: Digest username="admin", realm="TP-LINK IP-Camera", nonce="96fa3da3bceda6441e098764e178ed07", uri="rtsp://<IP_ADDRESS>/stream1", response="a4a81d810668524205e0c4131196aec7"
CSeq: 3
User-Agent: gortsplib
2024/05/07 09:43:57 DEB [path stdhqipc64] [RTSP source] [s->c] RTSP/1.0 401 Unauthorized
CSeq: 3
Date: Tue, May 07 2024 09:43:57 GMT
WWW-Authenticate: Basic realm="TP-LINK IP-Camera"
WWW-Authenticate: Digest realm="TP-LINK IP-Camera", nonce="8a007ab52cc509a445f4b55fb6144b1c"
2024/05/07 09:43:57 ERR [path stdhqipc64] [RTSP source] bad status code: 401 (Unauthorized)
2024/05/07 09:44:02 DEB [path stdhqipc64] [RTSP source] connecting
2024/05/07 09:44:02 DEB [path stdhqipc64] [RTSP source] [c->s] OPTIONS rtsp://<IP_ADDRESS>/stream1 RTSP/1.0
CSeq: 1
User-Agent: gortsplib
2024/05/07 09:44:03 DEB [path stdhqipc64] [RTSP source] [s->c] RTSP/1.0 200 OK

@emeryao thanks for the feedback, it seems like my patch was unable to solve the issue. Can you post the same log but using v1.4.2 (last working version)? in this way we can check why v1.4.2 was working and my patch was not (BTW i was not able to spot differences between v1.4.2 and my patch). Also check whether credentials are correct.

@aler9 your patch just works after the camera rebooted with the  nightly build 🎉

perfect, i'm merging the patch.


Make remindme reliable

Have a list of (remind_time, reminder_delay, user_mention, reminder_message) tuples.
Have a 'next_reminder' tuple of (remind_time, index) that represents the earliest upcoming reminder and its index in the list.
As an async task, keep checking if the next_reminder[0] has passed. If so:

Pop list[index], send that reminder
Iterate through the list and get the new next_reminder

Fixed


show guests and repos on status page of instance

implemented in https://github.com/sharingio/pair/pull/65


Making url lowercase for news / devtools

@gauntface - we can close this now that we've made the other changes, correct?

Yes we can
On Tue, 13 Oct 2015 at 20:14 Pete LePage<EMAIL_ADDRESS>wrote:

@gauntface https://github.com/gauntface - we can close this now that
we've made the other changes, correct?
—
Reply to this email directly or view it on GitHub
https://github.com/google/WebFundamentals/pull/2074#issuecomment-147819617
.


MjSpec.copy(): Unable to convert function return value to a Python type!

Intro
Hi!
I am a MuJoCo user working on manipulation.
My setup
MuJoCo:
$ python -c "import mujoco; print(mujoco.__version__)"
3.2.4

What's happening? What did you expect?
In specs_test.py:
  def test_copy_spec(self):
    spec_0 = mujoco.MjSpec()
    body_0 = spec_0.worldbody.add_body(pos=[1, 2, 3])
    spec_0.compile()
    spec_1 = spec_0.copy()
    body_1 = spec_1.worldbody.first_body()
    np.testing.assert_array_equal(body_1.pos, body_0.pos)

python -m unittest ./python/mujoco/specs_test.py -k "test_copy_spec"
E
======================================================================
ERROR: test_copy_spec (python.mujoco.specs_test.SpecsTest.test_copy_spec)
python.mujoco.specs_test.SpecsTest.test_copy_spec
----------------------------------------------------------------------
TypeError: Unregistered type : mjSpec_

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

Traceback (most recent call last):
  File "mujoco/python/mujoco/specs_test.py", line 898, in test_copy_spec
    spec_1 = spec_0.copy()
             ^^^^^^^^^^^^^
TypeError: Unable to convert function return value to a Python type! The signature was
        (self: mujoco._specs.MjSpec) -> mjSpec_

----------------------------------------------------------------------
Ran 1 test in 0.006s

FAILED (errors=1)

I was expecting/hoping this to create a (deep) copy the spec.
Steps for reproduction
See above.
Minimal model for reproduction
See above.
Code required for reproduction
See above.
Confirmations

[X] I searched the latest documentation thoroughly before posting.
[X] I searched previous Issues and Discussions, I am certain this has not been raised before.

Hi, this should have been fixed by ca45041049003d55fc030a254d548edd86b3d54c could you build from source and test? Or you can wait for the next release which should happen this week.


fix needless-range and clippy::ptr_arg warnings.

clippy::ptr_arg is still present in:

[ ] src/algorithm/neighbour/mod.rs
[ ] src/metrics/cluster_helpers.rs
[ ]  src/linalg/naive/dense_matrix.rs

Not sure how to fix that warning in those files.

I am sorry @VolodymyrOrlov, I force pushed for a change in a variable name in the first commit.


fair cut algorithm in python

Solved issue #399
In Language- python

[x] Updated README Link
[x] Added code with comments

Thanks for contributing!

Place it under Algorithms/Dynamic Programming

Done !!

Change in README also add proper comments in code

what change would u like to see in readme? can u tell me a little about that?

Change in README to Algorithms/Dynamic Programming and add comments in code

Where is Prime XOR?

@adityabisoi , added prime xor in python2, please review !


Hide ugly float to string conversion results from players in the mixer UI

About the PR

It rounds the numbers shown to players in the gas mixer UI to 2 decimal places so conversion to string won't show them ugly 60.00004% when they input 60%.
They shouldn't have to know how floating point numbers really work.
Issue from discord: https://discord.com/channels/310555209753690112/1093453658336796703/1093453658336796703
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl: Mumohan

fix: Gas mixers no longer show weird ratio numbers

Changed it to use string formatting using the "0.##" format
It only shows decimals up to 2 decimal places if there are any
"F0" had the issue of never showing decimal places and "F2" showing them even when players input whole numbers


Remove spurious whitespace in workspace/executeCommand handler

I was getting No method by the name 'workspace/executeCommand' is found. even though I registered all the providers correctly.
This seems like a good candidate for a reason why :)

OMFG that explains so much about my own experiments with workspace commands.

Thanks for the Fastest Merge In The West!

I'll try to get a release out later today US Eastern Time with this fix.

👍 even though I'm using it as a vendored dependency, it's a good idea to not have a stable version anywhere with this bug :D

Selfishly I want it available for FSAC. We don't use a vendored dependency in part to encourage me to quickly make releases here :D


N3GOV-19: Basic Income for Nation3 Citizens

https://forum.nation3.org/t/proposal-basic-income-for-nation3-citizens/754
Followed the proposal submission instructions at https://github.com/nation3/gov/blob/main/GOVERNANCE.md#submitting-a-proposal

@luisivan I don't have access to add people as reviewers to pull requests in this repo.

@aahna-ashina added!
In terms of the proposal, shouldn't this be an Expense, since it will move funds?

shouldn't this be an Expense, since it will move funds?

@luisivan You mean funds will be moved from the DAO to the multi-sig?
Should I change to this?

    "kind": "expense",
    "transfers": [
      {
        "chainId": 1,
        "from": "0x336252602b3a8a0be336ed942228305173e8082b",
        "recipient": "0x7fFf737ae9FdDD6E28Fe8B8F0F4dE69Bb8e7a885",
        "token": "0x333A4823466879eeF910A04D473505da62142069",
        "amount":<PHONE_NUMBER>0000000000
      }
    ]

Exactly @aahna-ashina, and then the Meta Guild multisig can handle the payment schedules.

BTW amount should be the human-readable amount (e.g. 3.6 $NATION) instead of wei.

@luisivan Thanks, I made the adjustments 👍

once the proposal is frozen, feel free to add the frozen tag

@luisivan I don't have GitHub access to add labels:

@aahna-ashina while I figure out how to configure permissions, let me know whenever you want to freeze it

while I figure out how to configure permissions, let me know whenever you want to freeze it

@luisivan All right.  Unless there are any unanswered questions in the forum thread, I think we can freeze it now 😄

@aahna-ashina congrats on your first governance proposal, it's been merged 🥳


Mixed tabs and spaces in example project

The example project doesn't load because of this.

yeah that's probably because i'm using spaces instead of the standard tabs (i was using an external editor while working on this)
you could try to match my settings for this project (revert back when working on other things)

i'll fix this

https://github.com/SagaPDev/Godot-SDL-Gyro/releases/tag/v0.3 fixed example project of this release


Add more documentation on usage notes of different utilities

resolved https://github.com/smilecdr/FHIR.ts/pull/82.


fix issue 52 - no email-addrs in patterns

@emmanvg - there were some flaky issues. - and I want to drop 2.7 and 3.4, so wait until I push again.  Good catch on the idiom file...

Codecov Report

Merging #54 into master will increase coverage by 0.16%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master      #54      +/-   ##
==========================================
+ Coverage   69.75%   69.92%   +0.16%
==========================================
  Files          13       13
  Lines        3197     3195       -2
==========================================
+ Hits         2230     2234       +4
+ Misses        967      961       -6

Impacted Files
Coverage Δ

stix2slider/convert_cyber_observables.py
74.94% <0.00%> (ø)

stix2slider/convert_pattern.py
64.30% <ø> (+0.59%)
:arrow_up:

stix2slider/convert_stix.py
68.12% <100.00%> (ø)

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 85b5ccc...1c3cbff. Read the comment docs.


Add a property hint for PrimitiveMesh's uv2_padding

Negative values are not valid and will always cause lightmap bleeding to occur.
This also improves the documentation for the uv2_padding property in the class reference.

Thanks!


Bump dialyxir to v1.0

Pull Request Test Coverage Report for Build e2fe8d781a8edd999f35a2e18769c53ecb338945-PR-27

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 35.514%

Totals

Change from base Build e1dbf730d61380322d3e5c042498113d8b7d6073:
0.0%

Covered Lines:
38

Relevant Lines:
107

💛  - Coveralls

Pull Request Test Coverage Report for Build e2fe8d781a8edd999f35a2e18769c53ecb338945-PR-27

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 35.514%

Totals

Change from base Build e1dbf730d61380322d3e5c042498113d8b7d6073:
0.0%

Covered Lines:
38

Relevant Lines:
107

💛  - Coveralls

Pull Request Test Coverage Report for Build e2fe8d781a8edd999f35a2e18769c53ecb338945-PR-27
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 35.514%

Totals

Change from base Build e1dbf730d61380322d3e5c042498113d8b7d6073:
0.0%

Covered Lines:
38

Relevant Lines:
107

💛  - Coveralls


Use of tempfile in testing routines

Currently, tempfile is used inconsistently in the testing routines as part of tests that involve downloads or other creation of files.  The usage is fine for Travis CI, but may create issues for local runs of tests.  The ideal is the usage in test_files.py, which cleans up after itself so the user's hard drive is not filled with temporary test data.
Proposed changes:

Update test_instruments to clean up tempfiles downloaded as part of tests
Add tempfile to test_sw so user data is not overwritten

Linking to #196, which would preclude use of tempfile in test_sw.py.

Implemented in #192, working for all but monthly files.  The daily append for the monthly files needs to be sorted out in the remove files routine.

Rationale:

Use of tempfile in download tests prevents user directory from being interfered with.
remove_files afterward prevents pysat from filling up the temporary files directory with duplicates of the same data.  For the currently supported instruments, test_instruments downloads ~200 MB per run.

Closed with merge of #192.


Center Input

Hey, with the new version of MaterializeCSS, my forms are not centered.
Exemple of one input :

     account_circle
     <input id="id" required="" class="validate" type="text">
     Lien

```
With the v0.97.2, it's okay. Am I a wrong ?

Have you tried adding the center to either the col s12 or the row and see if that works?

I have just tried it. Even by putting the center on both it does not work...

Can you get put the code in a Codepen and I'll have a look it for you.

Here we go : http://codepen.io/anon/pen/RWOQLO
I think I did not forget anything... I copied the html for the form. I have the same problem on another page. The form are not centered on the Codepen too !

Seems a priority problem with offset and col:
.row .col.s10 {
    width: 83.33333%;
    margin-left: 0;
}
.row .col.offset-s1 {
    margin-left: 8.33333%;
}

if u add !important to .row .col.offset-*, it will work.

So, why it's okay with the v0.97.2 and not with v0.97.3.
Bug, or just a modification ?

It's a bug and will be ok in the next release: #2328

duplicate #2328


The misc.max-leash-distance is now a DoubleOr.Default

See: papermc/paper#11301

I don't think we have been doing that yet, because we don't have a good way to keep that value up to date.


Can't set GOOGLE_FUNCTION_SOURCE

TL;DR
I'm trying to specify the python file that the function belongs to by setting GOOGLE_FUNCTION_SOURCE, but cannot figure out how to properly set it in the yaml file.
Expected behavior
GOOGLE_FUNCTION_SOURCE should be able to be set from within the yaml file
Observed behavior
Error: google-github-actions/deploy-cloud-functions failed with: operation failed: Build failed: missing main.py and GOOGLE_FUNCTION_SOURCE not specified. Either create the function in main.py or specify GOOGLE_FUNCTION_SOURCE to point to the file that contains the function; Error ID: 5c04ec9c

Action YAML
name: Build

on:
  push:
    branches:
    - master
  pull_request:
    branches:
    - master

jobs:
  api_metadata_ingestion:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - id: auth
        name: Authenticate
        uses: google-github-actions/auth@v0
        with:
          credentials_json: ${{ secrets.GCP_CREDENTIALS }}
      - id: deploy
        name: Deploy
        uses: google-github-actions/deploy-cloud-functions@v0
        # also tried
        # env:
        #   GOOGLE_FUNCTION_SOURCE: api_metadata_ingestion.py
        with:
          name: sld-api-ingestion
          region: us-central1
          service_account_email<EMAIL_ADDRESS>          event_trigger_type: google.pubsub.topic.publish
          event_trigger_resource: projects/uat/topics/ingest_new_sdn_metadata
          event_trigger_service: pubsub.googleapis.com
          env_vars: GOOGLE_FUNCTION_SOURCE=api_metadata_ingestion.py
          # also tried
          # build_environment_variables: GOOGLE_FUNCTION_SOURCE=api_metadata_ingestion.py
          memory_mb: 1024MB
          timeout: 540
          runtime: python38
          entry_point: sld_api_ingestion

Log output
2022-02-05T02:14:40.8308840Z Requested labels: ubuntu-20.04
2022-02-05T02:14:40.8309036Z Job defined at: caffeinatedMike/sld/.github/workflows/build.yml@refs/heads/master
2022-02-05T02:14:40.8309068Z Waiting for a runner to pick up this job...
2022-02-05T02:14:41.4210167Z Job is waiting for a hosted runner to come online.
2022-02-05T02:14:45.0348668Z Job is about to start running on the hosted runner: GitHub Actions 3 (hosted)
2022-02-05T02:14:48.4421378Z Current runner version: '2.287.1'
2022-02-05T02:14:48.4448215Z ##[group]Operating System
2022-02-05T02:14:48.4448906Z Ubuntu
2022-02-05T02:14:48.4449454Z 20.04.3
2022-02-05T02:14:48.4449885Z LTS
2022-02-05T02:14:48.4450336Z ##[endgroup]
2022-02-05T02:14:48.4450858Z ##[group]Virtual Environment
2022-02-05T02:14:48.4451389Z Environment: ubuntu-20.04
2022-02-05T02:14:48.4451890Z Version: 20220131.1
2022-02-05T02:14:48.4452650Z Included Software: https://github.com/actions/virtual-environments/blob/ubuntu20/20220131.1/images/linux/Ubuntu2004-Readme.md
2022-02-05T02:14:48.4453546Z Image Release: https://github.com/actions/virtual-environments/releases/tag/ubuntu20%2F20220131.1
2022-02-05T02:14:48.4454208Z ##[endgroup]
2022-02-05T02:14:48.4454724Z ##[group]Virtual Environment Provisioner
2022-02-05T02:14:48.4455262Z <IP_ADDRESS>-main-20220201-1
2022-02-05T02:14:48.4455709Z ##[endgroup]
2022-02-05T02:14:48.4457195Z ##[group]GITHUB_TOKEN Permissions
2022-02-05T02:14:48.4458064Z Actions: write
2022-02-05T02:14:48.4458697Z Checks: write
2022-02-05T02:14:48.4459204Z Contents: write
2022-02-05T02:14:48.4459718Z Deployments: write
2022-02-05T02:14:48.4460202Z Discussions: write
2022-02-05T02:14:48.4460703Z Issues: write
2022-02-05T02:14:48.4461166Z Metadata: read
2022-02-05T02:14:48.4461629Z Packages: write
2022-02-05T02:14:48.4462128Z Pages: write
2022-02-05T02:14:48.4462593Z PullRequests: write
2022-02-05T02:14:48.4463127Z RepositoryProjects: write
2022-02-05T02:14:48.4463654Z SecurityEvents: write
2022-02-05T02:14:48.4464095Z Statuses: write
2022-02-05T02:14:48.4464595Z ##[endgroup]
2022-02-05T02:14:48.4468415Z Secret source: Actions
2022-02-05T02:14:48.4469073Z Prepare workflow directory
2022-02-05T02:14:48.5297241Z Prepare all required actions
2022-02-05T02:14:48.5481223Z Getting action download info
2022-02-05T02:14:48.7673601Z Download action repository 'actions/checkout@v2' (SHA:ec3a7ce113134d7a93b817d10a8272cb61118579)
2022-02-05T02:14:49.7046012Z Download action repository 'google-github-actions/auth@v0' (SHA:8d125895b958610ec414ca4dae010257eaa814d3)
2022-02-05T02:14:50.4636111Z Download action repository 'google-github-actions/deploy-cloud-functions@v0' (SHA:1ad4c7dc8a1547f26f79f0c2df74110f95bfd7c8)
2022-02-05T02:14:51.4594043Z ##[group]Run actions/checkout@v2
2022-02-05T02:14:51.4594449Z with:
2022-02-05T02:14:51.4594801Z   repository: caffeinatedMike/sld
2022-02-05T02:14:51.4595399Z   token: ***
2022-02-05T02:14:51.4595704Z   ssh-strict: true
2022-02-05T02:14:51.4596038Z   persist-credentials: true
2022-02-05T02:14:51.4596363Z   clean: true
2022-02-05T02:14:51.4596663Z   fetch-depth: 1
2022-02-05T02:14:51.4596949Z   lfs: false
2022-02-05T02:14:51.4597245Z   submodules: false
2022-02-05T02:14:51.4597561Z ##[endgroup]
2022-02-05T02:14:51.6982097Z Syncing repository: caffeinatedMike/sld
2022-02-05T02:14:51.6984075Z ##[group]Getting Git version info
2022-02-05T02:14:51.6984675Z Working directory is '/home/runner/work/sld/sld'
2022-02-05T02:14:51.6985352Z [command]/usr/bin/git version
2022-02-05T02:14:51.7072172Z git version 2.35.1
2022-02-05T02:14:51.7091785Z ##[endgroup]
2022-02-05T02:14:51.7098154Z Deleting the contents of '/home/runner/work/sld/sld'
2022-02-05T02:14:51.7114850Z ##[group]Initializing the repository
2022-02-05T02:14:51.7115437Z [command]/usr/bin/git init /home/runner/work/sld/sld
2022-02-05T02:14:51.7166875Z hint: Using 'master' as the name for the initial branch. This default branch name
2022-02-05T02:14:51.7167448Z hint: is subject to change. To configure the initial branch name to use in all
2022-02-05T02:14:51.7167982Z hint: of your new repositories, which will suppress this warning, call:
2022-02-05T02:14:51.7168374Z hint:
2022-02-05T02:14:51.7168832Z hint: 	git config --global init.defaultBranch <name>
2022-02-05T02:14:51.7169204Z hint:
2022-02-05T02:14:51.7169662Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2022-02-05T02:14:51.7170276Z hint: 'development'.  Either create the function in main.py or specify GOOGLE_FUNCTION_SOURCE to point to the file that contains the function; Error ID: 5c04ec9c
2022-02-05T02:15:31.4377754Z Post job cleanup.
2022-02-05T02:15:31.4987210Z Removed exported credentials at "/home/runner/work/sld/sld/gha-creds-f5cb724569460c3a.json".
2022-02-05T02:15:31.5092335Z Post job cleanup.
2022-02-05T02:15:31.6235172Z [command]/usr/bin/git version
2022-02-05T02:15:31.6277524Z git version 2.35.1
2022-02-05T02:15:31.6308910Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2022-02-05T02:15:31.6344204Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :
2022-02-05T02:15:31.6570286Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2022-02-05T02:15:31.6596461Z http.https://github.com/.extraheader
2022-02-05T02:15:31.6615462Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2022-02-05T02:15:31.6645975Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :
2022-02-05T02:15:31.7088991Z Cleaning up orphan processes

### Additional information

_No response_

I don't think GOOGLE_FUNCTION_SOURCE is part of Google Cloud Functions. I believe it's part of the Functions Framework. Are you using https://github.com/GoogleCloudPlatform/functions-framework-python?

No, I created a few scripts that I wanted to deploy/manage using this GitHub action. That was the error message when the action tried to deploy the function based on the above yaml.

What is the equivalent gcloud command for what you're trying to do here?

I'm not sure, I've only deployed GCFs through the UI before. So, I've set the file and function in the file through there. The file mentioned in the yaml is in the top directory of the repo, if that helps.

I'm curious if you get the same error message when running gcloud functions deploy in that directory. The error is coming from Cloud Build, so I would have expected build_environment_variables to be the answer.

Unfortunately I can't test that as I don't have access to my workstation until Monday. But, I imagine the scenerio could replicated with the below test repo structure:

sld/

requirements.txt
api_metadata_ingestion.py

Where api_metadata_ingestion.py contains
def sld_api_ingestion(request):
    return {"status": "OK"}

The way I test locally is by creating a MockRequest object like below
if __name__ == "__main__":
    from collections import namedtuple
    import os

    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = \
        r"C:\Users\mhill\PycharmProjects\daapllc-uat-9b6be89a3ae3.json"

    MockRequest = namedtuple("MockRequest", "json")
    MockRequest.get_json = lambda self: self.json

    spins_sld_api_ingestion(MockRequest({}))

@sethvargo Finally had the chance to test deployment via gcloud command line. The below minimal example works:
gcloud functions deploy sld-api-ingestion --region=us-central1 --project uat --set-build-env-vars=GOOGLE_FUNCTION_SOURCE=api_metadata_ingestion.py --entry-point sld_api_ingestion

Was able to resolve the issue by moving the function into a subfolder (step_three) and updating source_dir. For some reason GOOGLE_FUNCTION_SOURCE is not set when multiple function files reside in the root folder of the github repo. Could this be considered a bug with the Action logic?
Works:
name: Build

on:
  push:
    branches:
    - master

jobs:
  api_metadata_ingestion:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - id: auth
        name: Authenticate
        uses: google-github-actions/auth@v0
        with:
          credentials_json: ${{ secrets.GCP_CREDENTIALS }}
      - id: deploy
        name: Deploy
        uses: google-github-actions/deploy-cloud-functions@v0
        with:
          name: sld-api-ingestion
          region: us-central1
          service_account_email<EMAIL_ADDRESS>          event_trigger_type: google.pubsub.topic.publish
          event_trigger_resource: projects/uat/topics/ingest_new_sdn_metadata
          event_trigger_service: pubsub.googleapis.com
          memory_mb: 1024
          timeout: 540
          runtime: python38
          source_dir: step_three
          build_environment_variables: GOOGLE_FUNCTION_SOURCE=api_metadata_ingestion.py
          entry_point: sld_api_ingestion

@bharathkkb what do you think?

@caffeinatedMike I tried some repros here https://github.com/bharathkkb/debug-deploy-cf-274
Passing in GOOGLE_FUNCTION_SOURCE  via build_environment_variables does seem to work. Run#1, Run#3
However it looks like it wont work when we update the same function with an updated  build_environment_variables as we are not updating it here Run#2. I will open a PR to fix that.
Could you test with a new function name and build_environment_variables to check if updateMask issue is indeed the bug?

@bharathkkb Yup! That was the issue. The function I was working with has been deployed manually before and the error was occurring when trying to update that function with this workflow. Thanks for the quick fix!

For the case I was dealing with, the following line was the correct way to point to the file where the function triggered by the cloud function was declared. This allows as well to deploy multiple cloud functions in the same repo, regardless the presence of any main.py file or the underlying folder structure. Mind to avoid relative imports.
build_environment_variables: GOOGLE_FUNCTION_SOURCE=api_metadata_ingestion.py


[#1] Initialize project using React template

Close #1

What happened 👀
Create the application using React template
Insight 📝
From discussions about how to PR and use React template properly with @hoangmirs So I re-created the new PR for react template
Proof Of Work 📹
The application successfully run on local
npm start

Just a question @suphanatjarukulgowit, but why did you delete the dangerfile.ts? Did you run into some issues? 👀


Error: Cannot find module 'react-bootstrap/Form'

Getting this error after running npm start:
Error: Cannot find module 'react-bootstrap/Form'

Hi, please update your packages, it should be fixed in react-bootstrap beta 5

Hi please fix the issue. It exits with code 1.

@Utkarshnamdeo can you confirm your react-bootstrap version ? You can run npm list react-bootstrap. It should be 1.0.0-beta.5.
This bug is not in Vulcan, it is a regression in react-bootstrap beta 3 which is already solved in beta 5.

I was getting this error after a fresh clone and install with 1.0.0-beta.5, but running npm update somehow fixed it.

@eric-burel Thanks Eric, That solved the problem. Indeed it wasn't a Vulcan issue.


Pip install auto-downgrades django to 2.2.24

Describe the bug
Installing in existing project. When running pip install django-helpdesk, it automatically uninstalled the django 3.2 that I had installed and installed django 2.2.24.
To Reproduce
Steps to reproduce the behavior:
start venv in powershell. Run pip install django-helpdesk
Screenshots
If applicable, add screenshots to help explain your problem.
https://imgur.com/a/MvuBGta
I've attached 3 screenshots. The first 2 are the output in Powershell after running pip install and upgrading django back to 3.2. The third is the output of pip freeze.
Desktop (please complete the following information):

OS: [e.g. iOS] W10
Browser [e.g. chrome, safari] Chrome

This isn't an error, the current django-helpdesk release requires Django
2.2 and doesn't technically support Django 3.
However, our next release of django-helpdesk will support Django 3.2 and
should be released very soon.
On Mon, Aug 30, 2021 at 6:38 AM David D Wang @.***>
wrote:

Describe the bug
Installing in existing project. When running pip install django-helpdesk,
it automatically uninstalled the django 3.2 that I had installed and
installed django 2.2.24.
To Reproduce
Steps to reproduce the behavior:
start venv in powershell. Run pip install django-helpdesk
Screenshots
If applicable, add screenshots to help explain your problem.
https://imgur.com/a/MvuBGta
I've attached 3 screenshots. The first 2 are the output in Powershell
after running pip install and upgrading django back to 3.2. The third is
the output of pip freeze.
Desktop (please complete the following information):

OS: [e.g. iOS] W10
Browser [e.g. chrome, safari] Chrome

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABEKHU67YEWWKOG4JFEHB63T7NNTDANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Ah understood. Thank you.
So for now, is upgrading Django back to 3.2 ok?
David
From: Garret Wassermann @.>
Sent: Monday, August 30, 2021 3:51
To: django-helpdesk/django-helpdesk @.>
Cc: David D Wang @.>; Author @.>
Subject: Re: [django-helpdesk/django-helpdesk] Pip install auto-downgrades django to 2.2.24 (#968)
This isn't an error, the current django-helpdesk release requires Django
2.2 and doesn't technically support Django 3.
However, our next release of django-helpdesk will support Django 3.2 and
should be released very soon.
On Mon, Aug 30, 2021 at 6:38 AM David D Wang @.***<EMAIL_ADDRESS>>
wrote:

Describe the bug
Installing in existing project. When running pip install django-helpdesk,
it automatically uninstalled the django 3.2 that I had installed and
installed django 2.2.24.
To Reproduce
Steps to reproduce the behavior:
start venv in powershell. Run pip install django-helpdesk
Screenshots
If applicable, add screenshots to help explain your problem.
https://imgur.com/a/MvuBGta
I've attached 3 screenshots. The first 2 are the output in Powershell
after running pip install and upgrading django back to 3.2. The third is
the output of pip freeze.
Desktop (please complete the following information):

OS: [e.g. iOS] W10
Browser [e.g. chrome, safari] Chrome

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABEKHU67YEWWKOG4JFEHB63T7NNTDANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 &mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub &referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-908241429 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABZJLBDPMIVIGGU37XED5FTT7NO7RANCNFSM5DBS3TUA .
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675  or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub .   https://github.com/notifications/beacon/ABZJLBB4BX7I7WXFZOLYX4LT7NO7RA5CNFSM5DBS3TUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGYRKUFI.gif
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient
Virus-free.  http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient www.avg.com

It might not work if you use Django 3, but I'm not sure. The next
django-helpdesk release specifically supports Django 3. You can try the
beta version (0.3.0b3) from pypi with Django 3 if you'd like, feedback is
appreciated to iron out serious bugs before final release.
On Mon, Aug 30, 2021 at 7:23 AM David D Wang @.***>
wrote:

Ah understood. Thank you.
So for now, is upgrading Django back to 3.2 ok?
David
From: Garret Wassermann @.>
Sent: Monday, August 30, 2021 3:51
To: django-helpdesk/django-helpdesk @.>
Cc: David D Wang @.>; Author @.>
Subject: Re: [django-helpdesk/django-helpdesk] Pip install auto-downgrades
django to 2.2.24 (#968)
This isn't an error, the current django-helpdesk release requires Django
2.2 and doesn't technically support Django 3.
However, our next release of django-helpdesk will support Django 3.2 and
should be released very soon.
On Mon, Aug 30, 2021 at 6:38 AM David D Wang @.***<EMAIL_ADDRESS>
wrote:

Describe the bug
Installing in existing project. When running pip install django-helpdesk,
it automatically uninstalled the django 3.2 that I had installed and
installed django 2.2.24.
To Reproduce
Steps to reproduce the behavior:
start venv in powershell. Run pip install django-helpdesk
Screenshots
If applicable, add screenshots to help explain your problem.
https://imgur.com/a/MvuBGta
I've attached 3 screenshots. The first 2 are the output in Powershell
after running pip install and upgrading django back to 3.2. The third is
the output of pip freeze.
Desktop (please complete the following information):

OS: [e.g. iOS] W10
Browser [e.g. chrome, safari] Chrome

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968, or
unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ABEKHU67YEWWKOG4JFEHB63T7NNTDANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email
<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android <
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>
&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <
https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-908241429>
, or unsubscribe <
https://github.com/notifications/unsubscribe-auth/ABZJLBDPMIVIGGU37XED5FTT7NO7RANCNFSM5DBS3TUA>
.
Triage notifications on the go with GitHub Mobile for iOS <
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android <
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>
. <
https://github.com/notifications/beacon/ABZJLBB4BX7I7WXFZOLYX4LT7NO7RA5CNFSM5DBS3TUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGYRKUFI.gif>
<
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
Virus-free. <
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
www.avg.com
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-908262215,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABEKHUYLOR4MBV45AVIVLNLT7NS33ANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Oh ok. I'll try out the beta. Thanks.
On Mon, Aug 30, 2021, 04:29 Garret Wassermann @.***>
wrote:

It might not work if you use Django 3, but I'm not sure. The next
django-helpdesk release specifically supports Django 3. You can try the
beta version (0.3.0b3) from pypi with Django 3 if you'd like, feedback is
appreciated to iron out serious bugs before final release.
On Mon, Aug 30, 2021 at 7:23 AM David D Wang @.***>
wrote:

Ah understood. Thank you.
So for now, is upgrading Django back to 3.2 ok?
David
From: Garret Wassermann @.>
Sent: Monday, August 30, 2021 3:51
To: django-helpdesk/django-helpdesk @.>
Cc: David D Wang @.>; Author @.>
Subject: Re: [django-helpdesk/django-helpdesk] Pip install
auto-downgrades
django to 2.2.24 (#968)
This isn't an error, the current django-helpdesk release requires Django
2.2 and doesn't technically support Django 3.
However, our next release of django-helpdesk will support Django 3.2 and
should be released very soon.
On Mon, Aug 30, 2021 at 6:38 AM David D Wang @.*** <mailto:
@.***>

wrote:

Describe the bug
Installing in existing project. When running pip install
django-helpdesk,
it automatically uninstalled the django 3.2 that I had installed and
installed django 2.2.24.
To Reproduce
Steps to reproduce the behavior:
start venv in powershell. Run pip install django-helpdesk
Screenshots
If applicable, add screenshots to help explain your problem.
https://imgur.com/a/MvuBGta
I've attached 3 screenshots. The first 2 are the output in Powershell
after running pip install and upgrading django back to 3.2. The third
is
the output of pip freeze.
Desktop (please complete the following information):

OS: [e.g. iOS] W10
Browser [e.g. chrome, safari] Chrome

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968, or
unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ABEKHU67YEWWKOG4JFEHB63T7NNTDANCNFSM5DBS3TUA

.
Triage notifications on the go with GitHub Mobile for iOS
<

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email

<

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

&mt=8&pt=524675>

or Android
<https://play.google.com/store/apps/details?id=com.github.android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <

https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-908241429

, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ABZJLBDPMIVIGGU37XED5FTT7NO7RANCNFSM5DBS3TUA

.
Triage notifications on the go with GitHub Mobile for iOS <

https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675

or Android <

https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub

. <

https://github.com/notifications/beacon/ABZJLBB4BX7I7WXFZOLYX4LT7NO7RA5CNFSM5DBS3TUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGYRKUFI.gif

<

http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient

Virus-free. <

http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient

www.avg.com
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<
https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-908262215
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/ABEKHUYLOR4MBV45AVIVLNLT7NS33ANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
<
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub
.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-908265478,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABZJLBEVTROGR44F4I7BWEDT7NTSJANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Great! thank you!
David
On Sun, Oct 17, 2021 at 10:24 PM Garret Wassermann @.***>
wrote:

The 0.3.0 release is out! This supports Django 3. If you have any trouble
please file a new ticket.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/django-helpdesk/django-helpdesk/issues/968#issuecomment-945376047,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABZJLBG6A3RFSFUEGHIQLKDUHOVO5ANCNFSM5DBS3TUA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


DSERV-444 Handling null cases of hgvs

I combined it with https://github.com/IGVF-DACC/igvf-catalog/pull/196