VPN Workflow Problem

Ubuntu seems to be a target platform for Kontena, which is great. I'm using Ubuntu as a my dev/workstation and Ubuntu servers as master and agents. When setting up VPN I ran into some issues. I got the .ovpn file, went to import it using the gnome-network-manager but it doesn't recognize the inline keys. This isn't really your problem, more of a limitation of the network manager, but if you could output a tar file with the certs separate, it might ease adoption a bit. Just a thought!
Bug Tracker for Ubuntu: https://bugs.launchpad.net/ubuntu/+source/network-manager-openvpn/+bug/606365
Thanks for all the work on Kontena, looking forward to using it once I get it setup.

I'm playing with this now, might have a little cli command you could add to the docs to maybe get setup easier/faster.

Still having some issues:
~$ sudo openvpn --config ./kontena-vpn/konetna-vpn.ovpn
Thu Sep  3 14:12:04 2015 OpenVPN 2.3.2 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [eurephia] [MH] [IPv6] built on Dec  1 2014
Thu Sep  3 14:12:04 2015 Control Channel Authentication: tls-auth using INLINE static key file
Thu Sep  3 14:12:04 2015 UDPv4 link local: [undef]
Thu Sep  3 14:12:04 2015 UDPv4 link remote: [AF_INET]{remote_ip}:1194
Thu Sep  3 14:12:05 2015 [<IP_ADDRESS>] Peer Connection Initiated with [AF_INET]{remote_ip}:1194
Thu Sep  3 14:12:08 2015 TUN/TAP device tun0 opened
Thu Sep  3 14:12:08 2015 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Thu Sep  3 14:12:08 2015 /sbin/ip link set dev tun0 up mtu 1500
Thu Sep  3 14:12:08 2015 /sbin/ip addr add dev tun0 local <IP_ADDRESS> peer <IP_ADDRESS>
RTNETLINK answers: Invalid argument
Thu Sep  3 14:12:08 2015 ERROR: Linux route add command failed: external program exited with error status: 2
Thu Sep  3 14:12:08 2015 Initialization Sequence Completed

{Hangs, ^C pressed}

Thu Sep  3 14:21:59 2015 event_wait : Interrupted system call (code=4)
Thu Sep  3 14:21:59 2015 /sbin/ip addr del dev tun0 local <IP_ADDRESS> peer <IP_ADDRESS>
Thu Sep  3 14:21:59 2015 SIGINT[hard,] received, process exiting

I thought it was strange it was looking to tunnel 192.168.x.x because the network I am on is a 10.* network. However that could just be my lack of VPN knowledge. Any thoughts?

IP Forwarding seems to be enabled....
~$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

What ubuntu version are you using (workstation)?

14.04LTS on all machines I am working with. Thanks!
On Thu, Sep 3, 2015, 2:53 PM Jari Kolehmainen<EMAIL_ADDRESS>wrote:

What ubuntu version are you using (workstation)?
—
Reply to this email directly or view it on GitHub.

<IP_ADDRESS>/24 network is used only with vpn client/server.  Could you run openvpn command with more verbose output, like this:
~$ sudo openvpn --verb 6 --config ./kontena-vpn/konetna-vpn.ovpn

And report what it says just before RTNETLINK answers: Invalid argument .

Ok, just tested this with default Ubuntu 14.04 virtual machine and it seems that docker bridge reserves the same ip address on workstation as inside the nodes. Easiest workaround for this is to change your workstation docker bridge address to something else than <IP_ADDRESS>/16.
Edit /etc/default/docker and add --bip <IP_ADDRESS>/16 (or some subnet that does not create conflict). Then reboot your workstation.
In addition to this you need to tweak ovpn file a bit:

change route <IP_ADDRESS> <IP_ADDRESS> to route <IP_ADDRESS> <IP_ADDRESS>
(this is a bug, I'll add separate issue about it)
add resolvconf scripts to end of file:

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

After these changes you must start openvpn with --script-security 2 flag:
~$ sudo openvpn --script-security 2 --config ./kontena-vpn/konetna-vpn.ovpn

Perfect, I'll give that a shot, then we can maybe tweak the docs a bit for
the Ubuntu install to make this go a little cleaner for other folks. Thanks
for the ideas. I'll report back.
-Seth
On Fri, Sep 4, 2015 at 12:56 AM, Jari Kolehmainen<EMAIL_ADDRESS>wrote:

Ok, just tested this with default Ubuntu 14.04 virtual machine and it
seems that docker bridge reserves the same ip address on workstation as
inside the nodes. Easiest workaround for this is to change your workstation
docker bridge address to something else than <IP_ADDRESS>/16.
Edit /etc/default/docker and add --bip <IP_ADDRESS>/16 (or some subnet
that does not create conflict). Then reboot your workstation.
In addition to this you need to tweak ovpn file a bit:

change route <IP_ADDRESS> <IP_ADDRESS> to route <IP_ADDRESS>
<IP_ADDRESS>

(this is a bug, I'll add separate issue about it)

add resolvconf scripts to end of file:

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
After these changes you must start openvpn with --script-security 2 flag:
~$ sudo openvpn --script-security 2 --config ./kontena-vpn/konetna-vpn.ovpn
—
Reply to this email directly or view it on GitHub
https://github.com/kontena/kontena/issues/150#issuecomment-137654948.

@four43 did those instructions solve your problem?

Sorry @jakolehm, we were moving offices and networks, I wanted to make sure this was still an issue for me and that it wasn't caused by anything else. Now that we are all settled in, I can look at this again.

I am still able to duplicate the issue I was having earlier on our new network setup.
Output of OpenVPN, using the --verb 6 option, as you probably saw:

...
Wed Sep  9 10:52:56 2015 us=542991 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS <IP_ADDRESS>,dhcp-option DNS <IP_ADDRESS>,route <IP_ADDRESS>,topology net30,ping 10,ping-restart 60,ifconfig <IP_ADDRESS> <IP_ADDRESS>'
Wed Sep  9 10:52:56 2015 us=543073 OPTIONS IMPORT: timers and/or timeouts modified
Wed Sep  9 10:52:56 2015 us=543093 OPTIONS IMPORT: --ifconfig/up options modified
Wed Sep  9 10:52:56 2015 us=543108 OPTIONS IMPORT: route options modified
Wed Sep  9 10:52:56 2015 us=543122 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed Sep  9 10:52:56 2015 us=543360 ROUTE_GATEWAY <IP_ADDRESS>/<IP_ADDRESS> IFACE=wlan0 HWADDR=c4:e9:84:1d:9f:d0
Wed Sep  9 10:52:56 2015 us=543937 TUN/TAP device tun0 opened
Wed Sep  9 10:52:56 2015 us=543972 TUN/TAP TX queue length set to 100
Wed Sep  9 10:52:56 2015 us=544001 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Sep  9 10:52:56 2015 us=544036 /sbin/ip link set dev tun0 up mtu 1500
Wed Sep  9 10:52:56 2015 us=545779 /sbin/ip addr add dev tun0 local <IP_ADDRESS> peer <IP_ADDRESS>
Wed Sep  9 10:52:56 2015 us=548897 /sbin/ip route add <IP_ADDRESS>/16 via <IP_ADDRESS>
Wed Sep  9 10:52:56 2015 us=552937 /sbin/ip route add <IP_ADDRESS>/31 via <IP_ADDRESS>
RTNETLINK answers: Invalid argument

Added --bip <IP_ADDRESS>/16 to the Docker conf, I am on a 192.168.x.x network now.
Restart Docker sudo service docker restart
Updated the VPN config route map from <IP_ADDRESS> to <IP_ADDRESS>, added resolvers at the bottom.

That worked! Excellent fix! Now to make that a little less scary for others. Sounds like you have a patch up. Need help updating the docs perhaps?
Thanks for the help and looking into this promptly.
-Seth

OpenVPN image is already patched so the route problem should be fixed. Just shoot a pull request if you have improvements to docs, any help is appreciated :)

Still having some issues here. VPN is connected, it says "Initialization Sequence Completed" so I left a terminal window open with that running yet. However I'm still having issues resolving "registry.kontena.local" from within a script. I then tried it in my browser and got a ERR_NAME_NOT_RESOLVED error. 		IN	A

;; ANSWER SECTION:
registry.kontena.local.	1	IN	A	<IP_ADDRESS>

;; Query time: 38 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Wed Sep 09 15:23:29 CDT 2015
;; MSG SIZE  rcvd: 78

docker push is still giving me fits though: dial tcp: lookup registry.kontena.local: no such host
Thoughts?

For reference:
~$ curl http://registry.kontena.local/v1/
curl: (6) Could not resolve host: registry.kontena.local

Did you add following lines to .ovpn file?
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

(without those ubuntu does not seem to update it's dns settings)

I did, it added the entries to resolv.conf:
# /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
nameserver <IP_ADDRESS>
search kontena.local mydomain.com

Like I said, dig works, but others seem to fail, which is super odd.

As expected running host against that resolv.conf:
~$ host registry.kontena.local
registry.kontena.local has address <IP_ADDRESS>
Host registry.kontena.local not found: 3(NXDOMAIN)
Host registry.kontena.local not found: 3(NXDOMAIN)

Talking with a friend of mine, he recommended checking out /etc/nsswitch.conf if things are resolving weird:
# /etc/nsswitch.conf
...
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files
...

By default, glibc programs that do DNS queries will just use an mdns probe on the network and let whoever respond it seems.
I found this Avahi-Daemon that is part of Ubuntu by default. It is a zeroconf networking solution. It tries to listen for *.local address and resolve them via mDNS from what I can tell: http://ubuntuforums.org/showthread.php?t=1339516
Something something about .local unicast dns servers....

Interesting, what happens if you just try to resolve registry name (without kontena.local)?

Ah! That is working! Assuming because it is one of the search domains?

Yes, search domain causes that.. I think registry.<grid_name> should also work (might be handy if you have multiple grids)

ehhhh kind of:
~$ host registry.mygrid.kontena.local
registry.mygrid.kontena.local has address <IP_ADDRESS>
Host registry.mygrid.kontena.local not found: 3(NXDOMAIN)
Host registry.mygrid.kontena.local not found: 3(NXDOMAIN)
~$ host registry.mygrid
Host registry.mygrid not found: 3(NXDOMAIN)
~$ host registry.mygrid.
Host registry.mygrid. not found: 3(NXDOMAIN)
$ host registry.mygrid.kontena.local
registry.mygrid.kontena.local has address <IP_ADDRESS>
Host registry.mygrid.kontena.local not found: 3(NXDOMAIN)
Host registry.mygrid.kontena.local not found: 3(NXDOMAIN)
~$ host registry.mygrid
Host registry.mygrid not found: 3(NXDOMAIN)
~$ host registry
registry.kontena.local has address <IP_ADDRESS>
Host registry.kontena.local not found: 3(NXDOMAIN)
Host registry.kontena.local not found: 3(NXDOMAIN)

So, now the new problem. If I do: docker push registry/namespace/container-name 1.0.0 it tries to push to the docker.io (their hub) lol. SO CLOSE

I have to admin that I didn't expect so many problems when using Ubuntu desktop (longtime user and usually linux has fewer problems vs win/osx when it comes to network related stuff). As a temporary workaround you can always push images using ip address (ip will change only when you update/deploy registry). Just remember to use dns name on service definition when pointing to internal images (so that they work even if ip changes).

@nevalla can you confirm if these problems exist on newer Ubuntu releases?

I can push to registry. (note the dot) to make sure docker knows it's a domain name, not just a namespace. This seems to work. It's ugly, but it works.

Things that seem to work well:

Changes mentioned above to VPN config, sounds like those are on un-released code already, sweet.
Changes made to binding IP of docker, I used --bip <IP_ADDRESS>/24
Turning off Ubuntu's dumb avahi-daemon, not needed if your network is setup right.

sudo service avahi-daemon stop;
sudo sh -c "echo manual > /etc/init/avahi-daemon.override";

(via http://askubuntu.com/questions/205937/how-can-i-disable-avahi-daemon)

I think we could get around this if we didn't use .local. Thoughts on switching to just .kontena? registry.kontena for example. Possibly look into registry.mygrid.kontena if the registry is per grid?

Now I'm having issues connecting to the VPN again after the weekend.
kontena vpn config outputs: {"error":"Not found"}
Yet kontena vpn create outputs Vpn already exists
:(

The VPN client is trying to connect to one of the grid members, not that master. Is that normal? I forget if it did that before it broke...

Don't know the details but this sounds like a docker upgrade regression (1.6 -> 1.7 may loose reference to volume). Vpn should recover if you re-deploy it ( kontena service deploy vpn ).

Btw you can see vpn service details with following commands:
$ kontena service show vpn
$ kontena service logs vpn

Maybe it helps with debugging.

Thanks for the tips, I think I found the issue.
We are running our Kontena cluster on AWS using their Security Groups to power our firewall. I verified the IP the OpenVPN client is trying to connect to is the correct IP.
~$ kontena service show vpn
mygrid/vpn:
  status: running
  stateful: yes
  scaling: 1
  image: kontena/openvpn:ethwe
  dns: vpn.mygrid.kontena.local
  affinity:
    - node==ip-10-0-0-99
  cmd:
  env:
    - OVPN_SERVER_URL=udp://{{OUR-VPN-IP}}:1194
  ports:
    - 1194:1194/udp
  volumes:
  volumes_from:
  links:
  cap_add:
    - NET_ADMIN
  cap_drop:
  containers:

Up and running, looks good, right?
I ran openvpn --verb 6 --script-security 2 --config ./kontena-vpn/konetna-vpn.ovpn and found that the UDP packets don't seem to be making it to the server:
 UDPv4 WRITE [42] to [AF_INET]{{OUR-VPN-IP}}:1194: P_CONTROL_HARD_RESET_CLIENT_V2 kid=0 pid=[ #1 ] [ ] pid=0 DATA len=0
It does that for a while, I tried telnet (TCP) too:
~$ telnet {{OUR-VPN-IP}} 1194
Trying {{OUR-VPN-IP}}...
telnet: Unable to connect to remote host: Connection refused

So what the heck! I logged into the grid server, the one hosting the VPN service and found this:
~$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 <IP_ADDRESS>:22              <IP_ADDRESS>:*               LISTEN      1155/sshd
tcp        0      0 <IP_ADDRESS>:8080          <IP_ADDRESS>:*               LISTEN      5133/docker-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      1155/sshd
udp        0      0 <IP_ADDRESS>:43769           <IP_ADDRESS>:*                           646/dhclient
udp        0      0 <IP_ADDRESS>:68              <IP_ADDRESS>:*                           646/dhclient
udp6       0      0 :::1194                 :::*                                1395/docker-proxy
udp6       0      0 :::42286                :::*                                646/dhclient

Port 1194 is only bound on an IPv6 address. I'm using IPv4 style addresses to connect. Could this be causing my issue?
Thanks for all the help guys, we'll get it!

Have you opened port 1194 on Security Group's inbound rules?

I have for TCP and UDP. From what I can tell AWS Security groups only deal with IPv4 addresses at this time.

Perhaps more pressing, I'm getting: kontena vpn config outputting {"error":"Not found"} still, even after the re-deploy. showing the VPN service is same as above, looks to be running.

How about $ kontena service logs vpn? Are there any hints what's going on?

There are no entries since last Friday, the 11th, when everything was working. It's like the VPN service became totally dissociated from the rest of Kontena.

Is it the same result if you drop vpn service ($kontena vpn delete) and then re-create it?

Haven't tried that:
~$ kontena vpn delete
{"code":503,"message":"Node unavailable","backtrace":null}

Interesting.
~$ kontena grid list
Name                           Nodes    Services     Users
mygrid *                       1        0            1

how about $ kontena node list?

I updated and upgraded the servers to make sure I am on the latest version, still having issues.
~$ kontena node list
Name                           OS                                       Driver          Labels                         Status
ip-10-0-0-99                   Ubuntu 14.04.2 LTS (3.13.0-48-generic)   aufs            -                              online

That looks to be the correct node, the VPN service's affinity seems to point to that one.
Thanks for the help @nevalla , appreciating the input.

So I can stop and start the vpn container but I can't delete it.
~$ kontena service delete vpn = nope
~$ kontena service stop vpn = service stopped when I check it
~$ kontena service start vpn = service started again when I check it

Also checking the logs through kontena cli only shows log entries from last Friday, however I can check logs on the kontena node directly through docker and there are entries from Sunday, slightly better, still not today however.

can you also check logs from kontena-agent container. Seems that there might be something wrong.

On the Kontena Node:
I, [2015-09-15T16:40:00.399835 #1]  INFO -- QueueWorker: initialized
I, [2015-09-15T16:40:00.400846 #1]  INFO -- WebsocketClient: initialized with token Ln5to3nH8M+HOS3kIE1yKNoWV4Us085iCK05HCzrirXxTRRHY6z4swueguyxowsqIe2F5/v8trLAW/n5RtgcnQ==
I, [2015-09-15T16:40:00.401523 #1]  INFO -- LogWorker: initialized
I, [2015-09-15T16:40:00.402175 #1]  INFO -- WeaveAttacher: initialized
I, [2015-09-15T16:40:00.403291 #1]  INFO -- CadvisorLauncher: initialized
I, [2015-09-15T16:40:00.403334 #1]  INFO -- StatsWorker: initialized
I, [2015-09-15T16:40:00.403376 #1]  INFO -- EtcdLauncher: initialized
I, [2015-09-15T16:40:00.414118 #1]  INFO -- WeaveAttacher: fetching containers information
I, [2015-09-15T16:40:00.532226 #1]  INFO -- NodeInfoWorker: publishing node information
I, [2015-09-15T16:40:00.532361 #1]  INFO -- ContainerInfoWorker: fetching containers information
I, [2015-09-15T16:40:00.532765 #1]  INFO -- EventWorker: started to stream docker events
I, [2015-09-15T16:40:00.536490 #1]  INFO -- StatsWorker: waiting for cadvisor
I, [2015-09-15T16:40:00.543213 #1]  INFO -- LogWorker: starting to stream logs for container: 6857ac291cbbe7ccd36b564e1b406f32a0847966f6b516b88b9a0b958bab90d1
I, [2015-09-15T16:40:00.552073 #1]  INFO -- StatsWorker: cadvisor is running, starting stats loop
E, [2015-09-15T16:40:00.892273 #1] ERROR -- ContainerInfoWorker: publish_info: no such id: 6d9ec81b2b414661aea36b03f0c36b44ba8fb3b66ff05b0078104307321a47b8

E, [2015-09-15T16:40:00.965903 #1] ERROR -- ContainerInfoWorker: publish_info: no such id: 6d9ec81b2b414661aea36b03f0c36b44ba8fb3b66ff05b0078104307321a47b8

I, [2015-09-15T16:40:02.919854 #1]  INFO -- LogWorker: starting to stream logs for container: 91b64349330787e9e95943af6f04709ca357503b1d43938ccbf7798692f38bf9
I, [2015-09-15T16:40:20.554579 #1]  INFO -- WebsocketClient: connection closed with code: 1006
I, [2015-09-15T16:40:41.660170 #1]  INFO -- WebsocketClient: connection closed with code: 1006

I, [2015-09-15T16:41:00.979588 #1]  INFO -- ContainerInfoWorker: fetching containers information
I, [2015-09-15T16:41:00.981648 #1]  INFO -- WebsocketClient: connection closed with code: 1006
/usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/socket.rb:139:in `rescue in block in connect': connect timeout reached (Excon::Errors::Timeout)
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/socket.rb:119:in `block in connect'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/socket.rb:110:in `each'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/socket.rb:110:in `connect'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/socket.rb:28:in `initialize'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/connection.rb:389:in `new'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/connection.rb:389:in `socket'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/connection.rb:106:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/middlewares/mock.rb:47:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/middlewares/instrumentor.rb:22:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/middlewares/base.rb:15:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/middlewares/base.rb:15:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/middlewares/base.rb:15:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/middlewares/base.rb:15:in `request_call'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon/connection.rb:233:in `request'
	from /usr/lib/ruby/gems/2.2.0/gems/excon-0.45.4/lib/excon.rb:229:in `get'
	from /app/lib/kontena/helpers/node_helper.rb:8:in `node_info'
	from /app/lib/kontena/weave_adapter.rb:111:in `start!'
	from /app/lib/kontena/agent.rb:31:in `start!'
	from /app/bin/kontena-agent:27:in `<main>'

It doesn't seem to be connecting to the master?
I think we're on to something! The master seems happy though...

I GOT IT! The two Kontena servers couldn't talk to each other. Somewhere they got blocked on TCP port 8080. I destroyed the VPN and re-created it, downloaded the new config and it's working!

That said, I think there is maybe an underlying issue with stale data and not being able to connect to the Kontena Nodes... All indications from the kontena-cli pointed to the node being okay, kontena node list made it seem fine.

I'm gonna open a separate issue for that, as it probably doesn't just pertain to VPN, then we can get back on topic, make some docs for Ubuntu specific business then call it good. Whew. Thanks @nevalla

Great to hear you got it working! We definitely need to check why Kontena master thought node was online. We have already pushed some effort to this issue #95, but apparently more investigation is needed.

Thanks @nevalla, appreciate the help as always.

Closing this because vpn should work after these:
https://github.com/kontena/kontena/pull/265
https://github.com/kontena/kontena/pull/267


Fix #20942 TestContainerPsContext unit test

Fixing #20942 TestContainerPsContext unit test 🐙.
Depending on how much time each case takes, it could be more than 1 second (on windows :sweat_smile:). Update it to print About a minute instead, thus it gives us a whole minute for the loop to complete (which should be more than plenty).
🐸
Signed-off-by: Vincent Demeester<EMAIL_ADDRESS>

LGTM (if tests are green, haha)

LGTM

:tada: :100: :blush:

Oh!! Congrats!! :100:


Bug when I set imageTags

Description
Same as #408,it is failed when I set imagTags.
How to reproduce
 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <dockerHost>http://<IP_ADDRESS>:4243</dockerHost>
                    <imageName><IP_ADDRESS>:80/test/plugin</imageName>

                    <serverId>harbor</serverId>
                    <pushImage>true</pushImage>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <forceTags>true</forceTags>
                    <baseImage>openjdk:8-jre-alpine</baseImage>
                    <exposes>
                        <expose>8080</expose>
                    </exposes>
                    <env>
                        <JAVA_OPTS>-Xms128m -Xmx128m</JAVA_OPTS>
                    </env>
                    <entryPoint>["java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /${project.build.finalName}.${project.packaging} "]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.${project.packaging}</include>
                        </resource>
                    </resources>

                </configuration>
            </plugin>

What do you expect
push to my own harbor only.
What happened instead
It will be push to my harbor and docker.io and will has a null tag more.
Software:

docker version: 18.09.6
docker-maven-plugin version: 1.2.0
maven version:3.3.9

Full backtrace
[INFO] Building image <IP_ADDRESS>:80/test/plugin
Step 1/5 : FROM openjdk:8-jre-alpine

 ---> f7a292bbb70c
Step 2/5 : ENV JAVA_OPTS -Xms128m -Xmx128m

 ---> Using cache
 ---> 4ef305020462
Step 3/5 : ADD /test.jar //

 ---> 0e25733d8766
Step 4/5 : EXPOSE 8080

 ---> Running in 8e70db0eab12
Removing intermediate container 8e70db0eab12
 ---> ba7f538c8498
Step 5/5 : ENTRYPOINT ["java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /test.jar "]

 ---> Running in 8fd2baf1e898
Removing intermediate container 8fd2baf1e898
 ---> 953893b9a0ab
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 953893b9a0ab
Successfully tagged <IP_ADDRESS>:80/test/plugin:latest
[INFO] Built <IP_ADDRESS>:80/test/plugin
[INFO] Tagging <IP_ADDRESS>:80/test/plugin with 0.0.1
[INFO] Tagging <IP_ADDRESS>:80/test/plugin with latest
[INFO] Pushing <IP_ADDRESS>:80/test/plugin
The push refers to repository [<IP_ADDRESS>:80/test/plugin]
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
9b9b7f3d56a0: Layer already exists
865937ae495b: Pushing [>                                                  ]  197.1kB/16.79MB
edd61588d126: Layer already exists
f1b5933fe4b5: Layer already exists
865937ae495b: Pushing [=======>                                           ]  2.556MB/16.79MB
865937ae495b: Pushing [==============>                                    ]  4.916MB/16.79MB
865937ae495b: Pushing [=====================>                             ]  7.275MB/16.79MB
865937ae495b: Pushing [============================>                      ]  9.634MB/16.79MB
865937ae495b: Pushing [===================================>               ]  11.99MB/16.79MB
865937ae495b: Pushing [==========================================>        ]  14.35MB/16.79MB
865937ae495b: Pushing [=================================================> ]  16.71MB/16.79MB
865937ae495b: Pushing [==================================================>]  16.79MB
865937ae495b: Pushed
0.0.1: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
latest: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
[INFO] Pushing <IP_ADDRESS>:0.0.1
The push refers to repository [docker.io/library/<IP_ADDRESS>]
[WARNING] Failed to push <IP_ADDRESS>:80/test/plugin, retrying in 10 seconds (1/5).
[INFO] Pushing <IP_ADDRESS>:80/test/plugin
The push refers to repository [<IP_ADDRESS>:80/test/plugin]
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
edd61588d126: Layer already exists
f1b5933fe4b5: Layer already exists
865937ae495b: Layer already exists
9b9b7f3d56a0: Layer already exists
0.0.1: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
latest: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
[INFO] Pushing <IP_ADDRESS>:0.0.1
The push refers to repository [docker.io/library/<IP_ADDRESS>]
[WARNING] Failed to push <IP_ADDRESS>:80/test/plugin, retrying in 10 seconds (2/5).
[INFO] Pushing <IP_ADDRESS>:80/test/plugin
The push refers to repository [<IP_ADDRESS>:80/test/plugin]
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
f1b5933fe4b5: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
865937ae495b: Layer already exists
0.0.1: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
latest: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
[INFO] Pushing <IP_ADDRESS>:0.0.1
The push refers to repository [docker.io/library/<IP_ADDRESS>]
[WARNING] Failed to push <IP_ADDRESS>:80/test/plugin, retrying in 10 seconds (3/5).
[INFO] Pushing <IP_ADDRESS>:80/test/plugin
The push refers to repository [<IP_ADDRESS>:80/test/plugin]
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
f1b5933fe4b5: Layer already exists
9b9b7f3d56a0: Layer already exists
edd61588d126: Layer already exists
865937ae495b: Layer already exists
0.0.1: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
latest: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
[INFO] Pushing <IP_ADDRESS>:0.0.1
The push refers to repository [docker.io/library/<IP_ADDRESS>]
[WARNING] Failed to push <IP_ADDRESS>:80/test/plugin, retrying in 10 seconds (4/5).
The push refers to repository [<IP_ADDRESS>:80/test/plugin]
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
9b9b7f3d56a0: Layer already exists
edd61588d126: Layer already exists
865937ae495b: Layer already exists
f1b5933fe4b5: Layer already exists
0.0.1: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
latest: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
[INFO] Pushing <IP_ADDRESS>:0.0.1
The push refers to repository [docker.io/library/<IP_ADDRESS>]
[WARNING] Failed to push <IP_ADDRESS>:80/test/plugin, retrying in 10 seconds (5/5).
[INFO] Pushing <IP_ADDRESS>:80/test/plugin
The push refers to repository [<IP_ADDRESS>:80/test/plugin]
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
edd61588d126: Layer already exists
0.0.1: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
865937ae495b: Preparing
edd61588d126: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
865937ae495b: Layer already exists
edd61588d126: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
latest: digest: sha256:bec16865e2551cd7bcfbd1de041b68727336d636c139b33799075f13d92a7772 size: 1159
null: null
[INFO] Pushing <IP_ADDRESS>:0.0.1
The push refers to repository [docker.io/library/<IP_ADDRESS>]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:05 min
[INFO] Finished at: 2019-06-21T11:28:09+08:00
[INFO] Final Memory: 43M/524M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:1.2.0:build (build-image) on project demo: Exception caught: An image does not exist locally with the tag: <IP_ADDRESS> -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Process finished with exit code 1

I know that this issue is from 2019, but if anyone has this problem, try to add the tags  and  inside


Rename overrides?

@emk I think we discussed finding a new name for this, maybe target IIRC?

Added to initial release milestone. It's going to touch every fifth line of source, but it's the right thing to do.

OK, there's the monster renaming, with all unit tests passing. Now I just need to test it against a real-world project and port our internal stuff over.


Use font-size to set btn sizes

For example : There are different variation of buttons..
.btn-lg
.btn-sm
For variation...button's padding,line-height,font size,border radius are changed...
Instead how about em units
html
{
   font-size:16px;
}
.btn
{
  padding: 1em 1.2em;
  color: #fff;
  border-radius: 0.2rem;
}

For .btn-sm , just change its font size
.btn-sm { font-size: 0.875em }

Working with em is a pain ( When nesting elements ) , but code can be reduced ..Its applicable for Buttons , Input box etc...,
Idea from http://simurai.com/blog/2013/07/03/sizing-components/

@cvrebert  I made a working example to prove it ...Here is the link http://codepen.io/anon/pen/oXryNv

Hi @annamalai-saro!
You appear to have posted a live example (http://codepen.io/anon/pen/oXryNv.html), which is always a good first step. However, according to Bootlint, your example has some Bootstrap usage errors, which might potentially be causing your issue:

line 8, column 1: W007: Found one or more <button>s missing a type attribute.
line 9, column 1: W007: Found one or more <button>s missing a type attribute.
line 10, column 1: W007: Found one or more <button>s missing a type attribute.
line 11, column 1: W007: Found one or more <button>s missing a type attribute.
line 12, column 1: W007: Found one or more <button>s missing a type attribute.
line 13, column 1: W007: Found one or more <button>s missing a type attribute.

You'll need to fix these errors and post a revised example before we can proceed further.
Thanks!
(Please note that this is a fully automated comment.)

I think @mdo made the deliberate choice to rely on rems instead of ems to avoid the nesting nightmare that comes along with ems.

@hnrch02  I accept ,its always a nightmare with ems . But ..For example ,
The Button and Label component can share the same styles ...with a single padding override for Label  component  ... Code can be reduced to further more . I will share a working demo soon to prove it .

component can share the same styles

That's an oversimplification for a few reasons.


Problem0013: solved.

Codecov Report

Merging #139 (673fac0) into main (2fb7967) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main      #139   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           20        22    +2
  Lines          444       454   +10
  Branches        63        63
=========================================
+ Hits           444       454   +10

Impacted Files
Coverage Δ

src/data/problem0013.py
100.00% <100.00%> (ø)

src/problem0013.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Cab- (No Children)

What am I doing wrong?
https://i.imgur.com/9aQAIY0.png

Sorry, I don't understand what you want to do


Simplify NewEdVerifier() to not return useless error

Motivation
signing.NewEdVierifier() is infallible, it never really returns an error and its definition could be simplfied.
Changes
Changed signing.NewEdVierifier() to not return an error.

bors merge

bors merge

Flaky UT (#5156).
bors merge


Performance

Hirola version: 0.2.1
Python version: 3.9.6
Operating System: Linux 5.13.12-arch1-1

Description
Hi,
this library looks really cool and to be a perfect fit for my purposes, I wonder why it didn't have any stars so far.
I was hoping to use it as a more lightweight replacement for pandas.Categorical, however I noticed that it is seems to be comparably slow for some reason. I was wondering whether some of the strategies employed in pandas could be adapted to speed up this library as well?
What I Did
Performance comparison between pandas.Categorical(...).codes and hirola.HashTable.get:
from timeit import timeit
import hirola
import numpy as np
import pandas as pd
import string

def generate_strings(count, min_len, max_len):
    words = np.random.choice(
        list(string.ascii_letters),
        (count, max_len)
    ).view((str, max_len)).reshape(-1)
    lengths = np.random.choice(np.arange(min_len, max_len + 1), count)
    return np.array([
        word[:length]
        for word, length in zip(words, lengths)
    ])

# Generate some strings to chose from
all_strings = generate_strings(1000, 5, 15)
known = np.random.choice(all_strings, 500, replace=False)
sought = np.random.choice(all_strings, 500, replace=False)
sought = np.random.choice(sought, 10000)

tab = hirola.HashTable(len(known), known.dtype)
tab.add(known)

print("hirola", timeit(lambda: tab.get(sought), number=100))
print("pandas", timeit(
    lambda: pd.Categorical(sought, categories=known).codes,
    number=100,
))

# Check that both methods actually yield the same results:
np.testing.assert_equal(
    tab.get(sought),
    pd.Categorical(sought, categories=known).codes)

Output:
hirola 2.799455799000498
pandas 0.12548323099872505

I didn't investigate the reason (vectorization, hash/search algorithm/...?)

I somehow thought I had to pass the desired number of elements and hirola would then choose a good hash table length for me. I don't know where I got that idea.

For the record, I've just pushed 41e0ba38d862388f3e6f9a12a5f331ae09047908 to master which adds a warning if you let your table get too full so the next person to make that mistake should find out otherwise pretty quickly.


Add rule for npm cache folder

In addition to the .npmrc user config file (for which there is already a rule), npm also creates a cache folder at ~/.npm by default. Add a rule for this.
As the existing npm rule was already called npm, I renamed it.
Closes #48.

Reference: https://docs.npmjs.com/cli/v6/using-npm/config


Add NREL turbine data to atlite

Description
Adds more turbine .yaml to the database.
Motivation and Context
Some turbines in the current database are a bit outdated. Moreover, if used in ESOM, users might want to use power curves for future / expected turbine types (with a higher rated power and different power curve). This is done based on the NREL turbine data set, which I've parsed to the atlite format using some basic python and Jinja2 templating (see: turbine parsing repo).
In our current project we use PyPSA-eur and felt like this feature was limiting. This was discussed with @fneum.
How Has This Been Tested?
Not yet.
Type of change
Extension of existing data
Feel free to propose updates / changes. Let me know what you need to use this data.

Comments from @euronion processed.
If in the future you'd want to parse the data yourself; I've automated most in https://github.com/thesethtruth/NREL-to-atlite-turbines.
Cheers!

GTM! Thanks!

Ah; nearly missed it: Can add a oneliner to the RELEASE_NOTES mentioning new turbines ? @thesethtruth

Done! See below:

Atlite now includes the reference turbines from the NREL turbine archive (see: https://nrel.github.io/turbine-models/). Available turbines can be consulted using atlite.windturbines and can be passed as string argument, e.g. coutout.wind(turbine).

Great, thanks!

Thanks for that merge, quite helpful!
As a further idea you could consider adding your existing parsing code directly to atlite as an extension to get_windturbineconfig in the same manner as we do for the oedb; so that one could use:
cutout.wind(turbine="nrel:2016CACost_NREL_Reference_8MW_180")

to transparently fetch the turbine defined at https://nrel.github.io/turbine-models/2016CACost_NREL_Reference_8MW_180.html
That would work by adding a new hook in get_windturbineconfig. https://github.com/PyPSA/atlite/blob/master/atlite/resource.py#L52-L53
And putting your code into a new function like get_oedb_windturbineconfig https://github.com/PyPSA/atlite/blob/2ab6c9e56db539ee3b6d5dfa9e12c1185b5954f9/atlite/resource.py#L238-L371
Maybe that is good first issue. But, many thanks either way!


Is it possible to configure Julius in a way such that only phoneme recognition happens without tokenizing into words?

I'm working on an application and need to simply recognize a stream of sounds, even if they are not tokenized into words. I expect to get a list of all recognized phonemes. Is it possible with Julius?

I think you will need the output from Julius running in server mode, that is, using the -module option. See this help page in particular -module and -outcode (phone sequence).

Yes, you can do it, because I did it with HTK and Julius. Try to picture a word dictionary wich contains one phoneme for one word, like vowels.

@Estalhun sounds promising. can you expand just a little bit?


Update README.md

Current coverage is 68.42%

Merging #15 into develop will not affect coverage as of 649661e

@@            develop     #15   diff @@
=======================================
  Files            13      13
  Stmts           304     304
  Branches         36      36
  Methods           0       0
=======================================
  Hit             208     208
  Partial           7       7
  Missed           89      89

Review entire Coverage Diff as of 649661e

Powered by Codecov. Updated on successful CI builds.


how *domains/charging/chargingSettings/targetSOC_pct in Home Assistant?

Im Using WeConnect-mqtt to get the Datas in Home Assistant.
But i don't have an Idee how i can include the target SOC and the Target climate temperature.
Have anyone an idea?
Thanks a lot!

Here is my configuration if added through configuration.yaml it adds most of the possible values
mqtt:
  - image:
    - name: "ID4 car image"
      unique_id: ID.4_car_image
      image_topic: "weconnect/vehicles/CARVIN/pictures/car"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID4 status image"
      image_topic: "weconnect/vehicles/CARVIN/pictures/status"
      unique_id: ID.4_status_image
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID4 status image with badge"
      image_topic: "weconnect/vehicles/CARVIN/pictures/statusWithBadge"
      unique_id: ID.4_status_image_wbadge
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID4 car image with badge"
      image_topic: "weconnect/vehicles/CARVIN/pictures/carWithBadge"
      unique_id: ID.4_car_image_wbadge
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 battery level"
      unique_id: ID.4_battery
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/batteryStatus/currentSOC_pct"
      unit_of_measurement: "%"
      device_class: "battery"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 battery tempereture"
      unique_id: ID.4_battery_temperature
      state_topic: "weconnect/vehicles/CARVIN/domains/measurements/temperatureBatteryStatus/temperatureHvBatteryMax_K"
      unit_of_measurement: "C"
      device_class: "temperature"
      value_template: "{{ value | round(2) - 273.15 }}"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 range"
      unique_id: ID.4_range
      device_class: "distance"
      state_topic: "weconnect/vehicles/CARVIN/domains/fuelStatus/rangeStatus/primaryEngine/remainingRange_km"
      unit_of_measurement: "km"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 odometer"
      unique_id: ID.4_odometer
      device_class: "distance"
      state_topic: "weconnect/vehicles/CARVIN/domains/measurements/odometerStatus/odometer"
      unit_of_measurement: "km"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 charge time left"
      unique_id: ID.4_chrgtime
      device_class: "duration"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingStatus/remainingChargingTimeToComplete_min"
      unit_of_measurement: "min"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 charge power"
      unique_id: ID.4_charge_power
      device_class: "power"
      unit_of_measurement: "kW"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingStatus/chargePower_kW"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 charge rate"
      unique_id: ID.4_charge_rate
      unit_of_measurement: "km/h"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingStatus/chargeRate_kmph"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 charge type"
      unique_id: ID.4_charge_type
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingStatus/chargeType"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 plug connection"
      unique_id: ID.4_plug_connection
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/plugStatus/plugConnectionState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 plug lock"
      unique_id: ID.4_plug
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/plugStatus/plugLockState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 plug external power"
      unique_id: ID.4_plug_external_power
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/plugStatus/externalPower"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door lock"
      unique_id: ID.4_door
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doorLockStatus"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 access overall"
      unique_id: ID.4_access_overall
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/overallStatus"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door bonnet open"
      unique_id: ID.4_door_bonnet_open
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/bonnet/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door frontLeft lock"
      unique_id: ID.4_door_frontLeft
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/frontLeft/lockState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door frontLeft open"
      unique_id: ID.4_door_frontLeft_open
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/frontLeft/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door frontRight lock"
      unique_id: ID.4_door_frontRight
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/frontRight/lockState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door frontRight open"
      unique_id: ID.4_door_frontRight_open
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/frontRight/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door rearLeft lock"
      unique_id: ID.4_door_rearLeft
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/rearLeft/lockState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door rearLeft open"
      unique_id: ID.4_door_rearLeft_open
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/rearLeft/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door rearRight lock"
      unique_id: ID.4_door_rearRight
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/rearRight/lockState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door rearRight open"
      unique_id: ID.4_door_rearRight_open
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/rearRight/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door trunk lock"
      unique_id: ID.4_door_trunk
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/trunk/lockState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 door trunk open"
      unique_id: ID.4_door_trunk_open
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/doors/trunk/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 window frontLeft"
      unique_id: ID.4_window_frontLeft
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/windows/frontLeft/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 window frontRight"
      unique_id: ID.4_window_vehicles
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/windows/frontRight/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 window rearLeft"
      unique_id: ID.4_window_rearLeft
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/windows/rearLeft/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 window rearRight"
      unique_id: ID.4_window_rearRight
      state_topic: "weconnect/vehicles/CARVIN/domains/access/accessStatus/windows/rearRight/openState"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 parking lat"
      unique_id: ID.4_parking_lat
      state_topic: "weconnect/vehicles/CARVIN/parking/parkingPosition/latitude"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 parking lng"
      unique_id: ID.4_parking_lng
      state_topic: "weconnect/vehicles/CARVIN/parking/parkingPosition/longitude"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 parking time"
      unique_id: ID.4_parking_time
      device_class: "timestamp"
      state_topic: "weconnect/vehicles/CARVIN/parking/parkingPosition/carCapturedTimestamp"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
  - switch:
    - name: "ID.4 charge"
      unique_id: ID.4_charging
      optimistic: true
      command_topic: "weconnect/vehicles/CARVIN/controls/charging_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingStatus/chargingState"
      state_on: "charging"
      state_off: "readyForCharging"
      payload_on: "start"
      payload_off: "stop"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 AC"
      unique_id: ID.4_ac
      optimistic: true
      command_topic: "weconnect/vehicles/CARVIN/controls/climatisation_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationStatus/climatisationState"
      state_on: "heat"
      state_off: "off"
      payload_on: "start"
      payload_off: "stop"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 AC right"
      unique_id: ID.4_ac_right
      optimistic: true
      command_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/zoneFrontRightEnabled_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/zoneFrontRightEnabled"
      state_on: "True"
      state_off: "False"
      payload_on: "true"
      payload_off: "false"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 AC left"
      unique_id: ID.4_ac_left
      optimistic: true
      command_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/zoneFrontLeftEnabled_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/zoneFrontLeftEnabled"
      state_on: "True"
      state_off: "False"
      payload_on: "true"
      payload_off: "false"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 AC on unlock"
      unique_id: ID.4_ac_on_unlock
      optimistic: true
      command_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/climatizationAtUnlock_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/climatizationAtUnlock"
      state_on: "True"
      state_off: "False"
      payload_on: "true"
      payload_off: "false"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
  - number:
    - name: "ID.4 max charge"
      unique_id: ID.4_max_charge
      command_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingSettings/targetSOC_pct_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingSettings/targetSOC_pct"
      min: 0
      max: 100
      step: 1
      unit_of_measurement: "%"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
  - select:
    - name: "ID.4 max charge current"
      unique_id: ID.4_max_charge_current
      command_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingSettings/maxChargeCurrentAC_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingSettings/maxChargeCurrentAC"
      options:
        - "maximum"
        - "reduced"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4

Forgot the climatisation temperature
This should be added under number:
  - number:
    - name: "ID.4 max charge"
      unique_id: ID.4_max_charge
      command_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingSettings/targetSOC_pct_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/charging/chargingSettings/targetSOC_pct"
      min: 0
      max: 100
      step: 1
      unit_of_measurement: "%"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4
    - name: "ID.4 climatisation temp"
      unique_id: ID.4_climatisation_temp
      command_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/targetTemperature_C_writetopic"
      state_topic: "weconnect/vehicles/CARVIN/domains/climatisation/climatisationSettings/targetTemperature_C"
      min: 16
      max: 30
      step: 0.5
      unit_of_measurement: "C"
      device:
        manufacturer: "Volkswagen"
        model: "ID.4"
        identifiers:
          - volkswagen_id4

@wormiedk you made my day. Had problems figuring out the right payload commands. Thanks for your post and help.
Just for my personal learning: did you guess them or is there a way to explore accepted payloads with a mqtt explorer?


Improve Cody logging agent protocol

Changes
Fixes logging capability in agent.
Previously messages logged to output channel were visible only if added using append or appendLine.
Now trace / debug / info / warn / error functions are also logged properly.
Test plan
As in https://github.com/sourcegraph/jetbrains/pull/2583

don't we need to regenerate the recordings?

We need, and they are regenerated :)


proxy

Hi,
how can i use a SOCKS5 proxy with your library? e.g:
 // Create a socks5 dialer
  dialer, err := proxy.SOCKS5("tcp", "<IP_ADDRESS>:9050", nil, proxy.Direct)
  if err != nil {
    log.Fatal(err)
  }

  // Setup HTTP transport
  tr := &http.Transport{
    Dial: dialer.Dial,
  }
  client := &http.Client{Transport: tr}

  res, err := client.Get("http://google.com")

how can you send a post request to login to a website?
Thanks,
Arnold

To use your SOCKS5-based HTTP client, you can simply set gocrawl.HttpClient = client before starting the crawl process. Another option is to provide a custom Fetch implementation, so that it uses that SOCKS5-based HTTP client.
Note however that gocrawl only crawls with GET (and HEAD) requests. If you want a more flexible though less frameworky crawling package, I suggest my fetchbot package. You can still use your SOCKS5 client when creating the Fetcher value, i.e. f := &fetchbot.Fetcher{HttpClient: client}, and you can enqueue POST URLs and provide HTTP headers and/or a request body by calling Queue.Send(cmd) where cmd is a custom implementation of the fetchbot.Command interface that implements fetchbot.HeaderProvider and/or fetchbot.ReaderProvider. See the package docs for details.
Hope that helps,
Martin


Revived some tests, doesn't use the old makefiles, sanity checks.

More tests, can't be go install'ed because Version is generated at build time, but it's 100% Go makefiles free. make.sh still runs makefiles for generating files, but the remaining makefiles are not tied to the Go makefiles.

OK. I pulled in a few of these commits. You'll see them under your name in ha/master. There are few Makefiles left for generating the .pg.go files in their respective directories. ha/master should be a solid building block now.

Thank you for all of the help.


Tire Pressure Loop - OK --> Unknown

Hello,
My tire pressure sensors seem to be in a constant loop in this integration.  It shows them going back and forth every few seconds from unavailable to OK.  Any thoughts on what might be the cause or how to debug further?
Other sensors all seem to work fine.

M

Tire pressure is tough with Rivian.  Their software seems to reset the pressure if the wheel is not rotating.  Sadly, there is nothing we can do except for a hack to fix this as we just post the data we are receiving from the API.  Ill talk with the team to see if we can put some "safe guards" in place that if it goes to unknown and back to OK too quickly, we just ignore that update


fusee-interfacee-tk: init at V1.0.0

Package fusee-interfacee-tk utility to applications/misc for use with RCM Nintendo Switch
Motivation for this change
Add fusee-interfacee-tk package
Add fusee-interfacee-tk to all-applications
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[X] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[X] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

I'm so sorry for the late response. LGTM, thank you!


possible fix #1163

see #1163
more info https://github.com/eta-dev/eta/issues/207

small improvment set node16 to nodenext


Android - Icon glyphs not working/visible

I have been trying to get this working for a while on my machine with no luck.
I've followed the documentation: https://github.com/oblador/react-native-vector-icons#android, trying both the Gradle option first, and then attempting the manual one afterwards (though I believe the docs are out of date for the version of react-native I'm using).
After trying both options the glyphs just won't appear, I'm using an example of using the icons from the docs:
import React from 'react';
import {
  StyleSheet,
  ScrollView,
} from 'react-native';

import ScrollableTabView, { DefaultTabBar, } from 'react-native-scrollable-tab-view';
import Icon from 'react-native-vector-icons/Ionicons';

export default class Scene extends React.Component {
  render() {
    return (
      <ScrollableTabView
      renderTabBar={()=><DefaultTabBar backgroundColor='rgba(255, 255, 255, 0.7)' />}
      tabBarPosition='top'
    >
      <ScrollView tabLabel='iOS'>
        <Icon name='logo-apple' color='black' size={300} style={styles.icon} />
        <Icon name='ios-phone-portrait' color='black' size={300} style={styles.icon} />
        <Icon name='logo-apple' color='#DBDDDE' size={300} style={styles.icon} />
        <Icon name='ios-phone-portrait' color='#DBDDDE' size={300} style={styles.icon} />
      </ScrollView>
      <ScrollView tabLabel='Android'>
        <Icon name='logo-android' color='#A4C639' size={300} style={styles.icon} />
        <Icon name='logo-android' color='black' size={300} style={styles.icon} />
        <Icon name='logo-android' color='brown' size={300} style={styles.icon} />
      </ScrollView>
    </ScrollableTabView>
    )
  }
}

const styles = StyleSheet.create({
  container: {
    marginTop: 30,
  },
  icon: {
    width: 300,
    height: 300,
    alignSelf: 'center',
  },
});

Running
Mac: 10.10.5
react: 15.3.1
react-native: 0.32.0
react-native-vector-icons: 2.1.0
node: v6.5.0
Genymotion: Google Nexus 5 - 6.0.0 - API 23 - 1080x1920
Any help would really be appreciated, if someone could even point me in the right direction of where to look in the .java files that'd be great.

have you tried adding any other content to the tab bars to verify that other stuff is displayed? my guess is that you have a flex: 1 missing somewhere in your styles. Also, I'm using react 15.3.0. with RN  0.32 but I think that won't be the problem

Not sure, but I think there's a limit on android to how large icons you can use. Try something smaller than 300.

Likewise, not working  for me so far on an Android emulator.
"react": "^15.3.1",
"react-native": "^0.33.0",
"react-native-scrollable-tab-view": "^0.6.0",
"react-native-vector-icons": "^2.1.0",
"react-redux": "^4.4.5",
"redux": "^3.6.0",
"redux-thunk": "^2.1.0"

Not for me on device
Mac: 10.11.6
react: 15.3.2
react-native: 0.33.0
react-native-vector-icons: 2.1.0
Device: Samsung Galaxy S3 - 4.4

Closing this issue due to inactivity.

https://bestofreactjs.com/repo/oblador-react-native-vector-icons-react-react-native-awesome-components#examples

apply from: "../../node_modules/react-native-vector-icons/fonts.gradle".   it work for me


Eliminate crosstalk between C# tests (for v1.3.x)

Same as #10756, but for v1.3.x branch.

Performance differences noted:
Benchmark                                cpu_time    real_time
-------------------------------------  ----------  -----------
BM_CallCreateDestroy<InsecureChannel>      -91.50       -91.50
BM_CallCreateDestroy<LameChannel>          -85.50       -85.50

Known failures:
https://github.com/grpc/grpc/issues/10763


Bugfix/2312 database join meta conversion fix

Addresses #2312 in case of using SQLite database join. While the driver returns column type NUMERIC, when fetching data it can either return Long or Double values. This is not supported by Hop. This fix should do the required conversion. Additionally, the expected Type in convertNumberToString is changed from Double to Number.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Run mvn clean install apache-rat:check to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
[x] If you have a group of commits related to the same change, please squash your commits into one and force push your branch using git rebase -i.
[x] Mention the appropriate issue in your description (for example: addresses #123), if applicable.

To make clear that you license your contribution under the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

[x] I hereby declare this contribution to be licensed under the Apache License Version 2.0, January 2004
[x] In any other case, please file an Apache Individual Contributor License Agreement.

When I ran the compile and tests in a github workspace, I saw a failure in the engine compilation test
INFO] Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 s - in org.apache.hop.workflow.WorkflowMetaTest
[INFO] Running org.apache.hop.execution.ExecutionDataTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.243 s <<< FAILURE! - in org.apache.hop.execution.ExecutionDataTest
[ERROR] org.apache.hop.execution.ExecutionDataTest.testSerialization  Time elapsed: 0.238 s  <<< ERROR!
com.fasterxml.jackson.databind.JsonMappingException:
Unable to locate value meta plugin of type (id) 5
at [Source: (String)"{
"executionType" : null,
"dataSetMeta" : null,
"finished" : false,
"collectionDate" :<PHONE_NUMBER>948,
"parentId" : "parentId",
"ownerId" : "ownerId",
"setMetaData" : {
"firstRows" : {
"setKey" : "firstRows",
"logChannelId" : "12345-logchannel-id",
"name" : "transformName",
"fieldName" : null,
"sampleDescription" : null,
"copyNr" : "0",
"description" : "First rows of transform"
}
},
"rowsBinaryGzipBase64Encoded" : "H4sIAAAAAAAAAG"[truncated 589 chars]; line: 19, column: 35] (through reference chain: org.apache.hop.execution.ExecutionData["rowsBinaryGzipBase64Encoded"])
at org.apache.hop.execution.ExecutionDataTest.testSerialization(ExecutionDataTest.java:130)
Caused by: org.apache.hop.core.exception.HopPluginException:
Unable to locate value meta plugin of type (id) 5
    at org.apache.hop.execution.ExecutionDataTest.testSerialization(ExecutionDataTest.java:130)

[INFO] Running org.apache.hop.www.HopServerPipelineStatusTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.988 s - in org.apache.hop.www.HopServerPipelineStatusTest
When I get time I will try on a different machine, but we need to have the build tests passed.

I will have a look into it. I did not want to create additional work of course. And I'm going to implement some kind of test for this issue.

Closed since changes in the main branch require a different handling of the bug.


When processing large event stream in indexer one can hit Java XML internal limit (FEATURE_SECURE_PROCESSING)

When a very large event stream is passed through a simple full text index pipeline, the error

JAXP00010004: The accumulated size of entities is "50,000,001" that exceeded the "50,000,000" limit set by "FEATURE_SECURE_PROCESSING".

can occur.
Internet searches recommend one starts the java instance as per
 -DentityExpansionLimit=2147480000 -DtotalEntitySizeLimit=2147480000 -Djdk.xml.totalEntitySizeLimit=2147480000
Perhaps this should be added to the start up scripts or in the java xml initialisation code.
Reference for java values - https://docs.oracle.com/javase/tutorial/jaxp/limits/limits.html

Setting the variables on start
-DentityExpansionLimit=2147480000 -DtotalEntitySizeLimit=2147480000 -Djdk.xml.totalEntitySizeLimit=2147480000
did not help.

No. Suggestions?

Secure processing was turned on to resolve issue #813 and appears in v6.0-beta.8 onwards. We either need to disable secure processing or make it optional.

Actually, splitFilter won't fix this.

The system properties that can be set for the JVM using -D are as follows:
    //
    // Implementation limits: corresponding System Properties of the above
    // API properties
    //
    /**
     * JDK entity expansion limit; Note that the existing system property
     * "entityExpansionLimit" with no prefix is still observed
     */
    public static final String SP_ENTITY_EXPANSION_LIMIT = "jdk.xml.entityExpansionLimit";

    /**
     * JDK element attribute limit; Note that the existing system property
     * "elementAttributeLimit" with no prefix is still observed
     */
    public static final String SP_ELEMENT_ATTRIBUTE_LIMIT =  "jdk.xml.elementAttributeLimit";

    /**
     * JDK maxOccur limit; Note that the existing system property
     * "maxOccurLimit" with no prefix is still observed
     */
    public static final String SP_MAX_OCCUR_LIMIT = "jdk.xml.maxOccurLimit";

    /**
     * JDK total entity size limit
     */
    public static final String SP_TOTAL_ENTITY_SIZE_LIMIT = "jdk.xml.totalEntitySizeLimit";

    /**
     * JDK maximum general entity size limit
     */
    public static final String SP_GENERAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";

    /**
     * JDK node count limit in entities that limits the total number of nodes
     * in all of entity references.
     */
    public static final String SP_ENTITY_REPLACEMENT_LIMIT = "jdk.xml.entityReplacementLimit";

    /**
     * JDK maximum parameter entity size limit
     */
    public static final String SP_PARAMETER_ENTITY_SIZE_LIMIT = "jdk.xml.maxParameterEntitySizeLimit";
    /**
     * JDK maximum XML name limit
     */
    public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";

    /**
     * JDK maxElementDepth limit
     */
    public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth";

Note that these would need to be set in JAVA_OPTS for the internal Tomcat process to pick them up.


bindValue is not allowed with multiple ng select with formly

Hi am using ngselect component in formly with multiple directive set to true. Am encountering the following error when selecting an option

error in console ng-select-ng-select.js:613 Binding object({"label":student","value":"12"}) with bindValue is not allowed.

Below is the form-multiple-select-component.html
<ng-select
  #ngSelect
  bindLabel="label"
  bindValue="value"
  [clearable]="to.select?.clearable"
  [formControl]="formControl"
  [formlyAttributes]="field"
  [items]="to.options"
  [placeholder]="to.placeholder"
  [multiple]="to.multiple"
  [searchable]="to.select?.searchable"
  [virtualScroll]="to.select?.virtualScroll"
  (blur)="blur()"
  (keydown.delete)="clear(ngSelect)"
  (search)="search()"
>

Any help much appreciated , being stuck on it for a while. thank you
when I do save the following is added to the model
["01", "11",{ "label": "student", "value": "12"}] instead of 12
Options is an observable of UiFormSelectOption
options: Observable<UiFormSelectOption[]>,
export interface UiFormSelectOption {
  label: string;
  value: string | number ;
}

Seems working to me, here is the link https://stackblitz.com/edit/angular-ntysej.
Please check the example and compare it with your implementation, in case the issue persist  I may need a reproduction :pray:.
Thanks!


iqsharp could not be installed

Issue Title
iqsharp could not be installed
General
.NET Core 3.0
SDK Version: 3.0.101
OS (Version): Parrot GNU/LINUX Release 3.11 (64-bit)
Tool 'microsoft.quantum.iqsharp' is already installed and when i try using the command "dotnet iqsharp install", I get the following error.
Could not execute because the specified command or file was not found.

Thanks for the report, @kaiiyer! This looks like a duplicate of the issue reported as microsoft/iqsharp#68, so I'm closing this issue, but please feel free to reopen if that's not the case. Thank you!


Missing Decoder Architectures Related to Resnet18

Sorry to keep asking questions. I just noticed that options.py has multiple architectures listed for --decoder_arch. The default architecture listed is QGN_resnet18 which is different from the decoder architecture in networks folder. Can you share the other decoder architectures related to resnet18, that are listed in the options.py file?

The other architectures are just things I tried and forgot to remove them from the options.py file. The results from the paper are obtained with the available decoder. If you want more achitectures, you can have a look at https://github.com/kashyap7x/QGN.

Could you still share those architecture codes that you tried with Resnet18 encoder? I am more interested in the approach towards building decoders. You can share them via email at<EMAIL_ADDRESS>Any help would be appreciated.

Some of these architecture are still under development. I'll keep you in touch when it will be published. Probably in a few weeks.

I have a question though. I dont see skip connections in decoder being used. Is there a specific reason for that? Or is it a limitation with the resnet18 architecture?

There is skip connections in the decoder. The variable use_skip=True by default. You need to set it to false if you don't want to use it.

Thanks


Improve arguments to dlopen()

While debugging a name space collision (header_rewrite has a SimpleTokenzier, and so does the tscore), and talking to @bryancall and @randall, it seems like we ought to do something like this:
diff --git a/proxy/Plugin.cc b/proxy/Plugin.cc
index 79b3b0864..4706aad05 100644
--- a/proxy/Plugin.cc
+++ b/proxy/Plugin.cc
@@ -73,7 +73,7 @@ PluginRegInfo::~PluginRegInfo()
 bool
 plugin_dso_load(const char *path, void *&handle, void *&init, std::string &error)
 {
-  handle = dlopen(path, RTLD_NOW);
+  handle = dlopen(path, RTLD_NOW | RTLD_DEEPBIND | RTLD_LOCAL);
   init   = nullptr;
   if (!handle) {
     error.assign("unable to load '").append(path).append("': ").append(dlerror());
diff --git a/proxy/http/remap/PluginDso.cc b/proxy/http/remap/PluginDso.cc
index 7bd4dcf71..780752fc0 100644
--- a/proxy/http/remap/PluginDso.cc
+++ b/proxy/http/remap/PluginDso.cc
@@ -88,7 +88,7 @@ PluginDso::load(std::string &error)
       PluginDebug(_tag, "plugin '%s' mоdification time %ld", _configPath.c_str(), _mtime);

       /* Now attemt to load the plugin DSO */
-      if ((_dlh = dlopen(_runtimePath.c_str(), RTLD_NOW)) == nullptr) {
+      if ((_dlh = dlopen(_runtimePath.c_str(), RTLD_NOW | RTLD_DEEPBIND | RTLD_LOCAL)) == nullptr) {
 #if defined(freebsd) || defined(openbsd)
         char *err = (char *)dlerror();
 #else

However, if I do this, then other badness happens, and I'm not sure if it's an issue in some of our plugins, or libstdc++ or what. The ASAN will trigger a new vs free error, like this:
    #0 0x7faccb04d508 in __interceptor_free (/lib64/libasan.so.4+0xde508)
    #1 0x7facc04e024b in __gnu_cxx::new_allocator<char>::deallocate(char*, unsigned long) /opt/rh/devtoolset-7/root/usr/include/c++/7/ext/new_allocator.h:125
    #2 0x7facc04df7f3 in std::string::_Rep::_M_destroy(std::allocator<char> const&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.tcc:899
    #3 0x7facc04debeb in std::string::_Rep::_M_dispose(std::allocator<char> const&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.h:3251
    #4 0x7facc04de514 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.h:3621
    #5 0x7facc04f867a in RulesConfig::parse_config(std::string const&, TSHttpHookID) header_rewrite/header_rewrite.cc:188
    #6 0x7facc04f9188 in TSPluginInit header_rewrite/header_rewrite.cc:341
    #7 0xc5680d in single_plugin_init /usr/local/src/trafficserver/proxy/Plugin.cc:152
    #8 0xc57cf4 in plugin_init(bool) /usr/local/src/trafficserver/proxy/Plugin.cc:322
    #9 0x6e7cd9 in main traffic_server/traffic_server.cc:2058
    #10 0x7facc8528504 in __libc_start_main (/lib64/libc.so.6+0x22504)
    #11 0x6497d8  (/opt/ats/bin/traffic_server+0x6497d8)

0x606000051d40 is located 0 bytes inside of 54-byte region [0x606000051d40,0x606000051d76)
allocated by thread T0 here:
    #0 0x7faccb04f1a8 in operator new(unsigned long) (/lib64/libasan.so.4+0xe01a8)
    #1 0x65bd14 in __gnu_cxx::new_allocator<char>::allocate(unsigned long, void const*) /opt/rh/devtoolset-7/root/usr/include/c++/7/ext/new_allocator.h:111
    #2 0x658495 in std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.tcc:1057
    #3 0x658215 in std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.tcc:1078
    #4 0x679bc6 in std::string::reserve(unsigned long) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.tcc:960
    #5 0x67993f in std::string::append(char const*, unsigned long) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/basic_string.tcc:758
    #6 0x7facc8e62643 in std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char) (/lib64/libstdc++.so.6+0x76643)

I tried to see which string this might be referring to, but as you can see, the allocation doesn't show anything in the ATS code, and the "free" happens in _interceptor_free(), via some STL code, so maybe the explicit RTLD_DEEPBIND interacts poorly here with something else?
This is with an ASAN build of course.

PR #6485 added RTLD_LOCAL.

Looks like this has been fixed.  Please reopen if there is still an issue.

@zwoop suggested adding RTLD_DEEPBIND | RTLD_LOCAL while @gtenev only added RTLD_LOCAL.


TOML instead of JSON or YAML

I recently spend some time figuring about right configuration file format to use.
While we already settled a bit on JSON, I think there are good alternatives:

YAML
TOML

The reason I started looking was the lack of comments in JSON.
The point is that our configuration files should be as easy editable for humans as possible. (Not because thats their main target, but bc the other points like having decent libraries and having reference support should already be out of question, but JSON lacks the latter)
JSON has the advantage of being tightly coupled with the JS-world.
It lacks comments and references though and hence is imo the worst of all the three for user-editable files.
YAML is too complex (something over 200 language rules, JSON has 20), TOML looks awesome.
https://github.com/toml-lang/toml#comparison-with-other-formats
The one thing which could hold us from TOML is that its not yet declared stable.
However it is noted in their issues that there are only semi-important stuff in question until v1.0 (date and time types getting discussed and octal/hex/binary integers).
Its used by big companies already.
TOMLs nesting syntax may be a bit distracting at first (subtrees are [tree.node1.node2], but if you look at YAML (which uses indentation instead for subnodes) I think TOMLs solution is less error prone:

Users do not have space/tabs visible in their text-editors
YAML files are hence having a lot of lines

readability can't be enhanced by skipping that

So thats why I would say we should use TOML and not JSON or YAML (at least for configuration files).
some other ones are [end, fressian, transit] https://groups.google.com/forum/#!msg/clojure/9ESqyT6G5nU/2Ne9X6JBUh8J), but they go more into the direction of protobuf: compact transmitting is their focus i think. edn is the most readable of them, but it looks far from stable and far from being widely adopted.

I don't think there's a better alternative than JSON at the moment even if JSON has it's disadvantages. But instead of comparing JSON, YAML, TOML and XML, I'd ask if a replacement of JSON is really necessary.
We are about to split CubeScript (which is a strange conglomerate of user interface + configuration + scripting) into several parts:

Separate the user interface -> HTML + Client-Side-JavaScript + REST
Separate the configuration -> JSON
Separate the scripting -> Server-Side-JavaScript
Separate the communication data -> JSON
Separate the shaders -> Shaders language

CubeScript needed comments for scripting and for the configuration. Because scripting is done in JavaScript, the most part of commenting goes there.
For configuration files we (should) have user interfaces for that in the future.  For developers commenting in configuration files could be a benefit, but I think it's not that important.

What about CSON https://github.com/bevry/cson ?
Alternatively, we could have js files with JSON exports.
e.g.:
config.js
module.exports = {
    // Comments!
    property: 'value'
}

loading the file:
require ('./config.js')

@MartinMuzatko  We would need some settings to be loadable by InexorCore (the C++ side). But CSON is the same as JSON but for coffee, so it would be useful for config files which are solely saved/red in a coffeescript environment.
@aschaeffer
What we have is the tree (on InexorFlex and InexorCore(C++) side, maybe the InexorUI can be fed with JSON, idc), inside that tree our data gets defined:

settings, which a user could possibly edit:

e.g. important screen and startup settings
or media paths
and all other settings

stuff content creators edit

e.g. model/texture/sound configurations
shader definitions see ***

map-specific/network stuff which mainly should be handled by machine

Except for the last part it would be beneficial to be able to change stuff in a simple text editor / or your IDE.
If I want to write for example a configuration file for a model I'd ideally only need to reference the animations and not c&p it in all places they're needed (e.g. mr fixit and snoutx share the same anims).
In my JSON-parser I ended up trying to introducing this manually (extending/violating the standard).  But why not use a format which got them by house?*
Having no comments is for me a show-stopper (yes JSON im looking at you), I tried so often to comment stuff (or how would you for example design an example model.json if you can't comment it in place?).**
This is simply b.c. JSON is not designed to be human editable but human-readable. Its good for dumps of data you generated in your code and want to drop on the disk/send it to some other place.
Not for some user to do it by hand.
But why forbid it to do it by hand if there's no need to?
We need to serialize that tree possibly in JS and in C++, so libs for both should be available. This is true for all 3 candidates (we didn't introduce JSON yet btw, or did we?).
And although JSON is native JS, using YAML or TOMLs parsers is max 2 additional lines of code.
* YAML got references, calling them anchors. TOML and JSON don't have them, they would need a list of manual references, which could mean we need to add our own logic processing the data afterwards, possibly having all kinds of bugs (e.g. loosing information through serialisation/deserialisation) and we would need to maintain multiple ones if we do want references. So for those it would be better to just not do that.
** However you can "add comments" to JSON by just introducing fields which don't get used. But this does not always work (e.g. how to comment the root node?) and is always comparable ugly (and possibly less efficient to parse if that's a goal)
*** Example:
Lets compare the 3 for (possible) shader definition files (flat structures):
JSON:
{
"name": "default-shader",
"comment": "Our vertex shader source (the first stage, acting on the vertices)",
"vertex-source": [
"    void main(void)",
"    {",
"        gl_Position = ftransform();",
"        gl_TexCoord[0] = gl_MultiTexCoord0;",
"        gl_FrontColor = gl_Color;",
"    }" ],
"comment": "Our pixel shader (aka fragment shader) is acting on the individual pixels on the object.",
"fragment-source": [
"    uniform sampler2D tex0;",
"    void main(void)",
"    {",
"        gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy);",
"    }",],
"fallback-shaders": ["notexture-shader", "null-shader"]
}

YAML:
name: default-shader
# Our vertex shader source (the first stage, acting on the vertices):
vertex-source: >
    void main(void)
    {
        gl_Position = ftransform();
        gl_TexCoord[0] = gl_MultiTexCoord0;
        gl_FrontColor = gl_Color;
    }
# Our pixel shader (aka fragment shader) is acting on the individual pixels on the object.
fragment-source: >
    uniform sampler2D tex0;
    void main(void)
    {
        gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy);
    }
fallback-shaders: ["notexture-shader", "null-shader"]

TOML:
name = "default-shader"
# Our vertex shader source (the first stage, acting on the vertices):
vertex-source = '''
    void main(void)
    {
        gl_Position = ftransform();
        gl_TexCoord[0] = gl_MultiTexCoord0;
        gl_FrontColor = gl_Color;
    }'''
# Our pixel shader (aka fragment shader) is acting on the individual pixels on the object.
fragment-source = '''
    uniform sampler2D tex0;
    void main(void)
    {
        gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy);
    }'''
fallback-shaders = ["notexture-shader", "null-shader"]

_Some notes on these:

JSON line endings are not covered by rules

You need this [ "    ", "    "] workaround
but sure one would just create a distinct file format for each entry requiring a multi-line key instead

e.g. defaultshader.frag.glsl and defaulshader.vert.glsl

Did you notice the error in the JSON fragment source?

"    }",] is invalid syntax since you got a , but not a following key

YAML forbids tabs

you didn't see that we used 4 spaces instead of tabs? How dare you User touching our config!

YAML seems to be more forgiving on quotation marks than TOML_

I'm too lazy to add a nested tree example now

References can be supported by the configuration format or by code. During loading the data structure you can also resolve the references by id or by name. For example, a map references to other textures and models. But if each textures and model has it's own uuid and you can use the uuid as the reference. So for me support for references in the data format are not that important.
Next, I don't see any reason for wrapping shader source code in any other format. Shaders should go into their own files written in the shading language. GLSL can comments.
As you said, the meta information about the available shaders would go into its own data structure:
{
    "shaders": [
        {
            "name": "default-shader",
            "description": "The default shader acts on the vertices (first stage)",
            "vertexSource": "media/shaders/default.vertex.glsl",
            "fragmentSource": "media/shaders/default.fragment.glsl"
        }, {
            ...
        }
    ],
    "fallbackShaders": [
        "notexture-shader",
        "null-shader"
    ]
}

The problem I have with "configuration files" for "stuff content creators edit (e.g. model/texture/sound configurations)" is that in fact we want structured data. And the 90% of the content creators don't want to edit text files (in whatever format it may be) but use a user interface for this task. This is really only dump data, no scripting, no creativity.

Define suitable data structures for the meta information of textures, models, sounds and so on
Create a user interface for editing these data structures
Use Drag'n'drop: if the user drops a picture file into the texture browser a new data structure is created and the texture editor appears where the content creator can edit the missing information
Create an auto indexing script for detecting new models/textures/sounds
The data structures can be loaded, saved and synchronized in the same way

For example for a texture meta information structure could be:
{
    "uuid": "[uuid]",
    "name": "Space station floor (metal)",
    "description": "This textures is for metallic floors like in space stations",
    "tags": [ "metal", "floor", "bumpmap", "blue" ]
    "author": "Max Mustermann",
    "version": 10,
    "filename": "media/textures/[uuid]/10/texture.png",
    "normals": "media/textures/[uuid]/10/texture_n.png",
    "uv": "media/textures/[uuid]/10/texture_uv.png",
    "bump": "media/textures/[uuid]/10/texture_b.png",
}

Keep it simple stupid.
For example a map could reference these textures by uuid and version:
{
    "uuid": "[uuid]",
    "name": "pandora",
    "description": "Best map ever",
    "author": "Fatality",
    "version": 392,
    "textures": [
       {
           "uuid": "texture_uuid_1",
           "version": 10
       }, {
           "uuid": "texture_uuid_2",
           "version": -1
       }, {
           "uuid": "texture_uuid_3",
           "version": 6
       }, {
           ...
       }
    ]
}

For playermodels: The animations would be in a separate file. In the playermodel configuration you reference to the animation file. This avoids copy and pasting and allows to versionize the animations.
We don't forbid to edit it by hand but it's just not the standard use case because 90% of the users use the user interface.
For me there are three use cases which are not data:

settings which are required to get the application running at all (important screen and startup settings, media paths, ...)
user preferences (mouse settings, ...)
server side configuration (administration of the game server)

The users and administrators should be able to read and understand these files, it should be easy to edit (no complex syntax) and of course comments are essential. Also, users may share or publish their config files. For these TOML is way better than json.

YAML is awfully complex. Please don't 😆
JSON and/or TOML should be fine.
I agree with @aschaeffer JSON is better for data structures, while TOML would be better for settings.
Would it be a reasonable option to work with both?

Update: Since #354 is planned, we do not need any JSON/YAML/TOML handling on InexorCore side (C++ side) directly.
InexorCore is hence not involved in any filesystem operations regarding configurations. Only plain files are loaded there.
Any metainfo comes through the tree from InexorFlex

Since this is handled on the flex side, the structure will look as following

we support a converter for cfg files which returns tree objects
any configuration format, as desired, can easily provide a custom config format as a plugin, as long as it exports a tree object as well
since I'll be implementing this functionality, I gave favor to implement a toml reference plugin

@a-teammate -> @movabo suggested https://hjson.org/


Added checksums for tar.gz, zip and msi packages

This PR adds in the pre-release pipeline action to generate checksums for tar.gz, zip and msi packages.

each job generates it's own checksums.txt file and store it into workflow artifacts
at the end, a final step will be run to merge the checksum files and push the result to release assests
each workflow (Windows/Linux) will generate it's own checksum file, the result will be checksums_linux.txt and checksums_windows.txt

closed in favour of #1231